【发布时间】:2015-04-09 11:11:06
【问题描述】:
我遇到了一个本地竞赛问题,如下所示。
如果在空 MIN-Heap 上,我们将执行 n 任意 insert 和 delete 操作,(在最小堆中具有给定的删除位置)。 insert 和 delete 的 amortized analysis 是什么?
I) 插入 O(log n),删除 O(1)
II) 插入 O(log n),删除 O(log n)
III) 插入 O(1),删除 O(1)
IV) 插入 O(1),删除 O(log n)
我认为这是这个问题的问题,因为没有定义堆的类型。我在谷歌上读到我们有一些堆的选项(1)和(4)。从专家的角度来看,我们可以用这个问题说can we select all options as True?
【问题讨论】:
-
堆的类型不是指定了吗?这是一个最小堆。见en.wikipedia.org/wiki/Binary_heap。两种操作都为 O(log n),因此正确答案似乎是 (II)。
-
@Alex min-heap 与
Binary heap不同。最小堆定义行为,Binary/Fibonacci/Binomial定义实现。确实,对于Binary heap,插入和删除都在O(log n)中运行,但是对于Fibonacci,堆时间不同(O(1)用于插入,O(log n)用于删除操作)。更多详情请见en.wikipedia.org/wiki/Heap_%28data_structure%29 -
@tchrikch 我的意思是他们都是真的?因为 OP 在摊销分析中使用 O 表示法?
-
@AnjelaDark 鉴于标准堆实现 I) 和 III) 是错误的,因为您不能在
O(1)中删除,II) 和 IV) 可能是真的取决于实施。最后但并非最不重要的选项 II) 是 最坏的 情况,你不能低于它。 -
@tchrikch 你错了,请研究 cs.nthu.edu.tw/~wkhon/algo09/assignments/assign5sol.pdf 在 O(1) 中删除 ?!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!
标签: algorithm data-structures heap time-complexity amortized-analysis