ダイクストラ法+ヒープキュー
前回記事では、ダイクストラ法 を使って最短経路問題を解きました。
今回は、ヒープキュー を使って処理をより効率的にしていきます。
グラフは前回同様のものを使います。
[グラフ]
ソースコード
ヒープキュー は、格納されているデータの中から 一番小さなもの を効率よく取り出せるキューです。
ダイクストラ法 の処理の中で、一番小さなコストの頂点を探すときに ヒープキュー(heapq) を使います。
(入力データの形式は前回記事と同様です)
[Google Colaboratory]
1 | #---------- 入力例 ---------- |
[実行結果]
解:最小コストは 8
前回同様 頂点Start から 頂点Goal までの最小コストは 8 であることを導き出すことができました。
ヒープキュー を使うことにより、ソースコードがすっきりした感じがします。
また、最小コストの頂点取得の 検索効率があがった ので処理も高速化しているはずです。
(今回のグラフはシンプルすぎて効果を実感できないかもしれませんが・・・)