【发布时间】:2015-05-02 11:13:28
【问题描述】:
让我们使用一种算法来查找有向、非循环、非加权图中两个节点之间的所有路径,该图中可能包含相同两个顶点之间的多个边。 (这个DAG只是一个例子,我不专门讨论这个案例,所以尽管它是正确的,但我认为它的正确性无视它。
我们有两个影响因素:
-
mc:一个顶点的最大输出边数。 -
ml:最大长度路径的长度,由边数测量。
使用迭代方式解决问题,其中复杂性代表完成的处理操作的计数。
对于第一次迭代,复杂度 = mc
对于第二次迭代,复杂度 = mc*mc
对于第三次迭代,复杂度 = mc*mc*mc
对于第(最大长度路径)迭代,复杂度 = mc^ml
总的最差复杂度是(mc + mc*mc + ... + mc^ml)。
1- 我们可以说它是O(mc^ml)吗?
2- 这是指数复杂度吗?据我所知,在指数复杂度中,变量只出现在指数处,而不是底部。
3- mc 和 ml 在我的算法复杂性中都是变量吗?
【问题讨论】:
-
你为什么要使用那个算法呢?另外,为什么要查找节点之间的 all 路径(相对于最好的、最便宜的等)?
-
如果你的图是非循环的,那么 2 个节点之间只有
0或1路径。 -
另外,请注意,无论如何你都可以说它是
O(2^2^2^2^mc^ml^2^2^mc*ml^mc^ml)- O 表示法只是一个上限,你不必把它弄得很紧(尽管你的界限无论如何,对于 DAG 来说绝对不是很紧,你可以在O(number of nodes)中做到这一点,甚至可能在NLOGSPACE中使用 Tarjan 的算法。 -
@FalconUA - DIRECTED 无环图并非如此。
-
哦,抱歉,没有正确阅读问题
标签: algorithm time-complexity complexity-theory