三種union-find演算法的效能特點演算法
建構函式
union()
find()
quick-find演算法nn
1quick-union演算法
n樹的高度
樹的高度
加權quick-union演算法
nlgn
lgn
public
intfind(int p)
public
void
union(int p, int q)
private
intfind(int p)
public
void
union(int p, int q)
quick-find演算法是平方級別的,如果n很大,成本很大,因此演算法不可行public
class weightquickunionuf
public
intcount()
public boolean connected(int p, int q)
public
intfind(int p)
public
void
union(int p, int q)
else
count--;
}}
quick-union演算法的成本主要依賴輸入的特點,最好的情況,它的執行時間是線性級別的,最壞的情況是平方級別的,所以該演算法仍然存在問題,我們不能保證所有情況它都比quick-find演算法快的的多。
加權quick-union演算法能夠保證對數級別的效能,因此它的效率最高。
四 union find演算法
問題 問題總結 就是輸入乙個整數對代表兩個融點 也就是物件,融點是術語 如果兩個融點未連通,則將它們連在一起 呼叫union方法,下面黑色的部分 並列印 如果兩個融點已經連通則處理下一對資料 下圖灰色的部分,什麼也不幹 過程如下 設計乙個資料結構來儲存程式已知的所有整數對的足夠多的資訊,並用它們來判...
演算法 union find的C 實現
問題描述 圖的動態連通性問題,要求能夠新增連線,判斷一對物件是否相連等 解決思路 若給出的兩個物件連通,則使兩者的id值置為相同,判斷是否連通時也只用判斷值是否相同即可。實現 class quick find find the root of p id i intfind int p id,int ...
演算法學習 Union Find演算法
union find演算法有它的實際用途。多用於動態連通的應用場景。union find演算法是 給出兩個節點,判斷它們是否連通,如果連通,是不需要給出具體的路徑的 舉兩個例子作為主要表現 1 在網路連線中,當發現沒有連線的兩個節點,可以把他們連線起來,一旦節點都連線起來,又能把多餘的線拆除,這時候...