我希望通过使用良好的“状态空间”来解决“汉诺塔”问题。 使用合适的状态空间是某些人工智能技术建议的方法。 拥有良好的状态空间后,我希望能够构建一个搜索树,然后使用一些策略,例如“DFS”(深度优先搜索)来找到解决方案。
编辑:我的问题是,我不知道如何开发一个好的状态空间,然后用它来构建搜索树。 有人可以描述如何为汉诺塔问题创建一个状态空间吗? 然后告诉我如何为此构建搜索树。
回答:
我建议以下状态空间:
假设你有 n 个砖块和 3 个塔,分别用 0,1,2 表示。 用 n 个三进制数表示当前状态,例如(在 n=9 的情况下):
987654321
001102020 (current state)
这意味着砖块 9、8、5、3 和 1 在第 0 个塔中。 砖块 7 和 6 在第 1 个塔中,砖块 4 和 2 在第 2 个塔中。
这将为您提供一个大小为 3^n 的状态空间,这不算太大。
(这只是一个部分答案。但是每个状态字符串都将对应于一个合法状态。也就是说,
-
在每个塔中,砖块的大小
会从下到上递减, -
没有砖块会出现在两个不同的
塔中。
因此,我认为建议的状态空间是最小的。)