問題の背景
私は現在、AntColonySystemアルゴリズムのフレームワークを開発しています。私は、彼らが適用された最初の問題である巡回セールスマン問題(TSP)でそれらを試すことから始めようと思いました。タスクにはC#を使用します。
すべてのTSPインスタンスは、各エッジに関連付けられた2つの異なる重みを持つ完全な無向グラフで構成されます。
質問
これまで、隣接リスト表現のみを使用してきましたが、それらはまばらなグラフにのみ推奨されることを読みました。私はデータ構造に関して最も知識のある人ではないので、無向の完全グラフを実装するための最も効率的な方法は何でしょうか?
必要に応じて、追加の詳細を提供できます。
お時間をいただきありがとうございます。
アップデート
重量の明確化。各エッジには、次の2つの値が関連付けられます。
- 2つの都市間の距離(d(i、j)= d(j、i)両方向に同じ距離)
- その特定の端にアリによって沈着したフェロモンの量
オペレーション。グラフで実行する操作の簡単な要約:
- 各ノードについて、その特定のノードのアリは、すべての入射エッジに関連付けられた値を反復処理する必要があります
問題の明確化
アリコロニー最適化アルゴリズムは、TSPが最初に適用された場所であるため、TSPを「解決」できます。「解決」とは、メタヒューリスティック最適化と呼ばれるアルゴリズムファミリーの一部であり、最適な解決策を返すことを保証するものではないためです。
当面の問題について:
- 各アリは記憶を持っているので、アリはツアーを完了する方法を知っています。
- アリが都市を訪れるたびに、その都市を記憶に保存します。
- アリが新しい都市への訪問を検討するたびに、アリはその記憶を検索し、そのエッジがすでに訪問した都市に到達しない場合にのみ、発信エッジを選択します。
- アリが選択できるエッジがなくなると、ツアーが完了します。この時点で、アリが作成したツアーを、その記憶をさかのぼって遡ることができます。
研究記事の詳細:アリの巣システムの記事
効率に関する考慮事項
メモリよりも実行時間(速度)の方が気になります。