Лекція 7. Основи теорії графів
Огляд
Граф — це математична модель сукупності об’єктів разом із попарними зв’язками між ними. Об’єкти малюють крапками, зв’язки — лініями, і саме тому графи належать до найнаочніших і водночас найуніверсальніших структур дискретної математики. Комп’ютерні мережі, схеми доріг, структура посилань між веб-сторінками, молекули, діаграми залежностей між задачами, соціальні мережі, а у нашому фаху — схема перетікань між сторінками макета, граф суміжності кольорів у растрі чи з’єднань на друкованій платі — усе це природно описується графами.
Тема спирається на дві попередні. Граф ми означимо як пару множин — отже, уся мова Лекції 1 (множини, підмножини, потужність) працює тут безпосередньо. А ребро — це, по суті, симетричне відношення на множині вершин, тож властивості відношень із Лекції 2 (рефлексивність, симетричність, транзитивність, класи еквівалентності) знадобляться, коли ми означуватимемо зв’язність. Конкретні алгоритми на графах — пошук найкоротшого шляху (Дейкстра), мінімальне остовне дерево (Прим, Крускал), транспортні мережі — винесено в наступну Лекцію 8; тут ми будуємо лише мову та теорію.
У цьому розділі ми: означуємо граф і орієнтований граф, фіксуємо базову термінологію (суміжність, інцидентність, степінь, петля, кратні ребра); доводимо лему про рукостискання та її наслідок про парність; будуємо два числові подання графа (матриці суміжності й інцидентності); додаємо ваги; формалізуємо рух графом (маршрут, ланцюг, простий ланцюг, цикл) і зв’язність; і, нарешті, розглядаємо три структурні питання — коли два графи однакові (ізоморфізм), коли граф можна намалювати без перетинів (планарність, теорема Понтрягіна–Куратовського) і скільки фарб потрібно для його розфарбування (хроматичне число та хроматичний клас ). Завершуємо деревами й лісами.
Про строгість. Майже кожне твердження нижче — лема про рукостискання, наслідок про парність, формула Ейлера, непланарність і , формула для дерев — оформлене як теорема й доведене, а не просто проголошене. Читайте доведення активно: означення — лише абетка, а справжній зміст курсу — навчитися доводити твердження про дискретні структури.
Наскрізь у лекції ми користуємося одним робочим прикладом:

7.1 Граф: означення та перше знайомство
Історична довідка (Кенігсберзькі мости). Теорія графів має точну дату народження. 1736 року Леонард Ейлер розв’язав головоломку про пруське місто Кенігсберг (нині Калінінград), розділене річкою Прегель на береги й два острови, з’єднані сімома мостами: чи можна прогулятися так, щоб перейти кожен міст рівно один раз і повернутися додому? Ейлерова ідея — відкинути всю геометрію: кожна ділянка суходолу стає вершиною, кожен міст — ребром. Питання перетворюється на суто комбінаторне. Систематичну відповідь (умову існування такого обходу) ми одержимо в Лекції 8; тут Кенігсберг лише пояснює, чому степені вершин та їхня парність варто вивчати так уважно.
Означення (граф). Граф складається зі скінченної непорожньої множини , елементи якої називають вершинами (вузлами), і множини , елементи якої називають ребрами. Кожне ребро сполучає невпорядковану пару вершин; ребро між і позначають або . Оскільки пара невпорядкована, і — те саме ребро.
Число вершин називають порядком графа, число ребер — його розміром. Увесь граф міститься в парі ; малюнок — лише зручність для людини. Той самий граф має нескінченно багато різних малюнків (це уточнить §7.10, ізоморфізм): важливо чи сполучені дві вершини, а не наскільки довгою чи вигнутою намальовано лінію (доки ми не додамо ваги в §7.7).
Означення (простий граф, мультиграф). Граф простий, якщо він не має ні петель, ні паралельних ребер (обидва поняття означено в §7.2); тоді — множина двоелементних підмножин . Граф, що допускає паралельні ребра (тобто — мультимножина), називають мультиграфом. Якщо не вказано інше, під «графом» розуміємо простий граф.
Приклад 7.1. У робочому графі маємо і . Вершини і сполучені ребром (), а вершини і — ні (). Граф простий: петель і кратних ребер немає.
7.2 Суміжність, інцидентність та інші базові поняття
Зафіксуймо граф .
- Суміжність вершин. Дві вершини суміжні (є сусідами), якщо . Множину сусідів вершини називають її околом .
- Інцидентність. Вершина та ребро інцидентні, якщо — один із двох кінців ребра . Два ребра суміжні, якщо мають спільний кінець.
- Петля. Петля — це ребро, що сполучає вершину саму з собою (ребро ). У простих графах петель немає.
- Паралельні (кратні) ребра. Два або більше ребер, що сполучають ту саму пару вершин, називають паралельними (кратними). Прості графи їх не мають, мультиграфи можуть.
- Ізольована вершина. Вершина, з якою не інцидентне жодне ребро (сусідів немає).

