我有兩個列表,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