• Nem Talált Eredményt

Legrövidebb utat keres ˝o algoritmusok

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Legrövidebb utat keres ˝o algoritmusok"

Copied!
15
0
0

Teljes szövegt

(1)

Legrövidebb utat keres ˝ o algoritmusok

László Papp

BME

2021. október 1.

(2)

Gráfbejárások

EgyGgráf egybejárásánaG csúcsainak valamilyen sorrendben történ ˝o végiglátogatását értjük. A cél az, hogy egyv csúcsot lehet ˝oleg úgy látogassunk meg, hogy egy már bejártu csúcsból lépünk át azuv élen keresztül.

A cél a gráf összes csúcsának a bejárása.

B

A C

D

Minden bejáráshoz tartozik egyelérési sorrend, ami nem más mintGcsúcsainak egy sorrendje, hogy mikor láttuk ˝oket

el ˝oször a bejárás során.Befejezési sorrendenpedigG csúcsainak azon sorrendjét tekintjük amely megmondja, hogy milyen sorrendben foglalkoztunk velük utoljára.

A példa bejárás elérési sorrendje B, D, C, A, a befejezési sorrendje pedig B, C, D, A. (Ez a bejárás se nem BFS se nem DFS, BFS és DFS def kés ˝obb.)

(3)

Bejárási fa

A csúcsok nagy részébe egy korábbi csúcsból kiinduló él mentén érkeztünk meg el ˝oször. Bejárási fánaknevezzük azt az irányított gráfot, mely pontosan ezen éleket az újonnan elért csúcsok fele irányítva tartalmazza. Ez a gráf körmentes, viszont nem feltétlen fa! Lehet erd ˝o is.

B

A C

D

Definíció:Azuv él/irányított élfaéla bejárásra nézve, ha a bejárási fának az éle. Amenyibenuv nem faél, akkor:

▶ uvel ˝oreélha a bejárási fábanu-ból vezet irányított út v-be,

▶ uvvisszaélha a bejárási fábanv-b ˝ol vezet irányított út u-be,

▶ uvkeresztélha az el ˝obbiek közül egyik sem.

Megjegyzés:Irányítatlan esetben az el ˝oreélek és a visszaélek ugyanazok.

(4)

Néhány definíció:

Definíció:HaGegy irányított gráf és(u,⃗v)egy irányított él, akkorv-t azukiszomszédjának,u-t pedig av

beszomszédjánaknevezzük.

1 2 3

4 5 6 7

(6,3) (3,7)

(1,4) (2,5)

(1,2) (3,2)

(5,4) (5,6) (6,7)

Példa:Az 2-es csúcsnak az 1-es és 3-as csúcsok beszomszédjai, az 5-ös csúcs a kiszomszédja.

Jelölés:HaE egy lista, akkor az E lista i. elemétE(i)-vel jelöljük.

(5)

Szélességi bejárás, BFS(Breadth-first search) Input:G(esetleg irányított) gráf,v1gyökérpont.

0. Létrehozunk egy kezdetben üres E listát.

1. Bejárjuk av1csúcsot,v1-et betesszük azE-be. i:=1.

2. AzE(i)csúcs összes még be nem járt (ki-)szomszédját bejárjuk valamint ezen csúcsokat azE végére f ˝uzzük. Az E(i)csúcs és a most bejárt szomszédai között futó élekek bevesszük a bejárási fába, irányítatlan esetben úgy, hogy azE(i)csúcs legyen a kezd ˝opontjuk.

3. Ha azE listában szerepeli+1. csúcs, akkor azi-t növeljük 1-gyel és a 2-es lépésre ugrunk.

4. Output: E ami az elérési sorrend + bejárási fa

B A

D C

E F G

Elérési sorrend:

A, B, C, E, F, D, G Befejezési sorrend:

A, B, C, E, F, D, G

(6)

A BFS nem feltétlen jár be minden csúcsot

Az itt megadott BFS algoritmus nem felétlenül járja be az egész gráfot ha a gráf irányított, illetve biztosan nem járja be ha nem összefügg ˝o.

Példa:LegyenC a kezd ˝o csúcs. Ekkor az algoritmus végén E = (C,D)és azAésBcsúcsok nem lettek bejárva.

D

A B C

Ha a BFS algoritmust egyv csúcsból indítom egy irányítatlan gráf esetén, akkor pont av csúcsot tartalmazó összefügg ˝o komponensben lév ˝o csúcsokat fogja bejárni. Emiatt a BFS segítségével meg lehet találni az összefügg ˝o komponenseket.

