📚 Подготовка к экзамену по графам
📋 Программа курса (50 часов):
- Основные определения. Способы задания графа
- Эксцентриситет. Центр, радиус, диаметр
- Перевод между способами задания
- Связность графов. Двудольность. Деревья
- Обходы графов (DFS/BFS)
- Изоморфизм. Гомеоморфизм. Планарность
- Раскраска. Хроматическое число
- Экстремальные задачи
- Ориентированные графы. Топосортировка
- Сети. Максимальный поток
📝 Требования к оформлению
В задачах 1-3 необходимо:
- Формальная постановка задачи в терминах теории графов
- Название алгоритма (или краткое описание)
- Решение с применением алгоритма и рисунком каждого шага
📊 Критерии оценивания
| Задача | Баллы | Критерии |
|---|---|---|
| 1-3 | по 4 | 0,5 + 0,5 за постановку и алгоритм + 3 за применение |
| 4 | 4 | 1 (рисунок) + 2 (центр/радиус/диаметр) + 1 (изоморфизм) |
| 5 | 3 | 1 (плоская укладка) + 1 (грани) + 1 (раскраска) |
| 6 | 4 | 1 (граф работ) + 1 (топосортировка) + 1 (сетевой график) + 1 (критические работы) |
| 7 | 2 | 0,5 (цепь/цикл) + 0,5 (алгоритм) + 1 (применение) |
⚠️ Важно:
- Если только ответ (даже правильный) → 0 баллов
- Нет постановки/алгоритма, но решение верное → 2 балла
- Перебор не засчитывается (0 баллов)
- Центр дерева искать алгоритмом для дерева (иначе 1 балл вместо 2)
- Для изоморфизма указать инвариант или биекцию
- Для планарности нарисовать плоскую укладку
- В задаче 6: сначала граф работ, потом сетевой график
📖 Теория
1. Что такое граф
Граф — структура из вершин (точек) и рёбер (соединений).
где V — множество вершин, E — множество рёбер.
A ----- B | | | | D ----- C
V = {A, B, C, D}
E = {AB, BC, CD, DA}
2. Способы задания графа
1️⃣ Список рёбер
E = { (A,B), (A,C), (B,C) }
2️⃣ Матрица смежности
Таблица N×N: если вершины соединены → 1, иначе → 0
| A | B | C | |
|---|---|---|---|
| A | 0 | 1 | 1 |
| B | 1 | 0 | 1 |
| C | 1 | 1 | 0 |
3️⃣ Список смежности
A: B C B: A C C: A B
4️⃣ Матрица инцидентности
Таблица V×E: 1 — вершина инцидентна ребру, 0 — нет.
3. Степень вершины
deg(v) — количество рёбер из вершины.
4–8. Метрики графа
- Расстояние d(u,v) — минимальное число рёбер между вершинами
- Эксцентриситет e(v) = max(d(v,u))
- Радиус R = min(e(v))
- Диаметр D = max(e(v))
- Центр — вершины, где e(v) = R
9. Связность
Граф связный, если из любой вершины можно попасть в любую. Иначе — компоненты связности.
10. Двудольный граф
Можно разбить на 2 группы, где рёбра идут только между группами. Можно раскрасить 2 цветами.
11. Дерево
Связный граф без циклов.
Алгоритм нахождения центра дерева:
- Найти все висячие вершины (степень = 1)
- Удалить их и инцидентные рёбра
- Повторять, пока не останется 1 или 2 вершины
- Оставшиеся вершины — центр
12. Обходы графа
- DFS (Depth-First Search) — поиск в глубину (идём максимально глубоко)
- BFS (Breadth-First Search) — поиск в ширину (идём по уровням)
13–14. Планарность и раскраска
Планарный — можно нарисовать без пересечения рёбер.
Хроматическое число χ(G) — минимальное число цветов для правильной раскраски.
15. Изоморфизм
Графы изоморфны, если можно установить соответствие между вершинами, сохраняющее смежность.
Инварианты для проверки: число вершин, число рёбер, степени вершин, число компонент связности.
16. Формула Эйлера
где F — число граней планарного графа.
17. Хроматическое число
- Двудольный граф: χ(G) = 2
- Полный граф Kₙ: χ(G) = n
- Дерево: χ(G) = 2
18. Минимальное остовное дерево (MST)
Алгоритм Краскала:
- Отсортировать рёбра по возрастанию веса
- Добавлять рёбра, если они не образуют цикл
- Остановиться при n−1 рёбрах
Алгоритм Прима:
- Начать с произвольной вершины
- На каждом шаге добавлять минимальное ребро, соединяющее дерево с новой вершиной
- Повторять, пока все вершины не будут включены
19. Сетевое планирование
Критический путь (метод CPM) — самый длинный путь в сети, определяющий минимальное время проекта.
Алгоритм:
- Нарисовать граф работ
- Выполнить топологическую сортировку
- Нарисовать сетевой график
- Определить резерв времени для каждой работы
- Найти критические работы (резерв = 0)
20. Эйлеровы цепи и циклы
- Эйлерова цепь существует, если 0 или 2 вершины нечётной степени
- Эйлеров цикл — если все вершины чётной степени
Алгоритм Флёри: идти по рёбрам, не удаляя мосты, пока возможно.
21. Задача коммивояжёра
Найти кратчайший гамильтонов цикл (посетить все вершины по одному разу и вернуться).
🔢 Вариант 0 (пример контрольной)
Задача 1 4 балла
Условие: 5 городов. Банк в городе №3. Инкассатор выезжает из офиса, посещает все 4 филиала и возвращается. Найти минимальное расстояние.
| Город | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 1 | 0 | 7 | 6 | 3 | 5 |
| 2 | 7 | 0 | – | 2 | 1 |
| 3 | 6 | – | 0 | 3 | 8 |
| 4 | 3 | 2 | 3 | 0 | 4 |
| 5 | 5 | 1 | 8 | 4 | 0 |
Граф: вершины — города, рёбра — дороги, веса — длины.
Задача: найти кратчайший гамильтонов цикл с началом в вершине 3.
Метод ближайшего соседа (жадный алгоритм для задачи коммивояжёра).
Задача 2 4 балла
Условие: 6 островов. Построить мосты так, чтобы можно было добраться с любого на любой, минимизировав стоимость.
| Остров | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 1 | 0 | 9 | 1 | 2 | 5 | 6 |
| 2 | 9 | 0 | 4 | 6 | 6 | 7 |
| 3 | 1 | 4 | 0 | 11 | 4 | 3 |
| 4 | 2 | 6 | 11 | 0 | 4 | 3 |
| 5 | 5 | 6 | 4 | 4 | 0 | 2 |
| 6 | 6 | 7 | 3 | 3 | 2 | 0 |
Граф: вершины — острова, рёбра — мосты, веса — стоимость.
Задача: построение минимального остовного дерева (MST).
Краскала: сортируем рёбра, добавляем без циклов, пока не будет n−1=5 рёбер.
Решение (шаги):
| Шаг | Ребро | Вес | Действие |
|---|---|---|---|
| 1 | 1-3 | 1 | ✅ Добавить |
| 2 | 1-4 | 2 | ✅ Добавить |
| 3 | 5-6 | 2 | ✅ Добавить |
| 4 | 3-6 | 3 | ✅ Добавить |
| 5 | 2-3 | 4 | ✅ Добавить (5 рёбер) |
Задача 3 4 балла
Условие: 6 пользователей. Новость рассылается друзьям за 1 минуту. Кому сообщить, чтобы все узнали быстрее?
| Польз. | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 0 | 0 | 0 | 0 |
| 2 | 1 | 0 | 1 | 0 | 0 | 0 |
| 3 | 0 | 1 | 0 | 1 | 1 | 0 |
| 4 | 0 | 0 | 1 | 0 | 1 | 1 |
| 5 | 0 | 0 | 1 | 1 | 0 | 0 |
| 6 | 0 | 0 | 0 | 1 | 0 | 0 |
Граф: вершины — пользователи, рёбра — дружба.
Задача: найти вершину с минимальным эксцентриситетом (центр графа).
BFS от каждой вершины → e(v) = max(d(v,u)) → найти min(e(v)).
Задача 4 4 балла
Условие: Дерево задано кодом (0001 0011 1001 1101). а) Нарисовать. б) Найти центр, радиус, диаметр. в) Изоморфно ли G=(V,E)?
V={v₁...v₉}, E={(v₁,v₂), (v₂,v₃), (v₂,v₅), (v₂,v₆), (v₃,v₄), (v₅,v₆), (v₅,v₉), (v₆,v₇)}
а) Восстановление
Код: 0001=1, 0011=3, 1001=9, 1101=13 → [1, 3, 9, 13] — 6 вершин
б) Центр дерева (алгоритмом для дерева):
- Висячие вершины: 1, 4, 6, 7, 9 → удалить
- Остались: 2, 3, 5 → висячие: 3, 5 → удалить
- Осталась: 2 — центр
Задача 5 3 балла
Условие: Граф G задан матрицей инцидентности. Для G̅: а) доказать планарность, б) найти грани, в) найти χ(G).
e₁ e₂ e₃ e₄ e₅ e₆
v₁ [0 0 1 0 1 0]
v₂ [1 0 1 0 0 0]
v₃ [1 0 0 0 0 1]
v₄ [0 1 0 0 0 1]
v₅ [0 1 0 1 0 0]
v₆ [0 0 0 1 1 0]
Задача 6 4 балла
Условие: Задача сетевого планирования.
| Работа | Предшественники | Длительность |
|---|---|---|
| A | D | 2 |
| B | — | 2 |
| C | E | 5 |
| D | B | 1 |
| E | B, D | 3 |
| F | A, E | 4 |
Задача 7 2 балла
Условие: Построить эйлерову цепь или цикл.
*--*--*--*
\ /| \/
/ \| /\
*--*--*--*
Подсчитать степени вершин. Если 0 нечётных → цикл, если 2 → цепь.
Флёри: идти по рёбрам, не удаляя мосты.
✅ Контрольная работа (4 вариант)
Задача 1 6 баллов
Условие: 6 городов. Запустить автобусные маршруты так, чтобы из любого города можно было добраться в любой, а общая длина была минимальна.
| Город | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 3 | 9 | 2 | 8 |
| 2 | 1 | 0 | 4 | – | – | 6 |
| 3 | 3 | 4 | 0 | 5 | 6 | – |
| 4 | 9 | – | 5 | 0 | 5 | 2 |
| 5 | 2 | – | 6 | 5 | 0 | 7 |
| 6 | 8 | 6 | – | 2 | 7 | 0 |
Граф: вершины — города, рёбра — дороги, веса — длины.
Задача: построение минимального остовного дерева (MST).
Краскала: сортируем рёбра по весу, добавляем без циклов, пока не будет n−1=5 рёбер.
Решение (шаги):
| Шаг | Ребро | Вес | Действие |
|---|---|---|---|
| 1 | 1-2 | 1 | ✅ Добавить |
| 2 | 1-5 | 2 | ✅ Добавить |
| 3 | 4-6 | 2 | ✅ Добавить |
| 4 | 1-3 | 3 | ✅ Добавить |
| 5 | 2-3 | 4 | ❌ Цикл 1-2-3-1 |
| 6 | 3-4 | 5 | ✅ Добавить (5 рёбер) |
Задача 2 6 баллов
Условие: 7 компьютеров. Вирус распространяется за 1 минуту. Какой компьютер заразить, чтобы все заразились быстрее?
| Польз. | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
| 2 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
| 3 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
| 4 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 5 | 1 | 0 | 1 | 0 | 0 | 0 | 1 |
| 6 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 7 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
Граф: вершины — компьютеры, рёбра — соединения.
Задача: найти вершину с минимальным эксцентриситетом (центр графа).
BFS от каждой вершины → e(v) = max(d(v,u)) → найти min(e(v)).
Задача 3 6 баллов
Условие: 6 городов, банк в городе №3. Инкассатор посещает все 5 филиалов и возвращается. Найти минимальное расстояние.
| Город | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 1 | 0 | 3 | 2 | 4 | – | 1 |
| 2 | 3 | 0 | 4 | 3 | 8 | 6 |
| 3 | 2 | 4 | 0 | 1 | – | 5 |
| 4 | 4 | 3 | 1 | 0 | 7 | – |
| 5 | – | 8 | – | 7 | 0 | 5 |
| 6 | 1 | 6 | 5 | – | 5 | 0 |
Граф: вершины — города, рёбра — дороги, веса — длины.
Задача: найти кратчайший гамильтонов цикл с началом в вершине 3.
Метод ближайшего соседа (жадный алгоритм).
Задача 4 6 баллов
Условие: Дерево задано кодом (001 011 000 110 101 101). а) Нарисовать. б) Найти центр, радиус, диаметр. в) Изоморфно ли G=(V,E)?
V={v₁...v₁₀}, E={(v₁,v₂), (v₁,v₅), (v₁,v₁₀), (v₂,v₃), (v₃,v₄), (v₅,v₆), (v₅,v₈), (v₅,v₉), (v₆,v₇)}
Задача 5 5 баллов
Условие: Граф G задан матрицей инцидентности. Для G̅: а) доказать планарность, б) найти грани, в) найти χ(G).
e₁ e₂ e₃ e₄ e₅
v₁ [0 0 1 0 0]
v₂ [0 1 0 0 0]
v₃ [0 0 0 1 0]
v₄ [0 0 1 0 1]
v₅ [1 1 0 0 1]
v₆ [1 0 0 1 0]
Задача 6 5 баллов
Условие: Задача сетевого планирования.
| Работа | Предшественники | Длительность |
|---|---|---|
| A | G | 3 |
| B | F, G | 4 |
| C | G | 3 |
| D | A | 2 |
| E | A, B, C | 2 |
| F | — | 4 |
| G | — | 5 |
Задача 7 2 балла
Условие: Построить эйлерову цепь.
●────●────●────●
│╲ │╲ │╲ │
│ ╲ │ ╲ │ ╲ │
│ ╲ │ ╲ │ ╲ │
●────●────●────●
🎯 7 ключевых тем для экзамена
- Минимальное остовное дерево (алгоритм Краскала/Прима)
- Центр графа / эксцентриситет / радиус / диаметр
- Матрица смежности / инцидентности
- Деревья (радиус, диаметр, код Прюфера, алгоритм центра)
- Планарность (формула Эйлера V−E+F=2, плоская укладка)
- Критический путь (сетевое планирование, метод CPM)
- Эйлеровы цепи и циклы (проверка степеней, алгоритм Флёри)
💡 Оформление на экзамене:
- Формализация (Граф: ..., Задача: ...)
- Алгоритм (название + краткое описание)
- Решение (пошагово с рисунками)
- Ответ (чётко выделен)
📊 Максимальный балл: 4+4+4+4+3+4+2 = 25 баллов (вариант 0)
4 вариант: 6+6+6+6+5+5+2 = 36 баллов