【算法基礎】並查集的原理及使用

並查集概述

並查集是一種常用的算法,其主要是一種將相關元素放入同一集合的思想。

並查集的使用中主要有兩個步驟:合併、查找

  • 合併:將相關元素合併,底層實現主要爲數組或哈希表,將相關元素的根結點指向同一節點。
  • 查找:查找兩個元素是否在同一集合,查找其根結點是否相同即可。

在這裏插入圖片描述
類似於上圖中的“門派”劃分,在同一門派下即處於相同集合。

並查集優化

1. 路徑壓縮

減少並查集存儲節點時的樹形結構的高度,更改節點的指向,減少查找時間

方法一 隔代壓縮

原理如下圖所示:
實現代碼:parent[index] = parent[parent[index]];
在這裏插入圖片描述
方法二 完全壓縮

原理如下圖所示:
需要利用遞歸實現。
在這裏插入圖片描述

2. 按秩合併

秩一般代表樹的高度。

合併時根據秩,將秩小的樹的根結點指向秩大的樹的根結點,以避免合併後樹的高度增加。


並查集使用

在最小生成樹Kruskal方法中可使用並查集。

在部分編程題目比如No.990 LeetCode題目 “等式方程的可滿足性”中也可以應用。

參考

本文部分參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章