46
Budapest, 2009 EÖTVÖS LÓRÁND TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR Legrövidebb útkereső algoritmusok A diplomamunkát készítette: Podobni Katalin Matematika Bsc Matematikai elemző szakirány Témavezető: Nagy Adrienn PhD hallgató Eötvös Lóránd Tudományegyetem Természettudományi kar Operációkutatási tanszék

TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

Budapest, 2009

EÖTVÖS LÓRÁND TUDOMÁNYEGYETEM

TERMÉSZETTUDOMÁNYI KAR

Legrövidebb útkereső algoritmusok

A diplomamunkát készítette: Podobni Katalin

Matematika Bsc

Matematikai elemző szakirány

Témavezető: Nagy Adrienn

PhD hallgató

Eötvös Lóránd Tudományegyetem

Természettudományi kar

Operációkutatási tanszék

Page 2: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

Tartalomjegyzék

1

Tartalomjegyzék

1 Bevezetés ............................................................................................................................... 2

2 Gráfelméleti fogalmak, jelölések ................................................................................... 3

2.1 Gráfok ábrázolási módjai ........................................................................................ 5

3 „Legrövidebb út?” Mit jelent ez? ................................................................................... 7

4 Az algoritmusok .................................................................................................................. 9

4.1 Egy kezdőpontból az összes többi pontba vezető legrövidebb út .......... 9

4.1.1 Szélességi keresés ............................................................................................. 9

4.1.2 A Dijkstra algoritmus .................................................................................... 12

4.1.3 A Bellman-Ford-algoritmus ........................................................................ 21

4.2 Két adott csúcs közötti legrövidebb út ........................................................... 26

4.3 Egy adott csúcsba érkező legrövidebb utak ................................................. 28

4.4 Legrövidebb utak minden csúcspárra ............................................................ 28

4.4.1 Floyd algoritmusa .......................................................................................... 28

4.4.2 Warshall algoritmusa .................................................................................... 32

4.4.3 Johnson algoritmusa ..................................................................................... 34

5 A matematikában kevésbé ismert módszerek ..................................................... 38

5.1 Informált keresési stratégiák ............................................................................. 38

5.1.1 A mohó legjobbat-először keresés ........................................................... 38

5.1.2 Az A* algoritmus ............................................................................................. 40

6 Összefoglalás ..................................................................................................................... 43

7 Irodalomjegyzék............................................................................................................... 44

8 Köszönetnyilvánítás ....................................................................................................... 45

Page 3: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

1. Bevezetés

2

1 Bevezetés

A gráfok rendkívül gyakran használt struktúrák és a gráfokkal foglalkozó

algoritmusok alapvető szerepet játszanak a számítástudományban. Számos

érdekes probléma fogalmazható meg gráfok segítségével. Ezek közül talán az egyik

legjelentősebb a legrövidebb utak problémája. A legkézenfekvőbb példa: hogyan

jutunk el a leggyorsabban A városból a B városba? De számos más kérdés is

megoldható vele, mint például az ütemezéselmélet témakörébe tartozó

max| 2 |J n C probléma, vagy az informatikában a mesterséges intelligencia

területén előforduló nehézségek.

A probléma sokszínűsége miatt megoldására számos algoritmus született. A

szakdolgozat legfőbb célja, hogy bemutassa ezen eljárások legnépszerűbbjeit,

rámutatva előnyeikre, hátrányaikra valamint a közöttük lévő különbségekre,

hasonlóságokra. A dolgozat végén bemutatjuk a már fent említett mesterséges

intelligencia területén használt két alapvető módszert is, amelyek a matematikai

algoritmusokhoz képest már jelentősebb változtatásokat mutatnak.

Elsőként alapvető, a szakdolgozat megértéséhez elengedhetetlen

gráfelméletbeli fogalmakról esik szó, utána pedig magát a problémát definiáljuk.

Ezek után következik az algoritmusok részletes elemzése, melyeket aszerint

csoportosítunk, hogy a probléma mely altípusát oldják meg. Természetesen sok

példa és ábra is segíti érthetőbbé tenni a témát, illetve hangsúlyozni annak

fontosságát.

Ezen kívül, a túlzott matematikai („száraz”) jelleg elkerülése végett a

dolgozatban helyet kap a történelmi háttér, valamint az algoritmusok

szülőatyjainak főbb életmozzanatai, egyéb szerepük a matematikában. Néhány

helyen az algoritmus létrehozóitól vett idézetekkel díszítjük a leírásokat, hogy

megismerhessük az ő véleményüket is.

Page 4: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

2. Gráfelméleti fogalmak, jelölések

3

2 Gráfelméleti fogalmak, jelölések

Ebben a fejezetben foglaljuk össze azokat a jelöléseket és fogalmakat,

amelyekre elengedhetetlenül szükségünk van a téma kifejtéséhez, és amelyeket a

szakdolgozatban használni fogunk.

Definíció (gráf): Egy G gráf két halmazból áll: a csúcsok vagy pontok V

halmazából, mely egy véges, nem üres halmaz; és az élek E halmazából, melynek elemei

bizonyos V-beli párok.

Jelölések:

- 𝑯 : egy H halmaz elemszámát jelöli. Az egyszerűség kedvéért legyen most 𝑛 az

adott gráf csúcshalmazának száma.

- 𝒆 − 𝑣𝑒𝑙 az élhalmazának elemszámát jelöljük.

Tehát 𝐺 = (𝑉, 𝐸) gráf esetében 𝑛 = 𝑉 és 𝑒 = 𝐸 .

Egy gráf nagyon sok probléma szemléltetésére szolgálhat, a legegyszerűbb

például az úthálózat, telefonhálózat, de akár terület-felosztási illetve házassági

problémát is ábrázolhatunk vele.

A gráfokat többféle szempontból is szokás csoportosítani. A legjelentősebb

szempont az irányítottság.

Definíció (irányított gráf): Az irányított gráfban minden él irányított (másképp

fogalmazva a csúcsok rendezettek). Az irányítást nyilak segítségével jelöljük. Az (𝑢, 𝑣)

irányított él jelölésére használni fogjuk a 𝑢 → 𝑣 változatot is.

1. ábra: Irányított gráf

Page 5: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

2. Gráfelméleti fogalmak, jelölések

4

Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva

van, akkor irányítatlan gráfról beszélünk. Ekkor nem teszünk különbséget az (𝑢, 𝑣)

és a (𝑣, 𝑢) élpár között.

2. ábra: Irányítatlan gráf

Mint ahogy már fentebb utaltunk rá, az objektumok (csúcsok) közötti

kapcsolat sokszor jelentheti út létezését vagy kommunikáció lehetőségét. Ilyenkor

gyakran költségek vagy súlyok tartoznak az élekhez, amelyek az út esetében időt

vagy akár pénzt is jelenthetnek (gondoljunk csak az autópályákra, amelyek

használatáért fizetni kell). Ezt a kapcsolatot egy valós értékű függvénnyel fogjuk

leírni, melynek értelmezési tartománya a gráf élhalmaza, az érték készlete pedig a

valós számok halmaza és 𝑘-val, a költség szó kezdőbetűjével jelöljük, tehát

𝑘: 𝐸 → ℝ. A súlyokat az élekre szokás írni.

3. ábra: Súlyozott gráf

Definíció (út): Egy út – akár irányított, akár irányítatlan gráfban – csúcsok olyan

𝑣1, … , 𝑣𝑘 sorozata (lehet egyelemű is), melyben minden (𝑣𝑖 , 𝑣𝑖+1) é𝑙𝑒 (1 ≤ 𝑖 ≤ 𝑘 − 1) a

gráfnak. Irányított gráfoknál az 𝑢-ból 𝑣-be menő útra 𝑢 ↝ 𝑣 jelöléssel is fogunk utalni.

Definíció (út hossza): Legyen adott egy 𝐺 = (𝑉, 𝐸) irányított vagy irányítatlan gráf

a 𝑘(𝑓), 𝑓 ∈ 𝐸 élsúlyokkal. A G gráf egy 𝑢-ból 𝑣-be menő útjának hossza az úton

szereplő élek súlyának összege.

Page 6: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

2. Gráfelméleti fogalmak, jelölések

5

2.1 Gráfok ábrázolási módjai

Két módszert szokás alkalmazni egy 𝐺 = (𝑉, 𝐸) gráf ábrázolására. Az első az

éllistás ábrázolási mód.

Definíció (éllista): A gráf minden csúcsához egy lista tartozik. Az i V csúcs

listájában tároljuk az i -ből kimenő éleket, és (amennyiben vannak) a súlyukat is. A

listák összességét egy tömbben tároljuk.

Legyen a tömb neve Szomszéd . Vagyis Szomszéd [ i ] elemei az i csúcs G-beli

szomszédjai. Ha G irányított, akkor a szomszédsági listák hosszainak összege | E |,

hiszen egy ( , )i v élt úgy ábrázolunk, hogy v -t felvesszük a Szomszéd [ i ] listába. Ha

G irányítatlan, akkor az összeg 2 | E | mert ( , )i v irányítatlan él ábrázolása során i -t

beletesszük a Szomszéd [ v ]-be, míg v -t a Szomszéd [ i ]-be. Akár irányított, akár

irányítatlan a gráfunk, a szomszédsági listás ábrázoláshoz szükséges tárterület

mérete (max( , )) ( )O V E O V E .

Az éllistás ábrázolás legjobban a ritka gráfok esetében alkalmazható.

Definíció (ritka gráf): Egy gráfot ritkának nevezünk, ha | E | sokkal kisebb, mint

|V |2.

(Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 2001)

4. ábra: Súlyozott irányítatlan gráf és a hozzá tartozó éllisták

Page 7: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

2. Gráfelméleti fogalmak, jelölések

6

5. ábra: Irányított gráf és a hozzátartozó éllisták

A második módszer, a szomszédsági (adjacencia)-mátrix.

Definíció (szomszédsági mátrix): A 𝐺 = (𝑉, 𝐸) gráf szomszédsági-mátrixa a

következő - a V elemivel indexelt – n n -es mátrix:

,A i j 0

1 ( , )

( , ) .

i j E

i j E

Irányítatlan gráfok esetén a szomszédsági mátrix szimmetrikus lesz (azaz

, ,A i j A j i teljesül minden ,i j csúcspárra). Ha az élekhez még költségeket is

nyilván kell tartani, akkor egy olyan K mátrixot szokás használni, amelyben

K i j , 0 , ha i j , K i j k i j , ( , ) , ha i j és ( , )i j éle G-nek, K i j , egyéb

esetben. Tulajdonképpen a jelzi egy él nemlétét.