Приклад 7.2. На рисунку вгорі вершина має петлю; вершини і сполучені двома паралельними ребрами; вершини і суміжні (сполучені одним ребром); вершина — ізольована. Такий об’єкт уже не простий граф, а мультиграф.
Зауваження (як петлі впливатимуть на лічбу). Петля інцидентна своїй вершині двома кінцями. Тому в §7.3 вона рахуватиметься у степені двічі — це не примха, а рівно те, що зберігає істинність леми про рукостискання. У простих графах питання не виникає, бо петель немає.
7.3 Степінь вершини. Лема про рукостискання
Найважливіша локальна характеристика вершини — скільки ребер із неї виходить.
Означення (степінь вершини). Степінь вершини — це кількість інцидентних їй ребер, причому петля рахується двічі. Вершину степеня називають ізольованою, а вершину степеня — висячою (листком). У простому графі .
Позначають (максимальний степінь) і (мінімальний). Граф -регулярний, якщо всі вершини мають однаковий степінь . Список степенів усіх вершин, зазвичай записаний у незростаючому порядку, називають степеневою послідовністю.
Приклад 7.3 (степені в ). Порахуймо степені робочого графа:
| вершина | інцидентні ребра | |
|---|---|---|
Степенева послідовність — ; її сума дорівнює . Це не випадковість, а вияв фундаментальної теореми.
Теорема 7.4 (лема про рукостискання). У будь-якому графі (простому чи мультиграфі)
Доведення (подвійна лічба). Порахуймо двома способами множину інцидентностей
Лічба за вершинами. Згрупуймо пари за першою координатою. Фіксована вершина входить рівно у пар — по одній на кожне інцидентне ребро (петля дає дві пари, відповідно до угоди «рахується двічі»). Отже, . Лічба за ребрами. Згрупуймо пари за другою координатою. Фіксоване ребро має рівно два кінці, тож входить рівно у дві пари. Отже, . Прирівнявши два вирази для однієї величини , дістаємо .
Формулюють це й «за вечіркою»: сумарна кількість потиснутих рук удвічі більша за кількість рукостискань, бо кожне рукостискання задіює дві руки. Найкорисніший наслідок — твердження про парність.
Наслідок 7.5 (про вершини непарного степеня). У будь-якому графі кількість вершин непарного степеня парна.
Доведення. Розіб’ємо вершини за парністю степеня на і . За Теоремою 7.4
Права частина парна; друга сума ліворуч — сума парних чисел, отже парна. Тоді й перша сума парна. Але це сума непарних чисел, а за модулем кожне непарне , тож . Отже, парне.
Приклад 7.6. Чи можуть осіб потиснути руки так, щоб кожна привіталася рівно з трьома іншими? Ні: це був би граф із вершинами степеня , тобто вершин непарного степеня — непарна кількість, що суперечить Наслідку 7.5. (Рівнозначно: сума степенів непарна, а мусить дорівнювати .)
Ще один короткий, але корисний факт спирається на принцип Діріхле.
Твердження 7.7. У кожному простому графі з вершинами знайдуться дві різні вершини однакового степеня.
Доведення. У простому графі степінь кожної вершини лежить у множині ( можливих значень). Припустимо супротивне: усі степенів різні; тоді кожне значення трапляється рівно раз. Зокрема, є вершина степеня (ні з ким не суміжна) і вершина степеня (суміжна з усіма іншими, отже й з першою) — суперечність. Тож усі значень одночасно неможливі: різних степенів щонайбільше на вершин, і за принципом Діріхле два степені збігаються.
Особливі сімейства графів
Кілька графів трапляються так часто, що мають власні назви й формули для розміру. Ми покликатимемося на них у §7.11 (планарність) та §7.12 (розфарбування).
- Порожній граф — вершин і жодного ребра; кожна вершина ізольована, граф -регулярний.
- Простий ланцюг — вершин у рядок із ребрами ; має ребро й дві висячі вершини (кінці).
- Цикл () — вершин по колу; має ребер і -регулярний.
- Повний граф — простий граф, у якому кожна пара різних вершин сполучена ребром; він -регулярний.
- Повний дводольний граф — вершини поділено на дві частини розмірів і ; кожну вершину однієї частини сполучено з кожною вершиною другої, а всередині частин ребер немає. Граф, вершини якого так розбиваються, називають дводольним.
Теорема 7.7а (розміри повних графів).
Доведення. У кожна з вершин має степінь , тож за лемою про рукостискання , звідки . У кожна з вершин однієї частини сполучена рівно з вершинами другої, і жодне ребро не лічиться двічі (кожне має рівно один кінець у кожній частині), тож .
Приклад 7.7б. (трикутник) має ребра, — , — , — . Дводольний має ребер. Ці значення знадобляться, коли ми доводитимемо непланарність і (§7.11).
7.4 Матриця суміжності
Графи зручно малювати, але комп’ютерові потрібне числове подання. Найпоширеніше — матриця суміжності.
Означення (матриця суміжності). Матрицею суміжності графа на вершинах називають матрицю , де — кількість ребер між і . Для простого графа кожен запис — або .
Ключові властивості для неорієнтованого простого графа: матриця симетрична (); діагональ нульова (немає петель); а сума -го рядка дорівнює .
Приклад 7.8. Упорядкувавши вершини , матриця суміжності робочого графа така:
| 0 | 1 | 1 | 1 | 0 | |
| 1 | 0 | 1 | 0 | 0 | |
| 1 | 1 | 0 | 0 | 1 | |
| 1 | 0 | 0 | 0 | 1 | |
| 0 | 0 | 1 | 1 | 0 |
Вона симетрична, діагональ нульова, а суми рядків відтворюють знайдену раніше степеневу послідовність.

