我正在從'算法介紹'學習f-heap,'減少鍵'操作真的讓我困惑 - 爲什麼這需要'級聯切割'?爲什麼斐波納契堆需要級聯切割?
如果該操作被移除:
- 補充堆(),插入(),最小()和接頭()的成本仍然明顯不變
- 提取-MIN()是仍然是O (D(n)),因爲在O(n(H))'合併'操作中,大多數有根樹的成本可以在支付時支付,當它們被添加到根列表時,剩餘的成本O(D n))
- 遞減鍵():顯然O(1)
至於D(n),雖然我無法準確解釋它,但我認爲它仍然是O(lgn),因爲沒有'級聯切割',節點可能只是稍後移動到根表 ,並且任何節點隱藏在其父下不影響效率。至少,這不會使情況變得更糟。
我的英文不好:(
任何人都可以幫忙嗎? 感謝
偉大的問題。將所有處於父母位置的信息扔掉似乎是非常不直觀的。 – 2014-06-14 14:45:28