1. 程式人生 > >樹的等價問題,並查集

樹的等價問題,並查集

在離散數學中,對等價關係和等價類的定義是: 如果集合S中的關係R是自反的、對稱的和傳遞的,則稱它為一個等價關係。 等價關係是現實世界中廣泛存在的一種關係,許多應用問題可以歸結至等價類問題,這類問題通常被稱為等價問題。 通過使用集合,能夠解決等價問題。而集合可以通過雙親表示法的樹結構進行儲存。通過對樹結構的操作,可以實現查詢、歸併等操作。查詢操作和歸併操作的演算法如下: 在以上的歸併操作中,由於表示集合的樹的深度與樹形成的過程有關,因此在最壞情況下全部歸併操作將會有O(n2)的複雜度。而通過在歸併時比較子集所含成員的數目,令成員少的歸併至成員多的集合,將能夠提高演算法的效率。下面給出優化的歸併操作演算法: 另外,通過增加“壓縮路徑”的功能,即將所有從根到相應元素路徑上的元素都變成樹根的孩子。演算法如下所示: 本題中,將會給出n個原本互不相交的集合及k次集合合併的操作。通過這k次合併,判斷最終的某兩個原始的集合是否被合併成了同一個集合。