Дополняя ответ @ jrook, обратите внимание, что «полное двухстороннее сопоставление минимального веса» («полное» или «идеальное», потому что в противном случае оптимальным решением является пустое сопоставление) также идет под именем linearзадача присваивания , просто чтобы дать вам еще несколько ключевых слов, чтобы вы начали.
Хотя, безусловно, верно, что формулировка проблемы как задачи линейного программирования делает свою работу, на самом деле существует множество алгоритмов, которыепредоставить решения для этого конкретного случая.
Если вы знакомы с алгоритмами поиска кратчайшего пути и расширенного пути (например, те, которые можно использовать для максимального соответствия двухстороннего или максимального потока), тогда, возможно, самый простой для понимания алгоритм - это то, что вы сначала получите, осознав, что рассматриваемая проблема - это особый случай проблемы минимального потока затрат , которую можно решить, заменив шаг BFS наалгоритм Эдмондса - Карпа путем поиска кратчайшего пути. Более распространенным во вводных текстах является Венгерский алгоритм .
Если вы заботитесь о производительности, существуют более эффективные алгоритмы;действительно, легко найти решения, которые на порядков быстрее , чем те, которые вы получаете, просто бросая коммерческий решатель после формулировки линейного программирования.