Előfeltétele, hogy nincs az $s$-ből elérhető negatív kör. Irányított gráf
esetén
lehetnek negatív élsúlyú élek. A szélességi bejárás egy speciális módosulata. Irányítatlan gráf esetén
az
algoritmus
akkor ad megoldást, ha a gráf nem tartalmaz a start csúcsból elérhető negatív súlyú élt,
irányított
esetben azonban megengedett a negatív súlyú él, de a start csúcsból elérhető negatív összsúlyú
kör
nem. A sor-alapú Bellman-Ford algoritmus egyik előnye, hogy képes felismerni, ha van a
gráfban a
start
csúcsból elérhető negatív összsúlyú kör és ekkor az algoritmus leállítható, továbbá a kör is
detektálható. A sor-alapú Bellman-Ford algoritmus a fokozatos közelítés technikáját
alkalmazza.
Működése:
A csúcsokhoz címkéket rendelünk:
- $d$ a start csúcsból mekkora költséggel érhető el az adott csúcs
- $e$ hány él kell ahhoz, hogy eljussunk az adott csúcsba a start csúcsból
- $\pi$ az optimális úton melyik csúcsból jutottunk el hozzá, (szülője)
A sor-alapú Bellman-Ford algoritmus a szélességi bejáráshoz hasonlóan egy sort
használ segédadatszerkezetként. Tároljuk, hogy az egyes csúcsokhoz hány élből álló út vezet ($e$).
Kezdetben csak a start csúcs van a sorban, de bármelyik csúcs többször is visszakerülhet a
sorba.
Kivesszük az első elemet a sorból és kiterjesztjük. Minden rákövetkezőjét megvizsgáljuk, hogy
találunk-e
rövidebb utat hozzá. Ha találtunk hozzá rövidebb utat, és nincs benne a sorban, beletesszük. Addig
fut
az algoritmus, amíg ki nem ürül a sor vagy negatív kört nem találtunk.
Egy $n$ csúcsú gráf esetén két különböző csúcs között legfeljebb $n-1$ élből álló
optimális út vezethet, ezért ha az algoritmus működése során valamely $u \in G.V$ csúcs
kiterjesztésekor
$e(u) = n$, akkor negatív összsúlyú kört találtunk.
Használjuk a menet fogalmát is, amely legkönnyebben rekurzív módon
definiálható:
- $0.$ menet: start csúcs feldolgozása
- $(i + 1).$ menet: az $i$-edik menet végén a sorban lévő csúcsok feldolgozása
Műveletigény:
Gyakorlati alkalmazása:
A sor-alapú Bellman-Ford algoritmus egy elosztott (távolságvektoros) változatát
számítógépes hálózatoknál routing protokollok is használják az optimális útvonalválasztáshoz.
Korábban
az ARPANET útválasztó algoritmusa volt.