分析范围 - 两个平行的

时间:2011-05-09 20:29:52

标签: algorithm

如果我有一个两个并行的算法,我想分析算法的范围,我该怎么办?

例如

parallel for a=2 to n
    parallel for b=1 to a-1

我猜是跨度是theta(lg(n)* lg(n)),但我不确定。 :)有人可以提供帮助或提示吗?

1 个答案:

答案 0 :(得分:0)

我假设你想要这个算法的time complexity。由于时间复杂度不是算法实际花费了多少时间,而是需要多少操作([支持此声明的引用]],此算法的时间复杂度为O(n^2),如果它是不平行。

来自维基页面的

Time complexity is commonly estimated by counting the number of elementary operations performed by the algorithm, where an elementary operation takes a fixed amount of time to perform

为什么我们不关心算法并行?
通常,我们的簇大小是固定的,并且不依赖于输入[n]。让群集大小为k [意思是,我们可以同时执行k个操作,算法为O(n^2) [为简单起见假设n^2]
假设我们有一个100的输入,那么它将“花费”(100^2)/k时间。如果大小为1,000,则需要(1000^2)/k,对于n个元素:(n^2)/k,如您所见,k是常量,并且程序是并行的这一事实不会改变复杂。能够一次进行k次操作,并不是更好[甚至值得,但那是另一个线程]然后计算机k时间更快。