【问题标题】:Find the closest set of points to another set找到离另一组最近的一组点
【发布时间】:2016-04-29 14:49:20
【问题描述】:

我有两组,AB,其中 NM 点分别在 R^n 中。我知道 N M 总是。

两点之间的距离,PQ,用d( P, 。由于问题是通用的,这个距离可以是任何函数(例如欧几里得距离)。

我想找到最接近 AB 子集。从数学上讲,我想找到 B 的子集 C,大​​小为 N em> 具有到 A 的最小全局距离。 AC 之间的全局距离为

D(A,C) = min([sum(d(P_i,Q_i),i=1,N) with P_i in A and Q_i in C* for C* in Permutations of C]) 

我一直在考虑这个问题,我做了一个算法,可以得到局部最优,但不一定是最优的:

Step 1) 在B中找到A的每个点的最近点。如果没有重复的点,我找到了最优子集并完成了算法。但是,如果有重复的点,请转到第 2 步。

第2步)比较它们的距离(当然我比较的是点之间的距离和同一个最近点)。距离最小的点保留先前找到的点,而其他点将其 期望 点更改为尚未为另一个点选择的“下一个”最近点。

步骤 3) 检查所有点是否不同。如果是,请完成。如果没有,请返回第 2 步。

有什么想法吗?尝试所有组合不是一个好组合(我应该计算 M!/(M-N)! 全局距离)

【问题讨论】:

  • 你试过Hungarian algorithm吗?
  • 您能更准确地定义全局距离吗?现在看起来它是具有相同索引的“匹配”对,但它们来自集合,所以这是未定义的
  • @EvgenyKluev 我不知道。但是我应该将此方法应用于 B 的 M!/((M-N)! * N!) 子集,对吗?
  • @harold 我把定义改得更准确了
  • @sebacastroh:不,您可以使用 (M-N) 个“空”元素(与 B 中的所有元素的距离为零)扩展 A,然后应用匈牙利算法。

标签: algorithm mathematical-optimization


【解决方案1】:

如果 M = N,这个问题可以表述为二分图中的最小权重完美匹配,或者换句话说,一个分配问题。解决分配问题的著名方法是Hungarian algorithm

为了使匈牙利算法适用于 N A(每个元素与 B 的所有元素的距离为零)。

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 2010-10-10
    • 2023-03-18
    • 2015-08-09
    • 2010-10-18
    • 1970-01-01
    相关资源
    最近更新 更多