機械学習理論研究室 ← AI体験の一覧

どの順で回るか

朝、コンビニの配送トラックが営業所を出ます。全部の店に1回ずつ荷物を置いて、また営業所へ戻ります。どの順で回れば走る距離がいちばん短いでしょうか。店が20軒あると、回り方は6京通りあります。全部を試すことはできません。それでも、ほとんど最短の順番なら一瞬で作れます。

回り方を1つずつ書き出す

四角が営業所、丸が店です

地図の上に営業所が1つと、店がいくつかあります。トラックは営業所を出て、すべての店を1回ずつ通り、営業所に戻ります。回る順番を変えれば走る距離も変わります。いちばん短い順番を見つけるには、すべての順番を書き出して距離を測り、いちばん短いものを選べば確実です。実際にやってみます。

営業所 いま試している順番 ここまででいちばん短い順番
地点の数:
試した回り方 0
全部で 12
いまの距離
ここまでの最短
いまは店の番号どおりに回っています。「全部の回り方を試す」を押すと、順番を1つずつ書き出して距離を測ります。緑の点線が、そこまでで見つかったいちばん短い順番です。

地点を1つ増やすと、何倍になるか

出発点を営業所に固定し、逆回りは同じ順番として数えています

地点が n 個あるとき、回り方は (n−1)! ÷ 2 通りです。営業所をどこから出るかは決まっているので (n−1)!、時計回りと反時計回りは走る距離が同じなので ÷2 です。この数が、地点を1つ増やすたびにどう変わるかを見てください。

地点の数回り方の数1秒に1億通り調べたときの時間
地点が1つ増えるだけで、試す数は何倍にもなります。8地点までなら一瞬で終わりますが、20地点では、1秒に1億通りという速さで調べ続けても20年近くかかります。25地点なら約1億年です。地点が増えたぶんだけ手間が増えるのではなく、かけ算で膨れあがる。これを組合せ爆発といいます。
つまり全部は試せません。いちばん良い答えを確かめる方法があっても、その方法は使えないのです。ではどうするか。STEP 2で確かめます。