У меня есть 2 набора целых чисел, A и B, не обязательно одинакового размера. Для моих нужд я беру расстояние между каждыми двумя элементами a и b (целые числа) равным всего abs(a-b)
.
Я определяю расстояние между двумя наборами следующим образом:
- Если множества имеют одинаковый размер, минимизируйте сумму расстояний всех пар [a,b] (a от A и b от B), минимизируя по всем возможным «парным разбиениям» (существует n! возможных разбиений).
- Если множества разного размера, скажем, A размера m и B размера n, где m ‹ n, то минимизируйте расстояние от (1) по всем подмножествам B размера m.
Мой вопрос в том, дает ли следующий алгоритм (просто интуитивное предположение) правильный ответ в соответствии с определением, написанным выше.
- Построить матрицу
D
размераm X n
сD(i,j) = abs(A(i)-B(j))
- Найдите наименьший элемент
D
, накопите его и удалите строку и столбец этого элемента. Накопите следующую наименьшую запись и продолжайте накапливать, пока не будут удалены все строки и столбцы.
например, если A={0,1,4}
и B={3,4}
, то D
будет (с элементами сверху и слева):
3 4
0
3 4
1
2 3
4
1 0
Расстояние равно 0 + 2 = 2
, исходя из пары 4
с 4
и 3
с 1
.