並查集 Union Find 演算法理解

2021-07-30 18:57:28 字數 761 閱讀 4939

問題出自algroithm一書,理解後整理一部分

原書詳細內容參考一篇

個人理解:

1.quick-find演算法:

儲存的是數字對應的組號,如果組號相同則判斷連通,存在的問題是,每一次輸入pair後需要遍歷更新整個陣列

2.quick-union演算法:

儲存的是該節點的父節點號,根節點的標誌是父節點號和此節點號相同,判斷是否相通的標誌是根節點相同,連線的方式是更新乙個根節點,使其父節點為另乙個根結點;問題是哪乙個根節點作為新的子節點

3.weighted-quick-union演算法:

解決問題:哪乙個根節點作為子節點,加入乙個陣列儲存節點的size,根節點size小的作為子節點,連線的時候也需要更新size,這樣可以使數更為扁平化,找樹根節點的代價更小。

4.weighted-quick-union-plus演算法:

解決問題:每乙個節點儲存的是它父節點的編號,查詢根節點時需要遍歷,再次優化在於查詢之後將節點的父節點直接更新為根節點,這樣樹更為扁平化,高度只有兩層,類似於union-find最終結果。

演算法合集 並查集union find

並查集演算法主要分為quic find,quick union以及union find方法。但出於效率考慮,一般使用union find演算法進行實際操作。union find演算法的思想就是利用乙個陣列id記錄每個節點的父節點,例如現要將節點1 id 1 1 連線到節點2 id 2 2 則令id ...

演算法筆記 並查集(union find演算法)

對於一類問題,問題的輸入是一些物件兩兩之間的 相連關係 並且這種 相連關係 是一種等價關係,即它具有以下性質 那麼我們可以把相連的物件劃分為乙個等價類。問題的目標是根據輸入的所有相連關係,將物件空間劃分為多個等價類,並能夠判斷任意兩個物件是否屬於同乙個等價類。這個問題稱為動態連通性問題,動態連通性問...

並查集路徑壓縮 並查集 UnionFind 入門

咳咳,剛看完海賊更新,馬上呼哧呼哧寫下這篇文章,這週的目標就是出一篇並查集相關的文章,真的是時間咻咻一下就沒了。本文閱讀大概需要3分鐘。好了,並查集呢,英文叫union find 並查集是一種樹型的資料結構,通常來用於處理一些不相交集合的合併 union 問題,以及查詢 find 問題。如下 1 有...