我脑子里已经有了这个问题,但从来没有得到合理的答案:
通常在人工智能课程中,当涉及到搜索时,总是说BFS是最优的但是DFS不是,但是我可以拿出许多用DFS显示的例子,我们甚至可以更快地得到答案。所以有人可以解释一下吗?我错过了什么吗?
答案 0 :(得分:11)
最佳,如“产生最佳路径”,而不是“是最快的算法”。在状态空间中搜索目标路径时,DFS可能会产生比BFS更长的路径。请注意,BFS仅在操作未加权时才是最佳选择;如果不同的动作有不同的权重,你需要像A *这样的东西。
答案 1 :(得分:3)
这是因为最优策略是指其返回的解决方案最大化效用的那个。
对此,没有任何保证 DFS找到的第一个解决方案是最优的。另外BFS在一般意义上并不是最优的,所以你的陈述是错误的。
这里的要点是保证某个搜索策略总是返回最佳结果。在特定情况下,任何策略都可能是最好的,但通常(特别是在AI中),你不知道在什么具体情况下,你最多会对这种情况有一些假设。
但是,当搜索树有限时, DFS是最佳的,所有操作成本都相同,并且所有解决方案都具有相同的长度。无论如何限制这一点,有一类重要的问题可以满足这些条件:CSP(约束满足问题)。也许你想到的所有例子都属于这个(相当常见的)类别。
答案 2 :(得分:0)
你可以参考我对this问题的回答,其中我解释了为什么DFS不是最优的,以及为什么BFS不是解决无知状态空间搜索问题的最佳选择。
答案 3 :(得分:0)
您可以参考下面的链接,其中考虑了树的示例,并用两种方法都将其解决。 link