首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用良好的状态空间和搜索树解决河内塔问题

利用良好的状态空间和搜索树解决河内塔问题
EN

Stack Overflow用户
提问于 2011-06-19 18:36:25
回答 4查看 17.7K关注 0票数 4

我想用一个好的“状态空间”来解决“河内塔”问题。使用适当的状态空间是一些AI技术建议的一种方式。有了一个良好的状态空间,我希望能够构建一个搜索树,然后使用一些策略,如"DFS“(深度优先搜索)来找到解决方案。

我的问题是,我不知道如何开发一个好的状态空间,然后用它来构建一个搜索树。谁能描述一下如何为汉诺塔问题创建一个状态空间?那么告诉我如何为此构建一个搜索树?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-19 18:51:07

我建议使用以下状态空间:

假设您有n块砖和3个塔,用0,1,2表示。用n个三进制数表示当前状态,例如(在案例n=9中):

代码语言:javascript
复制
987654321
001102020 (current state)

这意味着砖块9,8,5,3和1在0:th塔中。第一个塔的砖块7和6,2:nd塔的砖块4和2。

这将为您提供一个大小为3^n的状态空间,该空间并不太大。

(这只是部分答案。但是每个状态字符串都将对应于一个合法的状态。也就是说,

  1. 在每个塔中,砖块的大小会从下到上逐渐减小,
  2. 不会出现在两个不同的塔中。

因此,我认为建议的状态空间是最小的。)

票数 7
EN

Stack Overflow用户

发布于 2011-12-18 11:59:38

我认为最优解(2^n - 1)

状态空间由3^n给出

这是另一个带有树形图的link,您可以使用它来计算状态(我认为这与您关于状态空间的问题有关)

票数 1
EN

Stack Overflow用户

发布于 2011-12-18 21:40:15

2^(n+1)-1不适用于河内塔问题。如果您查看图2的here,那么当将n=3应用于2^(n+1)-1时,会得到2^4 -1或15个状态。但figure 2显示了27个州。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6401872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档