(7)

Legrövidebb utak fája

Definíció:Egy (irányított) úthosszaaz ˝ot alkotó élek száma. A G(irányított) gráfban találhatóu ésv csúcsoktávolságána legrövidebbu ésv közötti (irányított) út hosszát értjük. Ezt a mennyiséget általáband(u,v)-vel jelöljük.

Megjegyzés: Irányított gráf esetén d(u,v)ésd(v,u)tipikusan nem egyenl ˝o!

d(A,B) =1̸=3=d(B,A)

A

B

Állítás

Ha aGgráf egy BFS fájában irányított út vezetu-bólv-be akkor ez az irányított út egyben egy legrövidebb útuésv között.

Következmény:Egy szélességi kereséssel meghatározhatóak a gyökérpont és bármely másik csúcs közötti távolságok.

Például azAésF távolsága 2.

B A

D C

E F G

(8)

A BFS néhány tulajdonsága

Állítás

A BFS algoritmus lépésszáman+e-vel arányos, aholna gráf csúcsszámaepedig az élszáma.

Bizonyítás:Minden csúcsot legfeljebb egyszer írunk fel a listába, ezért a lista karbantartása a csúcsszámmal arányos lépést kíván. Minden bejárt csúcsnak megvizsgáljuk a szomszédait, hogy bejártak-e, de ezekb ˝ol a vizsgálatokból legfeljebb kétszer annyi van mint él.

Állítás:

A BFS bejárásra nézve nincsenek el ˝ore élek.

(9)

Feladat

Adott egyGirányított vagy irányítatlan gráf, illetve aG élhalmazán értelmezettlhosszfüggvény mely megmondja, hogy egy él milyen hosszú.

Definíció:Egyút hosszaaz utat alkotó élek hosszainak az összege. Azuésv csúcsoktávolságánazu ésv között található legrövidebb (irányított gráf esetén irányított) út hosszát értjük és ezt a mennyiségetdist(u,v)-vel jelöljük.

Példa:

dist(S,D) =6 dist(D,S) =∞ dist(S,A) =11

20

3

9 20

B

D

A 5

5

3 C S

20

Adjunk eljárást amely tetsz ˝oleges két csúcs távolságát meghatározza és meg is ad egy legrövidebb utat közöttük!

(10)

Legrövidebb utakat keres ˝o algoritmusok ötlete

Definíció:AGirányított vagy irányítatlan gráfban lév ˝o

dist(u,v)távolságfüggvényre nézve egy fels ˝o becslés ab(u,v) ha mindenu,v csúcspárradist(u,v)≤b(u,v).

Él menti javítás

Hab(u,v)>b(u,w) +l(w,v)akkor cseréljük leb(u,v)értékét b(u,w) +l(w,v)-re! Ebben az esetben azt mondjuk, hogy awv él mentén javítottuk a fels ˝o becslésünket!

u

b(u,w)=8 w

b(u,v)=10 v

u

b(u,v)=12

b(u,w)=8 w

v

l(w,v)=2 l(w,v)=2

(11)

Él menti javítás haszna

u

b(u,w)=8 w

b(u,v)=10 v

u

b(u,v)=12

b(u,w)=8 w

v

l(w,v)=2 l(w,v)=2

Állítások:

1. Ha egy fels ˝o becslésre alkalmazzuk az él menti javítást akkor fels ˝o becslést kapunk.

2. Ha semelyik él mentén sem tudunk egy fels ˝o becslést javítani, akkor az a fels ˝o becslés megegyezik a távolságfüggvénnyel.

Állítások haszna:Az él menti javítást megfelel ˝oen sokszor ismételve fogjuk kiszámolni a távolságokat.

(12)

Dijkstra algoritmusa

Input: G= (V,E)(irányított/irányítatlan) gráf, egy l:E →R+∪0 hosszfüggvény és egys∈V csúcs.

0. KÉSZ:={s},d(s) :=0,d(v) :=∞mindens-t ˝ol különböz ˝o v csúcsra, és legyenu :=s.

1. Azucsúcsból a KÉSZ halmazon kívüli csúcsokba futó élek mentén próbáljuk javítani ad()fels ˝o becslést, azaz ha v ∈KÉSZ,/ uv ∈E ésd(v)>d(u) +l(u,v), akkor d(v) :=d(u) +l(u,v)valamintT(v) :=u.

