0

我必须通过迭代深化算法来解决“高峰时间难题”。我在 stackoverflow 和互联网上阅读了很多主题。我认为我了解迭代加深算法。基本上,您只需深入到树中并尝试找到解决方案。

我想我需要从拼图中创建一个图表或一棵树,但我真的不知道如何。另外,如果我有这棵树,那么我如何判断某件事是有效的移动还是最终状态?

有人回答说,节点应该是可能的移动,而边缘在节点之间,可以通过一次移动到达。我可以想象这一点,但不知何故,我在了解这如何有用或更好但如何解决问题时遇到了麻烦。

请帮助我,我不是要求完整的解决方案或代码示例,我只需要对问题进行一些简单的解释。

4

1 回答 1

1

您需要使用深化算法是有原因的。想象一下,您将每辆车命名为 A、B、C、D……树的根节点是初始板状态。现在,移动汽车 A。沿着树中的一个节点向下移动。将 A 车向后移动。你处于初始状态,但是你做了两次移动到这里,所以你是树下的两个节点。一遍又一遍地重复。你永远不会达到最终状态。

树的根节点是初始棋盘状态。给定该节点,为每个可能的有效移动添加一个子节点。因此,每个子节点将是移动后初始树的样子。现在,对于这些子节点中的每一个,执行相同的操作:创建一个子节点,其中每个节点都从原始子节点移出一个。

最终,您将找到解决难题的方法。发生这种情况时,您打印从根节点到解决方案子节点的移动并退出。此算法可确保您找到移动次数最少的解决方案。

于 2013-03-19T16:29:44.967 回答