Sie können jeden Graphen so ändern , dass Dijkstra die Lösung mit der minimalen Anzahl von Kanten findet:
Multiplizieren Sie jedes Kantengewicht mit einer Zahl und addieren Sie dann zum Gewicht, um jede zusätzliche Kante in der Lösung zu bestrafen, d. H.
Dies funktioniert nicht für alle Werte von ; muss mindestens damit dies funktioniert. Wenn nicht diese Mindestanzahl ist, wählt es möglicherweise nicht den kürzesten Pfad. Wie finde ich diesen Mindestwert ?
Ps. Dies wurde in der Freizeit gemacht, ich bin mit den Hausaufgaben vor langer Zeit fertig.
algorithms
graph-theory
shortest-path
Die Unfun Cat
quelle
quelle
Antworten:
Wenn ein Graph , definieren wir mit wobei für einige wie in den Kommentaren der Frage vorgeschlagen.G ' = ( V , E , w ' ) w ' ( e ) = a w ( e ) + 1 a = | E | + ε ε ≥ 0G=(V,E,w) G′=(V,E,w′) w′(e)=aw(e)+1 a=|E|+ε ε≥0
Das Lemma folgt direkt aus der Definition von .w′
Nennen Sie das Ergebnis von Dijkstra auf , dem kürzesten Weg in . Es sei angenommen mit dem wenigstenen Kanten nicht ein kürzester Weg war (unter allen kürzesten Pfaden) in . Dies kann auf zwei Arten geschehen. P G ' P G.G′ P G′ P G
Dann gibt es einen anderen kürzesten Weg - dh - mit. Dies impliziert, dass durch das obige Lemma ist, was wiederum widerspricht, dass ein kürzester Weg in .
Da beiden Fälle zu einem Widerspruch geführt haben, ist in der Tat ein kürzester Weg mit dem wenigstenen Kanten in .G.P G
Das deckt die Hälfte des Satzes ab. Was ist mitdh mit ?a = | E | - ε ε ∈ ( 0 , | E | )a<|E| a=|E|−ε ε∈(0,|E|)
quelle