Hier ist ein Versuch auf eine genaue Antwort, die nur mit einer kleinen Anzahl von Links durchgeführt werden kann, oder wenn sie die Inter-Knoten-Abstände nicht sehr ändern.
Suchen Sie einen minimalen Spannbaum, und teilen Sie Kanten in "Baumkanten" und "hinzugefügte Kanten", wobei die Baumkanten einen minimalen Spannbaum bilden und die hinzugefügten Kanten nicht dafür ausgewählt wurden. Sie sind vielleicht nicht die Kanten, die während der Konstruktion tatsächlich hinzugefügt werden, aber das macht nichts.Alle Bäume auf N Knoten haben N-1 Kanten, also haben wir die gleiche Anzahl von Kanten, die während der Erstellung verwendet wurden, auch wenn sie nicht die gleichen Kanten haben.
Nun täuschen Sie vor, Sie können auf die Antwort im hinteren Teil des Buches nur genug zu sehen, für einen Scheitelpunkt von jeder hinzugefügten Kante, ob dieser Scheitelpunkt Teil der besten Vertex-Abdeckung war. Wenn dies der Fall ist, können Sie diesen Scheitelpunkt und seine Verknüpfungen aus dem Problem entfernen. Wenn nicht, muss der andere Knoten so sein, dass Sie ihn und seine Links aus dem Problem entfernen können.
Sie müssen jetzt eine minimale Vertex-Abdeckung für einen Baum oder eine Anzahl von getrennten Bäumen finden, und wir wissen, wie das geht - siehe meine andere Antwort für ein bisschen mehr Handwaving.
Wenn Sie nicht auf der Rückseite des Buches nach einer Antwort suchen können, und es gibt k addierte Kanten, versuchen Sie alle 2^k mögliche Antworten, die auf der Rückseite des Buches gewesen sein könnten und das beste finden. Wenn Sie Glück haben, dann wird der Link A in einem anderen Teilbaum als der Link B hinzugefügt. In diesem Fall können Sie die beiden Berechnungen für die beiden Möglichkeiten für den hinzugefügten Link A (oder B) auf die dynamischen Programmierungsberechnungen für den entsprechenden Teilbaum beschränken Sie haben die Arbeit nur verdoppelt statt vervierfacht. Im Allgemeinen, wenn Ihre k addierten Kanten in k verschiedenen Teilbäumen sind, die sich nicht gegenseitig stören, werden die Kosten mit 2 anstelle von 2^k multipliziert.
Es hängt alles zusammen: Wie viele zufällige Kanten? Wir wissen, dass es genau 49999 Baumkanten gibt, aber ein Algorithmus, der für 20 zufällige Kanten praktisch ist, wird nicht für 1000000 sein. –
Ich habe nicht die genaue Anzahl, aber etwa 1/3 der Kanten sind extra. – Ccyan