7. 巡回セールスマン問題 巡回セールスマン問題とは? すべての都市を一度ずつ訪問して 出発点に戻ってくるときに、 移動距離が最短になる経路を求める問題 定義 グラフ G (V , E ), 枝e Eの距離d eが与えられたとき すべての節点をちょう ど1回ずつ経由する順 回路で、 その枝上の距離の総和が最小となるものを求 めよ 順列を用いた定義 n n行列D [d ij ]が与えられたとき、 V {1,2・・ , , n}から V上への1対1写像(順 n 1 d i 1 ( i ), ( i 1) 列) で d ( n ), (1) を最小にするものを求めよ すべての可能な場合を列挙して、 その中で最良の解を抽出 完全列挙法(力ずく法) 完全列挙法の計算量 ・節点の数 n に対して、 およそ n! に比例 (n-1)! 600000000 500000000 ●出発地点を固定してもよい ●距離が対象 計算量 400000000 300000000 200000000 100000000 13 11 9 7 5 3 1 0 都市数n (n-1)!/2 完全列挙法はn=12まで! n≧13の巡回セールスマン問題を解決するためには? 動的計画法 ある始点sから出発し 、 点の部分集合S ( V )をすべて経由し、 点i ( S )にいたる最短経路を f (i, S )とする . 点iの直前に訪れる点 jは、始点 sから Sのすべての点を通って jにいたる最短路を経由 しているはずである f ( j , S { j}) min[ f (i, S ) d ij ] iS n=4の場合 グラフで表すと・・・ 動的計画法 完全列挙法 3 2 4 3 4 3 2 4 2 3 2 4 4 3 2 4 2 4 1 3 1 1 3 4 4 2 2 3 3 2 1 動的計画法の計算量 40000000 35000000 2 n O(n 2 ) 計算量 30000000 25000000 20000000 15000000 10000000 5000000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 都市数n (n=16 程度まで) 巡回セールスマン問題は 最適解を求めるのが非常に困難 → NP-困難問題 ★実際の問題のほとんどはNPー困難 ☆数%程度の誤差を出すプログラムなら 開発可能
© Copyright 2024 ExpyDoc