2016-06-11 70 views
0

有人可以請用粗體解釋答案嗎?它是如何完成的?Union-Find樹上的操作?

下面是四個聯合查找操作(帶有加權聯合和完整com- 按下)的序列,導致了以下up-tree。最後兩個操作是什麼? (D,A),Union(B,C),Union(D/A,B/C),Find(B/C)。

答案:

enter image description here

+0

隨時對任何查詢。 –

回答

3

記號被使用,因爲的。

讓我們運用四個運算:

Union(D,A)導致以下三種:

D 
/
A 

Union(B,C)導致以下三種:

B 
/
C 

現在Union(D/A,B/C)意味着由於d和A屬於同一套,無所謂冷杉t參數是,它可以是D或它可以是A。同樣因爲B和C屬於同一組,所以第二個參數是什麼也沒關係,它可以是B或者它可以是C,結果將是相同的

其結果將是第三次手術後:

D 
/\ 
A B 
     \ 
     C 

現在因爲壓縮也是允許的,在Find(C)操作會導致樹:

D 
    /|\ 
A B C 

如果第四操作Find(B)時,樹會保持不變,因爲當我們在查找操作後應用壓縮時,我們將路徑中遇到的所有節點都設置爲根的直接子節點,但由於我們不會遇到C,我們將無法使D的直接子C,因爲它在最終樹中。

正確答案

四個運算的正確順序是:

Union(D,A), Union(B,C), Union(D/A,B/C),Find(C). 
+0

很棒的回答。非常感謝 –