Algorithm Forda-Bellman
Kann eine konzentrierte Zählung gegeben werden G
c) n
und m
Rippen, und es gibt einen Ausgangspunkt. v
♪ Wir müssen die kürzeste Streckenlänge von oben finden. v
zu allen anderen Gipfeln.
Genau wie Dextra.Ford-Bellman-Algorithmus Auf der Suche nach einer Entfernung von 1 Top zu allen anderen, aber Arbeiten mit negativen Rippen♪
Ford-Bellmans Algorithmus ist ein paar Phasen.
n-1
) Alle Zählrippen sind auf jeder Stufe zu untersuchen und der Algorithmus versucht sich entlang jeder Rippe zu entspannen
(a, b)
Wert
c
♪
Beziehung entlang der Rippe - es ist ein Versuch, die Bedeutung zu verbessern
d[a]
Werte
d[b] + c
♪ In der Tat bedeutet es, dass wir versuchen, die Antwort für die Spitze durch die Verwendung der Rippe und die aktuelle Antwort für die Spitze zu verbessern.
Massiv
d
- es ist der kürzeste Tauchgang vom Start-up-Peak sowie in Daykstr, der ursprünglich mit möglichst vielen Zahlen gefüllt ist, abgesehen vom Start-up-Top, wo Null gesetzt werden muss.
Die Rippen werden nicht von der benachbarten Matrix oder der Gewichtsmatrix verwendet, sondern von der Liste, aus der die Rippe freigegeben wird (die Liste).
from
In diesem Fall
to
und sein Gewicht
cost
)
Strebekante {
von, zu, Kosten;
?
vektorausgestrahlte Teilkanten;
konstant
INF
Beschreibt die Anzahl der "Ausdauer" - es muss so erhalten werden, dass es alle möglichen Längen deutlich überschreitet.
Einfache Implementierung des Algorithmus:
d[v] = 0;
für (int i=0; i Visitn-1; ++i)
für (int j=0; j Visitm; ++j)
wenn (d[edges[j].from] PER INF)
d[edges[j].to] = min (d[edges[j].to], d[edges[j].from] + edge[j].cost);
oder etwas kürzer mit Kunststoffen
C++11:
d[v] = 0;
für (int i=0; iς n-1; ++i)
für (Schlitten j: Kanten)
wenn (d[j.from] Ø INF)
d[j.to] = min (d[j.to], d[j.aus] + j.cost);
Beispiel der Arbeit
Wir nehmen ein einfaches Ohr mit 5 Knoten, 4. Rippen wiegen 1.
Wir setzen die Rippenliste in diese Reihenfolge.
4 5 1
3 4 1
Artikel 2
1 2 1Referenzwerte im kürzesten Bereich:
wobei Inf eine solche ganze Zahl sein soll, die immer größer als das Rippengewicht wäre.
Nach dem 1. Durchgang
Nach 2. Durchgang
Nach 3. Pass
Nach 4. Durchgang
Wenn wir die Rippen in Ordnung bringen würden, könnten wir die kürzeste Länge nach dem 1. Durchgang finden.