並查集

在計算機科學中 ， 並查集 （ 英文 ： Disjoint - set data structure ， 直譯爲不交集數據結構 ） 是一種數據結構 ， 用於處理一些不交集 （ Disjoint sets ， 一系列沒有重複元素的集合 ） 的合併及查詢問題 。 並查集支持如下操作 ： 查詢 ： 查詢某個元素屬於哪個集合 ， 通常是返回集合內的一個 “ 代表元素 ” 。 這個操作是爲了判斷兩個元素是否在同一個集合之中 。 合併 ： 將兩個集合合併爲一個 。 添加 ： 添加一個新集合 ， 其中有一個新元素 。 添加操作不如查詢和合並操作重要 ， 常常被忽略 。 由於支持查詢和合並這兩種操作 ， 並查集在英文中也被稱爲聯合 - 查找數據結構 （ Union - find data structure ） 或者合併 - 查找集合 （ Merge - find set ） 。 “ 並查集 ” 可以用來指代任何支持上述操作的數據結構 ， 但是一般來說 ， “ 並查集 ” 特指其中最常見的一種實現 ： 不交集森林 （ Disjoint - set forest ） 。 經過優化的不交集森林有線性的空間複雜度 ( 爲元素數目 ， 下同 ） ， 以及接近常數的單次操作平均時間複雜度 ( 爲反阿克曼函數 ） ， 是效率最高的常見數據結構之一 。 並查集是用於計算最小生成樹的克魯斯克爾演算法中的關鍵 。 由於最小生成樹在網絡路由等場景下十分重要 ， 並查集也得到了廣泛的引用 。 此外 ， 並查集在符號計算 ， 寄存器分配等方面也有應用 。