Алгоритм нахождения глобального минимального расстояния между парами элементов

Элементы ad должны быть быть в паре с элементами 0–3 таким образом, чтобы общее расстояние между всеми парами элементов было минимальным. Например, эта матрица может описывать расстояние между каждым элементом в первой группе и элементом в соответствующей группе:

[[2, 2, 4, 9],
 [4, 7, 1, 1],
 [3, 3, 8, 3],
 [6, 1, 7, 8]]

Это должно означать, что расстояние 'a' -> '0' равно 2, от 'a' -> '1' равно 2, от 'a' -> '2' равно 4, 'a' -> '3' равно 9. Из 'b' -> '0' это 4 и т. д.

Есть ли алгоритм, который может сопоставить каждую букву с цифрой, чтобы минимизировать общее расстояние? Например:

[('a', 1), ('b', 3), ('c', 0), ('d', 2)]

Было бы легальное решение с общим расстоянием: 2 + 1 + 3 + 7 = 13. Грубая форсировка и тестирование всех возможных комбинаций невозможно, так как в реальном мире есть группы, в которых гораздо больше четырех элементов.

5
задан John Stevens 2 May 2012 в 03:21
поделиться