Java 如何实现贪婪搜索算法
我有一个项目是在我的人工智能课程。我需要为我的程序实现贪婪搜索算法。我的项目描述如下: 给出了两个名为“tree.txt”和“heuristic.txt”的文本文件。“tree.txt”将定义搜索树,其中每行将包含父子关系以及它们之间的路径开销。每个数据将用空格分隔 e、 g A B 5 A C 3 B D 6 第一行中的第一个字符将是开始节点(此处为A),目标节点将是“G” “heuristic.txt”将定义启发式h(n)值。每行将包含每个节点的启发式值。每个数据将用空格分隔 e、 g A 20 B 15 C 18 输出: 程序应给出解决方案路径以及从开始节点到目标的路径成本Java 如何实现贪婪搜索算法,java,c#,algorithm,search,greedy,Java,C#,Algorithm,Search,Greedy,我有一个项目是在我的人工智能课程。我需要为我的程序实现贪婪搜索算法。我的项目描述如下: 给出了两个名为“tree.txt”和“heuristic.txt”的文本文件。“tree.txt”将定义搜索树,其中每行将包含父子关系以及它们之间的路径开销。每个数据将用空格分隔 e、 g A B 5 A C 3 B D 6 第一行中的第一个字符将是开始节点(此处为A),目标节点将是“G” “heuristic.txt”将定义启发式h(n)值。每行将包含每个节点的启发式值。每个数据将用空格分隔 e、 g A
现在我的问题是,我在理论上熟悉贪婪搜索,但从未在编码中实际实现它。我真的不知道从哪里开始。我们可以自由地用任何语言开发我们的程序。大多数情况下,我掌握Java和C#方面的技能。如果有人能给我一些想法,或帮助我与任何类似的例子或教程。任何形式的帮助都将不胜感激。很抱歉写了这么多。提前感谢:)我建议使用python实现此解决方案。 要在程序中实现图形,请使用简单的python字典。代码如下:
class Tree:
def _init_(self,dict,heuristic):
self.tree=tree
self.heuristic=heuristic
def getHeuristicValue(self,state)
value=self.heuristic.get(state)
return value
构造函数调用类似于:
g = Graph({'A':{'B':5,'C':3},'B':{'D':6}},{'A':20,'B':15,'C':18})
python函数pass接受一个状态作为参数,并返回该状态的启发式值
要了解python的字典类,我建议您阅读
要使用python实现搜索算法,您应该实现以下简单的伪代码:
function Tree-Search(initialNode,goalNode) returns a solution,or failure
frontier.push(initialNode) with the value of the function heuristic(initialNode.state)+the path cost to reaxh this node
while(frontier)
node<-frontier.pop()
if node.state==GoalNode.state
return node
expand node, adding the resulting nodes to the frontier
return None
我建议你寻找你的问题
您只需从节点返回即可获得解决方案。当节点时,从算法输出返回的状态
。父项
不为空,这是您的解决方案
我希望这对您的项目有用。我以前从未用python编写过代码,不过现在我将有一些想法。我真的很感谢你的帮助@sdrabb在第二个链接中,你找到了你所需要的一切,但你必须知道一点python编程祝你好运
def actions(self,state):
'''return a tuple that contain the state child of state '''
return tuple(self.tree.get(state))