あるセットの要素と別のセットの要素を一意に組み合わせることにより、合計距離の最小値を見つける


8

入力として、私はR Nに2セットのポイントを持っています。通常、大きなNの場合、たとえばN = 40です。両方のセットにm個の要素があるとします。

S = s 1 ... s m

T = t 1 ... t m

意味的には両方のセットは等しいですが、R ^ Nポイントの(あらゆる種類の)ノイズにより、意味的に同じであるはずの要素の距離は0よりも大きくなります。

私が見つけたいのはmのタプル(s i、t j)で、距離の合計(s i、t j)が最小化され、k = 1のタプルのセットでs kとt kが1回だけ発生します。 ... m 基本的に(i、j)は、合計距離を最小限に抑えながら、互いにぶつからないチェス盤の塔として選択する必要があります。

言い換えれば、SとTの間の「アイデンティティマップのようなものですが、ノイズに対してロバスト」な1対1のマップを見つけたいのです。距離の測定は、類似した要素の類似性を示す良い指標であると想定しています。

基本的に私は1 ... Nの順列を見つける必要があります。したがって、この問題はTSPに非常に似ているため、NP困難またはNP完全のどちらかであると思います。ただし、TSPの問題をここでの問題のサブセットに書き換えることはできません。

この問題は、大きなNに対して現実的に解決できますか?この問題に名前はありますか?実現可能な解決策は何でしょうか?合計距離よりも優れている可能性のある別の基準はありますか?

私は貪欲なアプローチを考えました、Dを距離の行列としましょう、d ij = distance(s i、t j)。

T = {}
while D is not empty:
    (i,j) = argmin-(i,j) dij
    append (i,j) to T
    set row i and column j to infinity.

これは最適な解決策にはなりませんが、解決策を見つけます。これが私の最善の策でしょうか?シミュレーテッドアニーリングを使用する必要がありますか、それとも過剰ですか?

PS:私の観点からは、これは大きなMLの問題の小さな問題ですが、CSの背景に非常に興味があります。


確かではありませんが、このスレッドが役立つかもしれません。

いくつかのMLアルゴリズムを設計するときにもこの問題に
遭遇

平方根の合計問題をこの問題の一部として解決するのを避ける方法はありません。 (私はまた、この問題がSoSR-hardであるという議論を見ることはありません。)

「基本的に私は1 ... Nの順列を見つける必要があるので、この問題はNP困難またはNP完全のどちらかだと思います」-ソートと同じように、hm?
ラファエル

@ラファエル:良い点。それはより根性のある感覚でした。それはOPで述べられているように、私は議論を見つけることができません。したがって、「この問題は大きなNに対して現実的に解決できるのか」という質問です。
ハーバート

回答:


6

これは、重み付き2部グラフで最大マッチングを見つける際の問題です。この問題を多項式時間で解決する効率的なアルゴリズムがあります。

2mSTi,jsitjd(si,tj)sitj

(si,tj)


3

ここにあなたのために働くかもしれない簡単な確率論的方法があります。

  1. ポイントをランダムなラインに投影し、このラインの1Dマッチング問題を解きます。

  2. 候補の一致のコレクションを取得するために、いくつかの異なるランダムな線についてプロセスを繰り返します。

  3. 候補者のマッチングに「投票」してもらい、「最良の」マッチングを見つけます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.