根据我所做的大部分阅读,双向搜索算法被称为在“向前”和“向后”边界第一次相交时终止。但是,在《 人工智能:现代方法》 第3.4.6节中,Russel和Norvig指出:
双向搜索是通过将目标测试替换为检查以查看两个搜索的边界是否相交来实现的;如果这样做,则找到了解决方案。重要的是要意识到, 即使两个搜索都是广度优先的 ,找到的第一个解决方案可能也不是最优的 。 还需要进行一些其他搜索,以确保没有捷径可走。
我已经考虑了很长时间,但是无法找到这种行为的例子。谁能提供一个示例图,其中双向BFS或A *搜索的向前和向后边界之间的第一个交点不是最短路径吗?
编辑: 显然,BFS不会在加权图中找到最短路径。听起来这段摘录是指无向图上的双向BFS。另外,我想看看在加权图上使用双向A *的反例。
我不知道这是否是Russel和Norvig想到的,但是如果对图形进行加权(例如,某些边比其他边长),则 最短 路径可能比在BFS中较早找到的另一步要更多。即使步骤数相同,也可能不会首先找到最佳方法;考虑具有六个节点的图:
(A-> B)=(A-> C)= 0
(B-> D)= 2
(C-> E)= 1
(D-> F)=(E-> F)= 0
从A向前走一步,从F向后走一步之后,前向边界为{B,C},后向边界为{D,E}。现在,搜索器将展开B,然后嘿!路口!(A-> B-> D-> F)=2。但是它仍然应该进一步搜索以发现(A-> C-> E-> F)更好。