Паросочетанием в графе называется множество ребер, попарно не имеющих общих вершин. Задача о паросочетании состоит в том, чтобы в данном графе найти паросочетание с наибольшим числом ребер. Это число для графа \[ G \] будем обозначать через \[ \pi(G) \] . Реберным покрытием графа называется такое множество ребер, что всякая вершина графа инцидентна хотя бы одному из этих ребер. Наименьшее число ребер в реберном покрытии графа \[ G \] обозначим через \[ \rho (G) \] . Заметим, что реберное покрытие существует только для графов без изолированных вершин.
Определение паросочетания похоже на определение независимого множества вершин, паросочетание иногда так и называют - независимое множество ребер. Эта аналогия еще усиливается тесной связью между реберными покрытиями и паросочетаниями, подобно тому, как связаны между собой вершинные покрытия и независимые множества. Даже равенство, количественно выражающее эту связь, имеет точно такой же вид (напомним, что числа независимости \[ \alpha(G) \] и вершинного покрытия \[ \beta(G) \] связаны равенством \[ \alpha (G)+\beta (G)=n \] ). Приводимое ниже доказательство этого факта имеет алгоритмическое значение, так как показывает, каким образом каждая из двух задач может быть сведена к другой.
Теорема 1. Для любого графа \[ G \] с \[ n \] вершинами, не имеющего изолированных вершин, справедливо равенство \[ \pi(G)+\rho (G)=n \] .
Доказательство. Пусть \[ M \] - наибольшее паросочетание в графе \[ G \] . Обозначим через \[ W \] множество всех вершин графа, не покрытых ребрами этого паросочетания. Тогда \[ |W|=n-2\pi (G). \] Очевидно, что \[ W \] - независимое множество (иначе \[ M \] не было бы наибольшим). Выберем для каждой вершины из \[ W \] какое-нибудь инцидентное ей ребро. Пусть \[ F \] - множество всех выбранных ребер. Тогда \[ M\cup F \] - реберное покрытие и \[ |M\cup F|=n-\pi (G) \] , следовательно, \[ \rho (G)\le n-\pi (G) \] .
Обратно, пусть \[ C \] - наименьшее реберное покрытие графа \[ G \] . Рассмотрим подграф \[ H \] графа \[ G \] , образованный ребрами этого покрытия. В графе \[ H \] один из концов каждого ребра является вершиной степени 1 (ребро, каждая вершина которого инцидентна, по крайней мере, еще одному ребру, можно было бы удалить из \[ C \] , и оставшиеся ребра по-прежнему покрывали бы все вершины). Отсюда следует, что каждая компонента связности графа \[ H \] является звездой (звезда - это дерево, у которого не более одной вершины степени больше 1). Так как в любом лесе сумма количеств ребер и компонент связности равна числу вершин, то число компонент связности в графе \[ H \] равно \[ n-\rho(G) \] . Выбрав по одному ребру из каждой компоненты, получим паросочетание. Отсюда следует, что \[ \pi (G)\ge n-\rho (G) \] .
Несмотря на такое сходство между "вершинными" и "реберными" вариантами независимых множеств и покрытий, имеется кардинальное различие в сложности соответствующих экстремальных задач. "Вершинные" задачи, как уже отмечалось, являются NP-полными. Для реберных же известны полиномиальные алгоритмы. Они основаны на методе чередующихся путей, к рассмотрению которого мы теперь переходим. Отметим только еще, что ситуация похожа на ту, что наблюдается для задач об эйлеровом и гамильтоновом циклах - реберный вариант эффективно решается, а вершинный является NP-полным.