Лучший матч между двумя наборами очков - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть два списка точек, назовем их L 1 (P 1 (x 1 , y 1 ), ... P n (x n , y n )) и L 2 (P ' 1 (x ' 1 , y' 1 ), ... P ' n (x' n , y ' п )).

Моя задача - найти наилучшее совпадение между их точками для минимизации суммы их расстояний.

Есть какие-нибудь подсказки по какому-то алгоритму?Два списка содержат ок.200-300 баллов.

Спасибо и самое лучшее.

1 Ответ

0 голосов
/ 25 сентября 2018

Если вариант использования вашей проблемы включает в себя сопоставление любой точки, присутствующей в списке L 1 , с точкой в ​​списке L 2 , то Венгерский алгоритм будетслужить идеальной подгонкой.

Весами, соответствующими вашей венгерской матрице, будет расстояние между точкой, аннотированной для строки, против столбца.Общее время выполнения для оптимизированного венгерского алгоритма - O (n 3 ), которое будет удобно соответствовать вашему заданному ограничению n = 300

Довольно хороший учебник, охватывающий идеологию и реализацию венгерскогоАлгоритм: https://www.topcoder.com/community/competitive-programming/tutorials/assignment-problem-and-hungarian-algorithm/

Если не использовать венгерский алгоритм, вы также можете превратить данную проблему в проблему max-flow-min-cost - подробности, которую я пока опущу, но при необходимости можем обсудить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...