30.2. Побудова всіх максимальних незалежних множин вершин у простому графі
Із теореми 30.2 випливає, що побудову максимальної кліки можна звести до побудови максимальної незалежної множини вершин. Один із методів побудови такої множини ґрунтується на застосуванні бектрекінгу. Розглянемо його. Нехай маємо граф G= (V,E), який подано відповідністю Г, котра показує, як зв’язані між собою вершини (див. лекцію 21).
Почнемо з порожньої множини й будемо додавати до неї вершини зі збереженням незалежності. Нехай Sk – уже отримана множина з k вершин, Qk – множина вершин, котрі можна додати до Sk, тобто Sk Г(Qk) = . Серед вершин Qk розрізняють ті, котрі вже було використано для розширення Sk (їх позначають Qk), і ті, котрі ще не використано (їх позначають Q+k). Загальна схема алгоритму бектрекінг для задачі побудови максимальних незалежних множин вершин у простому графі має такий вигляд.
Прямий крок від k до k+1 полягає у виборі вершини xQ+k:
Sk+1 = Sk {x};
Qk+1 = Qk \ Г(x);
Q+k+1 = Q+k \ (Г(x) {x}).
Крок повернення від k+1 до k:
Sk = Sk+1 \ {x};
Q+k = Q+k \ {x};
Qk+1 = Qk {x}.
Якщо множина вершин Sk максимальна, то Q+k = . Якщо Q+k , то множину Sk було розширено раніше, і вона не максимальна. Отже, перевірку максимальності задають такою умовою: Q+k = Qk = .
Доцільно намагатися почати кроки повернення якомога раніше, бо це обмежить розміри «непотрібної» частини дерева пошуку. У зв’язку з цим зауважимо таке. Нехай vQk і Г(v)Q+k=. Цю вершину неможливо вилучити з Qk, оскільки можна вилучити лише вершини, суміжні з вершинами множини Q+k. Отже, існування такої вершини v, що vQk і Г(v)Q+k = - достатня умова для повернення. Окрім того, k n1.
30.3. Паросполучення в графах. Теорема Холла
Означення 30.7. Паросполученням або незалежною множиною ребер у простому графі G= (V,E) називають множину ребер, у якій ніякі два ребра не суміжні. Паросполучення графа G називають максимальним, якщо воно не міститься в жодному паросполученні з більшою кількістю ребер, і найбільшим, якщо кількість ребер у ньому найбільша серед усіх парасполучень графа G.
Теорема Холла має багато різних застосувань, дві з яких ми розглянемо перед тим, як сформулювати цю теорему.
Задача про весілля. Розглянемо множину юнаків, кожний з яких знайомий із кількома дівчатами (табл. 30.1). Потрібно визначити умови, за яких кожен з юнаків міг би одружитися зі знайомою йому дівчиною.
|
Юнак |
Дівчата, з якими знайомий юнак |
|
b1 |
g1, g4, g5 |
|
b2 |
g1 |
|
b3 |
g2, g3, g4 |
|
b4 |
g2, g4 |
Табл. 30.1.
Досконале паросполучення. Нехай граф G= (V,E) – дводольний граф (V=V1V2,V1V2=, кінці ребер належать різним множинам V1, V2). Досконалим паросполученням із V1уV2називають паросполучення, яке покриває вершини V1 (тобто всі вершини з V1 інцидентні ребрам, що утворюють паросполучення). За яких умов існує досконале паросполучення з V1уV2?
Можна довести, що задачі 1 та 2 – це по суті, одна й та сама задача. Нехай V1 – множина юнаків, V2 – множина дівчат; ребра — знайомства юнаків із дівчатами (рис. 30.2). У такому разі досконале паросполучення у дводольному графі — це шукана множина весіль (один із можливих розв'язків на рисунку зображено потовщеними лініями).

Рис. 30.2.
Теорема 30.3 (Холла). Нехай G= (V,E) – дводольний граф, V=V1V2. Досконале паросполучення з V1уV2 існує тоді й тільки тоді, коли для кожної множини А V1 виконується умова |A||Г(А)|.
Доведення. Необхідність. Нехай існує досконале паросполучення з V1уV2. Тоді множина Г(А) містить |A| вершин із V2, які відповідають вершинам з А у цьому паросполученні, і, можливо, ще якісь вершини з V2. Отже, |A||Г(А)|.
Достатність. Застосуємо індукцію за кількістю вершин у множині V1. Нехай |V1| = m > 0. У разі m = 1 єдина вершина з V1 інцидентна принаймні одному ребру. Це ребро і являє собою потрібне паросполучення. Нехай m>1 й теорема справджується для графів, у яких |V1|<m. Окремо розглянемо два можливі випадки.
Випадок 1. Для кожної підмножини
А V1,AV1
виконується строга нерівність
|A| < |ГG(А)|.
Тут і далі в доведенні індекс біля Г
показує, якого графа стосується
позначення. Виберемо в графі G
довільне ребро {х,
у}. Розглянемограф
,
одержаний із графаG
вилученням вершин х
та
у
і
ребер, які інцидентні
цим вершинам:
.
.
Отриманий
граф
дводольний, причому
.
Нехай
довільна
підмножина множини
.
Оскільки
,
а з множиниV2
вилучено
лише одну вершину, то
.
За індуктивним припущенням у графі
існує
паросполучення М,
яке
покриває
.
Додамо
до паросполучення М
ребро
{х,у}
і
одержимо потрібне паросполучення в
графі G.
Випадок 2. У множині V1
існує така підмножина А0
V1, А0
V1, що
.
Позначимо B=A0ГG(A0),
і нехай H1таH2
— підграфи графа G,
породженівідповідно
множинами вершин В
та
V\В.
Розглянемо
спочатку підграф H1.
Для будь-якої множини А
A0маємо
;
отже,
.
Тому за індуктивним припущенням в H1,
існує паросполучення,
яке покриває множинуA0.
Тепер розглянемо підграф H2. Для будь-якої підмножини А V1 \ A0
.
З
урахуванням рівності
одержимо, що
,
і за припущенням індукції
в графі H2
існує паросполучення, яке покриває
множину V1
\ A0.
Об'єднаємо
його з паросполученням, яке покриває
множину A0,
й
отримаємо паросполучення,
що покриває всю множину V1.
►
