Ermöglicht optimale Lösung für Graphen
Es gibt einige optimalen Zyklen mit Kanten e_1
, ein Zyklus mit avg Kantengewicht X. e_2
... e_n
, so dass avg(e_i) = X
.
Für meinen Beweis nehme ich alle Indizes modulo n an, also e_(n + 1)
ist e_1
.
Lassen Sie uns sagen, dass unsere heuristischen diese Lösung nicht finden können, das heißt: für jede i
(was auch immer Kante wir zuerst nahm) existiert, so j
(wir alle Kanten i
-j
so weit gefolgt), dass die durchschnittlichen Kantengewicht in der Sequenz e_i
... e_j
ist größer als X (Heuristik löscht diese Lösung).
Dann können wir zeigen, dass das durchschnittliche Kantengewicht nicht gleich X sein kann. Nehmen wir eine längste Contiguos-Subsequenz, die nicht durch Heuristik (mit durchschnittlichem Kantengewicht nicht größer als X für jedes Element) geschnitten wird. Mindestens eine e_i <= X
, also eine solche Teilsequenz existiert. Für das erste Element e_k
einer solchen Untersequenz gibt es , so dass avg(e_k ... e_p) > X
. Wir nehmen zuerst solche . Jetzt können wir k' = p + 1
nehmen und einen weiteren p'
bekommen. Wir werden diesen Prozess wiederholen, bis wir unsere ursprüngliche k
wieder treffen. Endgültige p
möglicherweise nicht initial k
, bedeutet dies, dass die letzte Teilsequenz enthält [e_k, e_p - 1]
, die mit unserer Konstruktion für e_k
widerspricht. Nun ist unsere Sequenz e_1
... e_n
vollständig durch nichtüberlappende Subsequenzen e_k ... e_p
, e_k'...e_p'
usw. abgedeckt, von denen jedes ein durchschnittliches Kantengewicht größer als X hat. Wir haben also einen Widerspruch, dass avg(e_i) = X
.
Was Ihre Frage:
Wenn wir auf halbem Weg durch einen Zyklus sind und das Gewicht ist mehr als die beste Mittelwert gefunden wird, ist es nicht möglich, dass bei geringem Gewicht Kanten können wir eine Situation erreichen wo unser aktueller Zyklus niedriger gehen kann als der beste gefundene Mittelwert?
Natürlich ist es. Aber wir können diese Lösung sicher beschneiden, da wir später denselben Zyklus von einer anderen Kante aus entdecken werden, die nicht beschnitten wird. Mein Beweis besagt, dass wir, wenn wir jeden möglichen Zyklus in der Grafik betrachten, früher oder später einen optimalen Zyklus finden werden.
@IrrationalPerson Wenn jemand STL-Bibliotheken von C++ zu erklären brauchte, könnte ich das verstehen. –
Kennen Sie bfs/dfs? – sashas
Ja, vertraut mit BFS, DFS, Rekursion, DP, Dijkstra. –