1. 程式人生 > >樹的父指標表示法(並查演算法 重量權衡合併規則 路徑壓縮)

樹的父指標表示法(並查演算法 重量權衡合併規則 路徑壓縮)

樹的父指標表示法:對於樹中的每個結點都儲存一個指標域指向父結點。(缺點:不能準確地找到給定的結點的子結點資訊。優點:可以解決判斷倆個結點是否在同一個樹中的問題;用並查演算法合併倆個集合。)

並查演算法:如果倆個結點在同一棵樹,則判斷為同一集合。

實現:


0 0 1 1 1 2
R A B C D E F
注:每個結點元素儲存了代表父節點的基於陣列中的值。第一行代表結點儲存的父結點的值,第二行代表結點本身。此類實現既是並查演算法的基本思想。

等價類的不相交子集的合併:--->>重量權衡合併規則及壓縮路徑的實現

等價類:參考離散數學中的對等價關係的定義。

列:

給出下列的等價關係圖,畫出以不同規則得出的樹狀圖。


解答:

1.重量權衡合併規則(表格第一行的陣列代表父結點在陣列中的值)

                                                                                                                                            a:

A B C D E F G H I J


    b:


0 3 5 2 5
A B C D E F G H I J

    c:


0 0 5 3 5 2 5
A B C D E F G H I J


    d:


5 0 0 5 3 5 2 5
A B C D E F G H I J

2.壓縮路徑

即把重量權衡合併規則的C步驟中的(H.E)等價對做如下處理:


5 0 0 5 5 5 0 5
A B C D E F G H I J


總結:既然叫做等價對,就是依次把相鄰的倆個樹(一個結點也代表一棵樹)關係合併成一顆樹。重量權衡的核心是比較倆顆樹的結點數目,較少數目的樹的根節點以較多數目的樹的根節點為父結點;而路徑壓縮核心即是當產生高度為3 的樹時,最深結點指向根結點,再合併。

時間複雜度的分析:


A B C D E F G H I J
A B C D E F G H I J
A B C D E F G H I J