Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
A Floyd-Warshall algoritmus
2
Célja Egy adott élsúlyozott negatív összköltségű irányított kört nem tartalmazó véges G gráf - amely lehet irányított vagy irányítás nélküli - összes csúcspárjára megtalálni a legrövidebb (legkisebb költségű) utat, azaz a gráf minden u, v V csúcspárjára keressük az u-ból v-be vezető legkisebb súlyú utat, ahol az út súlya az úthoz tartozó élek súlyának összege. ∈
3
Konvenciók Az utak hosszán az út mentén szereplő élek költségeinek összegét értjük. A csúcspárok távolságán a csúcspár közötti utak közül az egyik legrövidebb út hosszát értjük. Vegyünk egy V={1,2,…,n} csúcsokból álló csúcshalmazt valamint a G gráf C szomszédsági mátrixát, ezen felül pedig még egy üres n n-es D mátrixot is használunk. Def.: p = <v1, v2,…., vm> egyszerű út belső csúcsán p út minden v1-től és vm-től különböző csúcsát értjük. ×
4
Az algoritmus alapja A feladat megoldását n iteráció után kapjuk meg, melyben folyamatosan fenntartjuk a következő invariánst: k-adik iteráció után minden (i, j) csúcspárra D(k)[i,j] azon i ~>j utak közül a legrövidebb utat tartalmazza, amelynek belső csúcsai k-nál nem nagyobb sorszámúak. Az utolsó iteráció után (k=n eset) minden (i, j) csúcspárra D(n)[i,j] az i ~> j utak közül a legrövidebbet tartalmazza, azaz a feladat megoldva.
5
Struktogram csúcsmátrixos ábrázolással
Floyd(D,G) D[1..n,1..n]:=C[1..n,1..n] For k:=1 to n For j:=1 to n D[i,j]:= min{D[i,j], D[i,k] +D[k,j]
6
Példa: 1 4 -2 3 2 3 -1 2 k=n=4: 4 2 -1 k=0: 3 4 2 -2 1 3 k=1: 4 -2 2 3
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.