【问题标题】:Analysis of shell sort壳排序分析
【发布时间】:2011-09-09 12:40:55
【问题描述】:

我正在阅读一本关于算法的书,它在分析 shell 排序算法时提到如下:

Shellsort 的最坏情况运行时间,使用 Shell 的增量,是 Theta(n square)。

证明不仅需要显示最坏情况的上限 运行时间,但也表明存在一些输入 实际上将下限作为 Omeaga(n square) 运行时间。我们证明 首先是下界,通过构造一个坏的情况。

我上面的问题是:

  1. 为什么作者提到坏案例来检查下限?我教要获得下限,我们应该采取最好的情况, 请要求澄清上述内容。

谢谢!

【问题讨论】:

  • 您可以在最坏、平均和最佳情况下要求上限 (Omicron)、下限 (Omega) 和两者 (Theta)。换句话说,边界与案例正交。
  • 你能解释一下边界与案例正交是什么意思吗?
  • 您可以为最佳、最差和平均情况分别设置 Omicron、Omega 和 Theta 界限。考虑一种算法,对于一个特定的输入是 Omega(n) 或 O(n log n),对于所有其他输入是 Theta(n^2),除了另一个输入是 Omega(n^3) 或 O(n ^3 日志 n)。当我说任何一个时,也许它是随机选择的;任何。如果您考虑一下,构建这样的算法将非常简单。

标签: algorithm sorting time-complexity shellsort


【解决方案1】:

他同时考虑上限和下限的原因是因为他想使用 Theta(Θ) 表示法来表达最坏情况时间。

theta 表示法要求您同时建立一个上限和一个 下限。

【讨论】:

  • 在我看来,他在问为什么要检查坏情况下的下限......为什么不是好的情况?因此,不确定这是否能回答他的问题……尽管如此。
  • 关键是要证明最坏情况的θ复杂度,你需要最坏情况复杂度的下限和最坏情况复杂度的上限。下限通过展示最坏情况行为的示例直接显示,上限通过间接证明显示。
【解决方案2】:

Theta 是一个边界约束(上限和下限)。要显示算法具有运行时间 Theta(f(n)),您必须确定两件事:

1) 在最坏情况下,算法在所有情况下运行时间为 O(f(n)) [最坏情况复杂度]

2) 算法必须花费时间 Omega(f(n)) [有遇到最坏情况的真实例子]

您通过为算法找到特别糟糕的情况来建立第二部分。

【讨论】:

    【解决方案3】:

    要显示某物是Theta(f(n)),必须同时显示上限和下限,这就是文本的作用。

    最坏情况时间是 Theta(n 平方)”的说法要求人们同时证明所述最坏情况时间的上限和下限.

    同样,关于平均情况时间为 Theta(f(n)) 的声明将需要 平均情况时间的两个界限。

    等等。

    正如@Patrick87 所说:

    边界与案例正交。

    【讨论】:

    • 但是对于下限我们应该考虑最好的情况而不是坏的情况,为什么作者要考虑坏的情况?对于基本情况,我们有上限我是对的
    • 在我看来,他在问为什么要检查坏情况下的下限...为什么不是好的情况?因此,不确定这是否能回答他的问题……尽管如此。
    • @venkysmarty:我已经扩展了答案,试图进一步澄清它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2010-11-23
    • 2015-07-11
    • 2011-07-04
    • 2018-02-08
    相关资源
    最近更新 更多