不相交集python實現

2021-07-22 04:46:42 字數 1258 閱讀 6774

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 ...