巡回セールスマン問題 について考えていました。それと都市のグリッドを調べてみると、それを見つめるだけで最短ルートを頻繁に見つけることができることに気づきました。確かに、複雑なグリッドの解決策を必ずしも得ることはできませんでしたが、単純なグリッドを得ることができれば、それらを一貫して解決する方法が必要でした。
私はほとんど(私が見たものすべて)が都市の周りを循環するルートを取り、少し外側の境界をたどることに気づきました。私のアイデアは、グリッドの最も外側のポイントをできるだけ多くの側面にマークするアルゴリズムから始めることでした。これは、基本方位ごとに常に少なくとも4つ(4つ未満でない限り)1つの都市です。このようなもの:
(私は人間であるため、どの都市が選択されるかをほとんど推測しました。最初のアルゴリズムが異なる方法で選択されたか、4つ以上が選択された可能性があります。ただし例として...)
次に、アルゴリズムは、以前に見つかったポイントを含まない、最も外側のポイントの別のセットを見つけます。これらのポイントを最も近い赤い線と一致させ、そこに挿入します。
すべてのポイントが選択されて結合されるまで、これが繰り返されます。
これは、より小規模で単純な都市の選択に対してはかなりうまく機能するようです。より大規模で複雑なモデルで崩壊するかどうかは、現時点では不明です。これを壊すような都市が作られるのではないかと思います。
とにかく、私はこの種のアルゴリズムが何と呼ばれるのかほとんど興味があります。魅力的だと思いますので、もっと知りたいです。
これは実際に問題の解決策ですか、それとも厳密な近似ですか?
あなたがしているのは凸包を作ることです。あなたのアルゴリズムは完璧な解決策ではなく、単なる概算です。次のグリッドについて考えてみます。
アルゴリズムは、次のようなことから始まります。
次に、事態はさらに複雑になります。アルゴリズムは、コーディング方法に応じて、次のいずれかの選択を行います。
これらのうちの1つだけが正しいです。理論的には、アルゴリズムは機能しますが、それまでにさらに磨きをかける必要があります。都心部と都心部の接続方法を決定するのに役立つロジックが必要になります。いくつかの方法があり、欲張りアルゴリズムを使用できますが、これはほとんどの状況で不正確です。あるいは、ブルートフォース方式を適用できます。都市のすべての組み合わせを接続しているわけではないため、今回は考慮すべき順列がはるかに少なくなります。 OuterCity-> InnerCity間の距離だけでなく、OuterCity-> InnerCity-> OuterCityの距離も考慮する必要があることに注意してください。