【问题标题】:How does one prove an upper/lower bound of a parallel algorithm?如何证明并行算法的上限/下限?
【发布时间】:2018-01-07 17:55:50
【问题描述】:

假设一个斐波那契算法:

我们被要求证明这个算法的上限/下限。

我该怎么做?

更新

所以我会解释我自己做了什么,并说明我遇到了什么困难。

我不知道为什么,但我决定在这里使用递归关系来查看我在哪里可以获得最终结果。但我怀疑我的工作的原因是上限/下限是识别算法在资源方面的“无限”。

所以,并行算法有:

工作(n) = W(n - 1) + W(n - 2) + Θ(1)

此时,我决定使用递归关系-不知道-

Work(n) = [W(n - 1) + W(n - 2) + Θ(1)] + W(n - 2) + Θ(1)
        = W(n - 2) + W(n - 2) + 2Θ(1)
        = 2W(n - 2) + 2
        = Stuck here

老实说,我不知道这是否有意义。

给出了正式的解决方案:

但我不太明白上面采取的步骤

【问题讨论】:

  • 我不投票结束的原因:缺乏研究,但一个很好的问题。
  • 抱歉,我是否遗漏了一些对我的问题很重要的内容?我可以更详细地解释。 @displayName
  • 如果您在提出 SO 之前已经投入精力解决问题,请在此处添加您尝试过的所有内容。
  • 啊,肯定会添加解决方案。尽管它没有意义并且完全错误,因为我什至不知道如何开始。但会在上面更新。 @displayName
  • 看最后的示例解决方案,我认为我的答案是错误的。我对您问题中的“在处理器的上下文中”这一行感到困惑。我会等你读完再删除,因为如果我之前删除它,你将无法再看到它,因为代表低。

标签: algorithm complexity-theory fibonacci lower-bound upperbound


【解决方案1】:

我会说处理器几乎无关紧要,因为递归是一棵树,而这棵树的节点数量呈指数级增长。这些节点代表必须在每个步骤中完成的合并。因此,即使处理器的数量是无限的,它也无助于解决这种重复,因为它们只能在最后一行独立计算一些东西,即 W(1) 和 W(0)。

我刚刚在 cmets 中看到提供了样本解决方案并部分解释了:这里有一些进一步的“见解”:想法是扩大递归并寻找收集因子的方法。在这里,他们以应用不等式的方式收集 2:W(n-1)+W(n-2) >= 2 W(n-2)。所以现在你有 W(n)>= 2 W(n-2)。我们多久减去一次 2 直到右边有 W(0)? n/2 次。然后你最终得到 Omega(2^(n/2)) 下限。您可以使用或多或少相同的方法来显示上限。

顺便说一句,这些界限并不严格:Related Post

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    相关资源
    最近更新 更多