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