识别状态空间树中的重复状态

时间:2017-10-08 11:46:04

标签: artificial-intelligence

我一直在阅读这个问题以供参考: Graph Search vs Tree Search

其中一位评论者发表了此评论,这正是我所面临的情况。

"更正式的说法是单一状态'可以通过树搜索多次访问,而不是节点。由于搜索树中的每个节点都对应于状态空间图中的单个路径,并且最多只能通过树搜索访问一次。"

我的搜索算法生成的节点与搜索树中已有的节点相同。检测这个新生成的状态已经存在的最佳方法是什么,所以我可以避免进入无限循环? 我不能使用封闭列表,需要对DFS进行循环检测。做这个的最好方式是什么?这是来自人工智能课程中的作业问题,我正在为练习而做。这不是为了提交。出于好奇,我正在建立代理商。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

我想在完整性问题上回答我自己的问题。我最终在每个节点中设置了一个访问位,我触及了从根向下的路径,并且如果我曾经访问过一个设置了访问标志的节点,这将是一个循环,这是正常的方式。

我基本上有一堆称为“顶点”和“边缘”的对象,这些对象位于这些顶点之间,如果我遍历另一端的边是一个顶点,我设置了访问标记,我知道代码中有一个循环。正如在另一个链接中所提到的,每个节点基本上都是一个具有不同状态对象的新对象,但状态对象基本上代表了代理之前的位置,我们希望避免生成这个重复节点。