假设一个Fibonacci算法:
我们被要求证明该算法的上限/下限。
我该如何处理?
所以我会解释我自己做了什么,并说明我被困在哪里。
我不知道为什么,但我决定在这里使用递归关系来看看我能在哪里得到我的最终结果。但是我怀疑我的工作原因是上限/下限是在资源方面识别算法的“无限”。
因此,并行算法具有:
工作(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
老实说,即使这是有道理的,我也不知道。
但我不太明白上面采取的步骤
答案 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