Java 如何实现贪婪搜索算法

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

我有一个项目是在我的人工智能课程。我需要为我的程序实现贪婪搜索算法。我的项目描述如下: 给出了两个名为“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和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))