Algoritam Bellman-Ford

Embed Size (px)

DESCRIPTION

Seminarski rad, algoritam Bellman-Ford

Citation preview

  • ALGORITAM BELLMAN-FORD

    Aleksandar Balija

    Prirodno-matematiki fakultet Podgorica

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 2

    SADRAJ:

    1. ALGORITMI

    1.1. Osnovno o algoritmima.....................................................3

    1.2. Osobine algoritama............................................................4

    1.3. Izrada algoritama za rjeavanje problema.......................5

    1.4. Primjeri algoritama............................................................7

    1.5. Dijkstrin algoritam............................................................8

    2. ALGORITAM BELLMAN-FORD

    2.1. Opte o algoritmu...........................................................12

    2.2. Dokaz korektnosti algoritma Bellman-Ford................15

    2.3. Primjena i unapreenja algoritma Bellman-Ford........16

    2.4. Bri algoritam najkraeg puta.......................................18

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 3

    1. ALGORITMI

    1. 1. Osnovno o algoritmima

    Algoritam se najjednostavnije definie kao postupak za rjeavanje nekog problema. Svaki algoritam ima tzv. ulazne i izlazne podatke; Ulazni podaci odreuju instancu problema na koji primjenjujemo algoritam. Izlazne podatke dobijamo na kraju rada, i oni

    predstavljaju rjeenje datog problema.

    Algoritam ima konaan, tj odreen broj koraka, nakon kojih staje za svaku

    instancu problema kojeg rijeava. Koraci mogu biti jednostavni ili

    komplikovani, po elji i potrebi stvaraoca. Meutim, svaki korak od kojeg se algoritam sastoji mora biti

    precizno i jednosmisleno odreen, da bi se izbjeglo netano tumaenje, kao i greke pri uitavanju.

    Razliiti algoritmi mogu rijeiti isti problem razliitim nizom postupaka, uz manje ili vie napora, za krae ili due vrijeme. S obzirom rezultat ostaje isti,

    algoritmi se mogu porediti po svojoj

    efikasnosti, brzini ili kompleksnosti.

    Mada se esto vezuje i primjenjuje u matematici, kao i u informacionim

    tehnologijama, algoritmi su primjenjivi

    i u svakodnevnim sferama ivota. Slika 1 ematski prikaz algoritma

    Rije algoritam potie od persijskog matematiara Muhameda el-Horezmija. Transliteracijom njegovog prezimena (al-Khwrizm) u latinski jezik, nastaje rije algoritmi.

    Muhamed El-Horezmi Abu Abdulah Muhamed bin Musa el Horezmi (slika 2) je bio

    persijski matematiar, astronom i geograf koji je ivio u IX vijeku nove ere. Pod uticajem indijskih i grkih naunika, zasluan je za uvoenje arapskih cifara u Evropi. Smatra se jednim od utjelotvoritelja algebre (al-jabr), kao i stvaraocem linearnih i

    kvadratnih jednaina. Iz netanog prevoda njegovog dijela Al Horezmi o indijskim brojkama, koji glasi Algoritmi de numero indorum, nastaje latinski korijen rijei algoritam (lat. Algorithmi, -us)

    Slika 2 Potanska markica sa likom El-Horezmija

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 4

    Algoritam se najee prikazuje ematski (sl. 1), takozvanim dijagramom toka; Meutim, algoritme je mogue prikazati i prirodnim jezikom, pseudokodom, kao i odgovarajuim programskim jezikom.

    Smatra se da je prvi algoritam sa namjenom raunanja tvorevina engleske matematiarke Ade Bajron Lovlejs. Jo 1842. je napisala algoritam koji bi raunao Bernulijeve brojeve na analitikoj maini arlsa Bebida. Mada pomenuta maina nikada nije proradila, Adin algoritam je ostavio dubok trag u daljem razvoju programiranja. Danas je Ada priznata

    kao prvi programer u istoriji, i u njenu ast je nazvan programski jezik Ada.

    Sljedei znaajan napredak u formalizaciji uvoenja algoritma u matematiku i logiku uinio je Alan Tjuring, formiranjem njegove tzv. Tjuringove maine (sl. 3). U pitanje primitivan automat, ili zapravo misaona tvorevina koja posjeduje mogunost izvoenja operacija koje su dovoljne za izvoenje skoro svih algoritama.

    Slika 3 Zamiljeni prikaz Tjuringove maine

    1. 2. Osobine algoritama

    Neke od osobina koje se pripisuju algoritmima ukljuuju diskretnost, rezultativnost, determinisanost, masovnost, elementarnost i rezultativnost.

    Diskretnost se odnosi na izvravanje diskretnih operacija algoritama u odvojenim koracima, koji vode ka konanom cilju.

    Rezultativnost se odnosi na sposobnost algoritma da nakon odreenog broja koraka daje izlazne podatke.

    Determinisanost oznaava sposobnost algoritma da za iste ulazne podatke uvijek generie iste vrijednosti na izlaznim podacima.

    Masovnost je osobina algoritma da bude primjenljiv na vei broj ulaznih vrijednosti.

    Elementarnost algoritma podrazumjeva algoritamske korake koji predstavljaju

    razumljive i izvrive elementarne operacije.

    Rezultativnost algoritma podrazumjeva da je algoritam definisan tako da primjena

    njegovih koraka usmjerava strogo prema dobijanju traenog rezultata ili izlazne informacije.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 5

    Od algoritma se iznad svega oekuje efikasnost. To podrazumjeva da sve operacije koje bi se obavljale u nekom algoritmu moraju biti dovoljno jasne i pojednostavljene tako da

    se mogu obaviti za odreeno vrijeme, koristei papir i olovku. Euklidov algoritam (vidi 1. 3.) koristi samo operacije dijeljenja pozitivnih cijelih brojeva,

    provjere da li je broj jednak nuli, te dodjeljivanja vrijednosti jedne promjenljive drugoj.

    Navedene operacije su efikasne jer se cijeli brojevi mogu prikazati na papiru u konanom obliku, i zato to postoji algoritam za dijeljenje cijelih brojeva.

    Sabiranje cijelih brojeva je efikasno, ali zato sabiranje realnih brojeva nije, jer se moe pojaviti broj sa beskonano mnogo cifara. Dobar primjer toga je zamiljeni algoritam koji bi ispitivao sve mogue poslijedice poteza igraa u ahu; Procjenjuje se da bi za takvo raunanje bilo potrebno nekoliko miliona godina na najbrim raunarima.

    1. 3. Izrada algoritama za rjeavanje problema

    Probleme koji se rjeavaju pomou algoritama treba definisati kroz nekoliko etapa:

    1. Formulacija problema

    2. Matematiko oblikovanje problema 3. Formiranje algoritama

    4. Programiranje

    5. Izrada test primjera

    6. Testiranje problema

    7. Dobijanje i analiza rezultata

    Analizom izvrenja algoritma mogu se uoiti tri naina izvravanja algoritamskih koraka: sekvencijalno, razgranato i ciklino.

    Sekvencijalno ili linearno izvravanje (sl. 4) obuhvata ureen niz instrukcija, gdje se po izvrenju n-te instrukcije moe prei na (n+1)-tu instrukciju, zatim na (n+2)-tu instrukciju, itd. Ono podrazumjeva da se koraci izvravaju jedanput, u redoslijedu kako su napisani. Takvi algoritamski koraci ine prostu linijsku algoritamsku strukturu ili sekvencu algoritamskih koraka.

    Selektivno ili razgranato izvravanje (sl. 5) omoguava izbor jednog toka kojim e se nastaviti izvravanje instrukcija. Izbor toka vri se provjerom uslova koji je definisan kao logiki izraz - predikat. Razlikuju se sljedei sluajevi selekcija:

    - Ukoliko je uslov ispunjen, operacija se izvrava (IF uslov THEN operacija) - Ukoliko je uslov ispunjen, izvri prvu operaciju, a u suprotnom izvri drugu (IF uslov THEN operacija1; ELSE operacija2 )

    - Ukoliko uslov ima vrijednost br. 1, izvri operaciju br. 1; Ukoliko uslov ima vrijednost br. 2, izvri operaciju br. 2; U suprotnom, izvri operaciju n (IN CASE uslov OF vrijednost1: operacija1; vrijednost2: operacija2;...; ELSE operacija n )

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 6

    Iteracija ili ciklino izvravanje (sl. 6) operacija se javlja kada se grupa algoritamskih koraka izvrava vie puta. Takvu grupu naredbi nazivamo ciklinom algoritamskom strukturom ili ciklusom.

    Razlikuju se sljedei tipovi iteracije:

    - iteracije sa izlaskom na vrhu;

    WHILE uslov DO operacija (sve dok je uslov ispunjen, izvravaj operaciju) FOR poetak TO kraj DO operacija (od poetne do krajnje vrednosti, izvravaj operaciju)

    - iteracije sa izlaskom na dnu;

    REPEAT operacija UNTIL uslov (ponavljaj operaciju sve dok uslov nije ispunjen)

    - iteracije sa izlaskom u sredini (primjenljive iskljuivo u teoriji zbog slabe sintaksne podrke)

    Pomenute algoritamske strukture mogu se koristiti za rijeavanje bilo kojeg zadatka.

    Slike 4, 5, 6 ematski prikazi sekvencijalnih, razgranatih i ciklinih algoritama

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 7

    1. 4. Primjeri algoritama

    Na emi na slici 1 je prikazan algoritam koji prati odreenu putanju prema rjeenju, ali sadri nekoliko uslova od ijeg ispunjenja zavisi konaan ishod tj. izlazni podatak algoritma.

    Primjer kompleksnijeg algoritma je Euklidov algoritam (sl. 7). U matematici, on

    predstavlja efikasan nain za odreivanje najveeg zajednikog djelioca (NZD) datih brojeva. NZD dva broja predstavlja najvei broj koji istovremeno dijeli oba bez ostatka.

    Slika 7 Primjer upotrebe Euklidovog algoritma

    Tok Euklidovog algoritma glasi:

    1. Podijeliti broj a brojem b, pri emu se dobija kolinik c i ostatak r. 2. Broj a uzima vrijednost broja b.

    3. Broj b uzima vrijednost r.

    4. Ponavljati sve dok ostatak r ne bude jednak nuli. Najvei zajedniki djelilac je trenutna vrijednost broja a.

    Radi lakeg razumijevanja algoritma Bellman-Ford, potrebno je osvrnuti se na jo nekoliko pojmova, kao i algoritama na koje se pomenuti osvre. Najrelevantniji meu njima je Dijkstrin algoritam za nalaenje najkraeg puta u grafu sa nenegativnim teinama ivica.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 8

    Prije objanjavanja principa Dijkstrinog algoritma, vano je razumijeti pojam grafa. Graf (sl. 8) se u matematici predstavlja pomou prepoznatljivog crtea koji se sastoji od od taaka i linija; Sam graf je zapravo apstraktni matematiki objekat sa ciljem povezivanja razliitih taaka.

    Slika 8 Primjer grafa sa 6 taaka i 7 grana

    Graf moe imati konaan ili beskonaan broj vorova. Grana grafa koja polazi iz jednog vora i zavrava u istom voru se zove petlja. Ukoliko sve grane na grafu imaju strelice, tada vai da je cio graf orijentisan ili antisimetrian.

    Nepovezan graf se sastoji od bar dva nepovezana dijela, tzv. komponenti povezanosti

    grafa.

    Povezan graf je neorijentisani graf kod koga se bilo koja dva vora mogu povezati putem. Ukoliko postoje dva vora koja se ne mogu povezati, itav graf je nepovezan.

    1. 5. Dijkstrin algoritam

    U teoriji grafova, problem nakraeg puta predstavlja problem pronalaenja puta izmeu dva vora u grafu, tako da je zbir duina njegovih grana najmanji mogui u datom grafu. Dijkstrin algoritam, dakle, odreuje najkrai put izmeu dva vora, u grafu sa nenegativnim teinama ivica. Ovaj algoritam je zapravo pohlepni algoritam, to znai da u svakom stadijumu bira lokalno najbolje rjeenje.

    Postupak rjeavanja algoritma glasi:

    1. U prvoj iteraciji se odreuje vor najblii poetnom voru.

    2. U drugoj iteraciji treba odrediti drugi najblii vor. Do njega se moe doi ili direktno, granom od poetnog vora, ili granom za koju je u prethodnoj iteraciji utvreno da vodi najbliem voru.

    3. Dalje se proiruje skup vorova do kojih su odreeni najkrai putevi uz pomo sljedeeg pravila:

    Do nekog se vora najkraim putem dolazi ili direktno od poetnog vora, ili preko nekog drugog vora za koji je ve odreen najkrai put.

    4. Postupak se zavrava kada se utvrdi najkrai put do krajnjeg vora.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 9

    Matematika formulacija algoritma bi ila ovako:

    1. Oznai se poetni vor, npr v0. Utvrujemo da je u(v0) = 0 i dodijeljujemo trajnu oznaku [0, -].

    2. Posmatra se posljednji vor vi kojem je dodijeljena trajna oznaka, i svi vorovi susjedni voru vi kojima jo nije pridruena trajna oznaka. Svakom takvom voru v, postojea vrijednost u(v) se zamijeni s novom vrijednou, koja se dobije kao min{u(v), u(vi) + d(vi, v)}. Dodijeli mu se privremena oznaka (u(v), vi).

    3. Uoi se najmanja privremena oznaka na grafu, te se uokviruje, tj. ini trajnom.

    4. Ponavljaju se koraci 2. i 3. sve dok zavrni vor (cilj) ne dobije trajnu oznaku.

    5. Krene se nazad po grafu, i biljei put minimalne duine od zavrnog do poetnog vora.

    Tokom izvravanja algoritma, izdvajaju se dva skupa vorova, S i SC. U skupu S su oni vorovi za koje je poznata najkraa udaljenost od poetnog vora, a u skupu SC su svi ostali vorovi. Na poetku je skup S prazan, a u svakoj iteraciji jedan vor se premjeta iz SC u S.

    Algoritam je uspjean i u orijentisanim, i u neorijentisanim mreama.

    Primjena Dijkstrinog algoritma bie objanjena u prvom zadatku.

    Primjer 1: Ispitati graf, i pronai najkrai put od vora A do vora L na mrei sa slike 9.

    Slika 9 Ilustracija zadatka 1

    S je prazan skup, a SC

    = {A, B, C, D, E, F, G, H, I, J, K, L}

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 10

    Rjeenje:

    Korak 1:

    S = {A}; SC

    ={B, C, D, E, F, G, H, I, J, K, L}

    Korak 2:

    S = {A, C}; SC

    ={B, D, E, F, G, H, I, J, K, L}

    Korak 3:

    S = {A, C, b}; SC

    ={D, E, F, G, H, I, J, K, L}

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 11

    Koraci se nastavljaju dok ne pronaemo najkrai mogui put do zadatog vora. U ovom sluaju, to e biti:

    S={ A, C, B, D, E, G, H, F, I, K, J, L}; SC je prazan skup

    Najkrai put od A do L je: A B E H F I K L, duine 17.

    Edger Dijkstra (1930-2002) je bio holandski informatiar, dobitnik Tjuringove nagrade za fundamentalne doprinose na

    podruju programskih jezika. Jedan od znaajnijih doprinosa raunarstvu predstavlja njegov algoritam najkraeg puta, poznat i kao Dijkstrin algoritam. ivio je i radio u Roterdamu. Nagrada udruenja ACM (Association for Computing Machinery) za distributivno raunarstvo je nakon njegove smrti nazvana po njemu - Dijkstra Prize.

    Slika 10 Edger Dijkstra

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 12

    2. ALGORITAM BELLMAN-FORD

    2. 1. Opte o algoritmu

    Algoritam Bellman-Ford, kao i Dijkstrin algoritam, trai najkrai put za jedan poetni cvor u teinski usmjerenom grafu.

    Algoritam je dobio ime prema svojim stvaraocima, Riardu Belmanu i Lesteru Fordu, koji su ga objavili 1958. i 1956. godine; Meutim, Edvard F. Mur je takoe objavio isti algoritam 1957. godine, zbog ega se ponekada naziva i Belman-Ford-Murov algoritam.

    Mada mu je svrha slina Dijkstrinom algoritmu, za razliku od njega, graf smije imati negativne vrijednosti. Umjesto odabira vora s najmanjom udaljenou do sljedeeg vora, algoritam pristupa svim granama. Ta operacija se izvodi |v|-1 puta, gdje je |v| broj vorova u grafu. Ponavljanja omoguavaju precizno odreivanje udaljenosti kroz graf, prvenstveno zbog prirode najkrae putanje - koja svaki vor moe "posjetiti" samo jedanput.

    Ivice sa negativnim teinama se mogu nai u mnogim primjenama grafova, to ovaj algoritam ini veoma korisnim. Meutim, ukoliko graf sadri negativni ciklus" npr., ciklus ije ivice imaju negativan zbir, onda ne postoji najkrai put, zato to u tom sluaju svaki put moe postati krai ako se jo jednom proe kroz negativni ciklus. U takvim sluajevima, Belman-Fordov algoritam moe otkriti negativne cikluse i ukazati na njihovo postojanje, ali ne moe precizno prikazati najkrai put ukoliko se do negativnog ciklusa moe doi iz poetnog vora.

    Algoritam se prvenstveno koristi u mrenim smjernicama, kako bi se odredio optimalni put mrenih paketa u nekoj raunarskoj mrei.

    Kao i Dijkstrin algoritam, Belman-Fordov se zasniva na principu metode iteracije po

    imenu relaksacija, po kome se aproksimacija tane udaljenosti postepeno zamjenjuje tanijom vrijednou, sve dok se konano ne dostigne optimalno reenje. U oba algoritma, priblina udaljenost do svakog vora je uvijek precijenjena vrednost tane udaljenosti, i zamijenjuje se minimumom svoje stare vrijednosti i duine novootkrivenog puta.

    Dijkstrin algoritam "pohlepno" bira vor sa najmanjom teinom koji jo uvek nije posjeen, i ponavlja isti postupak na svim ostalim ivicama; U poreenju, Belman-Fordov algoritam jednostavno relaksira sve ivice, i to ini |v| 1 puta. U svakom novom ponavljanju, broj vorova sa tano izraunatom udaljenou raste, odakle slijedi da e eventualno svi vorovi imati tano izraunate udaljenosti. Ova metoda doputa Belman-Fordovom algoritmu da se primjenjuje na iri spektar ulaza od Dijkstrinog.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 13

    Slika 11 Primjer primjene algoritma Bellman-Ford

    Na slici 11 dat je primjer grafa sa jednostavnom putanjom i pet vorova. Pod pretpostavkom da je A poetni vor, i da se ivice obilaze u najgorem moguem redoslijedu (s desna na lijevo), potrebno je punih |v|-1 tj. 4 iteracija kako bi se procjene

    daljine konvergirale. Nasuprot tome, ukoliko su ivice obraene u najboljem moguem redoslijedu, s lijeva na desno, algoritam konvergira u jednu iteraciju.

    Kada se algoritam koristi za pretragu najkraeg puta, postojanje negativnih ciklusa moe sprijeiti algoritam da pronae taan odgovor. Meutim, ukoliko uzmemo u obzir da Belman-Fordov algoritam staje kada naie na negativni cikl, moe se koristiti u aplikacijama u kojoj je to cilj - na primjer, u tehnikama ponitavanja ciklusa tokom analize transportacionih mrea.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 14

    Slika 12 Prikaz Bellman-Ford algoritma u pseudokodu

    Razmotriemo Belman-Fordov algoritam u jo jednom primjeru.

    Primjer 2:

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 15

    Korak (a) pokazuje stanje grafa nakon inicijalizacije. U svakoj od |v|-1 iteracija,

    pretpostavljamo da se ivice dotiu u redoslijedu s lijeva na desno, tj (s, a), (s, b), (s, e), (a, f),... (q, r). Zbog ovakvog redoslijeda, unutar iteracije 1, vor q se relaksira prvo kroz ivicu (f, q), i uitava d[q] kao 8. Nakon toga, ivica (p, q) se posmatra, i d[q] postaje 7. Shodno tome, i p[q] se mijenja.

    2. 2. Dokaz korektnosti algoritma Bellman-Ford

    Korektnost algoritma je mogue dokazati matematikom indukcijom.

    Lema:

    Nakon i ponavljanja for petlje:

    - Ako Distance (u) nije beskonano, onda je jednako duini putanje od s do u; - Ako postoji put od s do u sa najvie i ivica, onda Distance (u) nije vee od duine najkraeg puta od s do u sa najvie i ivica.

    Dokaz:

    Za bazni sluaj indukcije, razmatrajmo i = 0 i trenutak prije nego to je for petlja pokrenuta po prvi put. U tom sluaju je, za poetni vor, source.distance = 0, to je tano. Za ostale vorove u vai u.distance = infinity, to je takoe tano, zato to ne postoji put iz source do u sainjen od 0 ivica.

    U induktivnom koraku, prvo dokazujemo prvi korak. Razmatrajmo trenutak kada se

    udaljenost vora mijenja sa v.distance := u.distance + uv.weight.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 16

    Po induktivnoj hipotezi, u.distance je duina nekog puta od source do u. Onda je u.distance + uv.weight duina puta od source do v koja prati put od source do u, a onda ide do v.

    U drugom koraku razmatramo najkrai put od source do u, sa najvie i ivica. Neka je v vor prije u na ovom putu. Onda, dio puta od source do v je najkrai put od source do v sa najvie i-1 ivica. Po induktivnoj hipotezi, v.distance nakon i1 iteracija petlje nije vea od duine ovog puta. Odatle slijedi da uv.weight + v.distance nije vea od duine puta od s do u. U i-toj iteraciji, u.distance se poredi sa uv.weight + v.distance, te joj je jednaka

    ukoliko je uv.weight + v.distance manje. Dakle, nakon i iteracija, u.distance nije vee od duine najkraeg puta od source do u sa najvie i ivica.

    Ukoliko nema ciklusa sa negativnom teinom, onda najkrai put posjeti svaki vor najvie jedanput, tako da u treem koraku ne moe doi do poboljanja. Nasuprot tome, pretpostavimo da se ne moe napraviti poboljanje; Onda za svaki ciklus sa vorovima v[0], ..., v[k1] vai:

    v[i].distance

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 17

    Neki od tih problema ukljuuju:

    - Nepravilno izvravanje skaliranja.

    - Sporo sprovoenje promjena u topologiji mree, poto se ispravke ire sa vora na vor.

    - Problem brojanja do beskonanosti (tj. ukoliko tokom neke greke doe do toga da je odreeni vor nedostian iz nekog skupa drugih vorova, ti vorovi mogu da poveavaju svoje procjene rastojanja do nedostinog vora).

    Belman-Fordov algoritam se moe unaprijediti u praksi, uz posmatranje da, ukoliko se izvri terminacija iteracije glavne petlje algoritma bez pravljenja znaajnih promjena, algoritam se moe istog trenutka terminirati - zato to naredne iteracije nee praviti izmjene. Uz ovaj uslov, glavna petlja u nekim sluajevima ima mnogo manje od |V| 1 iteracija, iako najgori sluaj algoritma ostaje nepromijenjen.

    Jen (1970) opisuje jo dva unapreenja Belman-Fordovog algoritma za graf bez cikla negativne teine. Iako ine algoritam brim u praksi, ne mijenjaju njegov najgori sluaj od O(|V|*|E|). Njegovo prvo unapreenje smanjuje broj relaksacionih koraka koji su potrebni za svaku iteraciju algoritma. Ukoliko vor v ima udaljenost koja se nije promijenila od poslednjeg puta kada su se ivice (koje idu iz v) relaksirale, onda nema

    potrebe relaksirati ivice iz v po drugi put. Na ovaj nain, kako se broj vorova sa tanim udaljenostima poveava, broj ivica koje treba da se relaksiraju u svakoj iteraciji se smanjuje, to vodi do konstantnog uteenja vremena za izuzetno razgranate grafove.

    Jenovo drugo unapreenje prvo dodjeljuje arbitrarni linearni red svim vorovima, i onda dijeli skup svih vorova na dva podskupa. Prvi podskup, Ef, sadri sve ivice (vi, vj), takve da je i < j; Drugi podskup, Eb, sadri ivice (vi, vj) takve da je i > j. Svaki vor je posjeen redom V1, V2, ..., V|V|, relaksirajui svaku ivicu koja ide od tog vora iz Ef. Svaki vor se onda posjeuje redom v|V| ; v|V| - 1, ..., v1, relaksirajui svaku ivicu koja ide iz vora Eb. Svaka iteracija u glavnoj petlji algoritma, nakon prve, dodaje barem dvije ivice u skup

    ivica, ije se relaksirane udaljenosti poklapaju sa tanim najkraim putem: Jedna iz Ef i jedna iz Eb. Ovakva modifikacija smanjuje broj iteracija glavne petlje u najgorem sluaju, sa |V| 1 na |V|/2.

    Jo jedno unapreenje, od strane Banistera i Eptajna (2012), zamjenjuje arbitrarni linearni red vorova korienih u Jenovom drugom unapreenju sa nasuminom permutacijom. Ova promjena ini da se najgori sluaj za Jenovo unapreenje (u kome vorovi najkraeg puta striktno alterniraju izmeu dva podskupa Ef i Eb) veoma teko dogodi. Sa nasuminom permutacijom redoslijeda vorova, oekivana vrijednost za broj iteracija potrebnih u glavnoj petnji je najvie |V|/3.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 18

    2. 4. Bri algoritam najkraeg puta

    Bri algoritam najkraeg puta (BANP) je algoritam, objavljen 1994. godine, koji predstavlja poboljanje algoritma BellmanFord. Algoritam radi dobro na nasuminim, prorijeenim grafovima, i posebno je pogodan za grafove koji sadre grane sa negativnim teinama.

    Za zadati usmjereni teinski graf G = (V, E) i izvorni vor s, BANP algoritam pronalazi najkrai put od s do svakog vora v u grafu. Duina najkraeg puta od s do v se uva u d(v) za svaki vor v.

    Osnovna ideja BANP algoritma ista je kao i BelmanFordovom algoritmu, po tome to se svaki vor koristi kao mogui vor za relaksiranje susjednih vorova. Poboljanje u odnosu na ostale je u tome to, umjesto da slijepo pokuava za sve mogue vorove, BANP odrava red vorova kandidata, i dodaje vor u red samo ukoliko je taj vor relaksiran. Ovaj proces se ponavlja dok god nema vie vorova koji mogu biti relaksirani.

    Na slici 13 je pseudokod ovog algoritma, gdje Q predstavlja red vorova kandidata, dok je w(u, v)teina grane (u, v).

    Slika 13 Pseudokod algoritma BANP

    Algoritam se takoe moe primjeniti na neusmjerenom grafu, tako to se zamijeni svaka neusmjerena grana sa dvije usmjerene grane suprotnih smjerova.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 19

    Riard Ernest Belman (1920 - 1984) je bio ameriki matematiar, smatran stvaraocem dinamikog programiranja. Roen je u Njujorku, dok je proveo vei dio ivota u Los Anelesu. Neka od njegovih dostignua ukljuuju i Belmanovu jednainu, Hamilton-Jakob-Belmanovu jednainu, kao i Belman-Fordov algoritam.

    1973. godine mu je dijagnosticiran tumor na mozgu, od ega je, desetak godina kasnije, i umro.

    Lester Randolf Ford Mlai (roen 1927.) je ameriki matematiar, ija je specijalizacija u problemima mrenog toka. Formulisao je max-flow min-cut teoremu, kao i Belman-Fordov algoritam. ivi i radi u Hjustonu, Teksas.

  • Algoritam Bellman-Ford

    Aleksandar Balija Strana 20

    INDEKS KLJUNIH POJMOVA