我的图形不包含连接一个顶点到自身的边。两个顶点之间只有一条边。从维基百科上我了解到了一些算法,这些算法是用于根据给定条件计算最短路径的。其中最著名的算法之一是
但是使用
Dijkstra算法
,它可以找到从源顶点到图中所有其他顶点的最短路径。但是使用
Dijkstra算法
时,我不必要探索所有顶点,我的目标只是找到单个源和单个目的地之间的最短路径。我应该使用哪种策略?这样我就不需要探索所有其他顶点。
我的一个方法是使用双向BFS
。通过双向BFS
,我指的是从源节点
应用两个BFS
,另一个从目标节点
开始。一旦我在两个树中发现任何相同的子节点
,我就可以停止两个BFS
。现在从源到该子节点的路径并集
与从子节点到目标的路径将是我从源到目标的最短路径。
在维基百科和双向BFS描述的所有方法中,哪一种最适合我的图形呢?