Зауваження (степені матриці рахують маршрути). Найкорисніша алгебраїчна властивість матриці суміжності: запис у степені дорівнює кількості маршрутів довжини з у (доводиться індукцією за ). Зокрема діагональ дає степені вершин. Ми користуватимемося цим побіжно; докладніше — у контексті алгоритмів Лекції 8.
7.5 Орієнтовані графи
Досі ребро було симетричним зв’язком. Часто ж зв’язок напрямлений: одностороння вулиця, гіперпосилання зі сторінки на сторінку , відношення «передує» між задачами.
Означення (орієнтований граф). Орієнтований граф (орграф) складається з множини вершин і множини дуг , де кожна дуга — це впорядкована пара , намальована стрілкою від початку до кінця . Тепер і — різні дуги: напрям має значення.
У орграфі степінь розщеплюється на два. Напівстепінь виходу — кількість дуг із початком у (стрілки, що виходять); напівстепінь входу — кількість дуг із кінцем у (стрілки, що входять).

Приклад 7.9. Зорієнтуймо ребра робочого графа так: , , , , , . Напівстепені виходу й входу зведено в таблицю:
| вершина | |||||
|---|---|---|---|---|---|
Твердження 7.10 (орієнтована лема про рукостискання). У будь-якому орграфі
Доведення. Кожна дуга має рівно один початок і рівно один кінець . Сума напівстепенів виходу лічить кожну дугу один раз — у її початку; сума напівстепенів входу лічить кожну дугу один раз — у її кінці. Обидві суми тому дорівнюють числу дуг .
У прикладі 7.9: і .
Матриця суміжності орграфа. Означують так само: , якщо є дуга . Тепер матриця не обов’язково симетрична; сума -го рядка дає , а сума -го стовпця — .
| 0 | 1 | 1 | 1 | 0 | |
| 0 | 0 | 1 | 0 | 0 | |
| 0 | 0 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 0 |

Суми рядків — це напівстепені виходу, суми стовпців — напівстепені входу, як і має бути.
7.6 Матриця інцидентності
Друге стандартне подання явно фіксує зв’язок «вершина — ребро».
Означення (матриця інцидентності). Матриця інцидентності має один рядок на вершину й один стовпець на ребро: , якщо вершина — кінець ребра , і інакше.
У простому графі кожен стовпець містить рівно дві одиниці (ребро має два кінці), а сума -го рядка знову дорівнює . Петля — виняток: у її стовпці стоїть одна двійка.
Приклад 7.11. Занумеруймо ребра . Матриця інцидентності графа :
| 1 | 1 | 1 | 0 | 0 | 0 | |
| 1 | 0 | 0 | 1 | 0 | 0 | |
| 0 | 1 | 0 | 1 | 1 | 0 | |
| 0 | 0 | 1 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 1 | 1 |

Кожен стовпець дає в сумі ; додавши всі записи, дістаємо — та сама подвійна лічба, тепер за стовпцями. Суми рядків — знову степені.
Зауваження (яке подання обрати). Матриця суміжності компактна () і за відповідає на питання «чи суміжні ?»; матриця інцидентності () явно зберігає структуру «вершина — ребро» й легко узагальнюється на мультиграфи та (із записами ) на орграфи. На практиці великі розріджені графи зберігають списками суміжності — головним поданням для алгоритмів Лекції 8.
7.7 Зважені графи
Означення (зважений граф). Зважений граф — це граф разом із ваговою функцією , що приписує кожному ребру число — вартість, довжину, пропускну здатність чи час. Вага маршруту — сума ваг його ребер. (Орграфи зважують так само.)
Ваги роблять осмисленими питання на кшталт «найкоротший маршрут» чи «найдешевша мережа». У комп’ютері ваги зберігають, замінивши одиниці матриці суміжності на , а «немає ребра» позначають нескінченністю .

Приклад 7.12. Нехай на робочому графі ваги (наприклад, довжини кабелю в метрах) такі: . Маршрут має вагу , тоді як — вагу . Отже, мінімізуємо вагу, а не кількість ребер: це розрізняє «найменше переходів» (незважений випадок) і «найкоротша відстань» (зважений, алгоритм Дейкстри Лекції 8).
7.8 Маршрути, ланцюги та цикли
Рух графом описують маршрути, які далі уточнюють, забороняючи повторення ребер або вершин.
Означення (маршрут). Маршрут (шлях) довжини — це послідовність вершин і ребер, що чергуються,
де кожне ребро сполучає і . Його довжина — кількість ребер . Маршрут замкнений, якщо його кінці збігаються (), і незамкнений інакше. У простому графі маршрут визначається списком вершин, тож його записують .
Означення (ланцюг, простий ланцюг, цикл).
- Ланцюг — маршрут, у якому всі ребра різні (вершини можуть повторюватися).
- Простий ланцюг — маршрут, у якому всі вершини різні (а отже, і всі ребра).
- Цикл — замкнений ланцюг. Якщо при цьому не повторюються й внутрішні вершини, його називають простим циклом. Найкоротший простий цикл у простому графі має довжину (трикутник).
Ієрархія вкладень: кожен простий ланцюг є ланцюгом, а кожен ланцюг — маршрутом; кожен простий цикл є циклом, а кожен цикл — замкненим маршрутом. Обернені включення хибні.

