【发布时间】:2011-05-14 07:06:54
【问题描述】:
根据我所做的大部分阅读,双向搜索算法据说在“前向”和“后向”边界首次相交时终止。然而,在人工智能:现代方法的第 3.4.6 节中,Russel 和 Norvig 指出:
双向搜索是通过将目标测试替换为检查来实现的 两次搜索的边界是否相交;如果他们这样做了,那么已经找到了解决方案。 重要的是要认识到找到的第一个解决方案可能不是最优的,即使 两次搜索都是广度优先的;需要进行一些额外的搜索以确保存在 不是跨越鸿沟的捷径。
我已经考虑了这个说法很长一段时间,但我找不到这种行为的例子。谁能提供一个示例图,其中双向 BFS 或 A* 搜索的前向和后向边界之间的第一个交点不是最短路径?
编辑:显然 BFS 不会在加权图中找到最短路径。听起来这段摘录是指无向图上的双向 BFS。或者,我有兴趣在加权图上查看使用双向 A* 的反例。
【问题讨论】:
-
这个答案stackoverflow.com/a/35782623/2966723 详细说明了如何做到这一点(通过算法逐步了解这种行为的示例)。短版:它会做一些额外的工作来跟踪即将到来的候选最短路径。当两者最终相交时,可以确定候选最短路径是最优的,但它可能不是算法相交的路径。
标签: algorithm search graph breadth-first-search bidirectional