2013-04-14 212 views
0

对于“介绍人工智能”的任务,我需要解决以下问题:实现A * - 搜索作为广度优先搜索/深度优先搜索

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 = 0c1 = (-1)

任何意见,建议或反馈,你可以给我吗?

回答

1

我认为你的答案是预期的答案。不过,我认为这个问题有点不对,因为我认为不可能制作BFS和DFS(用我理解的术语)。

问题是DFS和BFS都不关心路径长度。他们只关心节点顺序。

您的BFS解决方案实际上是一个均匀成本搜索(或dijkstra算法),它是对基本BFS的改进。

您的DFS解决方案扩展了最远的节点,而不是实际的DFS(使用堆栈)如何工作。

如果有某个地方说弧成本总是相同的话,答案是正确的。

+0

确定thx的答案,我也发现这个问题有点奇怪,这就是为什么我决定问这里。但是,谢谢你的帮助:) –