2015-04-23 3 views
5

Моя проблема заключается в следующем:Минимизация расстояния спаривания точек

Given a number of 2n points, I can calculate the distance between all points 
and get a symmetrical matrix. 

Can you create n pairs of points, so that the sum of the distance of all pairs is 
minimal? 

EDIT: Every point has to be in one of the pairs. Which means that 
every point is only allowed to be in one pair. 

я наивно пытался использовать венгерский алгоритм и надеется, что он может дать мне задание, так что задания симметричны. Но это явно не сработало, так как у меня нет двудольного графа.

После поиска я нашел Stable roommates problem, который, похоже, похож на мою проблему, но разница в том, что он просто пытается найти совпадение, но не пытается свести к минимуму какое-то расстояние.

Кто-нибудь знает похожие проблемы или даже решение? Я что-то пропустил? Проблема действительно не кажется такой трудной, но я просто не мог найти оптимальное решение.

+0

Итак, если я правильно понял это, у вас есть симметричная матрица, содержащая расстояние между каждой точкой? Почему бы не превратить эту матрицу в набор, отсортированный по расстоянию [start_point, end_point, distance] и выбрать первые n пар? – Yay295

+0

Каждой точке разрешено находиться только в одной паре. Это не гарантируется, если я только сортирую по расстоянию. Я должен добавить это к описанию проблемы. – the

+0

Хм, это усложняет ситуацию. Однако вы уверены, что венгерский алгоритм не будет работать? Вместо того, чтобы рассматривать его как полный неориентированный граф, разделите каждую точку на две точки (источник и место назначения) и просмотрите ее как полный двунаправленный ориентированный граф. – Yay295

ответ

4

Существует алгоритм первично-двойной из-за Edmonds (алгоритм Blossom), который вы действительно не хотите реализовать, если это возможно. У Владимира Колмогорова есть implementation, который подходит для ваших целей.

0

Попробуйте сетевой поток. Максимальный поток - это количество пар, которые вы хотите создать. И вычислить минимальную стоимость.

Смежные вопросы