无信息搜索:先运行广度优先搜索,然后对边界上的每个节点进行迭代加深搜索

我正在尝试将广度优先搜索和迭代加深搜索结合起来。这种方法在人工智能书籍《AI – A Modern Approach》的第3章(第90页)中有所提及。基本思路是从初始状态开始,运行广度优先搜索,直到达到某个常数内存限制mB,然后对边界上的每个节点进行迭代加深搜索。

这种搜索算法是合理的吗?是完整的吗?是最优的吗?


回答:

广度优先搜索本身是合理的、完整的和最优的。因此,对于任何在达到内存限制之前就能找到解决方案的问题,都不会有问题。我们只需要考虑在找到解决方案之前达到内存限制的情况,例如,你将开始对边界上的节点运行IDS的情况:

合理吗?

是的,IDS永远不会返回不正确的结果。

完整吗?

这取决于你如何实现“对边界上的每个节点进行IDS”。

如果你首先对边界上的第一个节点进行完整的IDS,然后对第二个节点进行完整的IDS,依此类推,它将不会是完整的。考虑这样一种情况:在你边界上的第一个节点下有一个无限大的搜索空间,而这个空间不包含解决方案。如果你试图首先对该节点运行“完整”的IDS,它将永远不会终止。

但是,如果你以不同的方式在边界上的节点之间分配你的IDS进程,它可以是完整的。例如,如果你首先对边界上的所有节点进行深度为1的DFS,然后对边界上的所有节点进行深度为2的DFS,依此类推,该算法将是完整的。

最优吗?

这里的考虑与完整性相同。如果你完成对边界上第一个节点的完整IDS,然后再转向第二个节点,你可能已经在边界上的第一个节点下找到了一个次优解,因此该算法将是次优的。

如果你完成对边界上所有节点的深度限制为1的DFS进程,然后再转向任何节点的深度限制为2的DFS进程,并完成所有这些,然后再转向深度限制为3的DFS,依此类推,该算法将是最优的。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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