 |
とある会社のセールスマンが、つくば市内のいくつもあるお得意先に、新開発された世界最新鋭のコンピュータの紹介のために、一件一件挨拶回りすることになりました。
彼は、なるべく早くすべてのお得意先様の訪問を終えて、上司に報告したいと考えました。どのような順番で訪問すれば最も短い距離で訪問できるでしょうか?
|
|
このセールスマンは「全ての巡回経路から最短の巡回経路を求めるプログラム」 (すなわち完全列挙法を行うプログラム)を作り、自社製品の実力を試してみることにしました。このコンピュータは1秒間に10億通りの計算ができます。
サンプルとして、本社周辺の10件のお得意先の場所を入力した結果、0.00036288秒で答えを出しました。さすが、世界最新鋭のコンピュータです。セールスマンは自信を持って、お客様に紹介できると確信しました。
|
 |
 |
新製品のコンピュータのおかげで、意外と早く訪問することができるとわかったので、お得意先様を20件回ることに決めて、再び、コンピュータに20件のお得意先の場所のデータを入力してみると….
どういうわけか計算結果がなかなか出てきません。調べてみると、計算が完了するまでに77年近くかかるとなっています。どうしたのでしょうか?
結局、このセールスマンはコンピュータの性能が悪いと判断し、営業をやめてしまいました。
|
原因を追究しないで、営業をやめてしまうセールスマンにも問題はありますが、こういった現象は一般に「組み合わせ的爆発」と呼ばれます。
訪問先が10→20に増加すると、その巡回経路のパターン数は、次の通りです。
10! = 362880
から
20! = 2432902008176640000 (243京2902兆81億7664万)
に増加!
巡回経路のパターン数は、天文学的になってしまいました。
約77年もの間、コンピュータが計算し続けることは、現実では、あり得ません。
巡回する個所と巡回経路のパターン数、計算時間の関係、次の通りです。
| 巡回する個所 |
巡回経路のパターン数 |
計算に必要な時間
(1秒間に10億通りの計算を行うコンピュータの場合) |
| 10 |
10! [通り]
=362880 [通り]
|
10! [通り] ÷ 10億[通り/秒]
=362880 [通り] ÷ 10億[通り/秒]
=0.00036288 [秒]
|
| 20 |
20! [通り]
=2.433×10の18乗 [通り]
|
20! [通り] ÷ 10億 [通り/秒]
=2.433×10の18乗 [通り] ÷ 10億 [通り/秒]
=約 2432902008 [秒]
=約 77 [年]
|
| 100 |
100! [通り]
=約 9.332×10の157乗 [通り]
|
100! [通り] ÷ 10億 [通り/秒]
=約 9.332×10の157乗 [通り] ÷ 10億[通り/秒]
=約 9.332×10の148乗 [秒]
=約 2.96×10の141乗 [年]
|
以上の問題は、一般に「巡回セールスマン問題」と呼ばれ、
現在も世界中で、様々な研究が行われています。
|