コスト関数を最小化する六角形(ハニカム)グラフ上で隣接するノードのペアを見つけるアルゴリズムを探しています。
- 各ノードは3つの隣接ノードに接続されています
- 各ノード「i」は、1つの隣接ノード「j」とペアにする必要があります。
ノードの各ペアはコスト関数を定義します
c = pairCost(i、j)
次に、総コストは次のように計算されます。
totalCost = 1/2 sum_ {i = 1:N}(pairCost(i、pair(i)))
ここで、pair(i)は、「i」がペアになっているノードのインデックスを返します。(合計は各ノードを2回カウントするため、合計は2で除算されます)。私の質問は、totalCostを最小化するノードペアを見つけるにはどうすればよいですか?
リンクされた画像は、ソリューションがどのように見えるかを明確にする必要があります(太い赤い線はペアリングを示します):
いくつかのさらなるメモ:
- 一番外側のノードはあまり気にしません
- 私のコスト関数は||のようなものです v(i)-v(j)|| (ノードに関連付けられたベクトル間の距離)
- 問題はNP困難かもしれないと思いますが、本当に最適なソリューションは必要ありません。良いソリューションで十分です。
- ナイーブなアルゴは、「ロックイン」されたノードを取得する傾向があります。つまり、すべての隣接ノードが取得されます。
注:私はこの分野の通常の命名法に精通していません(それはグラフ理論ですか?)。あなたがそれを手伝うことができれば、多分それは私が文献で解決策を探すことを可能にするかもしれません。