1.不相交集是解決等價關係的一種資料結構,執行合併和查詢的速度都非常快,m次執行合併和查詢的執行時間為(m*logn)。
在乙個集合中,對於每一對元素(a,b),a,b∈s,對於關係r如果滿足下面三個條件,則成關係r為等價關係:
(1)自反性 對於所有a∈s,ara
(2)對稱性 arb當且僅當bra
(3)傳遞性 若arb且brc,則arc
有關不相交集的介紹和c語言實現,
點此檢視
本文介紹的是不相交集的find和union操作的python實現:
[python]view plain
copy
def init(a):
for i in range(0,110):
def unionset(root1,root2): #按照大小求並
tmp=a[root1]+a[root2];
if a[root1]<=a[root2]:
a[root2]=root1;
a[root1]=tmp;
else :
a[root1]=root2;
a[root2]=tmp;
def unions(root1,root2): #按照高度求並
if a[root1]>a[root2]:
a[root1]=root2;
else:
if a[root1] is a[root2]: #只有在高度相同的時候才進行合併
a[root1]=a[root1]-1;
a[root2]=root1;
def find(a,x):
if a[x]<=-1:
return x;
else :
return find(a,a[x]);
a=; #測試**
init(a);
unionset(1,2); #按大小求並
unionset(3,4);
unions(5,6); # 按高度求並
unions(5,7);
print find(a,2);
unionset(1,3);
print find(a,4);
print find(a,5);
print find(a,7);
不相交集ADT
1.不相交集是解決等價關係的一種資料結構,執行合併和查詢的速度都非常快,m次執行合併和查詢的執行時間為 m logn 在乙個集合中,對於每一對元素 a,b a,b s,對於關係r如果滿足下面三個條件,則成關係r為等價關係 1 自反性 對於所有a s,ara 2 對稱性 arb當且僅當bra 3 傳遞...
不相交集ADT
首先我們必須明白不相交集這種資料結構是用來幹什麼的。不相交即主要用來實現動態等價問題的求解。動態 等價問題 這裡不再說明等價關係的概念,這個可以參考數理邏輯之類的書。假設我們有乙個集合和乙個等價關係 針對集合中的任意兩個元素 a 和 b,我們如何確定他們有等價關係 即a b.那麼我們需要等價類的概念...
不相交集類
等價關係 自反性,對稱性,傳遞性 class disjsets 不相交集的類架構 disjsets disjsets int numelements s numelements 初始化void disjsets unionsets int root1,int root2 void disjsets ...