对于“人工智能简介”中的作业,我需要解决以下问题:
Let f(n) = c1*g(n) + c2*h(n) be an evaluation function, where c1,c2 be constants.
1. Define c1,c2,h(.),g(.) such that A* with this evaluation function is bfs.
2. Define c1,c2,h(.),g(.) such that A* with this evaluation function is dfs.
对于BFS,我有以下想法:
设g(n)
为从起始节点到当前节点的成本,h(n)
是从当前节点到目标的估算成本。
如果我设置c2 = 0
,它实际上应该是广度优先搜索。
对于DFS,我考虑过设置c2 = 0
和c1 = (-1)
您可以提供给我的任何想法,提示或反馈吗?
答案 0 :(得分:1)
我认为你的答案是预期的答案。但是我认为这个问题有点不对,因为我发现不可能制作BFS和DFS(用我理解的术语)。
问题是DFS和BFS都不关心路径长度。他们只关心节点顺序。
您的BFS解决方案实际上是统一成本搜索(或dijkstra算法),它是对基本BFS的改进。
您的DFS解决方案扩展了最远的节点,而不是实际DFS(带堆栈)的工作方式。
如果某个地方声称电弧成本始终相同,那么答案是正确的。