Gegeben n von n Punkten und dem Abstand d zwischen diesen Punkten muss ich den entsprechenden ungerichteten gewichteten Graphen finden, der diese Abstände ergeben würde. Ich habe versucht, den Algorithmus von Prim zu verwenden, um die MST zu finden, aber dieser Satz hat die Größe n-1 und enthält nicht die n benötigten Kanten. Z.B. n durch n Entfernungen gegebenFinden eines entsprechenden Graphen aus gegebenen kürzesten Wegen
0 3 5
3 0 4
5 4 0
Ich brauche die entsprechenden Kanten zu finden:
1 - 2 = 3
1 - 3 = 5
2 - 3 = 4
, die in der graphischen Darstellung ergibt:
3
1 --------- 2
\ /
\5 /4
\ /
\ /
3
jedoch Prim zurückkehren würde nur die ersten zwei Kanten seit Eine MST enthält keine Zyklen.
Wie in der Frage gefragt, muss ich den ungerichteten gewichteten Graphen mit n Kanten finden, die zu diesen kürzesten Abständen führt. In dem Beispiel von n = 3 konstruiert jede Kante gemäß der Matrix, aber wenn n = 8, z. das würde die Frage nicht befriedigen. In diesem Fall würde Prims 7 dieser Kanten zurückgeben, wie würde ich die letzte finden, wie in Ihrem zweiten Absatz erwähnt? Ich habe Prims in Java implementiert: https://pastebin.com/Zmfpm3D1 – MGG
Wenn Sie wissen, dass es n Kanten gibt, würde ich Prim verwenden, um die ersten n-1 Kanten zu erhalten und dann die nicht verwendeten Kanten in aufsteigender Reihenfolge der Länge zu durchlaufen erstens, der kürzer ist als der Weg durch den Baum, der durch die vorhandenen n-1 Kanten gebildet wird. Sie können möglicherweise Zeit sparen, indem Sie Entfernungen berechnen, indem Sie die Tatsache nutzen, dass Sie Entfernungen auf einem Baum berechnen. – mcdowella