最短経路問題                       戻る

最短経路問題図   番号1を出発して、矢印の向きに従って、番号
 12へ到達する方法について考える。
 
  順列・組合せの理論から簡単に分かるように、
 逆戻りしないという条件で、その道順の数は、全
 部で324通りある。
 
  実際に、3×6×6×3=324 である。

  しかし、この問題設定は、あまり現実的ではない。
 通常、移動する経路によって、移動に要する時間
 は異なるはずだからである。
 
 このような問題設定において、番号1を出発して、
矢印の向きに従って、番号12へ到達する道順のう
ち所要時間が最短の経路を求める手順を考えたい。

 今、下図のように各経路毎に所要時間が決まっているものとする。

最短経路問題図(所要時間)  まず、番号mから番号12に移動する最短時間を、
h(m)で表す。明らかに、次が成り立つ。

    h(m)=min(f(m,n)+h(n))

  但し、f(m,n)は番号mから番号nに移動するの
 に要する時間であり、minは、番号mから移動可
 能な番号 n を動かしたときの最小値を考えるもの
 とする。

  求めたい値は、h(1)であるが、ゴールから逆算、
 すなわち、h(12)から順次求めていくことにより、
 問題は解決される。以下にその計算を示す。

h(12)=0

h(11)=min(f(11,12)+h(12)、f(11,10)+h(10))=min(2、3+h(10))

h(10)=min(f(10,9)+h(9)、f(10,12)+h(12)、f(10,11)+h(11)
   =min(1+h(9)、3、5、6+h(10))=min(1+h(9)、3)

h(9)=min(f(9,12)+h(12)、f(9,10)+h(10))=min(1、1+h(10))=1
   よって、h(10)=2、h(11)=2

h(8)=min(f(8,11)+h(11)、f(8,7)+h(7))=min(5、2+h(7))

h(7)=min(f(7,6)+h(6)、f(7,10)+h(10)、f(7,11)+h(11)、f(7,8)+h(8))
   =min(1+h(6)、4、3、7、4+h(7))=min(1+h(6)、3)

h(6)=min(f(6,5)+h(5)、f(6,9)+h(9)、f(6,10)+h(10)、f(6,7)+h(7)
   =min(3+h(5)、7、7、2+h(6)、4)=min(3+h(5)、4)

h(5)=min(f(5,9)+h(9)、f(5,6)+h(6))=min(5、6+h(5)、7)=5
   よって、h(6)=4、h(7)=3、h(8)=5

h(4)=min(f(4,3)+h(3)、f(4,7)+h(7)、f(4,8)+h(8))
  =min(1+h(3)、8、9)=min(1+h(3)、8)

h(3)=min(f(3,2)+h(2)、f(3,6)+h(6)、f(3,7)+h(7)、f(3,4)+h(4))
   =min(2+h(2)、9、9、2+h(3)、9)=min(2+h(2)、9)

h(2)=min(f(2,5)+h(5)、f(2,6)+h(6)、f(2,3)+h(3))=min(8、6、4+h(2)、11)=6
   よって、h(3)=8、h(4)=8

h(1)=min(f(1,2)+h(2)、f(1,3)+h(3)、f(1,4)+h(4))=min(11、12、12)=11

 以上から、所要時間が最短な道順は次の通りである。

         番号1⇒番号2⇒番号6⇒番号7⇒番号11⇒番号12

 例題程度だと、目算で最短経路を見つけることもできる。しかし、上記計算の優れている所
は、あらゆるダイヤグラムに対して、有効な一般的方法であるということである。多少計算は
長いが、その実、計算は全く機械的であり、易しい。

(参考文献:木下栄蔵 著 好奇心の数学(電気書院))