三種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)
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-find演算法是平方級別的,如果n很大,成本很大,因此演算法不可行
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 在網路連線中,當發現沒有連線的兩個節點,可以把他們連線起來,一旦節點都連線起來,又能把多餘的線拆除,這時候...