我正在从“算法简介”中学习 f-heap,而“减键”操作真的让我感到困惑——为什么这需要“级联切割”?
如果删除此操作:
- make-heap()、insert()、minimum() 和 union() 的成本显然保持不变
- extract-min() 仍然是 O(D(n)),因为在 O(n(H)) 'consolidate' 操作中,大多数有根树的成本可以在它们被添加到根列表时支付支付,并且剩余成本 O(D(n))
- 减少键():显然O(1)
至于D(n),虽然我不能准确解释,但我认为它仍然是O(lgn),因为没有'cascading-cut',一个节点可能稍后会被移动到根列表,并且任何节点躲在其父之下不影响效率。至少,这不会让情况变得更糟。
为我糟糕的英语道歉:(
有人可以帮忙吗?谢谢