Максимально взвешенное двухстороннее соответствие, ограничение: упорядоченность каждого графа сохраняется

Допустим, у меня есть два множества: (n_1, n_2, ...) и (m_1, m_2, ...) и функция соответствия match(n, m), которая возвращает значение от 0 до 1. Я хочу найти отображение между двумя множествами так, чтобы выполнялись следующие ограничения:

  • Каждый элемент должен иметь не более 1 совпадающего элемента в противоположном множестве.
  • Несовпадающие элементы будут спарены с фиктивным элементом стоимостью 1
  • Сумма функции совпадения при применении ко всем элементам максимальна
  • Мне трудно выразить это формально, но если выстроить каждое множество параллельно друг другу с их исходным упорядочением и провести линию между совпадающими элементами, то ни одна из линий не пересечется. Например, [n_1<->m_2, n_2<->m_3] - корректное отображение, а [n_1<->m_2, n_2<->m_1] - нет.

(Я полагаю, что первые три - это стандартные ограничения взвешенного двухстороннего соответствия, но я указал их на случай, если я неправильно понимаю взвешенное двухстороннее соответствие)

Это относительно просто сделать с помощью исчерпывающего поиска за экспоненциальное время (относительно размера множеств), но я надеюсь, что существует решение с полиномиальным временем (в идеале O((|n|*|m|)^3) или лучше).

Я достаточно много искал по "проблеме назначения"/"взвешенного двухстороннего сопоставления" и видел варианты с различными ограничениями, но не нашел ни одного подходящего варианта или такого, который я смог бы свести к одному с этим дополнительным ограничением на упорядочение. Есть ли у вас идеи, как я могу решить эту задачу? Или, возможно, грубое доказательство того, что это не решаемо за полиномиальное время (для моих целей подойдет и сведение к NP-полному)?

7
задан Gibybo 28 February 2012 в 12:55
поделиться