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

我正在尝试将广度优先搜索和迭代加深搜索结合起来。这种方法在人工智能书籍《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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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