Теорія графів: задачі з покроковими розв’язками

Безкоштовні задачі з теми Теорія графів з рисунками, підказками й повними розв’язками. Щоразу нові значення, трьох рівнів: степені та ребра, ейлерові шляхи та дерева, найкоротші шляхи та остовні дерева.

Безкоштовна задачаЛегка

Дерево має 12 вершин. Скільки ребер |E| воно має?

|V| = 12

Точна відповідь: ціле число, без округлення.

Наступна задача →

Що ви тренуєте

  1. Легкастепені та ребра
  2. Середняейлерові шляхи та дерева
  3. Складнанайкоротші шляхи та остовні дерева

Як розв’язувати задачі на тему «Теорія графів»

  1. Випишіть степінь кожної вершини; сума степенів дорівнює подвоєній кількості ребер.
  2. У задачах про Ейлера перевірте, що граф зв’язний, і порахуйте вершини з непарним степенем.
  3. Для дерев використовуйте n − 1 ребро та лему про рукостискання.
  4. Для алгоритму Дейкстри ведіть таблицю попередніх відстаней і щоразу фіксуйте незафіксовану вершину з найменшою відстанню.
  5. Для мінімального остовного дерева відсортуйте ребра за вагою й пропускайте кожне ребро, що замикає цикл (Крускал), або нарощуйте одне дерево від початкової вершини (Прім).

Типові помилки

  • Забути поділити суму степенів на 2.
  • Називати граф ейлеровим, не перевіривши зв’язності.
  • Фіксувати вершину в алгоритмі Дейкстри, коли її відстань ще не найменша.
  • Брати найлегші ребра, не перевіряючи циклів.
  • Рахувати гамільтонові цикли в Kn як n! замість (n − 1)!/2.

Основні формули

Лема про рукостискання
Σ deg(v) = 2|E|
Повні графи
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
Регулярний граф
|E| = n·k/2
Дерево і ліс
|E| = n − 1, |E| = n − c
Листки дерева
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
Ейлер
цикл: усі степені парні; шлях: рівно 2 непарні степені
Гамільтонові цикли в Kn
(n − 1)!/2
Оновлення в алгоритмі Дейкстри
d(v) = min(d(v), d(u) + w(u, v))
Маршрути довжиною L
(Mᴸ)ij

Вивчайте тему «Теорія графів» з нуля

Перед цим: Множини, відношення та функції

1Вершини, ребра та степені

Граф складається з вершин (точок) і ребер (ліній між двома вершинами). У простому графі немає петель і кратних ребер.

Степінь вершини — це кількість ребер, що в ній сходяться. Кожне ребро має два кінці, тож додає 1 до степеня кожного кінця. Звідси лема про рукостискання:

Σ deg(v) = 2·|E|

Два наслідки: сума степенів завжди парна, і кількість вершин з непарним степенем теж парна.

  • Повний граф Kn з’єднує кожну пару: n(n − 1)/2 ребер.
  • Повний дводольний граф Km,n з’єднує кожну вершину однієї частини з кожною вершиною іншої: m·n ребер.
  • k-регулярний граф на n вершинах має n·k/2 ребер.

Матриця суміжності має 1 на місці (i, j), коли i та j з’єднані. Для неорієнтованого графа вона симетрична, сума рядка — це степінь, а елемент (i, j) матриці Mᴸ рахує маршрути довжиною L з i до j.

Самоперевірка Граф має степені 3, 3, 2, 2, 2. Скільки в нього ребер?
  1. 10
  2. 12
  3. 5
  4. 6

Відповідь: 6. Степені в сумі дають 12, і кожне ребро враховано двічі, тож ребер 12/2 = 6. Число 5 — це кількість вершин.

2Ейлер і Гамільтон

Ейлерів цикл проходить кожне ребро рівно один раз і повертається до початку. Ейлерів шлях проходить кожне ребро один раз, але може закінчитися деінде. Для зв’язного графа:

  • усі степені парні: ейлерів цикл існує;
  • рівно два непарні степені: ейлерів шлях існує, від однієї непарної вершини до другої;
  • більше двох непарних степенів: нічого з цього.

