
- •Практикум по дискретной математике.
- •Содержание.
- •Введение.
- •1. Элементы математической логики. Логика высказываний.
- •1.1. Основные определения.
- •1.2. Разложение логических (булевых) функций по переменным. Дизъюнктивная и конъюнктивная нормальные формы.
- •1.3. Логические законы.
- •2. Множества и отношения.
- •2.1. Множества и операции над ними. Связь с логикой высказываний.
- •Доказать тождества:
- •2.2. Отношения на множествах. Бинарные отношения.
- •2.3. Однородные отношения.
- •2.4. Функции как специальный вид отношений.
- •2.5. Алгебраические системы. Алгебра множеств и булева алгебра.
- •3. Теория графов.
- •3.1. Основные понятия теории графов.
- •3.2. Представление графов в эвм.
- •1. Представление матрицей смежности.
- •3.3. Изоморфизм графов.
- •3.4. Подграфы и части. Операции над графами.
- •3.5. Методы обхода (просмотра) вершин графов.
- •3.6. Маршруты, цепи, циклы. Связность и достижимость.
- •3.7. Вершинная и реберная связность графов. Мосты, блоки и точки сочленения.
- •3.8. Двудольные графы. Паросочетания.
- •3.9. Алгоритмы расчета кратчайших путей между вершинами графа.
- •3.10. Деревья и леса.
- •3.11. Специальные виды деревьев.
- •3.12. Сети. Потоки в сетях.
- •3.13. Элементы цикломатики. Циклы и коциклы. Фундаментальная система циклов и цикломатическое число.
- •3.14. Эйлеровы графы и эйлеровы циклы.
- •3.15. Гамильтоновы графы и гамильтоновы циклы.
- •3.16. Независимые и покрывающие множества. Задачи о раскраске.
3.8. Двудольные графы. Паросочетания.
Рассмотрим задачу о назначениях на работу. Пусть имеется n вакансий и m претендентов на эти вакансии, каждый из которых может выполнять определенное количество работ. Для определенности пусть m>n, иначе мы все вакансии ни при каких условиях не заполним.
Рассмотрим
граф G,
который отображает такую ситуацию
(рис.3.12). Обозначим множество кандидатов
– V2,
|V2|=m,
множество вакансий – V1,
|V1|=n.
Ребро
e=(vi,vj)
, viV1,
vjV2
означает, что кандидат vj
по своей
квалификации может претендовать на
вакансию vi.
Определение. Граф G называется двудольным, если существуют подмножества V1,V2, V1V2=, V1V2=V, и ребро e=(vi,vj) существует, только если viV1, vjV2. То есть концевыми вершинами ребра обязательно являются представители разных множеств.
Мы уже упоминали такую конструкцию, когда говорили об операции соединения графов. Она получается в результате соединения двух нуль-графов. Но там был полный двудольный граф, который мы обозначали Km,n. Произвольный двудольный граф обозначается G(V1,V2,E).
Двудольные графы обладают одним важным свойством, которое нам еще понадобится в будущем.
Теорема. В двудольном графе все циклы имеют четную длину.
Доказательство очень простое. Если мы начинаем обход цикла из одной доли и заканчиваем в ней, а ребер внутри доли нет, то каждый переход между вершинами одной доли требует выхода в другую долю и возвращения в исходную. То есть для каждого перехода нужна пара ребер, что и означает четность цикла.
Для графа, содержащего циклы, четность всех циклов – необходимое и достаточное условие его «двудольности». Про графы без циклов – деревья - мы поговорим отдельно.
Теперь введем еще одно определение, касающееся задачи о назначениях на работу.
Определение. Паросочетанием (или независимым множеством ребер) называется такое подмножество E’E, в котором никакие два ребра не смежны. Совершенным паросочетанием из V2 в V1 называется паросочетание, покрывающее все вершины из V1 (в общем случае все вершины минимального из пары множеств V1,V2).
Задачу о назначениях на работу тогда можно поставить так: существует ли совершенное паросочетание из V2 в V1?
Ответ на этот вопрос дает теорема Холла.
Сначала введем еще одно необходимое понятие.
Определение. Множество вершин, смежных с вершиной vi, называется множеством смежности этой вершины и обозначается Г+(vi). Если множество смежности включает и саму вершину vi, то его обзначают Г(vi)= Г+(vi){vi}. Для некоторого подмножества вершин A множеством смежности Г(А) будет объединение Г+(vi) по всем viA.
Теорема Холла. Пусть G(V1,V2,E) – двудольный граф. Совершенное паросочетание из V2 в V1 существует тогда и только тогда, когда AV1 |A||Г(A)|.
Доказательство. Необходимость очевидна. Если совершенное паросочетание существует, то, по самому определению такового, каждая вершина из V1 связана, как минимум, с одной вершиной из V2. , и любое их объединение дает требуемое соотношение |A||Г(A)|.
Достаточность. Пусть теперь известно, что |A||Г(A)|. Это означает, что каждая вершина из V1 связана хотя бы с одной вершиной из V2, так как множество A может состоять и из одной вершины. Покажем теперь, что в этом случае существует совершенное паросочетание из V2 в V1 .
. Сделаем дополнительное построение. Стянем вершины из V1 к вершине u, а вершины из V2 – к вершине v. Рассмотрим все пути между вершинами u и v. Ясно, что если каждая вершина из V1 связана хотя бы с одной вершиной из V2, то через нее проходит какая-то цепь S(u,v). Но нас интересуют только несмежные ребра, следовательно, вершинно непересекающиеся простые цепи. Максимальное число таких цепей по теореме Менгера равно мощности минимального разделяющего множества вершин. По построению V1 является для u и v разделяющим множеством вершин. Покажем теперь, что оно является минимальным. Если бы это было не так, то существовала бы цепь S’, проходящая мимо множества V1 (рис.3.13), что противоречит нашему исходному построению.
Значит, V1 минимально. Итак, мы имеем | V1| вершинно непересекающихся простых цепей, каждая из которых проходит через какое-то из ребер множества E, причем это ребро не имеет смежных ребер. Это и означает существование совершенного паросочетания.
В качестве примера на применение теоремы Холла выясним, существует ли совершенное паросочетание в следующем двудольном графе:
1) 6,7; 2) 6,7; 3) 6,7; 4) 6,7,8,9; 5) 8,9,10; 6) 1,3,4; 7)1,2,3,4; 8) 4,5; 9) 4,5; 10) 5 .
Д
иаграмма
этого графа будет выглядеть так, как
показано на рис. 3.14. Вершины 1-5 отнесем
к множеству V1,
вершины 6-7 к множеству V2.
По условию теоремы для существования
совершенного паросочетания любая
комбинация вершин из множества V1
должна быть
связана с не меньшим количеством вершин
из множества V2.
В данном случае это не выполняется для
вершин{1,2,3} из V1.
То есть совершенного паросочетания из
V1
в V2
не существует. Аналогично можно убедиться,
что не существует совершенного
паросочетания и из
V2
в V1,
рассмотрев подмножество {8,9,10} из множества
V2.
Упражнения.
Есть ли среди графов, заданных следующими списками смежности, двудольные? Объясните решение.
1. 1) 2,5,8; 2) 1,3,6; 3) 2,4,7; 4) 3,5,8; 5) 1,4,6; 6) 2,5,7; 7) 3,6,8; 8) 1,4,7.
2. 1) 2,6,8; 2) 1,3,5; 3) 2,4,8; 4) 3,5,7; 5) 2,4,6; 6) 1,5,7; 7) 4,6,8; 8) 1,3,7.
3. 1) 2,4,8; 2) 1,3,5,7; 3) 2,4,6,8; 4) 1,3,5,7; 5) 2,4,6,8; 6) 3,5,7; 7) 2,4,6,8; 8) 1,3,5,7.
Проверьте существование совершенного паросочетания для следующих двудольных графов, заданных списком смежности множества V1.
1. 1) 7,9; 2) 7,8,9; 3) 7,8; 4) 9,10,11; 5) 10,12; 6) 11,12.
2. 1) 7,8; 2)7,9; 3) 8,10; 4) 9,11; 5) 10,12; 6) 11.
3. 1) 7,8; 2) 7,8; 3) 7,8,10; 4) 8,10; 5) 9,10,11; 6) 10,12.