n次元空間に2セットの点がある場合、各点が1回だけ使用され、ポイントのペアは最小化されていますか?例えばPythonの2つの点セット間の合計距離を最小にする
、
import matplotlib.pyplot as plt
import numpy as np
# create six points in 2d space; the first three belong to set "A" and the
# second three belong to set "B"
x = [1, 2, 3, 1.8, 1.9, 3.4]
y = [2, 3, 1, 2.6, 3.4, 0.4]
colors = ['red'] * 3 + ['blue'] * 3
plt.scatter(x, y, c=colors)
plt.show()
そこで、上記の例では、目標は、各青色点は一度だけ使用され、合計されるように、青い点にそれぞれ赤色点をマッピングすることであろうポイント間の距離の最小化が図られる。ポイントのすべてのペアscipy.spatial.distance.cdist()
機能を使用して間セット間の距離を計算 -
そこから、おそらく各行の単一要素のすべての置換をテストし、最小値を見つけることができます。
私が気にしているアプリケーションは、3次元空間のデータポイントの数がかなり少ないため、ブルートフォースのアプローチはうまくいくかもしれませんが、誰かがより効率的で洗練されたソリューションを知っているかどうかを確認します最初。
だから、この質問は、言語に依存しないで、アルゴリズム、約のようですか? – moooeeeep
2つのセットは常に同じサイズですか? – moooeeeep
この問題は、[線形和割り当て](http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linear_sum_assignment.html)の問題ではありませんか? – Stelios