【发布时间】:2014-11-21 14:46:31
【问题描述】:
我现在真的被困住了,我快疯了。
用最简单的术语来说,您什么时候停止使用深度优先搜索的开放式和封闭式列表?
你会打开和关闭每个节点直到没有节点吗?
请帮忙,因为我在这里很无聊
谢谢
【问题讨论】:
标签: list artificial-intelligence depth-first-search
我现在真的被困住了,我快疯了。
用最简单的术语来说,您什么时候停止使用深度优先搜索的开放式和封闭式列表?
你会打开和关闭每个节点直到没有节点吗?
请帮忙,因为我在这里很无聊
谢谢
【问题讨论】:
标签: list artificial-intelligence depth-first-search
打开列表可帮助您进行深度优先和广度优先搜索,以正确遍历您的树。逐步考虑算法。您在一个有许多孩子的节点中,您将扩展其中一个。扩展后应该有一种机制可以返回并继续您的遍历。打开列表为您执行该操作并告诉您实际上要扩展的下一个节点是什么。并且该算法仅阐明子插入列表的顺序。
而且封闭式列表通常会提高算法的速度。它可以防止算法扩展预先访问的节点。也许您到达之前通过另一个分支扩展的节点A。这将让你切断这个分支并尝试另一条路径。
启发式方法有助于摆脱死胡同。在 AI 算法中,您通常会面临很多浪费分支的问题。通过每个步骤,您可以将路径成本添加到变量中,并且当您想要将扩展节点添加到打开列表时,考虑到它将帮助您永远不会经历它们。否则,您将陷入陷阱并且算法挂起。
让我用一个例子来解释一下: 考虑游戏15-puzzles。您将通过算法解决它,并且必须检查所有可能的方法。 (实际上你要制作一棵树)。当您沿树中可能的方向移动图块时,可以在下一层中将其沿相反方向移动,对吗?所以你永远不会走出这样的死胡同,你的算法就会挂起。
这是对 Open 和 Closed 列表的解释。您询问算法何时完成。实际上,您会重复展开并添加到打开列表,直到找到您的目标或打开列表为空。
【讨论】: