我试图把广度优先搜索和迭代深化搜索结合起来。在人工智能书“人工智能-现代方法”第3章(pg )中提到了这种方法。90)。该思想从初始状态开始,首先运行广度优先搜索,直到达到一定的内存限制mB,然后对前沿的每个节点进行迭代深化搜索。
这个搜索算法听起来好吗?完事?最优?
发布于 2018-06-11 10:37:15
广度优先搜索本身是健全、完整和最佳的。因此,对于BFS在达到内存限制之前已经找到解决方案的任何问题,都没有问题。在找到解决方案之前,我们只需要考虑在达到内存限制的情况下会发生什么,例如,在前沿节点上开始运行IDS的问题:
声音?
是的,IDS不会以某种方式返回不正确的结果。
完成?
这取决于您如何在前沿的每个节点上实现"IDS“。
如果您首先在边界的第一个节点上执行一个完整的IDS,然后在边界的第二个节点上执行一个完整的IDS,那么它将不是完整的。考虑这样的情况,在边界的第一个节点下有一个无限大小的搜索空间,其中不包含解决方案。如果您试图首先在该节点上运行“完整”IDS,它将永远不会终止。
但是,如果以不同的方式将IDS进程分散到前沿节点上,它就可以完成。例如,如果您首先对边界中的所有节点执行深度为1的DFS,然后对边界中的所有节点执行深度2的DFS,则算法将完成。
最优?
在这里,同样重要的是完整性。如果在进入第二个节点之前为边界中的第一个节点完成一个完整的IDS,您可能已经在边界中的第一个节点下面找到了一个次优解,因此算法将是次优的。
如果您完成边界上所有节点的深度限制为1的DFS进程,然后再转移到DFS进程,对边界上的任何节点的深度限制为2,然后在移动到深度限制为3等之前完成所有这些,则算法将是最优的。
https://stackoverflow.com/questions/50790538
复制相似问题