Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Útkeresések
2
Gráfalgoritmusok Gráfbejárások Legrövidebb utak egy forrásból
Minimális súlyú feszítőfa keresése Mesterséges intelligencia
3
Gráfbejárások: a mélységi stratégia
Korosodó lámpagyújtogató egy középkori város utcáit járja: Főtérről indul Onnan nyíló sötét utcába megy és felgyújtja a lámpákat ha elágazáshoz ér, tovább megy egy másik sötét utcába és ott felgyújtja a lámpákat ha zsákutcába ér akkor visszamegy az előző kereszteződéshez és másik utcát választ
4
Mélységi bejárás
5
Mélységi bejárás
6
Mélységi bejárás
7
Mélységi bejárás
8
Mélységi bejárás
9
Mélységi bejárás
10
Mélységi bejárás
11
Mélységi bejárás
12
Mélységi bejárás
13
Mélységi bejárás
14
Mélységi bejárás
15
Mélységi bejárás
16
Mélységi bejárás
17
Mélységi bejárás
18
Mélységi bejárás
19
Mélységi bejárás
20
Mélységi bejárás
21
Mélységi bejárás
22
Mélységi bejárás
23
Mélységi bejárás
24
Gráfbejárások: a szélességi stratégia
Az alaphelyzet hasonló, de a lámpagyújtogató aznap este fáradt és elhívja a barátait (akik elég sokan vannak) segíteni. - a főtérről indulnak - a csapat annyi fele oszlik minden elágazásnál, ahány sötét utca kivezet belőle
25
Szélességi bejárás
26
Szélességi bejárás
27
Szélességi bejárás
28
Szélességi bejárás
29
Szélességi bejárás
30
Szélességi bejárás algoritmusa
Elérjük a kezdőcsúcsot Elérjük a kezdőcsúcs szomszédait Majd az 1 távolságra lévő csúcsok szomszédait, és így tovább… Közben kiiratjuk a csúcsok távolságait, és a szülőket Minden csúcsot csak egyszer járunk be
31
Szélességi bejárás algoritmusa
Algoritmikus megvalósítás: sor adatszerkezet segítségével Színezés: fehér: nem érintett csúcsok szürke: kiterjesztés alatt álló csúcsok fekete: kiterjesztett csúcsok
32
Szélességi bejárás algoritmusa
Q=[1]
33
Szélességi bejárás algoritmusa
Q=[2,3,4]
34
Szélességi bejárás algoritmusa
Q=[3,4,5,6]
35
Szélességi bejárás algoritmusa
Q=[4,5,6]
36
Szélességi bejárás algoritmusa
Q=[5,6,10]
37
Szélességi bejárás algoritmusa
Q=[6,10,7,8,9]
38
Szélességi bejárás algoritmusa
Q=[10,7,8,9]
39
Szélességi bejárás algoritmusa
Q=[7,8,9]
40
Szélességi bejárás algoritmusa
Q=[8,9]
41
Szélességi bejárás algoritmusa
Q=[9]
42
Szélességi bejárás algoritmusa
Q=[ ]
43
Minimális költségű utak egy forrásból
Élsúlyozott gráfok Pl.: Magyarország úthálózata: a gráf csúcsai városok élei a városokat összekötő utak, ahol az út megtételének költségét az élsúlyok jelzik
44
Dijkstra algoritmus (Nemnegatív) élsúlyozott irányított gráf
Elsőbbségi (prioritásos) sorban tároljuk a kiterjesztendő csúcsokat Alapelv: mindig a legkisebb költségű utat folytatjuk (mohó algoritmus)
45
Dijkstra algoritmus
46
Dijkstra algoritmus
47
Dijkstra algoritmus
48
Dijkstra algoritmus
49
Dijkstra algoritmus
50
Dijkstra algoritmus „legrövidebb utak fája”
51
A Dijkstra-algoritmus műveletigénye
52
A Dijkstra-algoritmus műveletigénye
A prioritásos sor megvalósítása rendezetlen tömbbel: a lineáris idejű a keresés miatt => T(n)=σ(n*n)= σ(n2) Kupaccal: a keresés log(n)-es, a fenntartás e*log(n)-es => T(n)= σ(n+e)*log(n)-es Sűrű gráf esetén: e~n2 => σ(n2*log(n))> σ(n2)
53
Bellmann-Ford algoritmus
Negatív élsúlyozású gráfokra is működik Feltétel, hogy ne legyen a gráfban negatív összköltségű irányított kör Az algoritmus elve: n-szer járjuk be a gráfot, keresve az s-ből induló 1,2…n-1 hosszúságú legrövidebb utakat a gráf összes pontjába Műveletigény: T(n)=Θ((n-1)*e) (~n3 ) Példa: valutaátváltások
54
Bellmann-Ford algoritmus
55
Bellmann-Ford algoritmus
56
Bellmann-Ford algoritmus
57
Bellmann-Ford algoritmus
58
Bellmann-Ford algoritmus
59
Bellmann-Ford algoritmus
60
Bellmann-Ford algoritmus
61
Minimális költségű feszítőfák
Pl.: városok elektromos ellátásának kiépítése
62
Minimális költségű feszítőfák
Lényegében 3 főbb módszert ismerünk Prim Kruskal Borovka Ezek egy közös absztrakt ősből, a piros-kék eljárásból származtathatók.
63
A piros-kék eljárás Kék szabály: Piros szabály:
válasszunk X csúcshalmazt, amiből nem vezet ki kék él az X-ből kivezető legkisebb súlyú élt színezzük kékre Piros szabály: válasszunk egy egyszerű kört amiben nincs piros él a legnagyobb súlyú színtelen élt színezzük pirosra
64
Példa kék szabályra
65
Példa kék szabályra
66
Példa piros szabályra
67
Példa piros szabályra
68
Kruskal algoritmus Kezdetben n db (egy pontból álló) kék fa van
Két lehetőség a kiválasztott élre: - ha két különböző kék fában vannak a végpontjai kékre színezzük - ha ugyanabban akkor pirosra Nagyon mohó
69
A Prim algoritmus a kék szabály véges sok alkalmazásával ér célt
egyetlen fát tartunk nyilván, ami folyamatosan növekszik a Dijkstra-algoritmushoz „hasonló”
70
Prim algoritmus X={ }
71
Prim algoritmus X={ }
72
Prim algoritmus X={1}
73
Prim algoritmus X={1,2}
74
Prim algoritmus X={1,2,5 }
75
Prim algoritmus X={1,2,5,4 }
76
Prim algoritmus X={1,2,5,4,3 }
77
Prim algoritmus X={1,2,5,4,3,6 }
78
A Prim algoritmus műveletigénye
79
A Prim algoritmus műveletigénye
A prioritásos sor megvalósítása rendezetlen tömbbel: a lineáris idejű a keresés miatt => T(n)=σ(n*n)= σ(n2) Kupaccal: a keresés log(n)-es, a fenntartás e*log(n)-es => T(n)= σ(n+e)*log(n)-es Sűrű gráf esetén: e~n => σ(n2*log(n))> σ(n2)
80
Mesterséges intelligencia: az A*
A mélységi és szélességi bejárás ötvözéséből jön létre Szükség van egy heurisztikus függvényre, amely előre „megbecsüli” a kiterjesztendő pont és cél várható távolságát Legjobbat először keresés
81
Legjobbat először keresés
82
Vége Köszönöm a figyelmet!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.