【发布时间】:2014-05-15 16:01:24
【问题描述】:
假设一个图有N节点和M边,总迭代次数为k。
(k是一个常数整数,大于1,独立于N和M)
设D=M/N 为图的平均度数。
我有两种基于图的迭代搜索算法。
第一种算法的复杂度为O(D^{2k})时间。
第二种算法的复杂度为O(k*D*N)时间。
根据他们的 Big O 时间复杂度,哪个更好?
有人告诉我第一个更好,因为图中的节点数量N 通常比现实世界中的D 大得多。
其他人说第二个更好,因为k 第一个呈指数增长,而第二个呈线性增长。
【问题讨论】:
-
你对
k还有什么要说的吗?它是否取决于N、M或其他任何东西?是常数吗?是否大于 1? -
k是算法的参数还是输入的一部分? -
在两种算法之间动态决定的算法不会比其中任何一种都差。
-
迭代次数k作为算法的输入参数给出。
-
什么是小
d?和大D一样吗?
标签: algorithm graph big-o complexity-theory