3
在Python實施Kruskal的算法的電網定義了使用存儲在兩個陣列邊緣的圖像:上的圖像
h[x][y]
給出了從x,y
到x+1,y
v[x][y]
邊的權重給出了從x,y
邊緣權重x,y+1
我正在嘗試實現Kruskal的算法。這很簡單 - 我可以找到implementations online並複製它們。問題在於處理邊緣。特別;排序他們很混亂。
是否有更好的方法來存儲這個採集的邊緣?我希望他們從每個像素到相鄰的像素。我將圖像存儲爲i [x] [y],邊緣權重只是圖像值之間的差異。
有什麼不對存儲陣列原樣?你能否解釋一下你的缺點,以便我們可以嘗試找到解決這個問題的解決方案? – templatetypedef
考慮使用networkx。 http://networkx.lanl.gov/_modules/networkx/algorithms/mst.html。但對於你的問題,你可以實現你的容器作爲元組(源,目標,成本)或類,字典,namedtuple ....然後按成本排序這些列表,並添加到你的聯合查找數據結構(確保使用路徑壓縮和按等級結合)一旦源,dest就沒有相同的代表 – locojay