80
правок
Изменения
→Алгоритм
==АлгоритмИдея алгоритма==Пусть дан двудольный граф <tex>G(V, E)</tex> и требуется найти [[Теорема о максимальном паросочетании и дополняющих цепях|максимальное паросочетание]] в нём. Преобразуем его в Обозначим доли исходного графа как <tex>L</tex> и <tex>R</tex>. Построим граф <tex>G'(V', E')</tex> следующим образом:
<tex>V' = V \cup \{s, t\}</tex>(т.е. добавим две новые вершины <tex>s</tex> и <tex>t</tex>)
Изначально максимальное паросочетание пусто.# Будем искать в графе <tex>G'</tex> путь из <tex>s</tex> в <tex>t</tex> поиском в глубину.
# Если путь найден, инвертируем все рёбра на пути.
# Если путь не был найден, значит текущее паросочетание является максимальным, и алгоритм завершает работу. Иначе переходим к пункту 1.
В любой момент времени текущим паросочетанием будет множество рёбер, направленных из <tex>R</tex> в <tex>L</tex>.
==Псевдокод==