두 세트의 정수 A와 B가 있어야하며 크기가 같지 않아도됩니다. 필자의 필요에 따라 각 요소 2 개 a와 b (정수) 사이의 거리는 abs(a-b)
이됩니다. 다음 I의 두 세트 사이의 거리를 정의하고크기가 다른 두 세트 간의 거리 측정
:
- 세트는 동일한 크기 인 경우, 모든 쌍의 거리의 합을 최소화 [A, B] (A 및 B로부터 B에서), 모든 가능한 '쌍 파티션'에 대한 최소화 (n! 가능한 파티션이 있음).
- 세트의 크기가 같지 않은 경우, 크기가 m이고 크기가 n 인 B가 m이 < 인 경우, 크기가 m 인 B의 모든 부분 집합과 (1)의 거리를 최소화하십시오.
제 질문은 위의 정의에 따라 올바른 대답을주는 알고리즘입니다 (직관적 인 생각).
- 는
D
의 작은 요소를 찾아D(i,j) = abs(A(i)-B(j))
- 가진 크기의 행렬
m X n
D
구축을 축적하고, 그 행 및 열 요소의 삭제. 그 다음으로 작은 항목을 누적하고 모든 행과 열이 삭제 될 때까지 계속 누적하십시오.
예 A={0,1,4}
및 B={3,4}
있다면, D
은 (왼쪽 위의 요소)이다
3 4
0
3 4
1
2 3
4
1 0
는 그리고 거리가 1
와 4
및 3
와 페어링 4
에서 오는 0 + 2 = 2
입니다.
+1 : 문제는 일반적인 이단 적 매칭에 존재하지 않는 구조를 가지고있다. – lijie
고마워. '최대'크기가 나의 유스 케이스에서 제한되기 때문에, 나는'0'과'N '사이의 가능한 모든 크기에 대해 모든 거리의 테이블을 실제로 만들 수 있으며 실행 중에 그것을 사용할 수있다. -시각). –
최소 체중 바이퍼 매칭과 아래에 언급 된 @lijie의 할당 문제는 무엇이 다릅니 까? –