Algorithm 平均案例与摊销分析之间的差异
我正在读一篇关于算法摊销分析的文章。下面是一个文本片段 摊销分析与平均案例分析相似,因为它是 与一系列操作的平均成本有关。 然而,平均案例分析依赖于概率假设 关于数据结构和操作,以便计算 算法的预期运行时间。因此,其适用性是有限的 依赖于关于概率分布的某些假设 算法输入 一个平均案例范围并不排除一个人 遇到“不走运”的情况时,会遇到需要比预期更多的输入 即使输入的概率分布假设为 有效 关于上述文本片段,我的问题如下:Algorithm 平均案例与摊销分析之间的差异,algorithm,analysis,Algorithm,Analysis,我正在读一篇关于算法摊销分析的文章。下面是一个文本片段 摊销分析与平均案例分析相似,因为它是 与一系列操作的平均成本有关。 然而,平均案例分析依赖于概率假设 关于数据结构和操作,以便计算 算法的预期运行时间。因此,其适用性是有限的 依赖于关于概率分布的某些假设 算法输入 一个平均案例范围并不排除一个人 遇到“不走运”的情况时,会遇到需要比预期更多的输入 即使输入的概率分布假设为 有效 关于上述文本片段,我的问题如下: 在第一段中,平均案例分析如何“依赖于数据结构和操作的概率假设?”我知道平均案例
O(n)
运行时间,但如果我们想更精确,它在平均情况下会进行n/2
比较。为什么会这样?因为我们是在做数据假设;我们假设最小值可以在每个位置以相同的概率出现。
如果我们改变这个假设,比如说,处于i位置的概率随着i的增加而增加,我们可以证明一个不同的比较数,甚至是一个不同的渐近界n
平均情况,而不是n/2
。当摊销界限被证明时,这不会发生平均案例分析对某些情况下可能无法满足的输入做出假设。因此,如果您的输入不是随机的,在最坏的情况下,算法的实际性能可能比平均情况慢得多 摊销分析不作此类假设,但它考虑的是一系列操作的总体绩效,而不是一项操作
动态数组插入提供了一个摊销分析的简单示例。一种算法是分配一个固定大小的数组,当插入新元素时,在必要时分配一个固定大小的数组,该数组的长度是原来的两倍。在最坏的情况下,插入可能需要与整个列表的长度成比例的时间,因此在最坏的情况下,插入是一个O(n)操作。但是,您可以保证这种最坏的情况很少发生,因此插入是使用摊销分析的O(1)操作。无论输入是什么,摊销分析都适用。请查看第二条评论,非常非常好!!lol@sorry\u我看不出注释被删除了,因为我没有看到任何注释。如何在一个只有n/2比较的未排序数组中计算最小值?我想你需要的正是n-1。不仅是平均水平,而且总是如此。我同意@StefanPochmann的观点。我只是想补充一点,我将用在数组中查找元素的例子来改变这个例子。在这种情况下,假设您的算法从左到右一直运行,直到找到元素为止,当它找到元素时就会停止,您可以支持您正在进行的分析。您很好地谈论了“平均案例”,但如果它也清楚地说明了“摊销案例”的作用,问题会更好。