ダイクストラのアルゴリズムは、n 個のノードと m 個のエッジ (単一パスの場合) に対して O(m log n) であり、ネットワーク ルーティングに使用するのに十分効率的です。これは、1 回限りの計算に使用するのに十分効率的であることを意味します。
簡単に言うと、ダイクストラのアルゴリズムは次のように機能します。
Take the start node
Assign it a depth of zero
Insert it into a priority queue at its depth key
Repeat:
Pop the node with the lowest depth from the priority queue
Record the node that you came from so you can track the path back
Mark the node as having been visited
If this node is the destination:
Break
For each neighbour:
If the node has not previously been visited:
Calculate depth as depth of current node + distance to neighbour
Insert neighbour into the priority queue at the calculated depth.
Return the destination node and list of the nodes through which it was reached.
一般に信じられていることとは反対に、Dijkstra のアルゴリズムは必ずしもすべてのペアの最短経路の計算ではありませんが、これを行うように適応させることはできます。
道路と交差点のグラフと交差点間の距離を取得する必要があります。このデータがあれば、ダイクストラのアルゴリズムを使用して最短ルートを計算できます。