並查集演算法總結

2021-08-22 11:57:30 字數 784 閱讀 1288

並查集可以稱之為不相交集合,在處理查詢幾個元素是否在同一集合時使用並查集可以達到非常快的處理速度,並查集的思想有一點很重要,就是利用樹的思想,表示不同的不相交的集合狀態,利用根節點作為代表元素,來對整個集合的資料進行處理。

並查集是一種非常精巧而實用的資料結構,主要用於處理一些不相交集合的合併問題,一些常見的用途有求連通子圖、最小生成樹的karkal演算法、和求最近共同祖先等問題。

使用並查集時,首先會初始化一組不相交的動態集合,一般用其陣列對應的下標表示集合中的乙個元素。每個集合可能包含乙個或幾個元素,選出其中的某個元素作為代表。

對每個集合中具體包含了那些元素是不關心的,具體選那個元素作為代表也是不關心的,我們關心的是,對於乙個元素,可以很快的找到這個元素所在集合的代表,以及合併兩個元素所在的集合。

並查集的基本操作 :

init()初始化操作,構建一群根作為自己的森林。

getf()查詢操作,將getf()函式返回對應集合的根節點的編號。

merge()合併操作,將兩個元素對應的集合進行合併,如果是同一集合,則不進行操作,否則對兩顆樹進行合併。

然後就是判斷根節點是否相同的在操作。

最後是記錄根節點個數的操作,也就是不同的集合個數。

總體思路 :

我們把每乙個節點所在樹的根節點存入f【】陣列中。

輸入兩個數查詢他們的根節點。

對他們所在的根節點進行合併。

最後輸入要查詢的兩個節點,找到他們的根節點,判斷他們的根節點是否相同。

以上就是我對並查集的理解。

演算法總結 並查集

搞了兩年acm,終於準備寫一些部落格了,總得留下點什麼。不了解並查集的話,推薦這個部落格學習,講的很有意思,當時笑出聲。下面寫一下自己的理解吧 並查集最簡單的用法,就是把不同的元素歸併到乙個集合裡。在集合裡選出乙個老大作為代表,集合裡的其他元素都是他的小弟。這樣,就可以判斷任意兩個元素是不是屬於同乙...

並查集演算法總結

public class unionfind public int getcount public boolean isconnected int p,int q public int find int p public void union int p,int q public class uni...

並查集和帶權並查集(演算法總結)

並查集 what 並查集是一種用來管理元素分組情況的資料結構。作用 1.查詢元素a,b是否屬於同一組。2.合併元素a,b所在的組。結構 樹形,不是二叉樹。注意 防止樹形結構發生退化,將所有元素找到她的根節點,讓其父結點,直接為他的根節點,方便查詢。並查集模板 1.查詢 1 遞迴模式 複雜度高,不建議...