Combinatorics 对两个集合进行配对,以使元素之间的距离最小化
我有两套Combinatorics 对两个集合进行配对,以使元素之间的距离最小化,combinatorics,hungarian-algorithm,Combinatorics,Hungarian Algorithm,我有两套S_1和S_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,E)=0.1,dista
S_1
和S_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,E)=0.1
,distance(A,E)=0.3
,distance(A,F)=0.4
,你不能仅仅因为A
与D
之间的距离最小。假设距离(B,D)=0.1
,距离(B,E)=0.8
,距离(B,F)=0.9
。如果您天真地选择在第一次迭代中匹配(A,D)
,那么您实际上会使总体距离更高,因为这会迫使您匹配(B,E)
或(B,D)
。更好的选择是匹配(a,E)
,然后允许(B,D)
匹配。这意味着您不能迭代S_1
并根据S_1
的每个元素与S_2
的其余元素之间的最小距离贪婪地分配匹配项
这似乎类似于赋值问题,我可以使用类似匈牙利算法()的方法来解决这个问题,但我相信该算法允许重用元素,这在我的情况下是行不通的 你已经准备好了一些背景资料并进行了观察。现在你有什么代码可以放在这里,你有一个具体的问题,我们可以帮助吗?我补充了一点更多的信息。问题是,对于这类问题,是否有已知的算法?这个问题可能是您想要的。该站点可能更适合这种类型的问题:)这听起来很像分配问题:“需要执行所有任务,为每个任务分配一个代理,为每个代理分配一个任务,以使分配的总成本最小化。”我不知道你从哪里听说它允许元素被重用。