Ezek alapján a fentebb látható 4. ábra adjacencia-mátrixai:

0 1 1 1 0

1 0 0 0 0

1 0 0 1 1

1 0 1 0 0

0 0 1 0 0

A

0 3 10 6 *

3 0 * * *

10 * 0 5 12

6 * 5 0 *

* * 12 * 0

K

Az éllisták együttesen aszimptotikusan kevesebb tárterületet igényelnek, mint

a csúcsmátrix, azonban a használat során a hatékonyságban ugyanennyivel

elmaradnak attól, így ha a gráf nem túl nagy, szerencsésebb szomszédsági

mátrixszal ábrázolni. Ha a gráf nem súlyozott, akkor az adjacencia mátrixos leírás

tovább javítható. Ebben az esetben a mátrix elemei lehetnek bitek, így jelentősen

csökkenthető a szükséges tárterület mérete.

Page 8: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

3. „Legrövidebb út?” Mit jelent ez?

7

3 „Legrövidebb út?” Mit jelent ez?

Definíció (legrövidebb út): Legrövidebb út alatt a gráfelméletben egy minimális

hosszúságú utat értünk egy gráf két különböző 𝑢 és 𝑣 csúcsa között. Amennyiben a

gráfunk éleihez nem tartoznak súlyok, akkor ez egyet jelent egy olyan úttal 𝑢 és 𝑣 csúcs

között, amelyben a legkevesebb él szerepel. Ha vannak súlyok a gráf élein, akkor pedig

olyan útról beszélünk, amelynek élein szereplő súlyok összege minimális. Vagyis ha

adott egy 𝐺 = (𝑉, 𝐸) gráf a 𝑘(𝑓), 𝑓 ∈ 𝐸 élsúlyokkal, akkor f P

d u v min k f

( , ) ( )

ahol P út 𝑢 és 𝑣 között.

Egyes könyvekben ez a definíciója az u és v csúcsok közötti távolságnak,

illetve a legrövidebb út súlyának, ha u v , ha u v akkor ez a távolság, illetve súly

0, ha nincs út u és v között, akkor ∞.

Az alábbi változatokra osztható a probléma (és a továbbiakban ez alapján

csoportosítjuk az algoritmusokat):

1. Legrövidebb út egy kiinduló pont és az összes többi pont között: meg

szeretnénk találni az összes v V csúcshoz egy adott s V kezdőcsúcsból

odavezető legrövidebb utat.

2. Legrövidebb út két különböző csúcs között: keressük egy adott u csúcsból

egy adott v csúcsba vezető egyik legrövidebb utat.

3. Legrövidebb út egy végpont és az összes többi pont között (ez az 1.

megfordítása).

4. Legrövidebb út az összes csúcspár között: keressük az összes u és v

csúcspárra egy u -ból a v csúcsba vezető legrövidebb utat.

Természetesen akadhat olyan legrövidebb út probléma, amelyben

előfordulnak negatív élek.

Definíció (negatív kör): A 𝐺 = (𝑉, 𝐸) irányított gráf olyan köre, amelyben az élek

súlyának összege negatív.

Amennyiben nincs a gráfban negatív kör bármelyik v V csúcs esetén a

legrövidebb út súlya jóldefiniált marad. Ha vannak u -ból elérhető negatív körök,

Page 9: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

3. „Legrövidebb út?” Mit jelent ez?

8

akkor viszont a legrövidebb út súlya definiálatlan lesz, ugyanis ilyen esetben

mindig van kisebb súlyú rövidebb út, ha a feltételezett legrövidebbhez

hozzávesszük a negatív kör egy bejárását. Ilyen esetekben ezt a távolságot -nek

definiáljuk. (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 2001)

Page 10: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

9

4 Az algoritmusok

4.1 Egy kezdőpontból az összes többi pontba vezető legrövidebb

út

4.1.1 Szélességi keresés

A szélességi keresés az egyik legegyszerűbb gráfbejáró algoritmus, ezen alapul

sok fontos gráf algoritmus, többek között Dijkstra algoritmusa is. Ez az eljárás az

egységnyi súlyokkal ellátott gráf esetén keresi meg az u V kezdőpontból az

összes többi pontba vezető legrövidebb utakat (ebben az esetben a legrövidebb út

alatt a legkevesebb élből álló utat értjük) úgy, hogy G éleit szisztematikusan

megvizsgálja és kiszámítja az elérhető csúcsok távolságát (legkevesebb él) u -tól.

Elnevezése onnan ered, hogy az algoritmus az u -tól k távolságra lévő csúcsokat

még azelőtt eléri, mielőtt egy 1k távolságra levőt elérne, szemléletesen: egy

egyre szélesedő körben vizsgálódik.

A továbbiakban feltesszük, hogy a 𝐺 = (𝑉, 𝐸) gráfot éllistásan ábrázoljuk.

Egyszerű szavakkal megfogalmazva az eljárás a következő: meglátogatjuk az első

csúcsot, majd ennek a csúcsnak az összes szomszédját. Azután ezen szomszédok

összes olyan szomszédját, ahol még nem jártunk, és így tovább. A legjobb ismert

módszer ennek megszervezésére egy sort alkalmaz. Először beletesszük a

kezdőcsúcsot, majd „meglátogatottsági sorrend szerint” annak az összes

szomszédját, majd a kezdőcsúcs elsőként meglátogatott szomszédjának összes

szomszédját, majd a kezdőcsúcs másodikként meglátogatott szomszédjának összes

szomszédját és így tovább.

Definíció (sor): A sor adatszerkezet alapja egy elemekből álló kettős láncolt lista.

Két alapművelet van: sorba ( , )v Q a v elemet a Q sor végére illeszti; első ( , )v Q pedig

visszaadja és kitörli Q -ból annak első elemét. A sort szokás még FIFO-listának (first in,

first out) is nevezni.

A módszer általános lépéseinek lényege, hogy vesszük a sor elején levő u

csúcsot. Ezt töröljük a sorból, meglátogatjuk azokat a v szomszédjait, amelyeket

Page 11: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

10

eddig még nem láttunk, majd ezeket a v csúcsokat a sor végére tesszük. Jelentse

D v a v csúcsnak az u -tól való távolságát.

BEJÁR ( , )G u eljárás

1. procedure bejár

2. begin

3. for 1s to n do

4. bejárva s :=HAMIS

5. for :s 1 to n do

6. if bejárva s =HAMIS then

7. szb ( )s

8. end

9. procedure szb ( )s

10. var

11. Q:csúcsokból álló sor

12. ,u v :csúcsok

13. begin

14. bejárva s :=IGAZ

15. sorba ( , )s Q

16. while Q nem üres do

17. begin

18. u :=első ( )Q

19. for minden u v E élre do

20. if bejárva v =hamis then

21. begin

22. bejárva v :=IGAZ

23. sorba ( , )v Q

24. 1D v D u

25. end 26. end 27. end

A bejárás során felépíthetjük a gráf egy szélességi feszítő erdejét. E fákban

osztályozhatjuk az éleket:

Definíció (éltípusok): Tekintsük a G irányított gráf egy szélességi bejárásaként

kapott T szélességi erdőt, G egy u v éle:

faél, ha u v éle T -nek,

előreél, ha u v nem faél, v leszármazottja u -nak T -ben, ésu v ;

visszaél, ha u leszármazottja v -nek T -ben,

Page 12: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

11

keresztél, ha u és v nem leszármazottai egymásnak.

Az alábbi 6. ábra szemlélteti az éltípusokat:

6. ábra: e-előreél, f-faél, k-keresztél, v-visszaél

A szélességi bejárás költsége ( )O n e , mert minden csúcsot pontosan egyszer

teszünk be a sorba, és minden irányított élet egyszer vizsgálunk meg (amikor a

kezdőpontja kikerül a sorból). A szélességi bejárás segítségével a ( , )d u v

távolságok lineáris időben meghatározhatók, ugyanis a következők teljesülnek:

Tétel:

Legyen 1 2, ,..., nu x x x a csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor

1. 1 2 ... nD x D x D x

2. Ha u v éle G-nek, akkor 1D v D u .

3. ( , )D v d u v teljesül minden v V csúcsra.

Bizonyítás:

1. Könnyen látható, hogy a csúcsok az 1 2, ,..., nu x x x sorrendben kerülnek bele a

Q sorba, tehát így is kerülnek ki. Tehát ha egy ix u csúcs előbb van mint 1ix ,

akkor x szülője is megelőzi 1ix szülőjét a sorban, ebből könnyen látszik, hogy

1 ,..., nD x D x számsorozat nem csökkenő. Indukció alapján ez könnyen

belátható a gyökérre és a fiaira, később pedig ( ) 1i iD x D szülő x és

Page 13: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

12

1 1( ) 1i iD x D szülő x , ha az apák különbözők, akkor

1 1( ) ( ) .i i i iD szülő x D szülő x D x D x Amennyiben a szülők

megegyeznek, akkor 1 .i iD x D x

2. Vizsgáljuk meg, mi történik, ha v kikerül a Q sorból, és tekintsük ( , )u v élet. Ha

bejárva u = hamis , akkor u szülője v , tehát 1D u D v . Ha u -t már

korábban láttuk, akkor nyilván u szülője előbb van a sorban, mint v , vagyis az

előző alapján: ( )D szülő u D v . Ebből pedig világosan látszik a bizonyítani

kívánt egyenlőtlenség, csak mindkét oldalhoz egyet kell hozzáadni.

3. Nyilvánvaló, hogy ( , )D v d u v érvényes minden v V csúcsra, elég tehát a

fordított egyenlőtlenséget igazolni. Legyen 0 1, ,..., ku y y y v egy minimális

hosszúságú G-beli irányított s -ből v -be vezető út. Ennek éleire sorra

alkalmazzuk a tétel előzőleg már bebizonyított 2. állítását és láthatjuk, hogy ez

az állítás is helyénvaló. ∎

4.1.2 A Dijkstra algoritmus

Dijkstra algoritmusa egy adott kezdőcsúcsból az összes többi csúcsba vezető

legrövidebb utak problémáját egy súlyozott, irányított 𝐺 = (𝑉, 𝐸) gráfban, abban

az esetben oldja meg, ha a nincsenek negatív súlyok az éleken, vagyis ha minden

u v élre ( , )k u v ≥0 teljesül.

Az algoritmust Edsger Wybe Dijkstra, holland matematikus és informatikus

alkotta meg 1956-ban.

4.1.2.1 Edsger Wybe Dijkstra

7. ábra: Edsger Wybe Dijkstra

Page 14: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

13