Гамільтонів цикл відвідує кожну вершину рівно один раз. Простого критерію за степенями для нього немає. У Kn існує (n − 1)!/2 різних гамільтонових циклів: зафіксуйте початок, впорядкуйте решту n − 1 вершин і поділіть на 2 через два напрямки.

Самоперевірка Зв’язний граф має степені 2, 3, 4, 3, 2. Що в ньому є?
  1. І ейлерів цикл, і ейлерів шлях, що не є циклом
  2. Ейлерів цикл
  3. Ейлерів шлях, але не ейлерів цикл
  4. Нічого з цього

Відповідь: Ейлерів шлях, але не ейлерів цикл. Рівно дві вершини мають непарний степінь (дві трійки), тож між ними є ейлерів шлях, але циклу немає.

3Дерева

Дерево — це зв’язний граф без циклів. Кожне дерево з n вершинами має рівно n − 1 ребро. Додавання будь-якого ребра створює цикл; вилучення будь-якого ребра розриває зв’язність.

Ліс із c дерев на n вершинах має n − c ребер. Зв’язний граф з m ребрами зберігає остовне дерево після вилучення m − n + 1 ребер.

Лема про рукостискання рахує листки: Σ deg = 2(n − 1). Коротка форма: L = 2 + Σ (d − 2) за вершинами зі степенем d ≥ 3. Дерево з двома вершинами степеня 3, а решта листки, має 2 + 1 + 1 = 4 листки.

4Дейкстра та мінімальні остовні дерева

Алгоритм Дейкстри знаходить найкоротші відстані від початкової вершини в графі з невід’ємними вагами.

  1. Дайте початковій вершині відстань 0, а кожній іншій — ∞.
  2. Зафіксуйте незафіксовану вершину з найменшою відстанню; тепер її відстань остаточна.
  3. Для кожного сусіда v оновіть d(v) = min(d(v), d(u) + w(u, v)).
  4. Повторюйте, доки цільову вершину не буде зафіксовано.

Мінімальне остовне дерево з’єднує всі вершини з найменшою сумарною вагою. Крускал сортує ребра від легких до важких і бере кожне, якщо воно не замикає цикл. Прім нарощує одне дерево від початкової вершини, щоразу додаючи найлегше ребро, що виходить з нього. Обидва алгоритми зупиняються після n − 1 ребер.

Розв’язаний приклад

Знайдіть найкоротшу відстань від A до E у графі нижче.

1

Початок

412581ABCDE

d(A) = 0. Її сусіди отримують d(B) = 4 і d(C) = 1.

2

Зафіксуйте C (1)

Через C: d(B) = min(4, 1 + 2) = 3 і d(E) = 1 + 8 = 9.

3

Зафіксуйте B (3)

Через B: d(D) = 3 + 5 = 8.

4

Зафіксуйте D (8)

Через D: d(E) = min(9, 8 + 1) = 9. Покращення немає, це рівність.

5

Зафіксуйте E (9)

E зафіксовано: її відстань остаточна.

Відповідь

Найкоротша відстань — d(E) = 9 уздовж A → C → E. Маршрут A → C → B → D → E має ту саму довжину: 1 + 2 + 5 + 1 = 9.

Самоперевірка Алгоритм Крускала вже взяв ребра ваг 1, 2 і 3. Наступне найлегше ребро, вагою 4, з’єднує дві вершини, які вже зв’язані. Що відбувається?
  1. Алгоритм зупиняється
  2. Його беруть, бо воно найлегше з решти
  3. Його пропускають, бо воно замкнуло б цикл
  4. Натомість вилучають ребро ваги 3

Відповідь: Його пропускають, бо воно замкнуло б цикл. Крускал ніколи не замикає цикл: ребро між двома вершинами однієї компоненти пропускають, і алгоритм переходить до наступного ребра.

