
- •2. Алгоритмы построения деревьев
- •2.1. Неориентированные покрывающие деревья
- •2.2.Алгоритм построения максимального ориентированного леса
- •3. Алгоритмы поиска путей
- •3.1. Алгоритм поиска кратчайшего пути
- •3.2. Алгоритмы поиска всех кратчайших путей.
- •3.3. Алгоритмы поиска k кратчайших путей
- •4. Потоковые алгоритмы
- •4.1. Определения
- •4.2. Алгоритм поиска увеличивающей цепи
- •4.4. Алгоритм поиска потока минимальной стоимости
- •4.5. Алгоритм поиска максимального динамического потока
- •5. Паросочетания и покрытия
- •5.1. Понятия и определения
- •5.2. Алгоритм решения задачи о паросочетании максимальной мощности
- •5.3. Алгоритм выбора паросочетания максимального веса
- •6. Задача почтальона
- •6.1. Введение
- •6.4. Задача почтальона для смешанного графа
- •7. Сетевые графики. Метод критического пути
- •Контрольные вопросы
- •I. Организационно-методический раздел
- •4. Перечень контрольных вопросов и заданий для самостоятельной работы
- •4. Примерный перечень вопросов к экзамену и зачёту
- •III. Распределение часов курса по темам и видам работ
5. Паросочетания и покрытия
5.1. Понятия и определения
Паросочетанием графа называется некоторое множество его дуг, такое, что каждая вершина графа инцидентна не более чем одной дуге этого множества.
Вершина и дуга инцидентны друг другу, если вершина является для этой дуги конечной или начальной.
Покрытием графа называется некоторое множество его дуг, такое, что каждая вершина графа инцидентна, по крайней мере, одной дуге этого множества.
Заметим, что определения паросочетания и покрытия не содержат упоминания об ориентации дуг. То есть всё изложенное в разд. 5 применимо как для ориентированного, так и для неориентированного графа, поэтому термины “дуга” и “ребро” равно допустимы.
Например, на рис. 5.1 множества {α,γ}, {β,δ}, {γ,ε} являются паросочетаниями а {α,γ,δ}, {β,δ, ε}, {α,ε,δ} – покрытиями.
Рис. 5.1.
Очевидно, что любое подмножество паросочетания графа также является его паросочетанием, а любое множество дуг, включающее в качестве подмножества покрытие графа, является покрытием этого графа.
Мощность паросочетания или покрытия – это число составляющих его дуг.
Вес паросочетания или покрытия – это сумма весов дуг, его составляющих.
Среди задач о паросочетаниях и покрытиях распространёнными являются:
Задача о паросочетании максимальной мощности.
Задача о паросочетании с максимальным весом.
Задача о покрытии минимальной мощности.
Задача о покрытии с минимальным весом.
Кроме них существуют задачи:
Задача о паросочетании минимальной мощности. Очевидно, что это паросочетание мощности 0, т.е. не содержащее дуг.
Задача о паросочетании с минимальным весом. Если все дуги графа неотрицательных весов, то паросочетание нулевой мощности является и паросочетанием с минимальным весом. Если есть дуги отрицательных весов, то, исключив дуги положительных весов, изменив веса оставшихся дуг на противоположные и решив на изменённом графе задачу о паросочетании с максимальным весом, получим паросочетание с минимальным весом на исходном графе.
Задача о покрытии максимальной мощности. Очевидно, что это множество всех дуг графа. Заметим, что если в графе присутствует хотя бы одна изолированная вершина, то задача о покрытии максимальной мощности неразрешима.
Задача о покрытии с максимальным весом. Если в графе множество всех дуг положительных весов является покрытием, то это покрытие с максимальным весом. Если же эти дуги не составляют покрытия, то на множестве дуг с неположительными весами, сменив знаки их весов, ищется покрытие минимального веса. Объединение этого покрытия с множеством всех дуг положительных весов и является покрытием с максимальным весом.
Решение задачи о паросочетании максимальной мощности даёт решение задачи о покрытии минимальной мощности.
Построение 1. (От паросочетания к покрытию.) Пусть М – произвольное паросочетание. Выберем произвольную вершину v , не инцидентную ни одной из дуг М. Присоединим к М любую дугу, инцидентную v. Повторим эту процедуру до покрытия всех вершин, в результате получим некоторое покрытие С/.
Построение 2. (От покрытия к паросочетанию.) Пусть С – произвольное покрытие. Пусть v – произвольная вершина, инцидентная более чем одной дуге С. Исключим из С любую дугу, инцидентную v. Повторим эту процедуру, пока не останется вершин, инцидентных более чем одной дуге. В результате получим некоторое паросочетание М/.
Теорема. Если М – паросочетание максимальной мощности, то С/ – покрытие минимальной мощности. Если С – покрытие минимальной мощности, то М/ – паросочетание максимальной мощности.
Доказательство. Из построений следуют следующие соотношения:
|С/| = |М| + (|X| – 2|М|) = |X| – |М|,
|М/| = |С| + (2|С| – |X|) = |X| – |С|, где |X| – число вершин графа.
Следовательно |М| +|С/| = |X| и |С| + |М/| = |X|.
Предположим, что С/ не является покрытием минимальной мощности. Тогда существует полученное из С с помощью построения 2 паросочетание, имеющее мощность, большую, чем мощность М, а это противоречит предположению, что М – паросочетание максимальной мощности. Аналогично, если М/ не является паросочетанием максимальной мощности, то существует полученное из М с помощью построения 1 покрытие меньшей мощности, чем С, а это противоречит тому, что С – покрытие минимальной мощности.
Таким образом, задачи о паросочетании максимальной мощности и о покрытии минимальной мощности эквивалентны.