卒業論文 最短経路を求める動的計画法 の解法の研究 2003 年度 システム制御工学科 00D5121 丸山 幸二 共同研究者 指導教授 西原 礼介 北森 俊行 教授 A study of the solution method of the Dynamic Programming to search for the shortest route Koji Maruyama Department of Systems and Control Engineering, Faculty of Engineering, Hosei University Abstract This paper proposes the solution method of the Dynamic Programing to search for the shortest route. The Dynamic Programming is an effective means to solve the shortest route problem. But the problem which the dynamic programming can not give a solution immediately can be considered. So, in order to solve such a problem, one proposes the method of returning at a turning point and another proposes the method of transforming a network. Key Words: • Dynamic Programming • transforming a network ii 目次 目次 1 はじめに 1 2 多段決定過程である最短経路問題 2 2.1 多段決定過程である経路について . . . . . . . . . . . . . . . . . . . . . 2 2.2 多段決定過程である経路問題の例 . . . . . . . . . . . . . . . . . . . . . 4 3 4 多段決定過程でない最短経路問題 7 3.1 多段決定過程でない経路について . . . . . . . . . . . . . . . . . . . . . 7 3.2 逆戻りを許す方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 逆戻りの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 多段決定過程への変形 14 4.1 回路網を変換する方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 回路網変換の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5 まとめ 31 6 最後に 32 1 はじめに 1 1 はじめに 単純化された軌道問題である最短経路を求める方法として動的計画法が用いられる. 動的計画法は最短経路問題を解く有効な手段であるが,動的計画法が直ちには解を与 えてくれない問題 (多段決定過程でない問題) がいくつか考えられる.その共通点とし て,常に一定の方向に計算を進めていくことができる多段決定過程に対して, S字のよ うに戻っていく経路が最短経路となるので正しい解を求めることができない. このような問題を解く手段として,一つは分岐点で逆戻りを許し,動的計画法を反 復に適用する方法を提案する.もう一つは、動的計画法を一度適用するだけで解ける ように回路網を多段決定過程である回路網に等価変換することで最短経路を求める方 法を提案する. まず簡単な回路網での多段決定過程である最短経路問題を説明し,その上で多段決 定過程でない問題について考えていきたい. 2 多段決定過程である最短経路問題 2 多段決定過程である最短経路問題 2 2.1 多段決定過程である経路について Fig.1 のような回路網において,動的計画法を一度適用して求まる多段決定過程であ る最短経路は,A (始点) からB (終点) まで右または下へ常に一定の方向に移動する経 路になっている. 次に,多段決定過程である最短経路を定式化したのを示す. Aを原点,Bを点 (3,3) とすると,点 (x, y) からBまでの距離 f (x, y) は,次の漸化式 を得る. d(x, y; x + 1, y) + f (x + 1, y) f (x, y) = min d(x, y; x, y + 1) + f (x, y + 1) (2.1) ここで,d(x, y; x + 1, y) は点 (x, y) と点 (x + 1, y) との間の距離を表す数となる. 2 多段決定過程である最短経路問題 3 A 0,0 5 1,0 1 2,0 7 3,0 3 2 5 3 0,1 1,1 2,1 3,1 5 4 0,2 1 3 3 0,3 4 1,2 1 4 2,2 3 2 1,3 2 1 5 2 6 2,3 Fig. 1: 回路網 3,2 4 3 3,3 B 2 多段決定過程である最短経路問題 2.2 4 多段決定過程である経路問題の例 Fig.1 の回路網の最短経路を,(2.1) 式を使って実際に求めてみる. まず f (3, 2) = 4 (2.2) f (2, 3) = 3 (2.3) とする. これらの値を用いて次に,f (3, 1),f (2, 2),f (1, 3) を求める. f (3, 1) = 1 + 4 = 5 5+4 f (2, 2) = min =5 2+3 f (1, 3) = 6 + 3 = 9 (2.4) (2.5) (2.6) ここで,点 (2,2) からの最適選択は点 (2,3) へ進む経路となる. 同様にして計算を行うと, f (3, 0) = 3 + 5 = 8 2+5 f (2, 1) = min =6 1+5 4+5 f (1, 2) = min =9 3+9 f (0, 3) = 2 + 9 = 11 (2.7) (2.8) (2.9) (2.10) 2 多段決定過程である最短経路問題 5 7+8 f (2, 0) = min 5+6 4+6 f (1, 1) = min 1+9 3+9 f (0, 2) = min 3 + 11 1 + 11 f (1, 0) = min 2 + 10 5 + 10 f (0, 1) = min 4 + 12 = 11 (2.11) = 10 (2.12) = 12 (2.13) = 12 (2.14) = 15 (2.15) 5 + 12 f (0, 0) = min = 17 3 + 15 (2.16) このように計算し,解は最適方向を示す矢印とともに,Fig.2 に示した値で要約さ れる. 2 多段決定過程である最短経路問題 A 17 0,0 - 12 1,0 6 - ? 15 0,1 12 0,2 11 0,3 - - - 9 1,2 1,3 3,0 ? 6 - 9 - 8 ? 10 1,1 ? 11 2,0 - 5 2,1 3,1 ? ? 5 2,2 3,2 ? ? 2,3 3 - 4 3,3 B Fig. 2: 動的計画法で求めた経路 3 多段決定過程でない最短経路問題 7 多段決定過程でない最短経路問題 3 3.1 多段決定過程でない経路について Fig.3 のような回路網において,常に右または下に移動するときの最短経路は Fig.4 のようになり,動的計画法を一度適用するだけでは距離が 1 である経路を移動する正 確な最短経路が導くことができない. Fig.3 の回路網で最短経路を通るためには,点 (2,3) から (2,2),(2,1),(2,0) へと,下 から上へ進み,上への移動を許さなければならない.この上または左への移動を逆戻 りと呼ぶことにする. 3 多段決定過程でない最短経路問題 8 A 0,0 1 10 0,1 10 10 0,2 10 2,0 10 3,0 1 1 1,1 2,1 3,1 10 1,2 1,3 10 1 10 2,2 1 10 1 1 1 10 0,3 1,0 1 10 1 1 2,3 Fig. 3: 回路網 3,2 1 10 3,3 B 3 多段決定過程でない最短経路問題 A 15 0,0 - 14 1,0 9 4 - 2,0 3 - ? 23 0,1 22 0,2 21 0,3 - - - ? 13 1,1 12 2,1 ? ? 12 1,2 11 2,2 ? ? 11 1,3 3,0 - 10 2,3 2 - 3,1 ? - 1 3,2 ? - 3,3 B Fig. 4: 右・下方向の移動のみで求めた経路 3 多段決定過程でない最短経路問題 3.2 10 逆戻りを許す方法 逆戻りの計算には,動的計画法を二度適用する.一度目は右か下かに移動するときの最 短経路問題と同様の計算を行う.二度目は逆戻りが起こる可能性のある x ≠ 0 and y ≠ 0 の点で行う. 次に逆もどりの漸化式を示す. d(x, y; x + 1, y) + f (x + 1, y) min d(x, y; x, y + 1) + f (x, y + 1) f (x, y) = min d(x, y; x − 1, y) + f (x − 1, y) d(x, y; x, y − 1) + f (x, y − 1) (3.1) (x ≠ 0 and y ≠ 0) 逆戻りは,四方向の最小を求めることになるが,既に一度目の動的計画法で (2.1) 式 を行っているので,(2.1) 式において経路が一方向に絞り込めた場合には,消去された 経路に関しては (3.1) 式での計算は省略できる. 3 多段決定過程でない最短経路問題 3.3 11 逆戻りの例 Fig.3 の回路網の最短経路を,(3.1) 式を使って実際に求めてみる.一度目の動的計 画法では,Fig.4 のようになり,この後に二度目の動的計画法を適用し (3.1) 式を使っ て逆戻りの計算を行う. 逆戻りは点 (1,1) から始まり, 13 f (1, 1) = min 10 + 23 1 + 14 = 13 (3.2) 12 f (2, 1) = min 10 + 13 = 5 1+4 12 f (1, 2) = min 10 + 22 = 12 1 + 13 となる.上記の式では点 (2,1) が逆戻りとなり,経路が修正される. (3.3) (3.4) 3 多段決定過程でない最短経路問題 12 同様に計算すると, f (3, 1) = min 2 10 + 5 =2 11 =6 f (2, 2) = min 10 + 12 1+5 11 f (1, 3) = min = 11 1 + 12 f (3, 2) = min f (2, 3) = min (3.5) (3.6) (3.7) 1 10 + 6 10 =1 (3.8) =7 (3.9) 1+6 となり、点 (2,2) と点 (2,3) が逆戻りとなる. ここで,f (2, 3) は f (1, 3) からAまでの点に影響を与えているので,それらの点も修正 を行う.最終的に,解は最適方向を示す矢印とともに,Fig.5 に示した値で要約される. 3 多段決定過程でない最短経路問題 A 12 0,0 - 13 11 1,0 4 2,0 ? 20 0,1 19 0,2 18 0,3 - 10 1,1 ? - - 6 9 3 - 3,0 ? 5 2 2,1 3,1 6 ? 6 1,2 2,2 3,2 ? 6 ? 1,3 8 - 7 2,3 1 3,3 B Fig. 5: 逆戻りで求めた経路 4 多段決定過程への変形 14 多段決定過程への変形 4 4.1 回路網を変換する方法 次に,動的計画法を一度適用するだけで解けるようにするために,逆戻りの起こり うる上または左へ進む経路を,右または下へ進む経路に回路網を多段決定過程に変換 することを提案する. まず下図のように,Aを原点 (0,0),Bを点 (n, n) としたとき,分岐点で次の (a)〜 (d) の展開方式を定める. A 0,0 1,0 n,0 0,1 1,1 n,1 0,n 1,n n,n B 4 多段決定過程への変形 15 展開方式 (a) は,点 (x, y) における進行方向が右または下のときで,x = 0 または y = 0 の分岐点の場合である. 展開前 x,y x+1,y x,y+1 展開後 x,y x+1,y x,y+1 Fig. 6: 展開方式 (a) 4 多段決定過程への変形 16 展開方式 (b) は,点 (x, y) における進行方向が右または上のときで,y = n かつ x ≠ 0 の分岐点の場合である. 展開前 x,y-1 x,y x+1,y 展開後 x,y x,y-1 x+1,y Fig. 7: 展開方式 (b) 4 多段決定過程への変形 17 展開方式 (c) は,点 (x, y) における進行方向が下または左のときで,x = n かつ y ≠ 0 の分岐点の場合である. 展開前 x,y x-1,y x,y+1 展開後 x,y x,y+1 x-1,y Fig. 8: 展開方式 (c) 4 多段決定過程への変形 18 展開方式 (d) は,点 (x, y) における進行方向が四方向あるときで,(a),(b),(c) 以外 の分岐点の場合である. 展開前 x,y-1 x-1,y x,y x+1,y x,y+1 展開後 x,y x,y x,y+1 x,y x,y x-1,y x+1,y x,y-1 Fig. 9: 展開方式 (d) 4 多段決定過程への変形 4.2 19 回路網変換の例 これから,Fig.10 の回路網を四つの展開方式を使って多段決定過程である回路網に 変換してみる. A 0,0 1,0 2,0 0,1 1,1 2,1 0,2 1,2 2,2 B Fig. 10: 回路網 4 多段決定過程への変形 20 まず,点 (1,0) と点 (0,1) を展開方式 (a) を使って変形する. 0,0 1,0 0,1 0,1 0,2 1,0 1,1 1,1 2,0 4 多段決定過程への変形 21 次に,回路網の展開を内側から進めていくので,点 (1,1) を展開方式 (d) を使って変 形する. 0,0 1,0 0,1 1,0 2,0 1,1 1,1 1,2 1,1 1,1 0,1 2,1 0,1 1,1 1,1 0,2 1,1 1,1 2,1 1,0 1,2 4 多段決定過程への変形 22 内側から,点 (2,1),点 (1,2),点 (1,0),点 (0,1) を展開方式 (a),(b),(c) を使って変 形し,その先の分岐がない点も続けて変形する. 0,0 1,0 0,1 1,0 2,0 1,1 1,1 1,2 2,2 1,1 1,1 0,1 0,2 2,1 2,2 0,1 1,1 1,1 0,2 1,1 1,1 2,1 1,0 2,2 2,0 2,1 2,2 1,2 2,2 1,2 2,2 4 多段決定過程への変形 23 点 (2,0),点 (0,2) を展開方式 (a) を使って変形し,さらに点 (2,1) には展開方式 (c) を 使って,点 (1,2) には展開方式 (b) を使って変形する. 0,0 1,0 0,1 1,0 2,0 1,1 1,1 1,2 2,2 1,1 1,1 0,1 0,2 2,1 2,2 0,1 1,1 1,1 0,2 1,1 1,1 2,1 1,0 2,2 2,0 2,1 2,2 0,2 1,2 2,2 1,1 1,2 2,2 2,0 2,1 1,2 2,2 1,1 2,2 4 多段決定過程への変形 24 先ほどと同様に,点 (1,1) を変形後に点 (2,1),点 (1,2),点 (1,0),点 (0,1) を変形す る.これで,展開方式を使っての変形は終わる. 0,0 1,0 0,1 1,0 2,0 1,1 1,1 1,2 2,2 1,1 1,1 0,1 0,2 2,1 2,2 0,1 1,1 1,1 0,2 1,1 1,1 2,1 1,0 2,2 2,0 1,2 2,1 2,2 0,2 1,2 1,1 1,1 2,2 1,1 1,1 2,1 1,0 2,2 2,0 2,1 2,2 2,2 2,0 1,2 2,2 2,1 2,2 1,1 1,1 1,2 2,2 1,1 1,1 0,1 0,2 1,2 2,2 4 多段決定過程への変形 25 次に,重複している部分の点 (1,1) を合成する. 0,0 1,0 0,1 1,0 2,0 1,1 2,1 2,2 1,1 1,1 1,2 2,2 1,1 1,1 0,1 0,2 2,1 0,1 1,1 1,1 1,1 0,2 1,2 1,1 1,1 2,2 2,1 1,0 2,2 2,0 2,1 2,2 1,2 2,2 1,2 2,2 4 多段決定過程への変形 26 さらに,重複している部分を合成する. 0,0 1,0 0,1 1,0 2,0 1,1 2,1 2,2 0,1 1,1 1,1 1,1 1,2 2,2 0,2 1,2 1,1 1,1 0,1 0,2 2,2 2,1 1,0 2,2 2,0 2,1 2,2 1,2 2,2 4 多段決定過程への変形 27 最後に,省略できる部分を修正し,点 (2,2) を線でつなぐと下図のようになる. 0,0 1,0 2,1 2,2 1,1 1,1 1,2 2,2 1,2 1,1 1,1 0,1 0,2 2,2 2,1 1,0 2,2 2,0 0,1 0,2 2,0 1,2 2,2 2,1 2,2 2,2 4 多段決定過程への変形 28 回路網の変換は,(a)〜(d) の展開方式を機械的に組合わせて新たな回路網をつくり, 重複する部分を合成することですっきりとした回路網になる.変換後の回路網は多段 決定過程であるので動的計画法を一度適用するだけで正しい最短経路が導けるように なる. 実際に,次の Fig.11 の回路網で検証してみると,解は最適方向を示す矢印とともに Fig.12 に示した値になり,Fig.13 の変換後の回路網でも正しい解が求められているこ とが分かる. 4 多段決定過程への変形 29 A 0,0 10 1,0 1 2,0 1 1 1 0,1 1,1 2,1 10 1 0,2 10 1 1 1 1,2 10 2,2 B Fig. 11: 回路網 A 8 3 0,0 1,0 ? 6 7 2 - 2,0 ? 4 1 0,1 1,1 2,1 ? 6 ? 0,2 6 - 5 1,2 2,2 B Fig. 12: 最短経路 4 多段決定過程への変形 A 0,0 8 30 1,0 3 - 2,0 ? 2,1 ? 0,1 ? 0,2 7 6 - 1,1 1,2 2,2 5 - 0 ? 1,1 2,1 ? 2,2 4 - 4 - 1 0 1,1 ? 1,1 ? 1,0 ? 2,0 ? 2,1 ? 2,2 2 1 - 4 4 2,2 1,2 0,1 0 10 - 12 - 2,2 0,2 0 11 - 1,2 10 - 2,2 0 3 2 1 0 2,2 B Fig. 13: 変換後の最短経路 5 まとめ 5 31 まとめ 動的計画法では直ちに最短経路を求めることができない回路網において,分岐点で 逆戻りを許し動的計画法を反復に適用する方法と,回路網を多段決定過程の回路網に 等価変換することで最短経路を求める方法を行った.どちらの方法とも,簡単な回路 網において正しい最短経路を導くことができた.逆戻りは x ≠ 0 and y ≠ 0 である点 で,動的計画法を反復に適用して行う.計算は最大4方向で考えるので多段決定過程 よりも計算量は多くなる.また,多段決定過程の定式化と同様に定式化を行った.回 路網の変換では,分岐点で展開方式を定め,それを組合わせることにより機械的に多 段決定過程の回路網に変換が行える.大きな回路網になるが,動的計画法を一度適用 するだけで最短経路が求められるようになる. 6 最後に 6 32 最後に 本研究を進めるにあたり終始ご指導を賜りました法政大学工学部システム制御工学 科 北森俊行教授,並びに同大学北森研究室の大学院生,学部生の方々に謹んで感謝 の意を表し,厚くお礼を申し上げます. 33 参考文献 参考文献 [1] Richard Bellman & Stuart Dreyfus : Applied Dynamic Programming, Princeton University Press, 1962. ミング』, 小田中敏男 有水彊 訳: 『応用ダイナミックプログラ JUSE出版社,1962.
© Copyright 2026 Paperzz