Artificial intelligence 为什么DFS不是最优的,但BFs是最优的

Artificial intelligence 为什么DFS不是最优的,但BFs是最优的,artificial-intelligence,Artificial Intelligence,我一直在想这个问题,但从来没有得到合理的答案: 通常在人工智能课程中,当涉及到搜索时,人们总是说BFS是最优的,但DFS不是,但我可以举出许多例子来说明使用DFS我们甚至可以更快地得到答案。有人能解释一下吗?我遗漏了什么吗?最佳,如“生成最佳路径”,而不是“可能的最快算法”。在状态空间中搜索目标路径时,DFS可能会生成比BFS更长的路径。请注意,BFS仅在动作未加权时才是最佳的;如果不同的动作有不同的权重,你需要类似于*的东西,这是因为根据最优策略,它们指的是返回的解决方案使效用最大化的那个动作

我一直在想这个问题,但从来没有得到合理的答案:

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

最佳,如“生成最佳路径”,而不是“可能的最快算法”。在状态空间中搜索目标路径时,DFS可能会生成比BFS更长的路径。请注意,BFS仅在动作未加权时才是最佳的;如果不同的动作有不同的权重,你需要类似于*

的东西,这是因为根据最优策略,它们指的是返回的解决方案使效用最大化的那个动作

关于这一点,没有任何东西可以保证DFS找到的第一个解决方案是最优的。而且BFS在一般意义上不是最优的,所以你的陈述是错误的

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


然而,DFS是最优的当搜索树是有限的,所有的行动成本都是相同的,所有的解决方案都有相同的长度。不管这听起来有多有限,满足这些条件的问题有一类很重要:CSPs(约束满足问题)。也许你想到的所有例子都会落在这个(相当普遍)类别。

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

您可以参考下面的链接,它考虑树的eg,并使用这两种方法解决它。

谢谢你的精彩回答。这个场景如何:目标位于树的最左边分支中。在这种情况下,哪一个是最优的?@HamedMinaee:如果你知道目标在树的最左边,你根本不需要搜索算法。每次只需执行列表中的第一个操作。这不是一种特别常见的情况,因此针对这种情况进行优化是没有用的。您需要一种特定的启发式方法来使用*。如果你找不到,那么统一成本搜索(一种改进的BFS)可能会有所帮助。@StefanoSanfilippo:嗯,你通常至少可以得到一些启发性的东西。如果您已经编写了一个*并且无法提出一个启发式方法,那么“我们到了吗?”函数将为您的UCS带来一些开销。在时间复杂度(执行性能)或空间复杂度(内存使用)方面是最优的?或者在输出的实际质量中,当很难计算出最佳可能的解决方案时(例如在贪婪算法的情况下)?@barakmanos通常,在人工智能的上下文中,最优性指的是解决方案,而不是策略。我想这就是OP的意思。虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。