Edsger Wybe Dijkstra 1930-ban született a hollandiai Rotterdamban. Szülei

elismerten jó végzettségű értelmiségiek voltak, édesapja kémikus, édesanyja

matematikus volt. 1942-ben, 12 éves korában bekerült egy igen magas színvonalú

gimnáziumba, az Erasminium Gimnáziumba, ahova kivételes tehetségek jártak.

Dijkstra sok különböző tárgyat tanult, mint például: görög, latin, francia, német és

angol nyelv, valamint biológia, matematika és kémia.

1945-ben még jogi pályára készült, hogy utána képviselőként dolgozzon.

Azonban abból kifolyólag, hogy kémiából, biológiából és matematikából jó

eredményei voltak, úgy döntött, hogy a leideni egyetemen folytatja tanulmányait és

elméleti pszichológiát hallgat. 1951 nyarán a cambridge-i egyetemen ismerkedett

meg először a programozással. 1952 márciusától részmunkaidőben dolgozott egy

amsterdami matematikai központnál, ekkor kezdte el igazán érdekelni az

informatika. Amilyen gyorsan csak lehetett befejezte a pszichológiai tanulmányait

és elkezdett hódolni ennek az új szenvedélyének.

Miután 1957-ben megházasodott, folytatta munkáját a matematikai

központban, miközben az 1970-es évek elején az egyesült államokbeli Borroughs

Corporation kutatási tagja is volt. 1972-ben megkapta az ACM Turing Díjat, 1974-

ben az AFIPS Harry Good Memorial Díjat. Az 1980-as évek elején a texasi Austinba

költözött, majd 1984-ben állást is kapott az Informatikai Tudományok Egyetemén,

ahol 69 éves koráig dolgozott. 1999-ben lett professor emeritus. Rákban halt meg

nueneni otthonában 2002. augusztus 6-án.

Főbb publikációi:

- Go To Statement Considered Harmful Communications of the ACM (1968),

- A note on two problems in connexion with graphs. Numerische Mathematik

(1959)

- Structured Programming, melyet O.-J. Dahl-el és C. A. R. Hoare-val írt 1972-

ben.

Néhány cikke:

- „The Humble Programmer” (1972. augusztus)

- „How do we tell truths that might hurt?”(1982. május)

(Wikipedia, 2007)

A másodikként említett publikációja alapján, hogyan is gondolkodott ő a gráfok

problémáiról:

Page 15: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

14

„Összefüggő gráfok két problémája”

„Tekintsünk n darab pontot, melyek közül néhányat vagy mindegyiket él köt össze, az élek hossza

adott. Tegyük fel, hogy legalább egy él létezik valamely két pont között.

Nézzük az alábbi két problémát:

Első probléma: Készítsük el az n csúcs minimális költségű fáját. (Azt a fát, amelyben minden csúcs

között egy és csakis egy út vezet.)

Az algoritmus első lépéseként három csoportra osztjuk az éleket.

I. Az eljárás során már elfogadott élek.

II. A következő lépésben az I. csoportba választandó élek halmaza.

III. A kimaradó élek (vagy már elutasítottuk őket, vagy még nem vizsgáltuk meg).

A csúcsokat két csoportba sorolhatjuk.

A: Azon élek végpontjai, amelyek az I. csoportban vannak.

B: A kimaradó csúcsok (egy és csakis egy II. csoportbeli él vezet minden ilyen kimaradó csúcshoz).

Kezdjük az eljárást egy tetszőleges A csoportbeli csúccsal, majd válasszuk ki azokat a II. csoportbeli

éleket, amelyeknek egyik végpontja az A csúcs. Kezdetben az I. csoport üres. Ezek után ismételjük az

alábbi két lépést:

1. lépés: A II. csoport legrövidebb élét tegyük I-be és az eddig a B csoportban lévő végpontját tegyük A-

ba.

2. lépés: Tekintsük azokat az éleket, amelyek az éppen előbb az A csoportba helyezett csúcsból

indulnak és egy B csoportbeli csúcsba érkeznek. Ha ezen élek közül valamelyik hosszabb, mint a

neki megfelelő II. csoportbeli él, akkor elutasítjuk; amennyiben rövidebb annál, akkor kicseréljük őket

és ezt az élt tesszük a II. csoportba, és a másikat vetjük el.

Ezután visszatérünk az 1. lépéshez és a két lépést addig ismételgetjük, amíg a B és a II. csoport üres

nem lesz. Végül az I. csoportban lévő élek megadják a keresett fát.

Ez a megoldás használhatóbb, mint a Kruskal-, a H.Loberman- vagy a A.Weinberger-féle módszer.

Az ő megoldásukban az összes élek elsősorban a hosszúság szerint vannak osztályozva. Még akkor is, ha

az a csúcsok koordinátáiból kiszámolható, az eljárásukban az összes él egyidejű tárolása szükséges. A

fenti eljárás során legfeljebb csak n darab él adatát kell tárolni, ugyanis a 2. lépés során csak az I. és a II.

csoportbeli éleket vizsgáljuk.

(…)”

(E.W.Dijkstra, 1959)

4.1.2.2 Dijksta algoritmusa éllistával

A Dijkstra algoritmus azoknak a csúcsoknak az S halmazát tartja nyilván,

amelyekhez már meghatározta az u kezdőcsúcsból odavezető legrövidebb út

Page 16: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

15

súlyát. Az algoritmus minden lépésben a legkisebb legrövidebb-út becslésű

x V S csúcsot választja ki, beteszi az x -t S -be, és minden x -ből kivezető éllel

egy-egy közelítést végez. A V S csúcsok nyilvántartására egy Q sort

alkalmazunk, amelyet azok d értékeivel töltünk fel.

DIJKSTRA ( , )G u eljárás

A Dijkstra algoritmus mohó stratégiát alkalmaz, hiszen mindig a „legközelebbi”

csúcsot választja ki V S -ből, hogy azután az S halmazba tegye. A mohó

stratégiák általában nem adnak optimális eredményt, de az alábbi tétel mutatja,

hogy a Dijkstra algoritmus szükségszerűen a legrövidebb utakat állítja elő.

Tétel (Dijkstra algoritmus helyessége): Ha Dijkstra algoritmusát egy nemnegatív

k súlyfüggvénnyel súlyozott, u kezdőcsúcsú irányított 𝐺 = (𝑉, 𝐸) gráfban futtatjuk,

akkor annak befejezésekor minden x V csúcsra teljesül, hogy ,D x d u x .

1. procedure Dijkstra

2. begin

3. for minden v V csúcsra do

4. :D v

5. :szülő v

6. end

7. 0D u

8. var

9. :S

10.

:Q csúcsokból álló sor

11. begin

12. while Q nem üres do

13. begin

14. :x minimális Q

15. :S S x

16. for minden v Szomszéd x -re do

17. if ( , )D v D x k x v then

18. begin

19. :D v ( , )D x k x v

20. szülő v x

21. end 22. end 23. end

Page 17: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

16

Bizonyítás: Indirekten tegyük fel, hogy x az első olyan csúcs, amire az S

halmazba történő beillesztésekor igaz, hogy ( , )D x d x u . Nyilván x u , tehát

S közvetlenül x beillesztése előtt, tehát léteznie kell egy u és x csúcs közötti

útnak, különben ( , )D x d u x egyenlőség fennállna, és ez ellentmondana a

kezdeti ( , )D x d x u feltevésünknek. Ezek alapján léteznie kell egy p

legrövidebb útnak u és x között, ahol u S és x V S . Legyen y az első olyan

csúcs a p úton, amely már a V S halmazban van, és legyen y szülője a p úton a

z csúcs. Ezek alapján a p -t felbonthatjuk két részre: 1p re és 2p re, ahol 1p az

u és a z csúcs közötti út, amelynek csúcsai S -ben vannak, 2p pedig az y és az x

csúcs közötti út, amelynek minden pontja V S halmazban van. Mivel y egy u és

x csúcs közötti legrövidebb úton az x előtt van, a súlyok nemnegatívak valamint

( , ) ( , )d u y d u x és így ( , ) ( , )D y d u y d u x D x . De x és y is a V S

halmazban van, ahonnan az algoritmus 8. sora az x -et úgy választja ki, hogy a

D x D y egyenlőtlenség fennáll. Tehát ( , )D x d u x , amely ellentmond a

kezdeti feltevésünknek, vagyis ( , )D x d u x .∎ (Thomas H. Cormen, Charles E.

Leiserson, Ronald L. Rivest, 2001)

8. ábra: Dijkstra algoritmusának működése

4.1.2.3 Az algoritmus futási ideje

Amennyiben a Q sort tömbbel valósítjuk meg: a kezdőértékek beállítása ( )O n

elemi lépést vesz igénybe. A 14. sorban a minimumkeresés és a 17. sorban lévő

Page 18: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

17

vizsgálat szintén ( )O n -et, mivel a 14. sorban levő minimumkeresés 1n -szer fut

le, így az algoritmus összidőigénye 2( )O n művelet.

A további elemzéshez szükséges bevezetni néhány új fogalmat:

Definíció (kupac): Egy olyan adatszerkezet, amely segítségével egy rendezett

halmaz egy S részhalmazát tároljuk. A kupac elemeit bináris fában tároljuk.

Definíció (minimumtörlés): A kupacszerkezet egyik alapművelete. Az adott

rendezés szerinti legkisebb elem törlése.

Definíció (kupac-tulajdonság): Egy tetszőleges csúcs elem nem lehet nagyobb a

fiaiban levő elemeknél.

Definíció (d -kupac): Az S elemit egy teljes d -fa csúcsaiban helyezzük el úgy, hogy

teljesüljön a kupac-tulajdonság.

Ha a gráf ritka, akkor célszerű a Q sort bináris kupaccal implementálni a D

értékek szerint. A kezdeti kupacépítés ( )O n költséggel végezhető el. A 14. sorban

lévő minimumkeresést egy (log )O n költségű minimumtörlés művelettel oldjuk

meg. A D értékeinek újraszámolását és a kupac-tulajdonság helyreállítását csak

a választott csúcs szomszédjaira kell elvégezni. Minden csúcsot pontosan egyszer

választunk ki, és a szomszédok számának összege e . Tehát az összidőigény

(( ) log )O n e n .

Sűrű gráfok esetén még komolyabb gyorsítás érhető el alkalmas d -kupaccal.

Ekkor a futási idő ( log log )d dO n nd n e n lesz.

4.1.2.4 Az utak nyomon követése

Sokszor nemcsak a legrövidebb utak hosszára vagyunk kíváncsiak, hanem

magukra az utakra is: az algoritmus 20. sora tartalmazza ezt, hiszen minden csúcs

