我有两个列表,A和B.A最多只有1000个元素,而B最多只有100个元素。我想将B的每个元素都匹配到A的一个元素,这样这些对的绝对差值之和就会最小化。将一个列表与另一个列表进行匹配,误差最小
即我想选择| B |从A得到不同的索引,并将它们分配给B的索引,使得以下和最小化:sum(abs(A [j] -B [i]),其中| B |,j = index_mapping(i))。
我的第一种方法是:
- 对于B的每个元素,以计算| B |答:
- 的最接近元素选择在一个贪婪的方式对(即误差最小第一)
用一些简单的例子播放,很明显,我的方法是不是最好的。它应该适合我的目的,但我想知道是否有人可以提出更好的方法?
啊,我刚刚注意到你想让B中的每个索引匹配A中的一个* unique *索引。这很困难,它可能涉及某种旅行推销员算法,您可以遍历所有匹配的集合,统计每一个距离的总和,并选择最低的一个。 – 2011-06-02 04:56:46