Eine negative Flanke ist einfach eine Flanke mit einem negativen Gewicht. Es kann sich in jedem Zusammenhang um den Graphen handeln und worauf beziehen sich seine Kanten? Beispielsweise ist die Kante CD in der obigen Grafik eine negative Flanke. Floyd-Warshall minimiert, wenn möglich, das Gewicht zwischen jedem Diagrammpaar. Für ein negatives Gewicht können Sie also einfach die Berechnung durchführen, wie Sie es für positive Gewichtsränder getan hätten.
Das Problem tritt auf, wenn ein negativer Zyklus vorliegt. Schauen Sie sich die obige Grafik an. Und stellen Sie sich die Frage: Was ist der kürzeste Weg zwischen A und E? Sie könnten sich zunächst so fühlen, als würde das ABCE 6 (2 + 1 + 3) kosten. Bei genauerer Betrachtung würde man jedoch einen negativen Zyklus beobachten, der BCD ist. Das Gewicht von BCD beträgt 1 + (- 4) + 2 = (-1). Beim Überqueren von A nach E konnte ich innerhalb von BCD weiterfahren, um meine Kosten jedes Mal um 1 zu senken. Ebenso kostet der Pfad A (BCD) BCE 5 (2 + (- 1) + 1 + 3). Wenn Sie nun den Zyklus unendlich oft wiederholen, werden die Kosten jedes Mal um 1 gesenkt. Ich könnte einen negativen unendlichen kürzesten Weg zwischen A und E erreichen.
Das Problem ist für jeden negativen Zyklus in einer Grafik offensichtlich. Wenn also ein negativer Zyklus vorliegt, ist das Mindestgewicht nicht definiert oder negativ unendlich, sodass Floyd-Warshall in einem solchen Fall nicht arbeiten kann.
Als Ergänzung möchten Sie vielleicht einen Blick auf den Bellman-Ford-Algorithmus werfen, der erkennt, ob ein Graph einen negativen Zyklus hat oder nicht, und auf andere Weise den kürzesten Weg zwischen zwei Knoten zurückgibt.