如何证明并行算法的上/下界?

时间:2018-01-07 17:55:50

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

假设一个Fibonacci算法:

enter image description here

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

我该如何处理?

更新

所以我会解释我自己做了什么,并说明我被困在哪里。

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

因此,并行算法具有:

工作(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

老实说,即使这是有道理的,我也不知道。

给出了一个正式的解决方案: enter image description here

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

1 个答案:

答案 0 :(得分:0)

我想说处理器几乎不用担心,因为重复是一棵树而且这棵树有一个指数的节点。这些节点表示必须在每个步骤中完成的合并。因此,即使处理器的数量是无限的,它也无助于解决这种重现,因为它们只能在最后一行中独立计算某些东西,即W(1)和W(0)。

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

正如一个小旁注,这些界限并不紧张:Related Post