将两组配对使得元件之间的距离最小化

时间:2017-05-14 12:45:31

标签: combinatorics hungarian-algorithm

我有两套S_1S_2。鉴于这两组,我需要将S_1中的每个元素与S_2中的元素配对。

  • 这些元素不可重复使用,因此如果S_1[A]S_2[D]配对,那么我也无法将S_1[B]S_2[D]配对。
  • 目标是使用所有元素生成配对,以使配对的距离最小化。
  • 配对的距离计算为每对之间距离的总和。
  • 使用最低总配对点值生成结果

是否有任何已知的算法可以有效地解决此类问题?

部分困难在于采取贪婪的方法是行不通的。如果S_1 = [A, B, C]S_2 = [D, E, F]以及distance(A, D) = 0.1distance(A, E) = 0.3distance(A, F) = 0.4,您无法将AD天真地匹配因为它具有该组的最低距离。假设distance(B, D) = 0.1distance(B, E) = 0.8distance(B, F) = 0.9。如果您天真地选择在第一次迭代中匹配(A, D),那么您实际上会使总距离更高,因为这会强制您匹配(B, E)(B, D)。匹配(A, E)然后允许(B, D)匹配是更好的选择。这意味着您无法迭代S_1并根据S_1的每个元素与S_2的其余元素之间的最低距离贪婪地分配匹配项。

这看起来类似于赋值问题,我可以使用匈牙利算法(https://en.wikipedia.org/wiki/Hungarian_algorithm)来解决这个问题,但我相信算法允许重用元素,这对我的情况不起作用。

0 个答案:

没有答案