Приклад 7.13 (зі слайдів, на графі ).
- використовує ребра — усі різні, тож це ланцюг; але вершина повторюється, тому це не простий ланцюг. Кінці і різні — незамкнений, довжина .
- використовує ребра — усі різні й повертається в , отже цикл; внутрішні вершини не повторюються — це простий цикл довжини .
- не повторює жодної вершини — простий ланцюг (незамкнений, довжина ).
Наступна теорема — робочий інструмент усіх міркувань про зв’язність: якщо вершини з’єднано хоч якимось маршрутом, то їх з’єднано й простим ланцюгом.
Теорема 7.14 (маршрут простий ланцюг). Якщо в графі є маршрут із у , то є й простий ланцюг із у .
Доведення. Множина маршрутів із у непорожня за умовою, а довжини належать , тож за принципом найменшого числа виберемо маршрут найменшої довжини . Стверджуємо, що не повторює вершин (отже, є простим ланцюгом). Припустимо супротивне: для деяких . Тоді — теж маршрут із у (склейка законна, бо суміжна з ), але його довжина суперечить мінімальності . Отже, вершини не повторюються.
7.9 Зв’язність та компоненти зв’язності
Означення (зв’язність). Граф зв’язний, якщо між кожною парою вершин існує маршрут (рівнозначно, за Теоремою 7.14, простий ланцюг). Інакше граф незв’язний і розпадається на максимальні зв’язні частини — компоненти зв’язності.
Щоб уточнити «частини», згадаймо відношення еквівалентності з Лекції 2.
Твердження 7.15 (компоненти як класи еквівалентності). Означимо на відношення: , якщо існує маршрут з у . Тоді — відношення еквівалентності, а його класи — це вершинні множини компонент зв’язності.
Доведення. Перевіримо три аксіоми. Рефлексивність: маршрут довжини сполучає із собою, тож . Симетричність: обернувши маршрут –, дістаємо маршрут – (ребра неорієнтовані), тож . Транзитивність: приєднавши маршрут – до маршруту –, дістаємо маршрут –, тож і . Отже, розбиває на класи; кожен клас зв’язний і максимальний — це й є компонента.
Робочий граф зв’язний (наприклад, досягає через ). Якби ми додали ізольовану вершину , граф став би незв’язним із двома компонентами і .
Зауваження (мости та орграфи). Ребро, вилучення якого збільшує кількість компонент, називають мостом. У ребро не міст (є обхідний цикл ), тоді як у простому ланцюзі кожне ребро — міст. Для орграфів розрізняють сильну зв’язність (є напрямлений шлях і з у , і з у ) та слабку (зв’язний неорієнтований «кістяк»). Граф посилань у вебі зазвичай лише слабко зв’язний.
7.10 Ізоморфізм графів
Два малюнки можуть виглядати геть по-різному й водночас зображати той самий граф. Уточнимо «однакова структура».
Означення (ізоморфізм). Графи і ізоморфні (пишуть ), якщо існує бієкція , що зберігає суміжність в обидва боки:
Таку називають ізоморфізмом: вона перейменовує вершини , перетворюючи його на без додавання чи вилучення ребер.
Ізоморфізм — відношення еквівалентності на графах, тож він сортує всі графи на класи ізоморфності: «той самий» цикл означає один такий клас.
Як довести ізоморфність: пред’явити явну бієкцію і перевірити, що кожне ребро переходить у ребро (за рівних і цього досить).
Як довести неізоморфність: знайти інваріант — величину чи властивість, яку зберігає кожен ізоморфізм, — на якому графи різняться. Досить одного відмінного інваріанта.
Твердження 7.16 (степенева послідовність — інваріант). Якщо — ізоморфізм, то для кожної вершини ; отже, і мають однакову степеневу послідовність.
Доведення. Відображення звужується до бієкції між околами і : якщо , то , звідки , тобто ; обернене — так само, бо бієкція. Отже, , тобто .
Інші зручні інваріанти: порядок , розмір , кількість компонент, довжина найкоротшого циклу, кількість трикутників, дводольність.
Приклад 7.17 (ізоморфні — п’ятикутник і п’ятикутна зірка). Намалюймо раз як правильний п’ятикутник із ребрами , а раз як п’ятикутну зірку (пентаграму) з ребрами . Бієкція
переводить кожне ребро п’ятикутника в ребро зірки (, , ), тож обидва — це .
Типова помилка (однакова степенева послідовність ізоморфізм). Інваріанти необхідні, але не достатні. Розгляньмо два -регулярні графи на вершинах: цикл і незв’язне об’єднання двох трикутників . Обидва мають вершин, ребер і степеневу послідовність — усі «локальні» інваріанти збігаються. Проте зв’язний (одна компонента), а — ні (дві), тож вони не ізоморфні. Тому «однакова степенева послідовність» ніколи не доводить ізоморфізму.
7.11 Планарність. Формула Ейлера. Теорема Понтрягіна–Куратовського
Означення (планарний / плоский граф). Граф планарний, якщо його можна намалювати на площині так, щоб жодні два ребра не перетиналися (ребра сходяться лише у спільних кінцях). Таке зображення без перетинів називають плоским графом. Плоский граф ділить площину на грані (максимальні зв’язні області), зокрема одну необмежену — зовнішню.
Теорема 7.18 (формула Ейлера). Для будь-якого зв’язного плоского графа з вершинами, ребрами та гранями
Доведення (індукція за , коротко). База : зв’язний граф без ребер — це одна вершина, , єдина грань , і . Крок. Нехай . Якщо граф має цикл, вилучимо одне ребро циклу: дві сусідні грані зливаються в одну, тож і зменшуються на , а і зв’язність не змінюються. Якщо ж циклів немає (граф — дерево), у ньому є висяча вершина; вилучимо її разом з інцидентним ребром: і зменшуються на , а не змінюється (це ребро-міст межує з однією гранню з обох боків). В обох випадках величина не змінюється, тож за припущенням індукції дорівнює .
Приклад 7.19. Граф планарний: намалювавши його без перетинів (трикутник із центральною вершиною, сполученою з усіма трьома), маємо , і (три внутрішні трикутні області та зовнішня), і справді .
Справжня сила формули Ейлера — у межах на кількість ребер, які вона нав’язує планарним графам і які дають швидкий тест непланарності.
Наслідок 7.20 (реброва межа). У простому зв’язному планарному графі з
Доведення. Візьмімо плоске зображення з гранями. У простому графі з кожна грань обмежена щонайменше трьома ребрами (грань степеня вимагала б петлі, степеня — кратних ребер). Сумуючи степені всіх граней, лічимо кожне ребро двічі (воно межує з двома гранями), тож . Оскільки кожен із доданків , маємо , тобто . Підставимо з формули Ейлера: , звідки .
Наслідок 7.21 ( непланарний). Повний граф простий і зв’язний, має і . Якби він був планарним, Наслідок 7.20 давав би — хибно. Отже, непланарний.
Межа не розв’язує випадку (, , ). Потрібна гостріша межа, що враховує відсутність трикутників.
Наслідок 7.22 (межа для графів без трикутників, непланарний). Якщо простий зв’язний планарний граф із не має трикутників, то кожна грань обмежена ребрами, звідки і . Граф дводольний, тож без трикутників; при , маємо — хибно. Отже, непланарний.

