Gitt en vektet rettet graf, gir den oss en matrise som forteller oss hva korteste vei fra en node til en annen er.


Pseudokode og kjøretid

Kjøretid: Med min-heap - Med fibonacci heap -

Generelt kan vi si at kjøretiden er med en vanlig min-heap som prioritetskø i Dijkstras algoritme blir . Vi bruker denne algoritmen fremfor Floyd-Warshalls algoritme når og vi kan neglisjere og får dermed kjøretid . For kompakte grafer vil kjøretiden bli nærmere .

Virkemåte

Baserer seg på Dijkstras algoritme, og kjører den på alle noder. Forskjellen er at denne derimot funker med negative kantvekter. Dette kan f.eks gjøres ved å gjøre alle kantene positive:

    • Funker dårlig!
  • Bruke en Teleskopsum
    • Kantvektene er nå definert ved der er verdien til node , og er verdien til node .

Ved å bruke en teleskop sum blir denne grafen Til denne Som vi kan bruke Dijkstras algoritme på. Til slutt finner vi fra som er den korteste avstanden fra alle til alle.

Hvordan finne

Trekantulikheten Den korteste veien fra til er mindre enn eller lik den korteste veien fra til pluss vekten av kanten fra til .


Ved å bruke dette prinsippet kan vi koble med en ekstern node, , med vekter lik , og kjøre Bellman-Ford. Verdien nodene får er verdien vi får i .