2
A
とB
場合m<=n
、それぞれm
とn
点の集合です。 m
ユニークポイントがB
からC
となり、すべて[A(i), C(i)]
ペアの間の距離の合計が最小値であることがわかります。最も近い点のペアのユニークなセットを見つける方法は?
C
に
B
現在の要素が繰り返されてもよい
m = 5; n = 8; dim = 2;
A = rand(m, dim);
B = rand(n, dim);
D = pdist2(A, B);
[~, I] = min(D, [], 2);
C2 = B(I, :);
を:私はちょうどA
の各点にB
から最も近い点を見つけることができる一意制約せずにこれを解決する
。最初のソリューションは、力まかせ探索である今:
minSumD = inf;
allCombs = nchoosek(1:n, m);
for i = 1:size(allCombs, 1)
allPerms = perms(allCombs(i, :));
for j = 1:size(allPerms, 1)
ind = sub2ind([m n], 1:m, allPerms(j, :));
sumD = sum(D(ind));
if sumD<minSumD
minSumD = sumD;
I = allPerms(j, :);
end
end
end
C = B(I, :);
私はC2
(各A(i)
に最も近い点の集合)は、かなりC
問わずその重複する箇所を除いてだと思います。だから私はどのように計算時間を減らすことができますか?