为什么DFS不是最优的,但BF是最佳的

时间:2014-01-21 16:41:58

标签: artificial-intelligence

我脑子里已经有了这个问题,但从来没有得到合理的答案:

通常在人工智能课程中,当涉及到搜索时,总是说BFS是最优的但是DFS不是,但是我可以拿出许多用DFS显示的例子,我们甚至可以更快地得到答案。所以有人可以解释一下吗?我错过了什么吗?

4 个答案:

答案 0 :(得分:11)

最佳,如“产生最佳路径”,而不是“是最快的算法”。在状态空间中搜索目标路径时,DFS可能会产生比BFS更长的路径。请注意,BFS仅在操作未加权时才是最佳选择;如果不同的动作有不同的权重,你需要像A *这样的东西。

答案 1 :(得分:3)

这是因为最优策略是指其返回的解决方案最大化效用的那个。

对此,没有任何保证 DFS找到的第一个解决方案是最优的。另外BFS在一般意义上并不是最优的,所以你的陈述是错误的。

这里的要点是保证某个搜索策略总是返回最佳结果。在特定情况下,任何策略都可能是最好的,但通常(特别是在AI中),你不知道在什么具体情况下,你最多会对这种情况有一些假设。

但是,当搜索树有限时, DFS是最佳的,所有操作成本都相同,并且所有解决方案都具有相同的长度。无论如何限制这一点,有一类重要的问题可以满足这些条件:CSP(约束满足问题)。也许你想到的所有例子都属于这个(相当常见的)类别。

答案 2 :(得分:0)

你可以参考我对this问题的回答,其中我解释了为什么DFS不是最优的,以及为什么BFS不是解决无知状态空间搜索问题的最佳选择。

答案 3 :(得分:0)

您可以参考下面的链接,其中考虑了树的示例,并用两种方法都将其解决。 link