szülőjét feljegyezzük és akár egy újabb tömbben elhelyezhetjük, anélkül, hogy a

futási időt megnövelnénk.

Page 19: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

18

4.1.2.5 Érdekességek

Természetesen a módszer működik irányítatlan gráfok esetén is hiszen, ahogy

már említettük minden irányítatlan él felfogható úgy, mintha mindkét irányban

irányított lenne. Ezek alapján már nem csodálkozunk azon, hogy mennyi mindenre

jó ez az eljárás. Többek között az ütemezéselméletben előforduló max| 2 |J n C

problémára, melynek jelentése: két olyan munkának a befejezési idejét szeretnénk

minimálisra szorítani, amelyek számos kisebb részmunkából tevődnek össze. A

részmunkákat több különböző gép végzi el, a gépek sorrendje tetszőleges.

Legyen adott a két munka megmunkálási ideje, jelöljük ezt ,i jp -vel, ahol az i a

gépek, a j pedig a munkák sorszáma. Például a 4,3 5p óra jelentése: a harmadik

munkát a negyedik gép 5 óra alatt végzi el. Ebben a feladatban 1j vagy 2, i m ,

ahol mℤ+. Ezen kívül adottak még minden j -re a gépek egy j sorrendje.

A megadott sorrendek alapján könnyen ábrázolhatjuk a folyamatot.

9. ábra: A folyamat szemléltetése

Az ábra y tengelyén a 2 szerinti ,2ip hosszú részek adják a felosztást, míg az

x tengelyén a 1 szerinti ,1ip hosszú részek. A kép egy hatgépes esetet mutat be. A

Page 20: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

19

szürkével jelzett négyzetek a tiltott négyzetek, az azonos hosszúságú szakaszok

metszete, az ábra O pontjából F pontjába tartó sötétszürke görbe a megengedett

görbe. Jól látható, hogy vízszintes, függőleges és 45∘-os szakaszok alkotják. Fontos

tulajdonsága, hogy nem lép be tiltott négyzetbe, valamint ha vízszintesen halad,

akkor y nem lehet belső koordináta, ha függőlegesen, akkor pedig x nem lehet az.

Lemma: Minden megengedett ütemezés megad egy ilyen P megengedett görbét,

továbbá max ( )SC h P , ahol ( )h P = vízszintes szakaszok hossza + függőleges szakaszok

hossza + a 45∘-os szakaszok vetületének hossza (max

SC : az S ütemezés által kapott

minimális befejezési idő). (A lemma fordított irányban is igaz.)

Ezek után könnyű meghatározni a célt: a legrövidebb görbe meghatározása.

Van még egy szembetűnő dolog az ábrán: a tiltott négyzetek bal felső és jobb

alsó sarkában látható pontok, ezek az úgynevezett speciális pontok. Ezek

segítségével definiáljuk a speciális részgörbéket és a speciális görbét.

Definíció (speciális részgörbe, speciális görbe): A speciális részgörbe speciális

pontokat köt össze. A speciális görbe pedig a speciális részgörbék uniója.

Lemma: Minden megengedett P görbéhez 'P speciális görbe úgy, hogy