Ці два графи — це відомі задачі: — «три колодязі» (з’єднати три будинки з газом, водою та електрикою без перетину труб — неможливо), а — «п’ять взаємно сполучених точок». Куратовський (і незалежно Понтрягін) довели, що вони — єдині істотні перешкоди планарності.
Теорема 7.23 (Понтрягіна–Куратовського). Граф планарний тоді й лише тоді, коли він не містить підграфа, який є підрозбиттям або .
Тут підрозбиття графа одержують, багаторазово замінюючи ребро на простий ланцюг через нові вершини степеня (тобто «розставляючи зайві точки» вздовж ребра). Підрозбиття не змінює можливості намалювати граф без перетинів, тож прихований чи — навіть «розтягнутий» додатковими вершинами — унеможливлює планарність, а його відсутність її гарантує.
Застосування (розведення без перетинів). Планарність — не лише розвага. Плоскі графи розпізнають і малюють за лінійний час; вони прямо виникають у трасуванні друкованих плат і НВІС-кристалів (провідники одного шару не мають перетинатися) та у схемах-макетах, де лінії зв’язку бажано провести без перехрещень.
7.12 Розфарбування графів
Означення (правильне розфарбування вершин, хроматичне число). Правильне розфарбування вершин приписує кожній вершині колір так, щоб суміжні вершини мали різні кольори. Хроматичне число — найменша кількість кольорів у правильному розфарбуванні.
Застосування: складання розкладів (кольори — часові слоти, ребра — конфлікти, тож правильне розфарбування — розклад без накладок), призначення частот, розподіл регістрів у компіляторі.
Межі. Якщо граф містить кліку з вершин (копію — попарно суміжних вершин), то їм потрібно різних кольорів, тож , де — найбільший розмір кліки. З іншого боку, завжди (розфарбовуючи вершини по черзі, для кожної маємо не більш ніж уже розфарбованих сусідів, тож один із кольорів вільний).
Базові значення. ; для парного циклу , для непарного . Загалом тоді й лише тоді, коли граф дводольний, тобто не має циклів непарної довжини.

Приклад 7.24 (розфарбування ). Робочий граф містить трикутник — кліку розміру , тож . Трьох кольорів досить: , далі (єдиний розфарбований сусід ) і (сусіди і ). Кожне ребро тепер сполучає вершини різних кольорів, отже, .
Кольорувати можна не лише вершини, а й ребра.
Означення (реберне розфарбування, хроматичний клас). Правильне реберне розфарбування приписує кожному ребру колір так, щоб ребра зі спільною вершиною мали різні кольори. Найменшу кількість кольорів називають хроматичним класом (хроматичним індексом) .
Оскільки ребер, інцидентних вершині максимального степеня, попарно ділять цю вершину, усі вони мусять мати різні кольори, тож . Ба більше, за теоремою Візинга для простого графа завжди .
Зауваження (хроматичне число проти хроматичного класу). Це різні задачі, і їхні значення можуть не збігатися. Класичний приклад — граф Петерсена ( вершин, -регулярний): у нього , але (він досягає верхньої межі Візинга ). Саме таку пару «хроматичне число , хроматичний клас » наведено й на слайдах.
Історична довідка (задача чотирьох фарб). Кожен планарний граф -розфарбовний — славнозвісна теорема про чотири фарби: будь-яку політичну карту можна розфарбувати чотирма кольорами так, щоб сусідні країни різнилися (граф суміжності областей карти планарний). Гіпотезу висловлено 1852 року, а доведено Аппелем і Гакеном 1976-го — це була перша велика теорема, доведена зі суттєвою допомогою комп’ютера.
7.13 Дерева й ліс
Найважливіша спеціальна структура — дерево: зв’язний граф без циклів. Дерева організують файлові системи (коренева тека, теки, файли й єдиний шлях до кожного файла), дерева розбору виразів, структури пошуку та префіксні коди.
Означення (дерево, ліс). Дерево — це зв’язний неорієнтований граф без циклів (зв’язний ациклічний граф). Ліс — неорієнтований граф без циклів (не обов’язково зв’язний); кожна його компонента є деревом.

