Man kann den Algorithmus von Prim oder den Algorithmus von Kruskal verwenden, um den minimalen aufspannenden Baum/Graph einer Sammlung von Scheitelpunkten/Knoten und Kanten/Verbindungen zu finden. Was ich jedoch möchte, ist ein Algorithmus, der das Minimum-Spanning-Diagramm dieser Sammlung findet, aber das resultierende Diagramm muss nur willkürlich ausgewählte Knoten anstelle aller Knoten enthalten. Es ist in Ordnung, wenn das resultierende Diagramm mehr Knoten enthält als nur die benötigten.Algorithmus zum Auffinden des minimalen Spannbaums der ausgewählten Knoten
Gibt es einen solchen Algorithmus? Vielleicht könnte man den Algorithmus von Prim (oder Kruskal) einfach verwenden, nachdem man den Graph so modifiziert hat, dass er nur die benötigten Knoten enthält? Aber ich bin mir nicht sicher, wie ich den Graph ändern soll, um seine Verbundenheit aufrechtzuerhalten.
Zum Beispiel, sagen wir einen rautenförmigen Ausgang Graph haben (mit Kosten von Links in Klammern):
A
(2)/ \(1)
B C
(2)\ /(5)
D
Nun wir willkürlich entscheiden, dass nur A und D benötigt werden Knoten. Wenn wir bei A anfangen, würden wir immer noch wollen, dass es den linken Weg nimmt, weil ((2 + 2) < (1 + 5)).
Sagen wir die Grafik leicht ändern:
A
(2)/ \(1) (2)
B C ------E
(2)\ /(5)
D
Wenn wir, dass nur A, D entscheiden Knoten und E benötigt werden, erkennen wir, dass der Weg mit minimal Kosten nicht unbedingt derjenige mit dem geringsten Links. A - B - D und A - C - E kostet 7, aber A - C - D und C - E kostet 8.
Okay, ich denke, dass ich es verstehe. Die optionalen Knoten sind die einzig möglichen Steinerknoten, die zur Verkürzung der Diagrammlänge verwendet werden können. Ich weiß immer noch nicht, wie nah eine Lösung ist. – Tespa42