シェルスクリプトマガジン

中小企業手作りIT化奮戦記(Vol.91掲載)

著者:佐藤 楓真

今回は、「焼きなまし法」と呼ばれる手法で、すべての都市を1回訪問して出発地点に帰るまでの最短経路を求める「巡回セールスマン問題」を近似的に解いてみます。焼きなまし法のベースとなる「山登り法」についても解説します。使用するプログラミング言語は、C++です。

シェルスクリプトマガジン Vol.91は以下のリンク先でご購入できます。

図3 図1の巡回セールスマン問題を山登り法で解くC++プログラムの例

図4 都市数「5000」のテスト用データを作成するC++プログラム

図5 テスト用データに基づく巡回セールスマン問題を山登り法で解くC++プログラムの例

図7 テスト用データに基づく巡回セールスマン問題を焼きなまし法で解くC++プログラムの例