このプログラムにはバグがあることが判明しましたので、ただいま修正中です。まれに正しくない答えになってしまうことがあります。申し訳ございません。
もう一度
(これでだめな時は更新してください。) : 新しいNと場所で描き直します。
自動的編
正しい答えが得られる場合もある巡回セールスマン問題
(始点と終点が同じ場合)
始点と終点が自由な場合
始点が決められていて終点は自由な場合
始点と終点が決められている場合
正しい答えが得られる可能性もある逐次添加法による巡回セールスマン問題
ヒルベルト曲線を使ったもの
ヒルベルト曲線の近似多角形を使ったもの
クリック編
正しい答えが得られる場合もある巡回セールスマン問題
(始点と終点が同じ場合)
始点と終点が自由な場合
始点が決められていて終点は自由な場合
始点と終点が決められている場合
ちょー時間がかかるけど正しい答えが得られる巡回セールスマン問題
バージョン1
ちょー時間がかかるけど正しい答えが得られる巡回セールスマン問題
バージョン2
スクリーンセーバー
ちょー時間がかかるけど正しい答えが得られる巡回セールスマン問題バージョン2(クリック編)(2007年4月6日公開、2007年05月15日22:19:52第1回の改訂)
上はJAVAで作られています。メモリを大量に使ったり、重くなるかもしれません。その時は、ごめんんなさい。
実行後に画面をスクロールしたり、アプレット全体が画面に入ってないと、間違った画面になるかもしれないので、気をつけてください。画面の大きさを決めてから
”もう一度”をクリックするか、更新(reload)
してください。
ここでは巡回セールスマン問題の答えを時間がかかる方法で求めています。
画面をクリックすると緑の点が表れます。4つ以上クリックするとそれらの点を全て巡らなければならないときの最適な順序が線で表示されます。
Nは対象となる点の数、TSP_dはそのときのひかれた線の長さの合計、route_numはその答えがいくつの組み合わせから選ばれたかを表しています。さらに右上の?/?というのは、計算の進捗状況をあらわします。点の数が多くなればなるほど計算時間がかかります。たくさん点をクリックしてしまったときには、待ち時間の目安にしてください。
実をいうと、このプログラムの欠点は、この待ち時間の目安になる数字?1/?2の?2がroute_numと一致しないこと、?2がroute_numの2倍であるということで、必要以上に計算しないでよいルートを計算している、逆順は計算しなくてよいのに、やってしまっている、ということです。逆順を計算しなくていい、というロジックを入れることは可能なのですが、それをいれるとかえって計算が遅くなってしまうので、今回はあきらめてしまいました。今後の課題ということでお許しください。
以上は、バージョン1の説明です。このページ:バージョン2では、計算時間を短縮させるために、全ての順番について長さを計算するのをやめて、2つの線分が交差する場合の組み合わせは計算対象から除く処理を追加しております。組み合わせの数が減った分だけ、幾分計算時間が短くなることがバージョン1との比較でわかります。
●Javaプログラムのダウンロード(tsploopv2cli.java 8KB)
ご意見、ご感想、お問い合わせ、お願い等がございましたら、お気軽に、
までメールを送るか、
●掲示板
に書き込むか、
どちらかお好きな方法で、ご連絡お願いいたします。
メールの際には、ウィルスやいたずら、広告のメールと誤解しないように、
”ホームページ見ました:”ではじまるわかりやすい件名でお願いします。
よい件名の例:
ホームページ見ました:ボロノイ図について
ホームページ見ました:シュタイナー問題
悪い件名の例:
こんにちは、はじめまして、お願い、Hello, Hi, I love you, test
また、初めてメールくださる場合は添付ファイルは付けないようにお願いします。
●大山崇のホームページ