【问题标题】:Amortized Analysis and Contest Questiosn, there is any problems?摊销分析和竞赛题,有什么问题吗?
【发布时间】:2015-04-09 11:11:06
【问题描述】:

我遇到了一个本地竞赛问题,如下所示。

如果在空 MIN-Heap 上,我们将执行 n 任意 insertdelete 操作,(在最小堆中具有给定的删除位置)。 insertdeleteamortized 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


【解决方案1】:

你是对的 - 这个问题是不正确的。 Min heap 是一种抽象的数据结构,支持push 和popMin 操作,可以通过多种不同的方式实现。根据实现的不同,操作的复杂性会有所不同。在给定位置删除也不是类最小堆操作。除非问题中有更多的上下文,否则它的定义并不明确。

【讨论】:

  • 我们确定 (1) 和 (4) 是正确的,所以其他选项是这些选项的子集?我说的对吗?
  • @AnjelaDark 实际上,这些答案都不能保证是真的。想象一下,您决定在一个数组中实现一个最小堆,并通过在删除它之前线性搜索最小元素来实现 popMin。这将使删除线性。或者想象一下,在每次插入时,您对数组进行排序,给出O(log(n) * n ) 用于插入。确实,有些答案是其他答案的子集,因此,如果其中一个答案是正确的,那么另一个答案也是如此。事实上,使用这个逻辑,答案不会是 1、3 或 4,因为它们都是答案 2 的子集。问题仍然不正确
  • 但我认为插入删除的 O(1) O(1) 是错误的 :) 好的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 2016-03-16
  • 2012-06-21
  • 1970-01-01
  • 2012-12-09
  • 2022-01-15
相关资源
最近更新 更多