使用良好的状态空间和搜索树解决汉诺塔问题

我希望通过使用良好的“状态空间”来解决“汉诺塔”问题。 使用合适的状态空间是某些人工智能技术建议的方法。 拥有良好的状态空间后,我希望能够构建一个搜索树,然后使用一些策略,例如“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 的状态空间,这不算太大。

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

  1. 在每个塔中,砖块的大小
    会从下到上递减,

  2. 没有砖块会出现在两个不同的
    塔中。

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注