5Типові помилки

  • Забути поділити суму степенів на 2, щоб отримати кількість ребер.
  • Перевіряти наявність ейлерового циклу, не переконавшись, що граф зв’язний.
  • Фіксувати вершину в алгоритмі Дейкстри, поки вона не має найменшої попередньої відстані.
  • Брати n − 1 найлегших ребер, не перевіряючи циклів.
  • Рахувати гамільтонові цикли в Kn як n! замість (n − 1)!/2.

6Як виглядають екзаменаційні запитання

  • Легкий: степені та ребра. Ви користуєтеся лемою про рукостискання, рахуєте ребра в Kn, Km,n, регулярних графах і деревах, читаєте матрицю суміжності або клікаєте вершину із заданим степенем.
  • Середній: ейлерові шляхи та дерева. Ви визначаєте, чи має граф ейлерів цикл або шлях, рахуєте листки дерева, кількість ребер для вилучення до остовного дерева або гамільтонові цикли в Kn.
  • Складний: найкоротші шляхи та остовні дерева. Ви виконуєте алгоритм Дейкстри, знаходите вершину, зафіксовану в заданому раунді, вагу мінімального остовного дерева, клікаєте ребро, яке наступним додасть Крускал чи Прім, або рахуєте маршрути за матрицею суміжності.

Вивчайте крок за кроком у застосункуВивчайте крок за кроком у застосунку

Розв’язані приклади

Приклад 1Легка
AABBCCDDEE0010000001100010000101110

Показано матрицю суміжності простого неорієнтованого графа. Скільки ребер |E| має граф?

Знайти: |E|

Показати підказки
  1. Елемент (i, j) дорівнює 1, коли вершини i та j з’єднані ребром.
  2. Кожне ребро {i, j} дає дві одиниці: одну в (i, j) і одну в (j, i).
  3. Матриця містить 8 одиниць.
Показати відповідь і покроковий розв’язок

Степені: степінь вершини — це кількість ребер, що в ній сходяться. Кожне ребро має два кінці, тож степені в сумі дають подвоєну кількість ребер: Σ deg(v) = 2|E| (лема про рукостискання). Тому кількість вершин з непарним степенем парна. Kn має n(n − 1)/2 ребер, k-регулярний граф на n вершинах має nk/2, а дерево на n вершинах має n − 1 ребро.

Порахуйте одиниці

суми рядків: 1 + 1 + 2 + 1 + 3 = 8
|E| = 8/2 = 4

Відповідь

|E| = 4
Приклад 2Середня
ABCDEFGЕйлерів циклЕйлерів шлях, не циклжодна з цих

Чи має зв’язний граф ейлерів цикл, ейлерів шлях, що не є циклом, чи нічого з цього? Клікніть свою відповідь.

|V| = 7|E| = 10
  1. 1Ейлерів цикл
  2. 2Ейлерів шлях, не цикл
  3. 3жодна з цих
Показати підказки
  1. Теорема Ейлера потребує лише степенів вершин (граф зв’язний).
  2. Усі степені парні: ейлерів цикл. Рівно два непарні степені: ейлерів шлях між ними. Більше: нічого з цього.
  3. Порахуйте вершини з непарним степенем.
Показати відповідь і пояснення

Ейлер, Гамільтон і дерева: зв’язний граф має ейлерів цикл (кожне ребро один раз, з поверненням до початку), коли кожна вершина має парний степінь, і ейлерів шлях, що не є циклом, коли рівно дві вершини мають непарний степінь; тоді шлях іде від однієї непарної вершини до другої. Гамільтонів цикл відвідує кожну вершину один раз; у Kn їх (n − 1)!/2. Дерево на n вершинах має n − 1 ребро, а зв’язний граф з m ребрами зберігає остовне дерево після вилучення m − n + 1 ребер.

Степені

