Теория графов: задачи с пошаговыми решениями

Бесплатные задачи по теме Теория графов с рисунками, подсказками и подробными решениями. Каждый раз новые значения, трёх уровней: степени и рёбра, эйлеровы пути и деревья, кратчайшие пути и остовные деревья.

Бесплатная задачаЛёгкая

У дерева 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
Эйлер
цикл: все степени чётные; путь: ровно две нечётные степени
Гамильтоновы циклы в 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
  3. Оно берётся, потому что оно самое лёгкое из оставшихся
  4. Оно пропускается, потому что замкнуло бы цикл

Ответ: Оно пропускается, потому что замкнуло бы цикл. Краскал никогда не замыкает цикл: ребро между двумя вершинами одной компоненты пропускается, и алгоритм переходит к следующему ребру.

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 в позиции (i, j), когда i и j соединены. Для неориентированного графа она симметрична, сумма строки — это степень, а элемент (i, j) матрицы Mᴸ считает маршруты длины L из i в j.

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

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

Как проходят занятия

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

Темы до и после этой

Сначала изучите

Курсы с этой темой

Другие темы: Математика и статистика

Лист заданий для печати