Ключова кількісна властивість дерева — жорсткий зв’язок між числами вершин і ребер. Спершу — допоміжний факт про висячі вершини.
Лема 7.25 (про дві висячі вершини). Кожне дерево з вершинами має щонайменше дві висячі вершини (листки).
Доведення. Серед усіх простих ланцюгів дерева виберемо найдовший (він існує, бо граф скінченний); оскільки дерево має ребро, і . Покажемо, що — листок. Якби мала сусіда , то: або — і тоді довший ланцюг, що суперечить максимальності; або для деякого — і тоді цикл, що суперечить ациклічності. Отже, . Так само — листок.
Теорема 7.26 (кількість ребер дерева). Дерево з вершинами має рівно ребро: .
Доведення (індукція за ). База : єдина вершина, ребро. Крок. Нехай і твердження справджується для всіх дерев із меншою кількістю вершин. За Лемою 7.25 у дереві є листок з єдиним сусідом . Вилучимо разом із ребром ; одержаний граф лишається зв’язним (через вершину степеня жоден простий ланцюг між іншими вершинами не проходив) і ациклічним, тобто є деревом на вершинах. За припущенням індукції має ребра, а повернувши та ребро , додаємо рівно одне ребро — тож має ребро.
Приклад 7.27. Дерево на рисунку має вершин і ребер; листки — (степінь ), внутрішні вершини — . Степені такі: , а ; їхня сума , як і має бути за лемою про рукостискання.
Для лісу формула узагальнюється, і саме кількість компонент «псує» рівність.
Твердження 7.28 (ребра лісу). Ліс із вершинами та компонентами має рівно ребер.
Доведення. Нехай компоненти — дерева на вершинах, . За Теоремою 7.26 компонента має ребро, тож усього .
Дерево — окремий випадок , що повертає . Обернувши рівність, : у лісі кількість компонент дорівнює вершини мінус ребра — крихітний лічильний рушій, на якому тримається структура «система неперетинних множин» в алгоритмі Крускала.
Зауваження (остовне дерево). Для зв’язного графа остовне дерево — це підграф, який є деревом і містить усі вершини (отже, ребро). Кожен зв’язний граф має остовне дерево, а для зваженого графа шукають мінімальне остовне дерево — найдешевший «кістяк» мережі. Алгоритми Прима й Крускала для його побудови — тема Лекції 8.
7.14 Ейлерові та гамільтонові цикли. Задача комівояжера
Маючи мову маршрутів і циклів (§7.8), поставимо два класичні питання про повний обхід графа. Перше стосується ребер: чи можна пройти графом, скориставшись кожним ребром рівно один раз? Друге — вершин: чи можна обійти граф, відвідавши кожну вершину рівно один раз? Питання звучать симетрично, та, як побачимо, мають зовсім різну складність.
Ейлерові ланцюги та цикли
Перше питання — це рівно головоломка про кенігсберзькі мости з §7.1.
Означення (ейлерів ланцюг, ейлерів цикл). Ейлерів ланцюг — це ланцюг, що містить кожне ребро графа (а отже, рівно один раз, бо в ланцюзі ребра не повторюються). Замкнений ейлерів ланцюг, який повертається у початкову вершину, називають ейлеровим циклом, а граф, що його має, — ейлеровим.

Ейлер помітив, що можливість обходу залежить лише від парності степенів. Уявімо, що ланцюг проходить графом; щоразу, входячи у проміжну вершину одним ребром, ми мусимо вийти з неї іншим, ще не використаним ребром. Тому ребра при кожній проміжній вершині розбиваються на пари «увійшов–вийшов», а її степінь має бути парним. Це спостереження і є ядром критерію.
Теорема 7.29 (критерій Ейлера). Нехай — зв’язний граф без ізольованих вершин. Тоді:
- має ейлерів цикл тоді й лише тоді, коли всі вершини мають парний степінь;
- має ейлерів ланцюг, який не є циклом, тоді й лише тоді, коли рівно дві вершини мають непарний степінь (саме вони й будуть кінцями ланцюга).
Доведення (необхідність). Нехай у є ейлерів цикл . Пройдімо ним і для кожної вершини полічимо інцидентні їй ребра, якими скористалися. Кожен прохід «крізь» задіює рівно два такі ребра — одне на вхід, одне на вихід, — і всі вони різні, бо ланцюг ребер не повторює. Оскільки цикл замкнений, і в початковій вершині є вихід та відповідний йому вхід. Тому ребра при повністю розбиваються на пари, а отже, парний для кожної вершини. Для ейлерового ланцюга, що не є циклом, той самий підрахунок дає пари скрізь, окрім двох кінців: у початковій вершині лишається непарований вихід, у кінцевій — непарований вхід, тож рівно ці дві вершини мають непарний степінь. Достатність (виконання умови про парність гарантує існування обходу) доводять індукцією за кількістю ребер або алгоритмом Флері, що рухається лише ребрами, які не є мостами; приймаємо її без подробиць.
Навпаки, «додатний» приклад — граф, усі степені якого парні. На рисунку нижче центральна вершина має степінь , а решта — степінь ; за Теоремою 7.29 граф ейлерів, і обхід (номери на ребрах указують порядок проходження) повертається у старт, скориставшись кожним ребром рівно раз.

