- •Оглавление
- •Введение
- •Комбинаторика в задачах
- •Основной принцип комбинаторики
- •Размещения с повторениями
- •Размещения без повторений
- •Перестановки
- •Сочетания (без повторений)
- •Свойства биномиальных коэффициентов
- •Разбиения множеств
- •Сочетания с повторениями
- •Разные задачи
- •Производящие функции
- •Использование рекуррентных соотношений
- •Формула включений и исключений
- •Комбинаторные величины при больших значениях параметров
- •Множества и функции
- •Множества и простейшие операции над ними
- •Булеан множества
- •Прямое произведение множеств
- •Отношения на множествах
- •Отображения (функции)
- •Мощность множеств
- •Счетные множества
- •Некоторые свойства бесконечных множеств
- •Вопросы для самопроверки
- •Упражнения
- •Основы теории графов
- •Основные понятия
- •Компьютерные представления графов
- •Маршруты и связность
- •Кратчайшие пути в графах
- •Деревья
- •Кодирование деревьев
- •Центр дерева
- •Минимальное остовное дерево (остов)
- •Эйлеровы графы
- •Гамильтоновы графы
- •Графовые векторы
- •Паросочетания и реберные покрытия
- •Паросочетания в двудольных графах
- •Правильная нумерация вершин графа
- •Сетевые графики
- •Потоки в сетях
- •Вопросы для самопроверки
- •Упражнения
- •Рекомендуемая литература
- •Предметный указатель
Паросочетания и реберные покрытия
ОПРЕДЕЛЕНИЕ 30. Паросочетанием в неориентированном графе называется семейство дуг, попарно не имеющих общих вершин.
Очевидно, что подмножество паросочетания также является паросочетанием. Паросочетание называется максимальным, если оно состоит из максимально возможного числа дуг. Число дуг в максимальном паросочетании обозначим через (Г).
ОПРЕДЕЛЕНИЕ 31. Семейство дуг (ребер) в неориентированном графе без изолированных вершин называется реберным покрытием, если каждая вершина графа инцидентна хотя бы одной из дуг этого семейства.
Расширение реберного покрытия также является реберным покрытием. Реберное покрытие называется минимальным, если оно содержит минимально возможное число дуг. Число дуг в таком покрытии обозначим через (Г).
Между двумя введенными величинами существует тесная связь.
Теорема 24. Для неориентированного графа Г без изолированных вершин справедливо равенство (Г)+(Г)=p, где p как и прежде число вершин Г.
Доказательство. 1. Рассмотрим какое-нибудь максимальное паросочетание. Поскольку все его дуги инцидентны разным вершинам, то число вершин, не инцидентных дугам этого паросочетания, равно p2(Г). Выберем по одной дуге для каждой из этих вершин (они все разные, иначе паросочетание можно было бы расширить) и добавим к нему выбранное максимальное паросочетание. Тем самым, образовано реберное покрытие, в котором (Г)+(p2(Г))=p(Г) дуг. Отсюда, (Г)≤p(Г), т.е. (Г)+ (Г)≤p.
2. Выберем
теперь какое-нибудь минимальное реберное
покрытие. Соответствующий подграф
является остовным. Если u
– вершина
этого подграфа со степенью, большей 1,
то смежные с ней вершины имеют степень
1. Действительно, если бы в подграфе
существовала цепь a-(a,b)-b-(b,c)-c-(c,d)-d,
то после удаления дуги (b,c)
получили бы реберное покрытие исходного
графа с меньшим числом дуг, что
противоречит минимальности избранного
реберного покрытия. Тем самым, этот
подграф состоит из нескольких связных
компонент, у каждой из которых одна
вершина может иметь степень, большую
1, а остальные имеют степень 1 (компоненты
типа солнца). Выбрав из каждой компоненты
по одной дуге, получим паросочетание.
Пусть число этих компонент равно k,
причем в i-й
компоненте pi
вершин. Поскольку каждая компонента
дерево, число дуг в i-й
компоненте равно pi1.
А тогда (Г)=
.
В построенном паросочетании число дуг
равно k,
т.е. (Г)k,
откуда
(Г)+(Г)p.
Из
двух полученных неравенств следует
утверждение теоремы.
Заметим, что в доказательстве теоремы фактически изложены способы построения максимального паросочетания по минимальному реберному покрытию и минимального реберного покрытия по максимальному паросочетанию.
Паросочетания в двудольных графах
Двудольные графы упоминались ранее, но формального определения не было.
ОПРЕДЕЛЕНИЕ 32. Граф Г называется двудольным, если множество его вершин является объединением двух непересекающихся множеств A и B таких, что никакие две вершины из каждого из этих множеств не являются смежными.
Таким образом, смежными в двудольном графе могут быть только вершины из разных множеств.
Рассматриваются и аналоги таких графов, в которых число «долей» больше двух, здесь мы такие графы не рассматриваем.
Приведем две ситуации, приводящие к подобным графам.
Задача о назначениях. Одно из множеств вершин это должности, втрое – претенденты. Наличие дуги означает, что претендента на должность можно рекомендовать. При этом на одну должность можно рекомендовать нескольких претендентов, а одному претенденту может подходить несколько должностей.
Задача о свадьбах. Одно из множеств вершин это невесты, другое – женихи.
Паросочетание в этих примерах можно интерпретировать как способ выбрать претендентов на должности или подобрать потенциальные семейные пары.
Особый интерес представляют графы, в которых |A|=|B|, т.е. когда в приведенных примерах претендентов столько же, сколько и должностей, а женихов столько же, сколько и невест. В случае |A|=|B| можно поставить вопрос о возможности замещения всех вакансий или подбора подходящих женихов для всех невест (разумеется, и наоборот). Паросочетание в двудольном графе при |A|=|B|=n, содержащее n дуг, естественно назвать полным. Полное паросочетание одновременно является и минимальным реберным покрытием. Следующая замечательная теорема является критерием существования полного паросочетания. Пусть A1A. Через Г(A1) обозначим множество вершин, смежных с вершинами из A1. Разумеется, Г(A1)B.
Теорема 25. (Холл) Полное паросочетание в двудольном графе, у которого |A|=|B|, существует тогда и только тогда, когда для любого множества вершин A1A выполняется неравенство |A1|≤|Г(A1)|.
В примере с женихами и невестами это означает, что для любой группы невест число женихов, подходящих хотя бы одной из этих невест, не меньше числа невест в группе. Далее будем говорить о женихах и невестах – так веселее, чем просто о множествах!
Доказательство. Если полное паросочетание существует, то любой группе невест соответствуют как минимум те женихи, которые инцидентны дугам паросочетания (а может быть и еще какие-нибудь), т.е. подходящих женихов не меньше, чем невест в группе. Таким образом, условие выполняется.
Обратное будем доказывать индукцией по числу невест (n). Если n=1, то единственной невесте подходит как минимум один жених, а жених при этом всего один и полное паросочетание существует.
Пусть полное паросочетание при выполнении условия теоремы существует при 1,…,n. Докажем, что это так и при n+1.
Рассмотрим вначале ситуацию, когда существует множество AA, AA такое, что |A|=|Г(A)|, т.е. есть группа невест, которым в совокупности подходят ровно столько женихов, сколько невест в группе. Пусть B=Г(A). Поскольку Г(A1)B при A1A, то подграф, порожденный множеством вершин AB, обладает нужным свойствам, причем число вершин в каждой «доле» не превосходит n. По предположению индукции, каждой невесте из A можно подобрать жениха (естественно, из Г(A)). Пусть A=A\A, B=B\B. Если бы выполнялось условие Г(A)=B, то можно было бы действовать точно так же, как и с множеством A, но может оказаться, что невестам из A подходят и некоторые женихи из B. Но оказывается все равно для двудольного подграфа исходного графа, порожденного множеством вершин AB условие теоремы соблюдается. Пусть A1A. Множество Г(A1) распадается на два подмножества: B1=Г(A1)B, B1=Г(A1)B. Необходимо доказать, что |B1||A1|. Для этого рассмотрим более широкое множество A1A. По условию |A1A|≤|Г(A1A)|. Поскольку
Г(A1A)=Г(A1)Г(A)=BB1 и множества в правой части (как и A1, A) не пересекаются, то |A1|+|A|≤|B|+|B1|. Но по предположению |A|=|B|, откуда и следует нужное неравенство.
Пусть теперь |A|<|Г(A)| для любого AA, AA. Выберем любую невесту. Ей подходит более одного жениха. Удалим эту невесту вместе с любым подходящим ей женихом. В каждой «доле» оставшегося двудольного графа по n элементов. Пусть A1A и в это множество не входит невеста, которую мы исключили из рассмотрения (успешно выдали замуж). По предположению, этой группе невест в исходном двудольном графе подходит больше женихов, чем невест в группе. Возможно, сюда входит и исключенный жених. Тогда без него число подходящих женихов не меньше, чем число невест в A1, т.е. для оставшегося двудольного графа (с меньшим числом вершин) условие теоремы выполняется, т.е. полное паросочетание в «усеченном» двудольном графе существует, что и завершает доказательство.
Теорема Холла, несмотря на ее элегантность, трудно применима к реальной проверке существования полного паросочетания на практике и тем более к его построению. Разработано множество алгоритмов построения паросочетания (или проверки его отсутствия). Одним из методов является поиск с возвращением. Для этого удобно двудольный граф записать в виде таблицы размеров nn, в которой отмечены клетки, соответствующие дугам.
