不相交集ADT(聯機演算法 離線演算法)

2021-07-07 01:29:40 字數 1676 閱讀 7694

0.1)本文總結於 資料結構與演算法分析, 旨在分享 不相交集adt的相關概念;

0.2) 不相交集adt 的知識涉及到:等價關係、動態等價關係、不相交集adt相關操作及其資料結構 ,還有我們最後分享的不相交集adt的應用

0.3)關於不相交集adt的求並操作(find + union),參見 ;

0.4)關於不相交集求並後的路徑壓縮操作(源**),參見

0.5)注意本文給出的聯機演算法 + 離線演算法 的定義;

1.1)若對於每一對元素(a,b), a, b ∈s, arb 或者為true或者為false;則稱在集合s上定義關係 r; 如果arb 是 true , 我們說 a 與 b 是有關係的;

1.2)等價關係是滿足下列三個性質的關係 r:

2.1)給定乙個等價關係「~」, 乙個自然問題是對任意的 a和b, 確定是否 a~b;

2.2)等價類:乙個元素a∈s 的等價類是s 的乙個子集, 它包含所有與a 有關係的元素;注意,等價類形成了對s 的乙個劃分:s的每乙個成員恰好出現在了 乙個等價類中;

2.3)為了確定是否 a~b:我們只需要驗證 a和b 是否都在同乙個等價類中,就可以了;

2.4)不相交:初始資料最初是n個集合的類,每個集合乙個元素,初始描述的是所有關係均為 false;

2.5)不相交集合的 union/find 演算法:從集合觀點來看, u的結果是建立乙個新集合 sk=si u sj, 去掉原來兩個集合而保持所有的集合的不相交性;由於這個原因, 我們把這個工作的演算法叫做不相交集合的 union/find 演算法

2.6)該演算法是動態的:因為在演算法執行過程中, 集合可以通過 union 操作而發生改變;

2.7)聯機演算法 + 離線演算法:

2.8)解決動態等價問題的方法有兩種:

3.1)我們的問題不要求 find 操作返回任何特定的名字,而只是要求 當且僅當兩個元素屬於相同的集合時, 作用在這兩個元素上的 find 返回相同的名字;

3.2)對union(x,y) 和 find(x)操作的約定:

3.3)對一些列操作的二次執行時間一般是不可接受的, 有幸的是, 有幾種方法容易保證這樣的執行時間不會出現;

4.1)出現的問題:我們有乙個計算機網路和乙個雙向連線表,每乙個連線可將檔案從一台計算機傳送到另一台計算機。那麼,能否將乙個檔案從網路上的任意一台計算機傳送到任意的另一台計算機上去呢?乙個附加的限制是要求該問題必須聯機解決;因此,這個連線表要一次乙個地給出,而該演算法那則必須能夠在任一時刻給出答案;

4.2)解決方法:

不相交集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.那麼我們需要等價類的概念...

資料結構 不相交集ADT

若對於每一對元素 a,b a b屬於s,arb或者為true或者為false,則稱在集合s上定義關係r。如果arb是true,那麼我們說a與b有關係。等價關係是滿足下列三個性質的關係r 自反性 對於所有的a屬於s,ara 對稱性 arb當且僅當bra 傳遞性 若arb且brc,則arc 乙個元素a屬...