【发布时间】:2013-04-11 04:48:01
【问题描述】:
我正在从“算法简介”学习 f-heap,而“减键”操作真的让我很困惑——为什么这需要“级联切割”?
如果删除此操作:
- make-heap()、insert()、minimum() 和 union() 的开销明显保持不变
- extract-min() 仍然是 O(D(n)),因为在 O(n(H)) 'consolidate' 操作中,大多数有根树的成本可以在添加到时支付根列表,剩余成本 O(D(n))
- decrease-key():显然是 O(1)
至于D(n),虽然我不能准确解释,但我认为它仍然是O(lgn),因为没有'cascading-cut',一个节点可能只是被移动到根列表a稍晚,任何节点隐藏在其父节点下不影响效率。至少,这不会让情况变得更糟。
为我糟糕的英语道歉:(
有人可以帮忙吗? 谢谢
【问题讨论】:
-
好问题。把父位置的所有信息都扔掉似乎很不直观。
标签: algorithm data-structures complexity-theory big-o fibonacci-heap