問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
この問題集では、巡回セールスマン問題を扱います。
巡回セールスマン問題とは、都市の集合と各都市間の距離が与えられ、全都市をちょうど1回ずつ訪れたのち出発した都市に戻ってくるような経路 (巡回路) のうち最も短いものを求める問題です。
英語では Traveling Salesman Problem と呼ばれており、この頭文字を取ってTSPと表記することもあります。
TSPはNP困難という複雑性クラスに属しており、効率よく(= 問題サイズの多項式時間で)解くことがほとんどできない問題だろうとされています。
この問題集では、巡回セールスマン問題に対する厳密解法、近似解法、発見的解法(ヒューリスティクス)を学んでいきます。
この問題集では、各都市は二次元平面上の点とします。都市間の距離にはユークリッド距離を用いることにします。点 (x_1, y_1) と点 (x_2, y_2) のユークリッド距離は、√((x_1-x_2)^2 + (y_1-y_2)^2)
です。
まずは手始めに、2 点間のユークリッド距離を計算してみましょう。
x_1 y_1
x_2 y_2
都市 (x_1, y_1) と都市 (x_2, y_2) のユークリッド距離を出力してください。絶対誤差が 10^-6 以下なら正解と判定されます。
すべてのテストケースにおいて、以下の条件をみたします。
・ 入力はすべて整数
・ -1,000 ≦ x_i, y_i ≦ 1,000 (1 ≦ i ≦ 2)
0 0
5 6
7.810249675907