Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Algoritmusok és Adatszerkezetek I.
Feszítőfák és legrövidebb utak 2018. november 13.
2
Minimális feszítőfák
3
Feszítőfa Telefon, út stb. hálózat vagy elektromos áramkör tervezése
4
Minimális feszítőfa probléma (Minimum Spanning Tree, MST)
Bemenet: összefüggő, irányítatlan, súlyozott G=(V,E) gráf. A w(u,v) súly az (u,v) él költségét fejezi ki. Kimenet: Egy T feszítőfa, amire minimális Feszítőfa: minden csúcsot érintő, összefüggő, körmentes élhalmaz (fa)
5
Minimális feszítőfa
6
Kruskal algoritmus Minimális fák erdejét tároljuk
Kezdetben minden pont egy külön fa Minden lépésben a legkisebb, két fát összekötő élt húzzuk be (egyesítjük egyetlen fává a két fát) Mohó algoritmus!
7
Kruskal algoritmus O(ElogE) O(logE) össz futásidő: O(ElogE)
8
Kruskal helyessége véges lépésben véget ér eredmény élhalmaz:
minden V csúcsot érint körmentes összefüggő minimális költségű (bizonyítások)
9
Prim algoritmus egyetlen fát növesztünk
tetszőleges gyökérpontból indulva minden lépésben új csúcsot kötünk be a fába legolcsóbb éllel elérhető csúcsot választjuk Mohó algoritmus!
10
Prim algoritmus gyökérpont össz futásidő: O(VlogV+ElogV)
= O(ElogV) ha V<E fában nem szereplő csúcsok prioritási sora a legközelebbi fapont szerint O(logV) O(logV)
11
Kruskal vs Prim Kruskal O(ElogE) (ha E<V2 logE=O(logV) → O(ElogV))
Prim O(ElogV) (tovább gyorsítható O(E+VlogV)) Sűrű gráfok esetén (E nagy) Prim előnyösebb, egyébként Kruskal egyszerűbb adatszerkezetet használ
12
Adott csúcsból induló legrövidebb utak
13
Legrövidebb utak probléma
Bemenet: irányított, súlyozott G=(V,E) gráf és egy s kezdőcsúcs. A w(u,v) súly az (u,v) él költségét fejezi ki. Kimenet: Minden V csúcshoz a legrövidebb út s-ből indulva
14
Dijsktra algoritmusa azokat a csúcsokat tárolja amihez már megtalálta a legrövidebb utat minden lépésben egyel bővíti az elért csúcsok halmazát legkisebb legrövidebb úttal bíró csúcsot választja Mohó algoritmus!
15
Dijsktra algoritmusa
16
Dijsktra algoritmusa össz futásidő: O(ElogV)
fában nem szereplő csúcsok prioritási sora a legrövidebb összúthosszak szerint O(logV)
17
Dijkstra helyessége
18
Negatív élsúlyok és körök
Körök nem okoznak problémát, de a negatív összsúlyú körök igen!
19
Negatív élsúlyok és Dijkstra
Dijkstra nem ad helyes megoldást negatív élsúlyok esetén
20
Bellman-Ford algoritmus
Negatív élsúlyok mellett is működik Ha elérhető negatív kör a kezdőcsúcsból akkor azt észreveszi Egy iterációban minden élen megpróbálunk javítani V-1 iterációra van szükség legrosszabb esetben
21
Bellman-Ford algoritmus
O(VE)
22
Legrövidebb utak minden csúcspárra
23
Legrövidebb utak minden pontpárra
Dijsktra minden kezdőpontból: O(VElogV) Bellman-Ford minden kezdőpontból: O(V2E)
24
Floyd-Warshall algoritmus
Dinamikus programozás d mátrix dij eleme az ismert legrövidebb út i-ből j-be dinamikus programozással a belső csúcsként használható csúcsokat bővítjük
25
Floyd-Warshall algoritmus
O(V3)
27
Legrövidebb utak minden pontpárra
Ha nincsenek negatív élsúlyok és ritka a gráf akkor Dijsktra minden kezdőpontból O(VElogV) Ha vannak negatív élsúlyok, de nincsenek negatív összköltségű körök vagy sűrű a gráf akkor Floyd-Warshall O(V3) Ha negatív összköltésgű körök is lehetnek akkor Ford-Bellman minden kezdőcsúcsra O(V2E)
28
Gráfalgoritmusok Minimális feszítőfák Legrövidebb utak egy csúcsból
Kruskal Prim Legrövidebb utak egy csúcsból Dijsktra Bellman-Ford Legrövidebb utak összes pontpárra Floyd-Warshall
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.