E N D
Célja Egy adott élsúlyozott negatív összköltségű irányított kört nem tartalmazó végesG 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 Vcsú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.
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ánp út minden v1-től és vm-től különböző csúcsát értjük.
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.
Struktogram csúcsmátrixos ábrázolással Floyd(D,G)
1 -2 4 Példa: 3 2 3 2 k=n=4: -1 4 2 -1 k=0: 4 2 3 -2 3 1 k=1: 4 -2 2 4 2 1 3 4 -2 1 3 2 4 1 2 -2 2 -1 3 4 2 1 k=2: 3 3 2 -1 4 2 1 4 2 4 3 -1 4 -2 2 1 1 4 -1 2 4 k=3: -2 2 3 4 1 4 -2 2 1 3 4 2