深度优先搜索打开和关闭列表

Sea*_*ray 0 artificial-intelligence list depth-first-search

我现在真的陷入困境,我疯了.

用最简单的术语来说,何时使用深度优先搜索停止打开和关闭列表?

您是否打开和关闭每个节点,直到没有节点为止?

请帮忙,因为我在这里很努力

谢谢

mur*_*din 5

打开列表可帮助您在深度优先和广度优先搜索中正确遍历树.逐步考虑算法.您所在的节点中有许多孩子,并且您将扩展其中一个孩子.扩展后应该有一个机制来回来并继续你的遍历.打开列表为您执行该操作,并告诉您实际上要扩展的下一个节点是什么.并且该算法仅阐明了子列入列表的顺序.

而封闭列表通常可以提高算法的速度.它可以防止算法扩展预访问的节点.也许你到达A之前通过另一个分支扩展的节点.这将让你剪切这个分支并尝试另一条路径.

启发式方法对于摆脱死胡同非常有用.在AI算法中,通常您遇到的问题是它们有许多废弃的分支.通过遍历每个步骤,您可以将路径成本添加到变量,并且当您要将扩展节点添加到打开列表时,考虑它将帮助您永远不会通过它们.否则,您将进入陷阱并且算法挂起.

让我用一个例子来解释一下:考虑游戏15个谜题.您将通过算法解决它,您必须检查所有可能的方法.(实际上你要做一棵树).当您沿着树中可能的方向移动图块以在下一级别向相反方向移动时,对吗?所以你永远不会摆脱这样的死胡同,你的算法会挂起.

这是对开放和封闭列表的解释.您询问算法何时完成.实际上,您将重复展开并添加到打开列表,直到找到目标或打开列表为空.