Ich machte dynamische Programmierübungen und fand den Floyd-Warshall-Algorithmus. Anscheinend findet es die kürzesten Wege aller Paare für einen Graphen, der negative Gewichtungskanten, aber keine negativen Zyklen haben kann.
Ich frage mich also, was die reale Bedeutung negativer Gewichtsränder ist. Eine einfache englische Erklärung wäre hilfreich.
algorithms
graph-theory
c2h5oh
quelle
quelle
Antworten:
Saeed Amiri hat bereits in einem Kommentar ein hervorragendes Beispiel gegeben: Das Gewicht der Kanten kann alles in der realen Welt darstellen, zum Beispiel den Geldbetrag, der von einem Konto auf ein anderes Konto überwiesen werden soll. Die Beträge können positiv oder negativ sein. Zum Beispiel, wenn Sie von nach b gehen möchtena b in Ihrem Diagramm wechseln und dabei so wenig Geld wie möglich verlieren (kürzester Weg), können Sie negative Gewichte in Betracht ziehen. Weitere Informationen finden Sie in diesem Buchkapitel .
Abgesehen davon gibt es viele weitere Anwendungen. Die negativen Gewichte hängen davon ab, wie Sie es modellieren. Betrachten Sie beispielsweise dieses Diagramm
Chemie: Die Gewichte können verwendet werden, um die Wärme darzustellen, die während einer chemischen Reaktion erzeugt wird. (Modi: Verbindungen, Kante : wenn Verbindungeuv von u erhalten werden kann ("chemisch reduziert"). In diesem Diagramm: Sie produzieren 4 kJ, um s - a und 2 kJ, um a in t umzuwandeln. Sie benötigen 5 kJ, um s von t zurückzubekommen .v u 4 s−a 2 a t 5 s t
Real Life: Denken Sie an einen Fahrer, der dafür bezahlt wird, dass er seinen Arbeitgeber von nach t fährt , aber zwischen a und b bezahlt (sagen wir zwischen seinem Zuhause und seinem Arbeitsplatz).s t a b
Spiele: Angenommen, Sie spielen Stein-Papier-Schere für Geld. Knoten: Stein, Papier, Schere. Kanten: jede Beziehung (Clique). Gewichte: Wette. In diesem Diagramm: (vergessen ), hier s Beats ein , eine Beat t und t Beats s und gewinnt 4,2, -5 auf.b s a a t t s
quelle
Ich bin kein Chemiker, aber dennoch denke ich, dass dieses Beispiel es wert sein wird, Ihnen dabei zu helfen, über den Prozessor, die Netzwerktheorie und verwandte Dinge hinauszudenken.
Stellen Sie sich einen Graphen vor, der das Verhalten eines Moleküls in einer chemischen Reaktion simuliert, dh, welche Pfade es während der Reaktion nehmen kann, und Gewichte stellen die Energie dar, die beim Übergang absorbiert oder freigesetzt wird. Wenn wir also Energie aus der Reaktion heraus wollen, stellen wir die freigesetzte Energie mit fünf Gewichten und absorbiert dar Energie mit -ve.
quelle
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.
quelle
Stellen Sie sich beispielsweise ein logistisches Netzwerk vor, in dem das Gewicht w (i, j) einer Kante ij die Kosten für den Übergang von Scheitelpunkt i zu Scheitelpunkt j sind. Wenn Sie eine Geschäftsvereinbarung mit anderen Unternehmen getroffen haben, um deren Produkte zu transportieren, ist w (i, j) ein Gewinn anstelle von Kosten, sodass Sie dieses Gewicht als negative Kosten interpretieren können.
quelle
Verkehrsstau auf einer Karte:
Ein weiteres Beispiel für die Zuordnung von Gewichten zu einer Kante in der realen Welt könnten die Gewichte sein, die die Verkehrsbedingungen auf einer Karte darstellen (negativer, ungünstiger). Mit dieser Darstellung könnten wir dann die optimalen Entfernungen berechnen.
Wir können die "Gewichts" -Metapher wirklich verwenden, um irgendetwas von positivem / negativem Wert zwischen zwei beliebigen Punkten in einer Grafik darzustellen
quelle