depth-first-search - DFS“可以返回任何路径”
问题描述
这是来自加州伯克利大学的AI 练习考试。
考虑上面显示的状态空间图。A 是起始状态,G 是目标状态。每条边的成本都显示在图表上。每条边都可以双向遍历。请注意,启发式 h1 是一致的,但启发式 h2 是不一致的。
对于以下每个图搜索策略(不要回答树搜索),标记它可以返回的列出的路径中的哪一个(如果有)。请注意,对于某些搜索策略,返回的特定路径可能取决于平局行为。
搜索算法是深度优先、广度优先、统一成本、A* 与 h1 和 A* 与 h2。“列出的路径”是 ABDG、ACDG 和 ABCDFG
这是我从图中构建的搜索树(具有各种启发式方法和操作成本): 该解决方案表明 DFS 将返回 ABDG、ACDG 和 ABCDFG,因为“DFS 可以返回任何路径”
我可以理解,如果决胜局是字母表中较早的字母,DFS 将返回 ABCDE G。如果决胜局是字母表中较晚的字母,DFS 将返回 ACD G。但我不明白在什么情况下情况 DFS 将返回 ABDG 或 ABCDF G。
我还认为 DFS 扩展了最深的节点并以这种方式返回解决方案。它可以返回任何路径解决方案是真的吗?如果是这样,怎么做?
解决方案
DFS(深度优先搜索)不评估路径成本。因此,没有决胜局。DFS 仅返回它遇到的第一个成功路径。特定路径完全取决于在每个节点对连续路径进行排序的顺序。因此,该图上的 DFS 可以返回九种可能的解中的任何一种。
例如,假设该图与此顺序相连:
Node edges to ...
A B C
B C D
C D A B
D F B C G E
F G D
G E F
E D G
然后遍历很简单 ABCDFG(每个节点的第一个引用)。其他边缘排序将导致返回其他解决方案。
同样,BFS 可能会导致返回 4 节点解决方案中的任何一个。
这样就清楚了吗?
推荐阅读
- reactjs - 用于 redux-saga 中错误处理的打字稿
- python - 具有自定义键/比较功能的 Pandas groupby max
- flutter - 由于类型,无法生成 toJson 代码
- json - Powershell - 比特桶
- java - java.lang.VerifyError:验证程序被拒绝。拒绝调用,预期 36 个参数寄存器,方法签名有 37 个或更多
- grammar - 语法和语义错误之间的歧义
- leaflet - 使用 laravel mix 出现两次传单标记
- visual-studio-code - 将 git bash 添加到 VSCode 中的默认 shell 列表
- mongodb - 无法在 docker 容器中为 mongodb 日志设置卷
- php - symfony:分页+排序功能