我有一個包含四個節點的圖,每個節點代表一個位置,它們像二維網格一樣佈局。每個節點都有一個連接(邊緣)給所有(根據位置)相鄰的節點。每條邊都有一個重量。在加權圖中查找邊緣
下面是由A,B,C,d和邊緣的權重表示由數字指示的節點:
A 100 B
120 220
C 150 D
欲結構的容器和用於切換節點共享的算法最重的邊緣。然後重置該邊的重量。每次執行算法時,節點(位置)都不能切換一次以上。
例如,處理上面的,最高的權重是邊緣BD,所以我們切換這些。由於沒有節點可以多次切換,因此B或D中涉及的所有邊都將被重置。
A D
120
C B
然後,下一個最高權重是唯一的邊緣左側,切換這些會給我們最終佈局:C,d,A,B。
我目前正在運行一個相當可怕的實現。我存儲一長串邊緣,它們(可能)連接的節點持有四個值,其重量值和節點本身的位置。每次請求時,我都會循環整個列表。
我正在用C++寫這篇文章,STL的某些部分可以幫助加快速度嗎?另外,如何避免重複數據?節點位置當前在五個對象中。該節點本身和四個節點表示與它的連接。
總之,我想幫助:
- 可以這樣的方式來構造,使得沒有數據重複?
- 意識到這個問題?如果有任何這樣的名字,告訴我,我可以谷歌的主題更多的信息。
- 快速算法總是很好。
假設邊緣僅在網格位置之間正交連接,網格本身是正方形,則邊緣的數量可以由2n(n + 1)給出,其中n = sizex-1 = sizey-1 ...如果它幫助。來源:http://www.research.att.com/~njas/sequences/A046092 – Mizipzor 2009-07-24 21:10:02