2017-10-16 57 views
0

我已經在python中編寫了Prim的算法,但是這需要輸入帶有節點和邊的加權圖,這不是我所擁有的。如何在二維平面中找到連接一組座標的最小生成樹?

如何將給定的座標轉換爲圖形,以便程序可以接受輸入,並且我得到一個有意義的答案?

+0

構建一個將每個點連接到所有其他點的(無向)圖,並將每個邊的權重設置爲兩點之間的距離,從而終止它 – meowgoesthedog

回答

0

這是類的概念將證明有用的地方。

創建座標類並將您的節點和邊緣存儲爲該類的實例。將__sub__方法添加到Coordinate類以便獲得兩個座標之間的權重(距離或任何您想要的權重)。

例子: -

class Coordinate: 
    def __init__(self, x, y): 
     self.x = x 
     self.y = y 

    def __sub__(self, other): 
     return (self.x - other.x)**2 + (self.y - other.y)**2 
     # No need to square root to compare distances. 

現在您可以輕鬆創建一個鄰接地圖/列表,按您的方便,還可以找到相應的權重,並使用你的算法。

相關問題