( ) ( ')h P h P .

Vagyis keressük azt a legrövidebb speciális görbét, amely O -ból F -be megy.

Ez alapján a feladat ekvivalens egy legrövidebb út problémával, ahol a gráfunk

pontjai a speciális pontok, az élei a speciális pontokból indulnak az onnan induló

speciális részgörbék másik végpontjába, melyekből egy vagy kettő lehet. Az

élhosszúságot a h alapján kapjuk, amelyek nemnegatívak, hiszen megmunkálási

időkről beszélünk.

A másik érdekes dolog, hogy a Dijkstra algoritmus módosításával

legbiztonságosabb utat is lehet keresni.

Legyenek az élsúlyok a tönkremenés valószínűségei, vagyis minden e élhez

adott egy p valószínűség, hogy az adott él tönkremegy-e. Ezek alapján egy P út „el

Page 21: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

20

nem romlási”, „megmaradási” esélye (1 ( ))e P

p e

. Ezt szeretnénk maximalizálni.

Vegyük ennek a kifejezésnek a logaritmusát (ezt megtehetjük, mert a logaritmus

függvény monoton) és ezt maximalizáljuk:

max (1 ( ))e P

p e

max log (1 ( )) max log(1 ( )) min ( log(1 ( )))e P e Pe P

p e p e p e

Ezek alapján írjuk át a gráfunk költségeit, legyen az új költség:

( ) log(1 ( ))k e p e . Erről tudjuk, hogy nemnegatív, vagyis alkalmazható a Dijkstra

algoritmus erre az új költségekkel ellátott gráfra.

Lássunk egy egyszerű példát: tegyük fel, hogy egy háborús övezet katonái az

alábbi 10. ábra lévő térképet kapják az ellenséges területről. A katonáknak el kell

jutni az egyessel jelzett városból a kettessel jelzett városba. A gráf élein szereplő

valószínűségek azt mutatják, hogy az i -dik városból a j -dik városba mekkora

eséllyel nem sikerül eljutni.

10. ábra: A kapott térkép

A következő 11. ábra mutatja, hogy melyik utat kell választaniuk, hogy a

legnagyobb eséllyel eljussanak a kettes jelzésű városba.

11. ábra: A legbiztonságosabb út

Page 22: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

21

4.1.3 A Bellman-Ford-algoritmus

A Bellman-Ford-algoritmus az adott kezdőcsúcsból induló legrövidebb utak

problémáját abban az esetben oldja meg, amikor vannak az élek között negatív

súlyúak, de nem találunk a gráfban negatív kört.

Az algoritmus szülőatyjaként Richard Bellmant és ifjabb Lester Randolph Ford-

ot tisztelik.

4.1.3.1 Lester Randolph Ford, Richard Bellman

Ifjabb Lester Randolph Ford 1927. szeptember 23-án született. A „Network

Flow” programozás egyik úttörője. Édesapja az idősebbik L.R. Ford, aki maga is

elismert matematikus, a Farey sorozatokra adott egy bámulatos értelmezést. Ifjabb

L.R. Ford nevéhez fűződik többek között a Ford-Fulkerson algoritmus is, amely a

maximális folyam problémát oldja meg. (Singh Nayandeep, 2001)

Richard Ernest Bellman (1920. augusztus 26.- 1984. március 19.) alkalmazott

matematikus volt, az 1953-as dinamikus programozás terén elért felfedezéséért

volt méltán ünnepelt, valamint nevéhez köthető, sok a matematika más területén

elért eredmény is.

12. ábra: Richard E. Bellman

New Yorkban született, ahol édesapja, John James Bellman egy

élelmiszerüzletet vezetett a Bergen utcában a Prospest Park közelében

Brooklynban. Bellman a középiskolát 1937-ben fejezte be az Abraham Lincoln

Középiskolában (New York), és matematikát hallgatott a brooklyni főiskolán, ahol

1941-ben szerezett BA diplomát, a későbbiekben pedig a Wisconsin-Madison

Egyetemen megszerezte az MA diplomát is. A II. világháború idején a hadseregnél

az Elméleti Pszichológia Részlegen dolgozott Los Alamosban. 1946-ban

megszerezte a Ph.D titulust a Princetonon. A dél kaliforniai egyetem professzora

Page 23: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

22

volt, ösztöndíjas kutatója az amerikai Tudományok és Művészetek Akadémiájának

(1975), valamint tagja a nemzeti Mérnöki Akadémiának (1977). 1979-ben az IEEE

Becsület Medállal tüntették ki „A döntési eljárások és az ellenőrző rendszerek

területén elért eredményéért, különösen a dinamikus programozásban

alkotottakért.” Legfőbb műve a Bellman-Egyenlet. (Wikipedia, 2009)

4.1.3.2 Az eljárás

Adott egy :k E ℝ súlyfüggvénnyel súlyozott irányított ( , )G V E gráf, ahol a

kezdőcsúcs az s . Az algoritmus visszajelzi, ha van a gráfban s -ből elérhető negatív

kör, ha nincs benne, akkor előállítja a megoldást.

BELLMAN-FORD ( , , )D k s eljárás.

Az 1-6. sorok a kezdeti értékek beállítását mutatják. Aztán a 7-17. sorok

ugyanazt az ellenőrzést végzik el mint a Dijkstra algoritmus esetében, végül a 18-

23. sorok keresnek negatív köröket.

1. procedue Bellman-Ford

2. begin

3. for minden v V csúcsra do

4. :D v

5. :szülő v

6. end

7. begin

8. for 1i to 1n do

9. begin

10. for minden ( , )u v élre

11. if ( , )D v D u k u v then

12. begin

13. : ( , )D v D u k u v

14. :szülő v u

15. end 16. end 17. end 18. begin

19. for minden ( , )u v élre do

20. if ( , )D v D u k u v then

21. return HAMIS 22. return IGAZ 23. end

Page 24: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

23

Mielőtt az eljárás helyességének bizonyítására térnénk, definiáljuk a

legrövidebb-utak fa fogalmát, valamint bevezetünk két jelölést is.

Definíció (legrövidebb-utak fa): Legyen ( , )G V E egy irányított, :k E ℝ

súlyfüggvénnyel súlyozott gráf, és feltesszük, hogy G nem tartalmaz s kezdőcsúcsból

elérhető negatív kört, azaz a legrövidebb utak jól definiáltak. Egy s-gyökerű

legrövidebb-utak fa egy olyan ' ( ', ')G V E részgráf, ahol 'V V és 'E E úgy, hogy

- 'V az s-ből elérhető G-beli csúcsok halmaza,

- 'G egy s gyökerű fa, és

- minden v V csúcsra 'G -beli s-ből vezető út egy legrövidebb s-ből v-be vezető

út a G-ben.

Jelölések:

- Vszülő: a nem szülőjű G-beli csúcsokat tartalmazza és az s kezdőcsúcsot:

Vszülő= :v V szülő v s .

- Eszülő: azok az irányított élek, amelyek a szülő értékekből vezetnek a Vszülő-beli

csúcsokba: Eszülő= , : szülőszülő v v E v V s .

Tétel (A Bellman-Ford-algoritmus helyessége): Egy ( , )G V E irányított gráfon

futtassuk a BELLMAN-FORD-eljárást, ahol a súlyfüggvény a :k E ℝ, és a

kezdőcsúcs az s. Ha G nem tartalmaz az s-ből elérhető negatív köröket, akkor

1. minden v V csúcsra ( , )D v d s v ,

2. a végeredményül kapott fa egy s gyökerű legrövidebb-utak fa (jelöljük ezt

Gszülő=(Vszülő,Eszülő)-vel)

3. az algoritmus IGAZ értéket ad vissza, vagyis megadja a keresett legrövidebb utat.

4. Ha G tartalmaz s-ből elérhető negatív kört, akkor az eljárás HAMIS értékkel tér

vissza.

Bizonyítás: Tegyük fel, hogy G nem tartalmaz s -ből elérhető negatív kört.

1. Tegyük fel, hogy v elérhető s -ből, legyen 0 1, ,..., kp v v v egy s -ből v -be

vezető legrövidebb út 0( , )kv s v v . A p út egyszerű (nincs benne ismétlődő

Page 25: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

24

csúcs), tehát 1k n . Indukcióval könnyen bizonyíthatjuk, hogy minden

0,1,...,i k ra ( , )i iD v d s v .

Kezdetben 0 ( , ) 0D v d s s nyilván teljesül.

Tegyük fel, hogy 1 1( , )i iD v d s v fennáll, az i dik lépésben az 1( , )i iv v éllel

való összehasonlítás hatására ( , )i iD v d s v , és ez meg is őrződik az eljárás

során, mert: ( , ) ( , ) ( , ) ( , )D v D u k u v d s u k u v d s v . (Tudjuk, hogy

( , )d s v alulról korlátozza D v értékét.)

Ha nem vezet út s -ből v -be, akkor az eljárás D v értékkel tér vissza.

Tehát ,D v d s v , mert definíció szerint, ha két csúcs között nincsen út,

akkor a távolságuk végtelen.

2. Az első tulajdonság bebizonyítása nagyon egyszerű. Definíció szerint egy

legrövidebb út akkor és csak akkor véges, ha van a két csúcs között út. Az

algoritmus során egy s -től különböző v csúcs akkor és csak akkor kap véges

értéket, ha szülő v .

A második tulajdonság bizonyítása indirekten történik. Tegyük fel, hogy szülőG -

ben van kör, bizonyítandó, hogy ez negatív kör. (Ekkor G -ben is kell lennie, de

az ellentmondáshoz vezet.) A körön minden csúcs D értéke véges, vagyis

elérhetők s -ből. Indukció és az algoritmus 10-15. sorai alapján az alábbi

egyenlőtlenség kapható:

1 1

1 1 1

( , )k k k

i i i i

i i i

D v D v k v v

ahol 0 1, ,..., kc v v v a kör 0kv v .

Mivel a c kör minden csúcsa pontosan egyszer szerepel az egyes összegekben:

1

1 1

k k

i i

i i

D v D v

Ebből következik, hogy

1

1

0 ( , )k

i i

i

k v v

Vagyis azt kaptuk, hogy G tartalmaz negatív kört, ami viszont elvezet a

keresett ellentmondáshoz.

Page 26: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

25

A harmadik tulajdonság bizonyításának első lépése hogy igazoljuk, hogy ezek

az utak valóban léteznek. Ez teljes indukcióval könnyedén megtehető. Azt kell

még belátni, hogy legfeljebb egy út megy s -ből minden szülőv V -beli csúcshoz.

Indirekten tegyük fel, hogy két út is létezik valamely szülőv V csúcshoz.

13. ábra: Annak bizonyítására, hogy csak egy s-ből v-be menő út van Gszülő-ben

A 1p út s -ből v -be: s ↝u ↝ x → z ↝ v , a 2p út s -ből v -be: s ↝u ↝ y → z ↝ v ,

ahol x y . Ám ekkor szülő z x és szülő z y , ami csak x y esetén

teljesül.

3. A befejezéskor minden ( , )u v E élre:

( , ) ( , ) ( , ) ( , )D v d s v d s v k u v D u k u v

Tehát a 20. sorban lévő ellenőrzés után sem kapunk HAMIS értéket.

4. Tegyük fel, hogy G -ben van negatív kör, jelöljük 0 1, ,..., kc v v v -vel, ahol

0kv v , és tegyük fel, hogy az eljárás IGAZ értékkel tér vissza.

Mivel c egy negatív kör, ezért: 1

1

( , ) 0k

i i

i

k v v

. A feltevésünk miatt (IGAZ

értékkel tér vissza az algoritmus) az alábbi egyenlőtlenség teljesül:

1 1

1 1 1

( , )k k k

i i i i

i i i

D v D v k v v

Mivel a c kör mindegyik csúcsa pontosan egyszer szerepel az első két

összegben, így

1

1 1

k k

i i

i i

D v D v

Vagyis 1

1

0 ( , )k

i i

i

k v v

, ami ellentmondás.∎

(Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 2001)

Page 27: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

26

14. ábra: A Bellman-Ford eljárás működése

4.1.3.3 Az eljárás futási ideje és a legrövidebb út nyomon követése

Az algoritmus futási ideje ( )O ne , mivel a kezdő értékek beállítása ( )O n az 1n

darab csúcson végzett összehasonlítás mindegyike ( )O e ideig tart és a 18-23.

sorokban lévő ellenőrzés ( )O e idejű.

A legrövidebb út nyomon követése ugyanúgy megy, mint a Dijkstra

algoritmusnál. A szülő v értékeket eltesszük egy tömbbe, ez nem növeli a futási

időt.

4.2 Két adott csúcs közötti legrövidebb út

Nyilvánvalóan, ha megoldjuk az adott csúcsból az összes többi csúcsba vezető

legrövidebb utak problémáját, akkor a két adott csúcs közötti legrövidebb út

problémát is megoldottuk. Érdekes azonban, hogy nem ismert ennek a

problémának olyan megoldó algoritmusa, amelyik aszimptotikusan gyorsabb lenne

az adott csúcsból az összes többi csúcsba vezető legrövidebb utak problémájánál.

Dijkstra a következőképpen elmélkedett erről a problémáról Numerische

Mathematik című művében.

„Összefüggő gráfok két problémája”

„Tekintsünk n darab pontot, melyek közül néhányat vagy mindegyiket él köt össze, az élek hossza

adott. Tegyük fel, hogy legalább egy él létezik valamely két pont között.

Nézzük az alábbi két problémát:

(…)

Második probléma: Keressük meg a legrövidebb utat két adott pont, P és Q között.

Használjuk ki azt a tényt, hogy az R csúcs rajta van a P és Q közti legrövidebb úton, a majdani

ismeretek tartalmazzák a P és R közti legrövidebb utat. A megoldás során megkapjuk az összes többi

csúcsba menő legrövidebb utat, melyek a hosszúságok sorrendjében keletkeznek, egészen addig, amíg Q-t el

nem érjük.

Page 28: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

27

A megoldás első lépése, hogy a pontokat három csoportba osztjuk.

A: Azok a csúcsok, amelyeknek P-től vett távolsága minimális. Ebbe a csoportba csak a P-től

minimális távolságra lévő csúcsokat vesszük bele.

B: A következő lépésben az A csoportba választható csúcsok halmaza. Ebben a csoportban az A

halmazbeli pontokhoz kapcsolódó csúcsok vannak (a belőlük kiinduló él másik végpontja már A-

ban van).

C: Kimaradó csúcsok.

Az éleket is 3 csoportba soroljuk:

I. A P csúcs és az A csoportbeli pontok közötti minimális utat alkotó élek.

II. Azoknak az éleknek a halmaza, amelyekből kiválasztjuk a I. csoportba helyezendő élet; egy és

csakis egy él vezet ebből a halmazból mindegyik B halmazbeli csúcshoz.

III. A kimaradó csúcsok (vagy már elutasítottuk őket, vagy még nem vizsgáltuk meg).

Kezdetben minden csúcs C-ben, és minden él a III csoportban van. Először tegyük a P csúcsot az A

csoportba, majd az alábbi lépéseket ismételgessük.

Első lépés: Tekintsük az összes olyan r élet, amely az éppen az A csoportba tett csúcs és R között

mennek, ahol R lehet a B illetve a C csoportban is. Ha R a B csoportban van, akkor vizsgáljuk meg, hogy

ennek az r élnek a használata egy rövidebb utat eredményez-e, mint a neki megfelelő (ugyanabba a csúcsba

menő) eddig ismert II. csoportbeli út. Ha nem kapunk rövidebb utat az r él használatával, akkor r-et

elutasítjuk (a III. csoportba tesszük), ha az r él használatával a kapott út rövidebb, mint a neki megfelelő

út, akkor az eddig ismert utat lecseréljük erre az új, r élet használó útra. Amennyiben az R csúcs C-ben

van, tegyük B-be és az r élet pedig a II. csoportba.

Második lépés: Minden B csoportbeli csúcs és a P csúcs között egy és csakis egy út vezet, ha csak az I.

és II. csoportba tartozó éleket vizsgáljuk, tehát minden egyes B csoportbeli csúcsnak véges távolsága van P

csúcstól: azt a csúcsot, amelynek a legkisebb a távolsága P-től, tegyük az A halmazba, és a megfelelő élet

helyezzük a II. csoportból az I. csoportba. Ezután térjünk vissza az első lépéshez és ismételgessük őket

addig, amíg a Q csúcs az A halmazba nem kerül. Ekkor megkapjuk a keresett utat.

Megjegyzések:

1. A fenti eljárás abban az esetben is alkalmazható, ha az élek hossza függ attól, hogy elutasítjuk, vagy

megtartjuk őket.

2. Az I. és a II. csoportban lévő élek esetében érdemes feljegyezni a csúcsaik távolságát P-től (növekvő

sorrendben). Az I. csoportbeli élek esetén ez a tényleges minimális távolságot jelenti, míg a II.

csoportbeli élek esetén az eddig ismert minimális távolságot.

Ez a megoldás hatékonyabb, mint a L.R.Ford-féle megoldás, abból a szempontból, hogy nem kell az

összes élről egyidejűleg eltárolni az adatokat, elegendő csupán az I. és a II. csoportbeli élek adatait

Page 29: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

28

tudnunk, és ez a szám mindig kevesebb, mint n. Ezen kívül a futási ideje is lényegesen kevesebb.

(E.W.Dijkstra, 1959)

4.3 Egy adott csúcsba érkező legrövidebb utak

Ennek a problémának a megoldása nagyon egyszerű: csupán annyi a teendőnk

hogy megfordítjuk a gráfunk irányítását. Ezáltal visszavezetjük a feladatot az egy

csúcsból kiinduló legrövidebb utak kérdésére, amely megoldásának módszereit

már fentebb, a 4.1 fejezetben taglaltuk.

4.4 Legrövidebb utak minden csúcspárra

Ebben a fejezetben célunk, hogy egy gráf valamennyi rendezett csúcspárjára a

két csúcs közötti legrövidebb út megkeresése. Ha például egy autóstérképhez

elkészítjük a városok egymástól vett távolságainak táblázatát, akkor éppen ezt a

problémát oldjuk meg.

Természetesen a 4.1-es fejezetben bemutatott algoritmusok itt is használhatók,

ha minden csúcsra lefutatjuk őket, amennyiben a távolságok nem negatívak, akkor

a Dijkstra eljárást, ha vannak negatív élek, akkor a kicsit költségesebb Bellman-

Ford módszert. Vannak azonban ennél következetesebb módszerek is.

4.4.1 Floyd algoritmusa

Ez az algoritmus abban az esetben oldja meg az összes csúcspár közötti

legrövidebb utak problémáját, ha a bemenő gráfban nincsenek negatív körök

(negatív élek lehetnek).

4.4.1.1 Robert W. Floyd

15. ábra: Robert W. Floyd

Robert W. Floyd (1936. június 8. – 2001. szeptember 25) egy kivételesen

tehetséges informatikus volt. New Yorkban született, 14 évesen már maga mögött

Page 30: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

29

tudta a középiskolát és 17 évesen, 1953-ban a chichagoi egyetemen BA diplomát

szerzett bölcsész szakon, majd 1958-ban pszichológiából.

Az 1960-as évek elején kezdett el operátorként dolgozni, számos érdekes

cikket publikált, mígnem 27 éves korában a Caregie Mellon Egyetemen helyettes

professzornak ki nem nevezték. 6 évvel később, miután megszerezte a Ph.D címet a

Stanford Egyetem professzora lett.

Floyd Donald Knuth közeli munkatársa volt, és mint bíráló segített neki

elkészíteni könyvét: The Art of Computer Programming, emiatt Donald nagy

hatással volt Floyd munkásságára. 1994-ben Richard Beigellel elkészítették a The

Language of Machines: an Introduction to Computability and Formal Languages

című tankönyvüket.

1978-ban kapta meg a Turing-díjat az informatika számos területén elért

eredményéért, különösen a formális nyelvek témakörében alkotottakért.

Floyd élete során kétszer házasodott meg, és kétszer is vált el, négy gyermeke

volt. Hobbijai a túrázás és a „backgammon”1 voltak. (Wikipedia, 2009)

4.4.1.2 Az algoritmus

Tegyük fel, hogy a ( , )G V E gráf K adjacencia mátrixszal van megadva. A

pontpárok távolságának kiszámítására egy szintén n n -es F mátrixot fogunk

használni. Kezdetben , : ,F i j K i j . Ezután egy ciklust hajtunk végre, amelynek

k -adik lefutása után ,F i j azon i ↝ j utak legrövidebbjeinek a hosszát

tartalmazza, amelyek közbülső pontjai k -nál nagyobb sorszámúak.

Az új ,kF i j értékeket a következőképpen számíthatjuk ki a 1k -edik iteráció

utáni 1 ,kF i j értékekből (itt az index az F különböző pillanatnyi értékeire utal).

Nyilván egy legrövidebb i ↝ j út, amelyen a közbülső pontok sorszáma legfeljebb

k (természetesen a kezdő- és végpontok nem számítanak közbülső pontnak), vagy

tartalmazza a k csúcsot vagy nem.

- Ha k nincs rajta az i ↝ j úton, akkor 1 ,kF i j .

- Ha rajta van a k csúcs az i ↝ j úton, akkor

1 A backgammon egy két személyes társasjáték, ahol a korongokat a dobókocka dobások

alapján kell mozgatni.

Page 31: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

30

amennyiben ennek a csúcsnak a használatával előálló út rövidebb,

mint az eddig ismert út, akkor ennek az új útnak a hosszát írjuk be

,kF i j -be, ha hosszabb, akkor a régi út hosszát, vagyis 1 ,kF i j -t,

ha több út is vezet az adott csúcson keresztül, akkor értelemszerűen

a rövidebb értékét írjuk bele ,kF i j -be.

FLOYD ELJÁRÁS ( , )G k

4.4.1.3 Az utak nyomon követése és a futási idő

A kód magában rejti az utak nyomon követésének módszerét, ami futási időt

nem befolyásolja. A 9. sorban definiálunk egy P tömböt, amelybe akkor tesszük

be a k csúcsot, ha a ,F i j érték megváltozik (17-18. sorok). Tehát ,P i j egy

legrövidebb i ↝ j út „középső” csúcsát fogja tartalmazni. Ezek alapján az i ↝ j út

összeállításához találnunk kell egy i -ből ebbe a „közbülső” csúcsba vezető

legrövidebb utat, és egy ebből a csúcsból j -be vezető legrövidebb utat. De ezen

utaknak is ismerjük egy-egy „középső” csúcsát, és így tovább.

1. procedure Floyd

2. begin

3. for minden i V csúcsra do

4. begin

5. for minden j V csúcsra do

6. , : ,F i j K i j

7. end

8. end

9. , : 0P i j

10. begin

11. for minden k V csúcsra do

12. begin

13. for minden i V csúcsra do

14. begin

15. for minden j V csúcsra do

16. , : min , , , ,F i j F i j F i k F k j

17. if ,F i j értéke csökken then

18. ,P i j k

19. end

20. end

21. end

Page 32: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

31

Az algoritmus lépésszáma 3n -bel arányos, hiszen a domináló rész három

egymásba ágyazott for ciklus. Mondhatnánk, hogy ez nagyságrendben ugyanannyi,

mintha a Dijkstra mátrixos változata, de pontosabb elemzéssel kiderül, hogy a

Floyd-módszer 50%-kal gyorsabb. Ha a gráf éleinek száma jóval kisebb, mint 2n , és

az élsúlyok nemnegatívak, akkor viszont érdemesebb a Dijkstra-algoritmus éllistás

változatát használni.

4.4.1.4 Az eljárás működése egy példán keresztül

16. ábra: Példagráf a Floyd-eljárás működésének szemléltetéséhez

0

0 1

0 1 3

0 4

0

2 2 1 0

F

1

0 1

0 1 3

0 4

0

2 1 2 1 0

F

2

0 1 0 3

0 1 3

0 4

0

2 1 2 1 0

F

3 4

0 1 0 3 2

0 1 5 3

0 4

0

2 1 2 1 0

F F

5

0 1 0 3 2

5 0 1 4 3

0 4

0

2 1 2 1 0

F

Az 3F és az 4F egyenlősége abból ered, hogy a 4. csúcsból nem indul ki él, így

az nem lehet közbülső csúcs.

Page 33: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

32

4.4.2 Warshall algoritmusa

Ez az algoritmus a fent említett Floyd algoritmusnál idősebb, de a módszer

lényegében ugyanaz. A szakirodalomban gyakran a hasonlóság miatt egybe vonják

a két algoritmust és Floyd-Warshall néven tüntetik fel.

A különbség köztük az, hogy ez az algoritmus „csak” azt mondja meg, hogy

mely pontok között megy irányított út, a hosszukat már nem adja meg.

4.4.2.1 Stephen Warshall

Stephen Warshall 1935-ben született New York-ban. Karrierje során sok

kutatást végzett az operációs rendszerek területén, a programozási nyelvek

fejlesztésénél és sok más informatikai témakörben.

Warshall a brooklyni általános iskolába járt, a Mount Vernon (New York)

középiskolában érettségizett, majd a Harward egyetemen szerezte meg a Bsc

diplomáját matematikából 1956-ban. Magasabb végzettséget nem szerezett, ennek

ellenére különböző egyetemeken (köztük francia iskolákban is) tartott

előadásokat, ezzel is elősegítve az informatika és a szoftverfejlesztés fejlődését.

Miután megszerezte a Bsc diplomáját, az ORO-nál (Operation Research Office)

helyezkedett el. John Hopkins által létrehozott program keretein belül végzett

kutatásokat az amerikai hadseregnek. 1958-ban eljött innen és egy Technical

Operations nevű vállalkozásnál vállalt munkát, a munkája hasonló volt az

előzőhöz: katonai szoftverek fejlesztése. 1961-ben a massachusettsi Informatikai

Egyesület tagja lett, később ez az egyesület egybeolvadt az Apllied Data Research

(ADR) céggel. Ekkor Warshall vezetői kitüntetést kapott és felügyelte a projecteket

és szervezeteket. 1982-ben vonult nyugdíjba, végül 2006. december 11-én halt

meg rákban. (Wikipedia, 2009)

4.4.2.2 Az algoritmus

Mielőtt az eljárás lépéseire térnénk definiálni kell a tranzitív lezárt fogalmát.

Definíció (tranzitív lezárt): Legyen G=(V,E) egy irányított gráf, A az adjacencia

mátrixa. Legyen továbbá T a következő n n -es mátrix:

1

,0

T i j

ha i-ből j elérhető irányított úttal

különben.

Page 34: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

33

ha i=j vagy , 1A i j ,

különben.

Ekkor a T mátrixot – illetve az általa meghatározott gráfot – az A mátrix – illetve az

általa meghatározott G gráf – tranzitív lezártjának nevezzük.

A fent részletezett Floyd-eljárásban csupán néhány változtatást kell tenni. A 6.

sorban a kezdőértékek beállítása helyett:

A 16. sorban F értékeinek változása helyett: , , , ,T i j T i j T i k T k j ,

valamint a 17. sorban nem az F értékeinek csökkenése esetén tesszük bele a k

csúcsot a P tömbbe, hanem amikor a ,T i j érték változik meg.

Nyilvánvalóan a futási idő változatlan marad: 3O n , és az utak nyomon

követése is megegyezik a Floyd algoritmusnál leírtakkal.

Tekintsük az alábbi példát a működésére:

17. ábra: Példagráf a Warshall-algoritmus működésének bemutatásához

(0)

1 1 0 0 1

0 1 1 0 0

1 0 1 1 0

0 0 0 1 0

0 0 0 1 1

T

(1)

1 1 0 0 1

0 1 1 0 0

1 1 1 1 1

0 0 0 1 0

0 0 0 1 1

T

(2)

1 1 1 1 1

0 1 1 0 1

1 1 1 1 1

0 0 0 1 0

0 0 0 1 1

T

(3) (4) (5)

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

0 0 0 1 0

0 0 0 1 1

T T T

1

,0

T i j

Page 35: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

34

A (3) (4)T T azért igaz, mert a 4 csúcsból nem indul ki él, így az nem lehet

közbülső csúcs. (5)T egyenlősége az előző kettőhöz „látszólagos”, a (5) 1,4T

értéknél szemmel nem látható változás történt. Ugyanis az 1. csúcsból megy él a 2

és a 3-as csúcson keresztül ezt jelzi, hogy (2) (3)1,4 1,4 1T T , de az 5. csúcson

keresztül is vezet egy másik út, így a , , , ,T i j T i j T i k T k j képlet

alapján mindegy, hogy melyiket választjuk ki.

4.4.3 Johnson algoritmusa

Johnson módszerével az összes csúcspár közti legrövidebb utakat

2( lg )O n n ne időben találhatjuk meg, tehát ritka gráfokon ez lényegesen

gyorsabb, mint az eddig ismert módszerek.

Johnson eljárásának megértéséhez szükségünk van a Dijkstra- és a Bellman-

Ford algoritmusok pontos ismeretére, mert az eljárás magában foglalja ezeket. A

Johnson algoritmus (hasonlóan a Bellman-Fordhoz) HAMIS értéket ad vissza, ha a

gráf tartalmaz negatív kört.

A módszer alapötlete a következő átsúlyozó technika. Amennyiben a gráfban

nincsenek negatív élek, akkor a természetesen használhatjuk a Dijkstra-

algoritmust minden csúcsra, mint forrásra. Ahhoz hogy a fenti futási időt elérjük

Fibonacci-kupacokat kell alkalmaznunk.

Definíció (Fibonacci-kupac): A bináris kupacokkal ellentétben a Fibonacci-

kupacban levő fák nem rendezettek. Minden x csúcsnak van egy p x pointere

(mutató) a szülőjére, és egy gyerek x pointere az egyik gyerekére. Az x csúcs

gyerekei egy kétirányú ciklikus listával vannak összekapcsolva, ezt a listát az x gyerek

listájának nevezik. A gyerekek sorrendje a gyerek listában tetszőleges. Ebben az

adatszerkezetben a műveletek gyorsabban elvégezhetők a pointerek miatt.

Ha vannak negatív éleink, akkor a következőképpen kell eljárnunk: olyan új k̂

nemnegatív értékeket kell találnunk, melyeken azután az előző megoldás

alkalmazható. A k̂ súlyoknak a következő két feltételnek kell eleget tenniük:

Page 36: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

35

a) Minden ,u v V csúcspárra a k súlyozás szerint vett bármely legrövidebb

