【发布时间】:2013-03-19 00:16:01
【问题描述】:
BFS的运行时间是O(b^d)
b 是分支因子 d 是图从起始节点开始的深度(级别#)。
我用谷歌搜索了一段时间,但我仍然没有看到有人提到他们是如何找出这个“b”的
所以我知道分支因子是指“每个节点拥有的子节点数”
例如,二叉树的分支因子是 2。
所以对于 BFS 图,b= 平均我们图中每个节点的所有分支因子。
或b = MAX(在每个节点的所有分支因子中)?
此外,无论我们选择哪种方式 b,在接近我们的运行时间时似乎仍然模棱两可。 例如,如果我们的图有 30000 个节点,那么只有 5 个节点有 10000 个分支,其余 29955 个节点只有 10 个分支。我们将深度设置为 100。
在这种情况下,似乎 O(b^d) 没有意义。
谁能解释一下。谢谢!
【问题讨论】:
-
严格来说
d不是图的深度。它是最浅解的深度。 -
最浅的解决方案是什么意思?
-
如果有多个解,并且解的深度不同,那么BFS会在找到其中一个解,即最浅的解时终止。除非您想搜索整棵树,否则 d 的定义可能不同。
-
但是当我们谈论运行时,它是关于图的大小,比如图上有多少条边。而且我们必须访问每条边一次,所以运行时间是 O(|E|).... 对吗?
标签: performance algorithm artificial-intelligence breadth-first-search