2. Legyenu a KÉSZ halmazon kívüli csúcsok közül az amelyikre ad(u)érték a legkisebb. Tegyük be azu-t a KÉSZ halmazba.

3. Ha minden csúcs a KÉSZ halmazban van akkor STOP, különben folytassuk az 1-es lépéssel.

Output:d(v) =dist(s,v)értékek ésT tömb melyb ˝ol a legröbidebb utak kiolvashatóak.

(13)

A dijkstra algoritmus magyarázata (nem bizonyítás)

Az algoritmus mindenv csúcsra meghatározza adist(s,v) távolságot, ezt ad(v)számolásával éri el, ami sohasem n ˝o, és minden egyes lépésben fels ˝o becslése adist(s,v)-nek.

Egy KÉSZ nevezet ˝u halmazba helyezi egyesével a csúcsokat.

A KÉSZ halmazban lév ˝o csúcsokra a fels ˝o becslés már pontos lesz, azaz hav ∈KÉSZ akkord(v) =dist(s,v). Kezdésnek csak azsvan a kész halmazban.

Az algoritmus futása soránT(v)azt mondja meg, hogy egys ésv közöttid(v)hosszú út esetén melyik csúcs el ˝ozi megv-t.

Emiatt a végs ˝oT(v)megmondja, hogy egysésv közötti legrövidebb úton melyik csúcs el ˝ozi megv-t.

Ezért ha egysésv közötti legrövidebb utat szeretnénk megkapni, akkor ennek a fordítottját adja a

v,T(v),T(T(v)), . . . ,T(T(. . .T(v). . .)) =s sorozat, amit csak meg kell fordítani.

(14)

Dijkstra algoritmus példa

20

3

B

D

A 5

C 20

S

E 3 2

2 8

9 3

9

KÉSZ={S,E,C,D,A,B}

dist(S,B)=14 és egy legrövidebb útSésB között SCDAB.

d()

S 0 0 0 0 0 0

A ∞ 20 10 10 9 9

B ∞ ∞ ∞ 23 15 14

C ∞ 3 3 3 3 3

D ∞ ∞ ∞ 6 6 6

E ∞ 2 2 2 2 2

T() S

A S E E D D

B C D A

C S S S S S

D C C C

E S S S S S

(15)

Legrövidebb utak fája Dijkstra esetén

Minden egyesv csúcs esetén jelöljük meg azt az élet, amely menti javítás utoljára csökkentette av s-t ˝ol vett távolságát. Ez av csúcs esetén pontosan a(T(v),v)élet jelenti. Így haG összefügg ˝o, akkorG-nek egy olyan feszít ˝ofáját kapjuk, amely tartalmazs-b ˝ol minden más csúcsba egy legrövidebb utat.

20

3

B

D

A 5

C S 20

E 3 2

2 8

9 3

9

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

1, 2, 3 és 4 oszlopai alkotják a G páros gráf csúcshalmazát, a táblázatbeli számok pedig az adott sor és oszlop között futó él súlyát jelentik.. Határozzuk meg az órán

Definíció: Egy gráf diagramján a gráf olyan lerajzolását értjük ahol a csúcsok különböz ˝o síkbeli pontok, illetve az élek olyan síkgörbék amelyek:?. ▶ vépontjai az

Igazoljuk, hogy ha v egy véges G gráf páratlan fokú csúcsa, akkor G-ben van olyan út, amely v-t a G egy másik páratlan fokú csúcsával köti össze.. Mutassuk meg, hogy ha egy G

Bizonyítás: ⇒ : Ha G nem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.. ⇐ : G-ben van olyan csúcs, amibe

Legyen G egy gráf, melyet úgy kaptunk, hogy egy k-szorosan összefügg ˝o gráfhoz hozzávettünk egy új, legalább k fokú csúcsot.. Mutassuk meg, hogy ha G egyszer˝u gráf,

Bizonyítás: ⇒ : Ha G nem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.... Egy irányított gráfnak akkor

(Irányítatlan gráf esetén minden élt oda-vissza irányított élnek tekintünk.) A bejárás során minden csúcsot elérünk egyszer (ez adja az elérési sorrendet), és minden

Biz: Irányítsuk G éleit az egyik színosztályba, és a kapott G ~ irányított gráf (TU tulajdonságú) inci- denciamátrixában szorozzuk meg (−1)-gyel a másik színosztályhoz