u -ból v -be menő út a k̂ szerint is az.

b) Minden ( , )u v E élre az új ˆ( , )k u v súly nemnegatív.

Az a) tulajdonságnak eleget tevő átsúlyozást az alábbi lemma alapján igen

egyszerű elkészíteni.

Lemma (átsúlyozás): Legyen :h V ℝ tetszőleges valós értékű függvény egy

( , )G V E irányított gráf csúcsain. Legyen :k E ℝ ugyanennek a gráfnak az

élsúlyozása. Minden ( , )u v E élre legyen ˆ( , ) ( , ) ( ) ( )k u v k u v h u h v . Ekkor

1. minden 0 , kv v csúcspárra és minden 0 1, ,..., kp v v v útra pontosan akkor lesz

0( ) ( , )kk p d v v , ha 0ˆ ˆ( ) ( , )kk p d v v , ahol 0

ˆ( , )kd v v a k̂ súlyozással keletkező út

súlya;

2. továbbá pontosan akkor van a G gráfban negatív kör a k súlyozás szerint, ha k̂

súlyozás szerint is van.

Bizonyítás:

1. Először belátjuk, hogy 0ˆ( ) ( ) ( ) ( )kk p k p h v h v .

A ˆ( )k p súly a következő teleszkópos összeggé alakítható:

