Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Графы Конспект и задачник.doc
Скачиваний:
27
Добавлен:
16.11.2019
Размер:
2.5 Mб
Скачать

7. Паросочетания Паросочетания и реберные покрытия

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

Между задачами о паросочетании и о реберном покрытии имеется тесная связь, подобно связи между задачами о независимом множестве (паросочетание называют иногда независимым множеством ребер) и о вершинном покрытии. Количественно эта связь выражается следующим образом.

Теорема 1. Для любого графа G с n вершинами, не имеющего изолированных вершин, справедливо равенство .

Из решения одной задачи легко получить решение другой. Пусть М – наибольшее паросочетание в графе G, не имеющем изолированных вершин. Для каждой вершины, не принадлежащей никакому ребру паросочетания, выберем какое-нибудь ребро, инцидентное этой вершине и добавим все выбранные ребра к множеству М. Полученное множество ребер будет наименьшим реберным покрытием. Обратно, пусть C – наименьшее реберное покрытие графа G. Тогда в подграфе, образованном ребрами этого покрытия, каждая компонента связности является звездой (звезда – полный двудольный граф, у которого одна доля состоит из одной вершины). Выбрав по одному ребру из каждой компоненты, получим наибольшее паросочетание.

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

Метод увеличивающих путей

Пусть G – граф, М – некоторое паросочетание в нем. Ребра паросочетания будем называть сильными, остальные ребра графа – слабыми. Вершину назовем свободной, если она не принадлежит ребру паросочетания. Чередующимся путем относительно данного паросочетания называется простой путь, в котором чередуются сильные и слабые ребра (т.е. за сильным ребром следует слабое, за слабым – сильное). Чередующийся путь называется увеличивающим путем, если он соединяет две свободные вершины. Если имеется увеличивающий путь относительно данного паросочетания, то можно построить большее паросочетание – нужно вдоль этого пути превратить слабые ребра в сильные, а сильные в слабые. Эту операцию назовем инверсией. В результате инверсии мощность паросочетания увеличивается на 1.

Теорема об увеличивающем пути. Паросочетание является наибольшим тогда и только тогда, когда относительно него нет увеличивающих путей.

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