用於不相交集合的資料結構

2021-07-25 18:51:10 字數 866 閱讀 3566

make-set(x):建立乙個集合,它的唯一成員(因而為代表)是x。因為各個集合是不相交的,所以x不會出現在別的某個集合中

union(x,y):將包含x和y的兩個集合合併。假定操作之前著兩個集合是不相交的。

find-set(x):返回乙個指標,這個指標指向包含x的(唯一)集合的代表。

按秩合併:秩表示該節點高度的乙個上界,總是秩小的樹接到秩大的樹

路徑壓縮:

秩:x.rank,代表x的高度

make-set(x)

x.p = x

x.rank = 0

//按秩合併

union(x,y)

link(find-set(x),find-set(y))

link(x,y)

if x.rank > y.rank

y.p = x

else

x.p = y

if x.rank == y.rank

y.rank = y.rank + 1

//帶有路徑壓縮的find-set

find-set(x)

if x != x.p

x.p = find-set(x.p)

return x.p

find-set過程是乙個兩趟方法,遞迴時,第一趟沿著查詢路徑向上找到根,遞迴回溯時,第二趟沿著搜尋樹向下更新節點,使其直接指向

演算法導論 用於不相交集合的資料結構

一些應用涉及將n個不同元素分成一組不相交的集合,常進行兩種操作 尋找包含制定元素的唯一集合以及合併兩個集合。操作進行以下定於 make set x 建立乙個新的集合,僅含有x union x,y 將包含x和y的兩個集合合併成乙個新的集合,刪除原本的集合 find set x 返回乙個指向包含唯一x的...

用於不相交集合的資料結構(並查集)

一,兩個重要操作 1 找出給定元素所屬的集合 2 合併兩個集合 二,原理 保持一組不相交的動態集合s 每個集合通過乙個代表來識別,代表即集合中的某個元素 三,操作 1 make set x 建立乙個新的集合,其唯一成員就是x 因各集合是不相交的,故要求x沒有在其他集合 現過 2 union x,y ...

演算法導論筆記 21用於不相交集合的資料結構

在某些應用中,要將 n個不同的元素分成一組不相交的集合。不相交集合上有兩個重要操作,即找出給定的元素所屬的集合和合併兩個集合。一 不相交集合的操作 不相交集合教據結構維護一組不相交的動態集合的集合s 每個集合通過乙個代表來識別,代表是集合中的某個成員,在某些應用中,哪乙個成員被選作代表是無所謂的,但...