1 1 1

1 1

1 1 0

1 1 1

ˆ ˆ( ) ( , ) ( ( , ) ( ) ( ))

( , ) ( ) ( ) ( ) ( ) ( ).

k k

i i i i i i

i i

k k k

i i i i k

i i i

k p k v v k v v h v h v

k v v h v h v k p h v h v

Tegyük fel, hogy a k̂ súlyozással valamely 0 , kv v csúcspár között találtunk egy

'p utat, amely rövidebb, mint a k súlyozás esetén kialakult p út. Alkalmazzunk

a p és 'p utakra a fenti 0ˆ( ) ( ) ( ) ( )kk p k p h v h v egyenlőséget:

0 0ˆ ˆ( ') ( ) ( ) ( ') ( ) ( ) ( ) ( )k kk p h v h v k p k p k p h v h v ,

amelyből ( ') ( )k p k p következik. Ez azonban ellentmond annak a feltevésnek,

hogy p a legrövidebb út 0v és kv csúcsok között.

Page 37: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

36

2. Legyen 0 1, ,..., kc v v v egy tetszőleges kör a k súlyozás szerint, ahol 0 kv v .

Ekkor a 0ˆ( ) ( ) ( ) ( )kk p k p h v h v egyenlőség szerint: 0

ˆ( ) ( ) ( ) ( )kk c k c h v h v ,

így a c súlya pontosan akkor negatív a k súlyozás szerint, ha k̂ szerint is az.∎

A b) feltételnek eleget tevő nemnegatív értékű átsúlyozás pedig a

következőképpen zajlik:

1. A ( , )G V E irányított gráfot egészítsük ki egy s V csúccsal egy

' ( ', ')G V E gráffá, ahol tehát 'V V s és ' ( , ) :E E s v v V . A k

súlyozást terjesszük ki 'G éleire úgy, hogy ( , ) 0k s v minden v V esetén.

Fontos megjegyezni, hogy s -be él nem lép, ezért nem haladhat át rajta kör,

ezáltal ha van kör, akkor az csak G -ben lehet. Valamint ugyanebből az

okból kifolyólag csak 'G -beli legrövidebb utak tartalmazzák s -t.

2. Tegyük fel, hogy nincsen negatív kör a gráfban. Legyen ( ) ( , )h v d s v

minden 'v V csúcsra. Ekkor a korábban látottak alapján

( ) ( ) ( , )h v h u k u v fennáll minden ( , ) 'u v E élre. Ha tehát az új k̂

súlyozást a ˆ( , ) ( , ) ( ) ( )k u v k u v h u h v egyenlet szerint végezzük,

ˆ( , ) ( , ) ( ) ( ) 0k u v k u v h u h v , akkor a nemnegativitást megkövetelő

tulajdonság teljesül.

(Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 2001)

4.4.3.1 Az eljárás lépései

