Verward om de kortste weg van uw locatie naar bestemming te kiezen?. Dan moet u weten over dit algoritme.
Floyd-Warshall’s Algoritme wordt gebruikt om de kortste paden tussen alle paren van hoekpunten in een grafiek te vinden, waarbij elke rand in de grafiek een gewicht heeft dat positief of negatief is.
Het grootste voordeel van het gebruik van dit algoritme is dat alle kortste afstanden tussen 2 willekeurige hoekpunten kunnen worden berekend in O(V3), waarbij V het aantal hoekpunten in een grafiek is.
Floyd-Warshall-algoritme wordt ook wel Floyd’s algoritme, Roy-Floyd-algoritme, Roy-Warshall-algoritme of WFI-algoritme genoemd.
Dit algoritme volgt de dynamische programmeringsaanpak om de kortste paden te vinden.
Algoritme
Voor een grafiek met N hoekpunten:
Stap 1: initialiseer de kortste paden tussen willekeurige 2 hoekpunten met Infinity.
Stap 2: vind alle paarsgewijs kortste paden die 0 tussenliggende hoekpunten gebruiken, vind dan de kortste paden die 1 tussenliggend hoekpunt gebruiken enzovoort… tot alle N hoekpunten als tussenliggende knooppunten worden gebruikt.
Stap 3: Minimaliseer de kortste paden tussen de 2 paren in de vorige operatie.
Stap 4: Voor elke 2 hoekpunten (i,j) , moet men eigenlijk de afstanden tussen dit paar minimaliseren door de eerste K knopen te gebruiken, zodat het kortste pad zal zijn: min(dist+dist,dist).
dist vertegenwoordigt het kortste pad dat alleen de eerste K hoekpunten gebruikt, dist vertegenwoordigt het kortste pad tussen het paar k,j. Aangezien het kortste pad een aaneenschakeling zal zijn van het kortste pad van i naar k, dan van k naar j.
for(int k = 1; k <= n; k++){ for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ dist = min( dist, dist + dist ); } } }