私のグラフには、頂点をそれ自体に接続するようなエッジが含まれていません。2 つの頂点の間には 1 つのエッジしかありません。ウィキペディアから、与えられた条件に基づいて最短経路を計算するために使用されるアルゴリズムについて知りました。最も有名なアルゴリズムの 1 つは で、Dijkstra's algorithm
ソース頂点からグラフ内の他のすべての頂点への最短経路を見つけます。
しかし、を使用することDijkstra's algorithm
で、すべての頂点を探索する必要はありませんが、私の目標は、単一のソースから単一の目的地までの最短経路を見つけることです。ここでどの戦略を使用する必要がありますか? そのため、他のすべての頂点を探索する必要はありません。
私のアプローチの 1 つは、を使用することbidirectional bfs
です。つまり、 から 2つ、 から 1 つをbidirectional bfs
適用することを意味します。両方のツリーで初めて同じものを見つけたらすぐに、両方を停止できます。これで、ソースからその子へのパス、子から宛先へのパスが、ソースから宛先への最短パスになります。bfs
source node
destination node
child
bfs
union
しかし、Wikipedia と bidirectional bfs
で説明されているすべてのアプローチのうち、どれが私のグラフに最も適しているでしょうか?