1. Felvesszük az s csúcsot, és kiegészítjük a gráfot az új élekkel (megkapjuk

'G -t).

2. A Bellman-Ford algoritmus segítségével megvizsgáljuk, hogy van-e negatív

kör a 'G gráfban, ha igen akkor az algoritmus ezen a ponton megáll.

3. Ha nincsen negatív kör a gráfban, akkor a Bellman-Ford által kapott ( , )id s v

értékekkel feltöltjük a 'G gráf csúcsait (vagyis: ( ) ( , )i ih v d s v ).

4. Átsúlyozzuk 'G éleit a ˆ( , ) ( , ) ( ) ( )k u v k u v h u h v szabály szerint.

5. Az így kapott átsúlyozott (már csak nemnegatív élet tartalmazó) G gráf

minden csúcsára (mint forrásra) végrehajtjuk a Dijkstra algoritmust.

Page 38: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

4. Az algoritmusok

37

18. ábra: A Johnson algoritmus működése. (a) Az s csúccsal és az új (szürkével jelzett) élekkel kiegészített gráf, valamint a Bellman-Ford eljárás által kapott értékekkel feltöltött csúcsok. (b) Az élek átsúlyozása. (c)-(f) A Dijkstra-algoritmus segítségével kapott legrövidebb utak, a szürkével jelzett csúcsok az aktuális források. A

csúcsokban szereplő /-jellel elválasztva ˆ( , )d u v és ( , )d u v áll.

4.4.3.2 Futási idő

Mint ahogy már fentebb említettük, ha Fibonacci-kupacot használunk, akkor

2( lg )O n n ne lesz a futási idő. Egyszerű bináris kupac alkalmazása esetén

( lg )O ne n .

Page 39: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

5. A matematikában kevésbé ismert módszerek

38

5 A matematikában kevésbé ismert módszerek

Ez a fejezet a matematika számára már kevésbé ismert módszerek közül kettőt

hivatott bemutatni. Ezeket az eljárásokat a modern kor egyik új területe a

mesterséges intelligencia (MI) tudománya alkalmazza. Hogy mi is az MI? Ahány

ember, annyi válasz:

„Izgalmas újszerű kísérlet, hogy a számítógépet gondolkodásra késztessük…tudatos gépek, e fogalom teljes

és szó szerinti értelmében” (Haugeland, 1985)

„Az MI… a műtárgyak intelligens viselkedésével foglalkozik” (Nilsson, 1998)

Az eddig megismert eljárásokkal ellentétben itt nem az élek, hanem az csúcsok

vannak súlyozva a céltól függően.

5.1 Informált keresési stratégiák

Az általunk vizsgált általános megközelítést a legjobbat-először keresésnek

nevezzük. A módszer alapötlete, hogy a gráfunk azon csúcsa felé indulunk el,

amelynek az értéke a legkisebb. A csúcsok értékét egy ún. kiértékelő függvény

( )f n segítségével kapjuk. A LEGJOBBAT-ELŐSZÖR-KERESÉS algoritmus

tulajdonképpen egy keresési algoritmus család, amelynek elemeit az eltérő

kiértékelő függvények különböztetik meg. Ezeknek az algoritmusoknak a

kulcseleme a ( )h n -nel jelölt heurisztikus függvény.

Definíció (heurisztikus függvény): Az n csomóponttól a célig vezető legolcsóbb út

becsült útköltsége.

Egy egyszerű példa az ilyen heurisztikus függvényre: a városok közötti

légvonalban mért távolság, melyet mindig a célvárostól számolunk. Például ha

Aradról akarunk Bukarestbe eljutni, akkor a közbülső városok súlyait a

Bukaresttől mért távolságuk fogja adni.

5.1.1 A mohó legjobbat-először keresés

A mohó legjobbat először keresés annak a csúcsnak az irányába indul el,

amelyiket a legközelebbinek ítéli meg a célállapothoz, tehát ebben az esetben a

kiértékelő- és a heurisztikus függvényünk megegyezik ( ( ) ( )f n h n ).

Page 40: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

5. A matematikában kevésbé ismert módszerek

39

Nézzük meg, hogy hogyan is működik az előbb említett romániai útkeresés

esetében.

19. ábra: A mohó legjobbat először keresés lépései Bukarest esetén a légvonalban mért távolságot – mint heurisztikát – alkalmazva.

Ebben a konkrét példában a mohó legjobbat-először keresés úgy talál

megoldást, hogy soha nem megy olyan pont felé, amely nem a megoldási

(legrövidebb) úton fekszik, következésképpen minimális a költsége. Azonban nem

optimális: vegyük szemügyre az alábbi táblázatot, amely a légvonalbeli

távolságokat tartalmazza Bukarestig.

Város Távolság Város Távolság Arad 366 Mehadia 241 Bukarest 0 Neamt 234 Craiova 160 Nagyvárad 380 Dobreta 242 Pitesti 100 Eforie 161 Rimnicu Vilcea 193 Fogaras 176 Nagyszeben 253 Giurgiu 77 Temesvár 329 Hirsova 151 Csalános 80 Iasi 226 Vaslui 199 Lugos 244 Nagyszerénd 374

Rögtön észrevesszük, hogy a fent kapott Arad - Nagyszeben – Fogaras –

Bukarest útvonal 32 kilométerrel hosszabb, mint a Arad - Nagyszeben – Rimnicu

Vilcea – Pitesti Bukarest útvonal.

Az eljárás egyetlen út végigkövetését preferálja a célig, ha zsákutcába kerül,

visszalép. Két nagy problémája van: nem optimális (például a fenti esetben sem) és

Page 41: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

5. A matematikában kevésbé ismert módszerek

40

nem teljes (mert elindulhat egy végtelen úton, és így soha sem fog visszalépni más

lehetőségeket kipróbálni). A legrosszabb esetre számított idő-és tárigénye ( )mO b ,

ahol m a gráf mélységét jelöli, a b pedig az egy csúcsból kiinduló élek átlagos

száma. (Stuart Russell, Peter Norvig, 2005)

5.1.2 Az A* algoritmus

A legjobbat-először keresés leginkább ismert változata, amelyet Bertram

Raphael, Nils Nilsson és Peter Hart alkotott meg 1968-ban.

5.1.2.1 Bertram Raphael, Nils Nilsson, Peter Hart

20. ábra: Nils Nilsson, Peter Hart, Bertram Raphael

Nils Nilsson az MI tudomáynának egyik alapítója. A mérnőki tudományok

professzora, a stanfordi egyetem nyugalmazott testületi tagja. Hírnevét a kutatás, a

tervezés a robotika területén elért sikerei hozták meg. A stanfordi egyetemen

szerezte meg a PhD titulust 1958-ban, majd karrierjének nagy részét az SRI-nél

építette. 1985-ben a stanfordi egyetem a tantestületébe választja, és 1990-ig

nyugdíjazásáig itt is marad. 1982 és 1983 között negyedikként elfoglalhatta az

AAAI elnöki székét. Nilsson számos az MI témakörébe tartozó könyvet írt és

lektorált. (Wikipedia, 2008)

Peter Hart az 1940-es években született, informatikus és vállalkozó. A Msc

diplomáját és a Ph.D címét a stanfordi egyetemen szerezte meg. Az 1997-ben az

általa alapított Ricoh Vállalkozás elnöke volt. Alapvető eredményeket ért el az MI

területén. 1967 és 1975 között az SRI Nemzetközi laboratóriumban a Mesterséges

Intelligencia részlegen dolgozott igazgatóként, és ezalatt számos publikációja jelent

meg az informatika ezen területéről. (Wikipedia, 2009)

Bertram Raphael 1936-ban született és az MI terén elért eredményeiért híres.

A Bsc diplomáját fizikából a rensselaeri műszaki egyetemen szerezte meg 1957-

ben, a Ph.D címet pedig az MIT-n 1964-ben. (Wikipedia, 2008)

Page 42: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

5. A matematikában kevésbé ismert módszerek

41

5.1.2.2 Az eljárás

Ebben az eljárásban a kiértékelő függvényünk a heurisztikus függvény és az

aktuális csúcsig megtett út költségének ( ( )g n ) kombinációja. Tehát

( ) ( ) ( )f n g n h n . Átfogalmazva ( )f n a legolcsóbb, az n csúcson keresztül

vezető megoldás becsült költsége.

Az A* optimalitását könnyű elemezni, ha ( )h n egy elfogadható heurisztika.

Definíció (elfogadható heurisztika): ( )h n soha nem becsüli felül a cél eléréséhez

szükséges költséget.

Ennek a feltételnek a légvonalban mért távolság, mint heurisztikus függvény

eleget tesz, hiszen e távolság bármely két pont között a legrövidebb.

Állítás: Az A* optimális, ha h(n) elfogadható heurisztika.

Bizonyítás: Indirekten tegyük fel, hogy az eljárás során eljutottunk egy olyan

célcsúcsba melynek az értéke szuboptimális (nem megfelelő). Jelöljük ezt a csúcsot

G -vel. Legyen az optimális megoldás költsége *C . Mivel G szuboptimális és

( ) 0h G (ez minden célcsúcsra igaz), tudjuk, hogy:

( ) ( ) ( ) ( ) *f G g G h G g G C .

Tekintsünk most egy A csúcsot, amely a megoldási útvonalon van (ilyennek

léteznie kell, ha a megoldás létezik). Mivel ( )h n heurisztikus, vagyis nem becsüli

túl, tehát tudjuk, hogy:

( ) ( ) ( ) *f A g A h A C .

Ezek alapján ( ) * ( )f A C f G , tehát G nem kerülhet kifejtésre. Ellentmondásba

ütköztünk, vagyis az A* optimális megoldással fog visszatérni.∎ (Stuart Russell,

Peter Norvig, 2005)

Ez a bizonyítás azonban néhány esetben nem helytálló. Ezen esetek kifejtése

viszont komoly és igen szerteágazó informatikai ismereteket igényel, így mellőzzük

is őket.

Page 43: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

5. A matematikában kevésbé ismert módszerek

42

Az alábbi ábrák illusztrálják az eljárás fázisait.

21. ábra: Az A* algoritmus lépései. A csomópontok az f g h értékeivel vannak felcímkézve. Az első lépésben

Nagyszebent választja az algoritmus, majd Rimnicu Vilcea-t, de itt miután összehasonlítja a Rimnicu Vilcea-ból elérhető csúcsok értékeit visszalép és Fogaras csúcsot fogja választani (mivel annak a legkisebb az értéke). A

további lépéseket a következő 22. ábra szemlélteti.

22. ábra: A Fogarasból feldolgozott minden csúcs értéke nagyobb, mint a Rimnicu Vilcea-ból elérhető Pitesti, így az eljárás a következő lépésben ezt a csúcsot választja. Ezután pedig megérkezik Bukarestbe, és jól látható, hogy

a mohó legjobbat-először algoritmushoz képest 32 kilométert javított.

Az eljárás egyik nagy hibája a hatalmas memóriaigény, mivel a meglátogatott

csúcsokat a memóriában tárolja. Ezért az A* algoritmus sok nagyméretű

problémához nem praktikus.

Page 44: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

6. Összefoglalás

43

6 Összefoglalás

A szakdolgozat célja volt, hogy bemutassam és rávilágítsak a legrövidebb

útkereső algoritmusok sokszínűségére, valamint arra, hogy szerteágazóan sok

gyakorlati hasznuk van. A gráfelméletbeli alapfogalmak bemutatása után a

probléma alesetei szerint csoportosított algoritmusok részletezése következett.

Igyekeztem minél több ábrával és példával szemléltetni a folyamatok lépéseit,

ezzel megkönnyíteni azok megértését. Végül a modern kor tudományában az

informatikában kialakult változatai közül és kettőt bemutattam. Az életrajzok és

idézetek célja volt a túlzottan száraz jelleg elkerülése mellet az általános tudás

növelése, valamint az, hogy milyen más területen alkottak illetve a mai napig

alkotnak ezek a zseniális elmék.

Mielőtt elkezdem volna írni a szakdolgozatomat, ódzkodtam a témától. Annak

idején mikor tanultam ezen algoritmusok némelyikét, nem láttam, hogy mennyi

mindenre alkalmasak, milyen sok területen lehet használni őket. Most, hogy a

témát – véleményem szerint – alaposan megvizsgáltam és kielemeztem, állíthatom,

hogy fejlődő világunknak igenis nagy szüksége van ezekre a fantasztikus

matematikai és informatikai megállapításokra.

Page 45: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

7. <Irodalomjegyzék

44

7 Irodalomjegyzék

E.W.Dijkstra. (1959). Numerische Mathematik.

Haugeland. (1985). Artificial Intelligence: The very idea. Cambridge: MIT Press.

Nilsson, N. (1998). Artifical Intelligence: A new synthesis. San Mateo: Morgan

Kaufmann.

Singh Nayandeep. (2001. január 10). Yahoo. Letöltés dátuma: 2009. március 3,

forrás: L. R. Ford: http://www.geocities.com/nayan_vt/lester_randolph_ford1.htm

Stuart Russell, Peter Norvig. (2005). Mesterséges Intelligencia. Budapest:

Panem.

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. (2001).

Algoritmusok. Műszaki Könyvkiadó.

Wikipedia. (2007. november 23). Letöltés dátuma: 2009. március 3, forrás:

http://www.thocp.net/biographies/dijkstra_edsger.htm

Wikipedia. (2008. november 24). Letöltés dátuma: 2009. máecius 15, forrás:

http://en.wikipedia.org/wiki/Nils_Nilsson

Wikipedia. (2008. november 4). Letöltés dátuma: 2009. március 15, forrás:

http://en.wikipedia.org/wiki/Bertram_Raphael

Wikipedia. (2009. január 28). Letöltés dátuma: 2009. március 11, forrás:

http://en.wikipedia.org/wiki/Robert_W._Floyd

Wikipedia. (2009. január 31). Letöltés dátuma: 2009. március 11, forrás:

http://en.wikipedia.org/wiki/Stephen_Warshall

Wikipedia. (2009. február 14). Letöltés dátuma: 2009. március 09, forrás:

http://en.wikipedia.org/wiki/Richard_Bellman

Wikipedia. (2009. január 27). Letöltés dátuma: 2009. március 15, forrás:

http://en.wikipedia.org/wiki/Peter_E._Hart

Page 46: TERMÉSZETTUDOMÁNYI KAR - 2. Gráfelméleti fogalmak, jelölések 4 Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról

8. Köszönetnyilvánítás

45

8 Köszönetnyilvánítás

Végezetül szeretnék köszönetet mondani mindazoknak, akik munkámat

segítették. Külön köszönet Nagy Adriennek, aki bokros teendői mellett, nem kevés

segítséget és figyelmet szentelt nekem.

Köszönöm továbbá Podobni Dóra és Kocsis Olivér támogatását, hasznos

tanácsait és segítségét.