Приклад 7.30 (мости й робочий граф). У кенігсберзькому мультиграфі степені вершин дорівнюють — чотири вершини непарного степеня. За Теоремою 7.29 немає ні ейлерового циклу, ні навіть ейлерового ланцюга: обійти всі сім мостів рівно по разу неможливо — така відповідь Ейлера 1736 року. Натомість робочий граф має степеневу послідовність , тож непарний степінь мають рівно дві вершини — і . Отже, ейлерів ланцюг існує; наприклад,
проходить усі шість ребер по разу й веде від до . Ейлерового циклу в немає.
Гамільтонові шляхи та цикли
Означення (гамільтонів шлях, гамільтонів цикл). Гамільтонів шлях — простий ланцюг, що містить кожну вершину графа (рівно один раз). Замкнений гамільтонів шлях (простий цикл через усі вершини) називають гамільтоновим циклом, а граф, що його має, — гамільтоновим.
Різниця з ейлеровим поняттям — у тому, що саме вичерпує обхід: ейлерів — ребра, гамільтонів — вершини. Попри позірну симетрію, задачі кардинально різні. Для ейлеровості є простий локальний критерій (парність степенів), який перевіряється за один прохід графом. Для гамільтоновості ж простого критерію не існує: питання «чи є в графі гамільтонів цикл?» NP-складне, тобто (наскільки відомо) не має алгоритму, істотно швидшого за повний перебір. Тому послуговуються лише достатніми умовами — вони гарантують цикл, коли граф «достатньо густий».
Теорема 7.31 (достатня умова Дірака). Якщо в простому графі з вершинами кожна вершина має степінь , то граф має гамільтонів цикл. (наводимо без доведення).
Умова Дірака лише достатня, а не необхідна: граф цілком може бути гамільтоновим і з меншими степенями.

Приклад 7.32 (гамільтонів цикл у ). У робочому графі кожна з вершин має степінь ; тому в будь-який цикл, що проходить через таку вершину, мусять увійти обидва її ребра. Це відразу фіксує ребра (через ), (через ) та (через ), а разом із ними цикл однозначно замикається:
Він відвідує всі п’ять вершин по разу, отже, гамільтонів. Зауважимо, що умова Дірака тут не виконується (при вона вимагає степеня , а мають степінь ) — і все ж цикл існує; це вкотре підкреслює, що Дірак дає лише достатню умову.
Задача комівояжера
Означення (задача комівояжера). У зваженому повному графі задача комівояжера (англ. travelling salesman problem, TSP) полягає у відшуканні гамільтонового циклу найменшої сумарної ваги: замкненого маршруту, що виходить із початкової вершини, відвідує кожну іншу рівно раз і повертається назад з найменшими сумарними витратами.
Назва походить від образу торгового агента, який мусить об’їхати задані міста найкоротшим замкненим маршрутом. Задача сумнозвісно складна: у повному графі на вершинах різних гамільтонових циклів аж , тож повний перебір стає безнадійним уже за кількох десятків міст; TSP теж NP-складна. Тому на практиці застосовують наближені й евристичні методи — жадібний алгоритм «найближчого сусіда» (щоразу переходити в найближче ще не відвідане місто), локальні покращення обміном ребер (2-opt) чи побудову маршруту з мінімального остовного дерева (Лекція 8); вони дають добрий, хоч і не конче оптимальний, тур швидко.

