Перебор максимальных совпадений

соответствие в graph — это набор попарно вершинно-непересекающихся ребер, и он максимален, если покрывает максимально возможное количество вершин в графе. Существуют эффективные алгоритмы поиска таких соответствий, а также реализации (см., например, Boost для примера на C++).

Однако в произвольном графе может быть несколько максимальных паросочетаний; существуют ли реализации алгоритмов, позволяющие перечислить их все? Я бы предпочел реализации на C++, но и другие языки тоже подойдут.


person Anthony Labarre    schedule 27.10.2011    source источник
comment
Довольно быстрый алгоритм решения проблемы можно найти здесь: citeseerx. ist.psu.edu/viewdoc/summary?doi=10.1.1.108.4690 Однако я не знаю ни одной его реализации...   -  person Jan Rüegg    schedule 27.10.2011
comment
Спасибо, но если я правильно понял введение, то автора интересуют максимальные соответствия, т.е. соответствия, которые нельзя расширить, тогда как меня интересуют максимальные соответствия (которые также максимальна, но обратное неверно).   -  person Anthony Labarre    schedule 27.10.2011
comment
@AnthonyLabarre, вы нашли какие-нибудь алгоритмы/реализации для поиска всех максимальных совпадений на каком-то графе?   -  person bonanza    schedule 21.09.2015
comment
@bonanza: пока не повезло.   -  person Anthony Labarre    schedule 21.09.2015
comment
Теперь я тоже ищу некоторые реализации. Однако меня интересуют двудольные графы. Вы нашли какой-либо существующий код?   -  person Jason    schedule 19.05.2017


Ответы (2)


«Алгоритмы перечисления всех совершенных, максимальных и максимальных соответствий в двудольных графах» — http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.8179&rep=rep1&type=pdf

"Подсчет числа соответствий в классах хордальных и двудольных хордальных графов" – http://www.jaist.ac.jp/~okamotoy/PDF/matchchordal.pdf

Я надеюсь, что это может помочь вам как-то.

person Piotr Kukielka    schedule 02.11.2011
comment
Жаль, что графики двудольные, но я посмотрю, кто их цитирует, спасибо! - person Anthony Labarre; 03.11.2011

Проблема нахождения всех максимальных паросочетаний в общих графах рассматривается Т. Уно (тот же автор, что и в первой ссылке, указанной Петром выше) в этой статье 2001 года:

Быстрый алгоритм перечисления недвудольных максимальных паросочетаний

Теперь максимальные совпадения (мощность) обычно являются строгим подмножеством максимальных совпадений, но как только известен размер максимального совпадения, максимальные совпадения легко фильтруются, чтобы исключить все совпадения, кроме максимальных.

Однако временная сложность этого «быстрого алгоритма», предложенного Т. Уно, зависит от количества максимальных совпадений. Действительно, для общего графа G(V,E) с |V| вершины и |E| ребер, временная сложность равна O(|E|+|V|+Δ*N), где Δ — максимальная степень вершин, а N — количество максимальных паросочетаний.

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

person hardmath    schedule 04.04.2016