deg(A) = 1, deg(B) = 4, deg(C) = 2, deg(D) = 4, deg(E) = 4, deg(F) = 2, deg(G) = 3

Непарні вершини

A, G → 2
Ейлерів шлях, не цикл

Відповідь

Ейлерів шлях, не цикл

Ейлерів шлях починається в одній непарній вершині й закінчується в другій.

Приклад 3Складна
ABCDEF

Скільки замкнених маршрутів довжиною 3 починаються й закінчуються в E? Маршрут може повторювати вершини й ребра. Позначте число N.

M = матриця суміжностіL = 3

Знайти: N

Показати підказки
  1. Для матриці суміжності M кількість маршрутів довжиною L від i до j — це елемент (i, j) матриці Mᴸ.
  2. Спершу порахуйте маршрути довжиною 2 від E до кожної вершини, потім зробіть ще один крок.
  3. Маршрути довжиною 2 від E: A: 2, B: 1, C: 0, D: 2, E: 4, F: 1.
Показати відповідь і покроковий розв’язок

Степені: степінь вершини — це кількість ребер, що в ній сходяться. Кожне ребро має два кінці, тож степені в сумі дають подвоєну кількість ребер: Σ deg(v) = 2|E| (лема про рукостискання). Тому кількість вершин з непарним степенем парна. Kn має n(n − 1)/2 ребер, k-регулярний граф на n вершинах має nk/2, а дерево на n вершинах має n − 1 ребро.

Матриця суміжності

A: 0 1 1 0 0 0
B: 1 0 0 1 1 0
C: 1 0 0 0 1 0
D: 0 1 0 0 1 1
E: 0 1 1 1 0 1
F: 0 0 0 1 1 0

Ще один крок

(M³)EE = 2·0 + 1·1 + 0·1 + 2·1 + 4·0 + 1·1 = 4

Відповідь

N = 4

Запитання й відповіді

Теорія графів: що це?

Два наслідки: сума степенів завжди парна, і кількість вершин з непарним степенем теж парна.

Теорія графів: як розв’язувати задачі крок за кроком?
  1. Випишіть степінь кожної вершини; сума степенів дорівнює подвоєній кількості ребер.
  2. У задачах про Ейлера перевірте, що граф зв’язний, і порахуйте вершини з непарним степенем.
  3. Для дерев використовуйте n − 1 ребро та лему про рукостискання.
  4. Для алгоритму Дейкстри ведіть таблицю попередніх відстаней і щоразу фіксуйте незафіксовану вершину з найменшою відстанню.
  5. Для мінімального остовного дерева відсортуйте ребра за вагою й пропускайте кожне ребро, що замикає цикл (Крускал), або нарощуйте одне дерево від початкової вершини (Прім).
Теорія графів: які помилки найпоширеніші?
  • Забути поділити суму степенів на 2.
  • Називати граф ейлеровим, не перевіривши зв’язності.
  • Фіксувати вершину в алгоритмі Дейкстри, коли її відстань ще не найменша.
  • Брати найлегші ребра, не перевіряючи циклів.
  • Рахувати гамільтонові цикли в Kn як n! замість (n − 1)!/2.
Теорія графів: що ви тренуєте?
  • Легка: степені та ребра
  • Середня: ейлерові шляхи та дерева
  • Складна: найкоротші шляхи та остовні дерева

Кожна задача має нові значення, тож ви вивчаєте метод, а не відповідь. Застрягли? Спершу відкрийте невелику підказку, а повне пояснення — лише коли воно знадобиться.

Як проходить тренування

  • Кожна задача має нові значення, тож ви вивчаєте метод, а не відповідь.
  • Застрягли? Спершу відкрийте невелику підказку, а повне пояснення — лише коли воно знадобиться.
  • Ваш прогрес, помилки та збережені задачі зберігаються, тож перед іспитом ви зможете все повторити.

Теми до і після цієї

Спочатку вивчіть

Курси з цією темою

Інші теми: Математика і статистика

Робочий аркуш для друку