Скажите, пожалуйста, можно ли еще получить документ о прохождении курса ("Графы и алгоритмы", декабрь 2020) после предоставления всех дополнительных необходимых документов? |
Паросочетания
Паросочетания в двудольных графах
Пусть - двудольный граф c долями
и
,
- паросочетание в
. Всякий увеличивающий
путь, если
такой имеется, соединяет вершину из множества
с вершиной из множества
.
Зафиксируем некоторую свободную вершину . Мы хотим найти
увеличивающий путь, начинающийся в
, либо убедиться в том, что
таких путей нет. Оказывается, нет необходимости рассматривать все
чередующиеся пути, начинающиеся в вершине
, для того, чтобы
установить, какие вершины достижимы из вершины
чередующимися
путями.
Вершину назовем четной или нечетной в зависимости от
того, четно или нечетно расстояние между нею и вершиной
.
Поскольку граф двудольный, любой путь, соединяющий вершину
с четной (нечетной) вершиной, имеет четную (нечетную) длину. Поэтому
в чередующемся пути, ведущем из вершины
в четную (нечетную)
вершину, последнее ребро обязательно сильное (слабое).
Определим дерево
достижимости как максимальное дерево
с корнем , в котором каждый путь,
начинающийся в корне, является чередующимся.
Дерево достижимости определено не однозначно, но любое такое дерево
в двудольном графе обладает следующим свойством:
Лемма 1. Вершина принадлежит дереву
достижимости тогда и только тогда, когда существует чередующийся путь,
соединяющий вершины
и
.
Доказательство. Рассмотрим некоторое дерево достижимости
и докажем, что всякая вершина
, достижимая из вершины
чередующимся путем, принадлежит этому дереву. Проведем индукцию по длине
кратчайшего чередующегося пути из
в
. Пусть
-
предпоследняя (т.е. предшествующая
) вершина такого пути.
По предположению индукции, вершина
принадлежит
дереву
.
Если она четная, то любой чередующийся путь из вершины
в вершину
заканчивается сильным ребром.
Следовательно, в дереве
вершину
c ее отцом
соединяет
сильное ребро, а ребро
-
слабое. Поэтому, если добавить к дереву вершину
и ребро
, то путь в дереве, соединяющий
с
,
будет чередующимся. Значит, если предположить, что дерево
не содержит вершины
, то окажется, что оно не
максимально, а это противоречит определению. Аналогично рассматривается
случай, когда вершина
- нечетная.
Итак, для решения задачи остается научиться строить дерево достижимости.
Для этого можно использовать слегка модифицированный поиск в ширину из
вершины . Отличие от стандартного поиска в ширину состоит в том,
что открываемые вершины делятся на четные и нечетные. Для четных вершин
исследуются инцидентные им слабые ребра, а для нечетных - сильные.
Через
, как обычно, обозначается множество вершин, смежных
с вершиной
,
- очередь, используемая при
поиске в ширину. Если
вершина
не является свободной, т.е. инцидентна некоторому
сильному ребру, то другая вершина этого ребра обозначается
через
.