続・離散数学から見たおむすび

続・離散数学から見たおむすび
先に【離散数学から見たおむすび】の
コラムをご覧ください!
・最短路アルゴリズムのエース(ダイクストラ
法)で解いてみると?
ダイクストラ法とは?
始点から、残りのすべての節点までの最短路と
その長さを、同時に求めてくれます。基本的な考
え方は、始点に近い節点から順に距離を確定して
いくものです。
まず、入口に隣接している3節点、昆布・高菜・
鮭について、入口から(他の節点を経由せずに)
直接くる場合の距離を、仮の距離として、
dist’(鮭)=6
dist’(昆布)=5
dist’(高菜)=12
とします。これは、その枝の長さそのものなので、
dist’(鮭)=6
dist’(昆布)=5
dist’(高菜)=12
これは、あくまで「他の節点を経由せずに入口
から直接来る路の距離」ですので、最短路である
保証はありません。しかし、そのまま最短路に
なっているものが1つ存在します。それは、3つの
うち最小の路をもつ
dist’(昆布)=5
です。理由は、もしそれが最短で無いとしたら、
もっと短い路があるはずだからです。
この時点でdist’(昆布)=5で、その最短路は
<入口、昆布>が確定
昆布の距離が確定したので、昆布経由でたど
り着く路の距離も考えることができます。つま
り、昆布に隣接している節点、高菜、タラコ、
ツナについて上記の路の計算をし、仮の距離と
すると、
dist’(高菜)=11
(すでに12という値が入っていたが、小さい方
を選ぶ)
dist’(タラコ)=12
dist’(ツナ)=20
仮の最短路長は、
dist’(高菜)=11
dist’(タラコ)=12
dist’(ツナ)=20
dist’(鮭)=6
が得られます。先程と同様に考え、このうちの
一つは、最短路長になります。
一番短いdist’(鮭)=6で、その最短路は
<入口、鮭>が確定
図2:入口と鮭までの距離が確定
ここまでの結果を図示すると図2のようになります。
{5}のように中括弧で括ってあるものは、確定、
(11)のように小括弧で括ってあるものは、現在の距
離を表しています。
ここまでこればお分かりでしょうか。つまり、
入口から出口までの最短路は
<入口、鮭、高菜、天むす、明太子、出口>
です。また、長さは18ということになります。
図3:すべての節点の距離が確定
図3の太線で表された枝からなるグラフの形を
木(tree)と言います。この木は入口からすべて
の節点への最短路を同時に表しています。ダイ
クストラ法は、一つの始点(入口)から残りの
すべての節点までの最短路を同時に表す最短路
木を求めることができます。
ネットワークでモデル化される問題には重要
なものが多いです。今回は、その代表として、
鉄道などの経路システムやカーナビに使われて
いる、とても身近な問題を紹介しました。
本記事の担当:Nagare Arisa(奈良女子大学)