我的书(人工智能现代方法)说,统一成本搜索算法的最坏情况时间和空间复杂度将是 O(b [C * / e]),其中 b 是分支因子, C * 是最优解决方案的成本,并且每个操作都至少花费 e 。但为什么会这样呢?
答案 0 :(得分:3)
首先,复杂性为 O(B^(C/e))
[C/e
]中的指数。
要理解它,首先想一个简单的例子:
让G=(V,E)
成为图表,其分支因子为B
。图表未加权(w(e) = 1
每个e
)。
考虑找到从S到T的最短路径。
在这种情况下,算法实际上是 BFS ,它将发现路径中长度为SOL
的所有节点,其中SOL
是最短路径,O(B^|SOL|)
对于一般情况 - 同样的想法成立,您需要发现最高成本C
的所有节点。因此,您可以发现深度为C/e
的节点,为您提供需要探索的 O(B^(C/e))
总节点。
指数因子是因为:第一级(根)具有B^0=1
个节点,第二级具有B个节点。从这些节点中发现B
节点,为您提供B^2
,....
修改强>
到目前为止错过了,但标题要求空间复杂度而不是时间复杂度。但是,答案保持不变,因为对于已访问过的节点,统一成本搜索会保留visited
集。由于您发现的每个节点也会添加到其中 - 答案仍为O(B^(C/e))
答案 1 :(得分:1)
C*/e
表示在搜索期间应访问的平均节点数,并且对于访问每个节点,您应该查看所有可能的b
个分支(至少是根节点),因此您应该检查搜索中的b [C * / e] 节点。这是你的搜索时间复杂度,这是假设每个节点上的进程都需要O(1)。
P.S:在最坏的情况下,它是Ω(b [C * / e] )