Приклад 7.33 (чотири вузли). Нехай чотири вузли повного графа сполучено з вагами (відстанями)
У є рівно різних гамільтонових цикли; порахуймо їхні ваги:
Найдешевший тур — вагою (периметр квадрата, що оминає «дорогі» діагоналі і ). Для чотирьох вузлів перебір тривіальний; уся складність TSP виявляється, коли вузлів десятки й сотні.
Застосування у поліграфії. TSP — не абстракція, а щоденна цехова задача. Хід ножа різака чи плотера: контури, які треба вирізати або надсікти, — це «міста», а мінімізація холостих переміщень різальної головки між ними є прямою задачею комівояжера. Свердління друкованих плат: свердлильна головка мусить пройти всі отвори, і порядок обходу з найменшим сумарним ходом свердла — знову TSP. Обхід елементів макета при автоматизованому контролі чи лакуванні, а також черговість приладки фарбових зон — тієї самої природи. Оскільки точний оптимум задорогий, у виробничих контролерах закладають саме наближені евристики.
7.15 Застосування у видавництві та поліграфії
Мова графів безпосередньо описує задачі фаху:
- Макет і навігація. Сторінки видання з переходами (посилання, «далі», перехресні відсилання) — це орграф; зв’язність гарантує, що з будь-якої сторінки досяжна будь-яка інша, а напівстепені входу/виходу виявляють «глухі кути» й «вузли-концентратори».
- Трасування друкованих плат і монтажних схем. З’єднання компонентів — граф; можливість розвести провідники в один шар без перетинів — це питання планарності (Наслідки 7.21–7.22 і теорема Понтрягіна–Куратовського).
- Складання розкладів друку. Завдання, що конкурують за спільний ресурс (машину, фарбову секцію, оператора), — вершини; конфлікт — ребро; безконфліктний розклад — це правильне розфарбування вершин, а — мінімальна кількість змін/слотів.
- Кольороподіл і суміжність. Області зображення, що межують, не повинні зливатися в один колір — це розфарбування графа суміжності; теорема про чотири фарби гарантує, що для пласкої карти вистачить чотирьох кольорів.
- Мережі й найкоротші маршрути. Логістика доставки накладу, топологія внутрішньої мережі друкарні — це зважені графи; найдешевший кабельний «кістяк» — мінімальне остовне дерево, а найшвидший маршрут — найкоротший шлях (Лекція 8).
Підсумок
- Граф поєднує вершини з невпорядкованими ребрами; орграф використовує впорядковані дуги. Прості графи забороняють петлі й паралельні ребра; порядок , розмір .
- Базові поняття: суміжність вершин, інцидентність вершини й ребра, степінь (для орграфа — напівстепені входу і виходу ), ізольована та висяча вершини, , , регулярність.
- Лема про рукостискання (Т. 7.4): — подвійною лічбою інцидентностей; Наслідок 7.5: кількість вершин непарного степеня парна. Орієнтований варіант (Тв. 7.10): .
- Подання: симетрична матриця суміжності (суми рядків — степені) та матриця інцидентності (суми стовпців ); для орграфа матриця суміжності несиметрична. Зважений граф приписує ребрам ваги .
- Рух: маршрут ланцюг (усі ребра різні) простий ланцюг (усі вершини різні); замкнений ланцюг — цикл. Т. 7.14: з маршруту дістаємо простий ланцюг.
- Зв’язність: досяжність — відношення еквівалентності, а його класи — компоненти зв’язності (Тв. 7.15).
- Ізоморфізм : бієкція вершин, що зберігає суміжність. Доводять пред’явленням бієкції; спростовують відмінним інваріантом (порядок, розмір, степенева послідовність, кількість компонент, дводольність). Однакова степенева послідовність ізоморфізму не гарантує.
- Планарність: малюється без перетинів. Формула Ейлера (Т. 7.18) дає і, без трикутників, ; звідси та непланарні. Теорема Понтрягіна–Куратовського (Т. 7.23): планарний немає підрозбиття чи .
- Розфарбування: хроматичне число (вершини) з і хроматичний клас (ребра) з , а за Візингом ; теорема про чотири фарби для планарних графів.
- Дерева й ліс: дерево — зв’язний ациклічний граф, (Т. 7.26); ліс із компонентами має ребер (Тв. 7.28); остовне дерево — «кістяк» зв’язного графа.
Вправи
Для розігріву
- Граф має вершин, кожна степеня . Скільки в нього ребер? Поясніть, чому не існує графа з рівно вершинами, кожна з яких має степінь .
- Запишіть матрицю суміжності й матрицю інцидентності простого ланцюга та перевірте, що суми рядків дають степені, а кожен стовпець матриці інцидентності дає в сумі .
- Класифікуйте кожен маршрут у графі як маршрут / ланцюг / простий ланцюг / цикл і вкажіть довжину: (i) ; (ii) ; (iii) .
Стандартні
- Для орграфа з прикладу 7.9 випишіть матрицю суміжності й перевірте, що суми рядків дорівнюють напівстепеням виходу, а суми стовпців — напівстепеням входу.
- Використавши межі і (де доречно) , з’ясуйте планарність: (i) ; (ii) ; (iii) граф Петерсена (, , без трикутників). Для випадків, які межі не вирішують, зазначте це явно.
- Обчисліть і для , та ; обґрунтуйте кожне значення.
- Доведіть, що в будь-якій компанії з осіб знайдуться двоє з однаковою кількістю знайомих усередині компанії. (Змоделюйте простим графом і застосуйте Твердження 7.7.)
Підвищеної складності
- Доведіть, що зв’язний граф на вершинах має щонайменше ребро, причому рівність досягається саме для дерев. (Вказівка: остовне дерево й Теорема 7.26.)
- З’ясуйте, чи ізоморфні графи і ; якщо так — наведіть бієкцію й перевірте її на ребрах, якщо ні — назвіть відмінний інваріант. : вершини , ребра ; : вершини , ребра .
- Зв’язний планарний граф намальовано так, що кожна грань (зокрема зовнішня) обмежена рівно ребрами, і він має вершин. Знайдіть і . (Скористайтеся разом із формулою Ейлера.)
- Доведіть, що простий граф, у якому кожна вершина має степінь , містить цикл. (Вказівка: розгляньте найдовший простий ланцюг і його кінцеву вершину.)