Algorithm 摊销分析和竞赛问题,有什么问题吗?

Algorithm 摊销分析和竞赛问题,有什么问题吗?,algorithm,data-structures,heap,time-complexity,amortized-analysis,Algorithm,Data Structures,Heap,Time Complexity,Amortized Analysis,我遇到了一个本地竞赛问题,如下所示 如果在空MIN-Heap上,我们执行n任意insert和delete操作(在MIN-Heap中指定delete位置)。对于插入和删除,摊销分析是什么 一) 插入O(日志n),删除O(1) 二) 插入O(日志n),删除O(日志n) 三) 插入O(1),删除O(1) 四) 插入O(1),删除O(日志n) 我认为这是这个问题的一个问题,因为堆的类型没有定义。我在谷歌上看到,我们有一些堆的选项(1)和(4)。从专家的角度来看,我们可以用这个问题来回答我们是否可以选择所

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

如果在空
MIN-Heap
上,我们执行
n
任意
insert
delete
操作(在MIN-Heap中指定delete位置)。对于插入和删除,摊销分析是什么

一) 插入O(日志n),删除O(1)

二) 插入O(日志n),删除O(日志n)

三) 插入O(1),删除O(1)

四) 插入O(1),删除O(日志n)


我认为这是这个问题的一个问题,因为堆的类型没有定义。我在谷歌上看到,我们有一些堆的选项(1)和(4)。从专家的角度来看,我们可以用这个问题来回答
我们是否可以选择所有选项为True?

您是正确的-这个问题是不正确的。Min heap是一种抽象数据结构,支持push和popMin操作,可以用多种不同的方式实现。根据实施情况,操作的复杂性将有所不同。此外,给定位置中的删除不是类最小堆操作。除非问题中有更多的上下文,否则就没有很好的定义

指定了堆的类型,不是吗?这是一堆垃圾。看见O(logn),因此正确答案似乎是(II)。@Alex min heap与
二进制heap
不同。Min heap定义了行为,而二进制/
斐波那契
/
二项式
定义了实现。对于
Binary heap
来说,插入和删除都在
O(logn)
中运行,但是对于
Fibonacci
来说,堆时间是不同的(
O(1)
用于插入,而
O(logn)
用于删除操作)。查看更多信息details@tchrikch我的意思是所有这些都是真的?因为OP在摊销分析中使用O表示法?@AnjelaDark给出的标准堆实现I)和III)是错误的,因为您不能在
O(1)
,II)和IV)中删除,这可能是正确的,这取决于实现。最后但并非最不重要的选项II)是最坏的情况,你不能低于它。@tchrikch如果你错了,请研究删除O(1)?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!我们确信(1)和(4)是真的,所以其他选项是这些选项的子集?“我说得对吗?”安杰拉达克说,事实上,这些答案都不能保证是真的。假设您决定在数组中实现一个最小堆,并通过在删除它之前线性搜索最小元素来实现popMin。这将使delete线性化。或者,设想在每次插入时,您对数组进行排序,给出insert的
O(log(n)*n)
。事实上,有些答案是其他答案的子集,因此,如果其中一个答案是真的,那么另一个答案也是真的。事实上,使用这种逻辑,答案将不是1、3或4,因为它们都是答案2的子集。这个问题仍然不正确,但我认为O(1)O(1)对于插入-删除是错误的:)好的。