資料結構與演算法分析 不相交集類

2021-10-07 14:43:44 字數 821 閱讀 2047

不相交集類是解決等價問題的一種有效資料結構,實現簡單,**很少,速度快。

等價關係

對於任意一對元素a,b∈s,定義關係~ ,使得a~b要麼為true要麼為false

1.(自反性)對於所有的a∈s,a~a

2.(對稱性)a~b當且僅當b ~ a

3.(傳遞性)若a~b且b ~ c則a ~ c

等價類:對於元素a∈s,等價類是s的乙個子集,包含所有與a有等價關係的元素。s的每個成員恰好在乙個等價類中

不相交集:設有n個集合的類,每個集合含有乙個不同元素,所有的元素兩兩不等價,那麼這些集合不相交

union/find演算法:對於這些不相交集,有兩種操作方式:find,返回等價類的名字;union,將兩個等價類合併

實現這個演算法最簡單的操作是以森林的方式給出,這個森林隱式地位於乙個陣列中

陣列的角標代表元素,角標上的值代表元素的父節點,預設只有乙個元素的等價類根為-1

public

class

disjsets

//按秩求並:根的資料為秩-1

public

void

union

(int root1,

int root2)

}//路徑壓縮的find

public

intfind

(int x)

}

可以看出,每個方法近乎是以常數的時間執行

不相交集類的乙個例子是迷宮的生成,這裡不再贅述

《資料結構與演算法分析》不相交集

前言 回來到學校,今天又要開始苦逼的工作了,後悔回家玩去了,現在想學習時間又不夠了。就是這麼傻 我的github 不相交集 思想 不相交集是解決等價問題的一種有效的資料結構,之所以稱之為有效是因為,這個資料結構簡單 幾行 乙個簡單陣列就可以搞定 快速 每個操作基本上可以在常數平均時間內搞定 首先我們...

資料結構與演算法分析(四) 不相交集

乙個集合s,集合中乙個元素a。a的等價類是s的乙個子集,該子集包含所有與a有關係的元素。等價類形成是對s的乙個劃分且s中的每乙個成員恰好出現在乙個等價類中。這樣,判斷a與b是否有關係,只需要判斷a與b是否在乙個等價類中即可。對於集合s劃分,取任意兩個等價類,si與sj,如果si sj 則稱這些集合不...

資料結構 不相交集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屬...