Урок 07. Графы по таблице: длина пути, кратчайший путь и количество путей

Научиться читать таблицу дорог как граф, различать длину пути и количество путей, находить кратчайший путь, в том числе через обязательный пункт или не через запрещённый, и считать различные пути по таблице.

Нужны тетрадь, карандаш и линейка. Каждую таблицу сначала переведи в рисунок: так почти все ошибки видны сразу.

Все уроки · Перейти к заданиям

Материалы к уроку

Главное

Как читать таблицу. Города записаны в заголовках строк и столбцов. Число в клетке — длина дороги между городом строки и городом столбца. Пустая клетка означает, что прямой дороги нет. Таблица зеркальна относительно диагонали (в клетке БД и в клетке ДБ одно и то же число), значит, дороги можно проезжать в обе стороны, и граф неориентированный. Достаточно читать клетки выше диагонали: каждая дорога записана там один раз.

Пример таблицы:

АБВГ
А147
Б125
В423
Г753

Рисунок этого же графа: пункты — кружки, дороги — линии, число на линии — длина дороги.

flowchart LR
    A["А"] ---|"1"| B["Б"]
    A ---|"4"| V["В"]
    A ---|"7"| G["Г"]
    B ---|"2"| V
    B ---|"5"| G
    V ---|"3"| G
    classDef city fill:#d0ebff,stroke:#1971c2,color:#212529;
    class A,B,V,G city;

Выше диагонали: А—Б = 1, А—В = 4, А—Г = 7, Б—В = 2, Б—Г = 5, В—Г = 3. Это шесть рёбер.

Длина пути и количество путей — разные вещи.

  • Длина пути — сумма весов рёбер вдоль пути. Путь А→Б→Г имеет длину .
  • Количество путей — сколько разных последовательностей вершин ведёт из А в Г. Складывать веса для этого не нужно: веса не считаются.

Если в вопросе слова «сколько путей», веса вообще не используются. Если спрашивают «длину кратчайшего пути», веса складываются, и из всех путей выбирают наименьшую сумму.

Что такое «путь» в таких задачах. В неориентированном графе вершины в пути не повторяются: иначе можно было бы ходить по кругу бесконечно. Путь «ненулевой длины» — путь хотя бы из одного ребра, то есть начало и конец разные.

Количество путей по таблице — перебор. Выписывают пути по ветвям дерева: из начала идут в каждого соседа, из него — в каждого ещё не посещённого соседа, пока не дойдут до конца. Для таблицы из примера пути из А в Г:

А→Г; А→Б→Г; А→В→Г; А→Б→В→Г; А→В→Б→Г. Всего 5 путей.

Кратчайший путь. Способ 1: выписать все пути и сложить веса. Способ 2 (быстрее): подписать вершины кратчайшими расстояниями от начала. Для А: . Дальше для каждой вершины X берут по всем соседям Y, подписанным раньше. Подписывают в порядке возрастания расстояния: сначала самую близкую вершину, потом следующую.

Обязательный пункт. Путь из А в Ф через вершину С состоит из двух кусков: А→С и С→Ф. Берут кратчайший путь А→С, кратчайший путь С→Ф и складывают их длины.

Запрещённый пункт. Путь не проходит через вершину X: вычёркивают вершину X вместе со всеми её дорогами и ищут нужное число (кратчайший путь или количество путей) в оставшемся графе.

Три вопроса перед решением

  1. Спрашивают длину или количество? 2. Есть ли условие «через» или «не через»? 3. Нарисован ли граф по таблице? Только после этого считай.

Наглядная схема

flowchart TD
    A["Таблица дорог"] --> B["Нарисовать граф по клеткам выше диагонали"]
    B --> C{"Что спрашивают?"}
    C -->|"Длину кратчайшего пути"| D["Сложить веса, выбрать наименьшую сумму"]
    C -->|"Количество путей"| E["Выписать пути перебором, веса не считать"]
    D --> F{"Есть условие?"}
    E --> F
    F -->|"Через пункт"| G["Два куска: до пункта и после него"]
    F -->|"Не через пункт"| H["Вычеркнуть пункт и его дороги"]
    classDef rule fill:#d0ebff,stroke:#1971c2,color:#212529;
    class D,E,G,H rule;

Тренировка по шагам

Каждую таблицу сначала нарисуй как граф с числами на рёбрах. Потом выбирай метод.

Шаг 1. Читаем клетку

Таблица:

АБВГДЕ
А28
Б245
В413
Г85176
Д372
Е62

Какая длина дороги между Б и Г? Есть ли прямая дорога между А и В?

Ответ ученика

Найди строку Б и столбец Г: число стоит на их пересечении.

Шаг 2. Список рёбер

Таблица в разделе «Главное» (города А, Б, В, Г). Выпиши все дороги и скажи, сколько их.

Ответ ученика

Читай только клетки выше диагонали, чтобы не записать дорогу дважды.

Шаг 3. Длина пути

В графе из «Главного» найди длину пути А→Б→Г.

Ответ ученика

Сложи веса рёбер пути.

Шаг 4. Сколько всего путей

Для того же графа найди количество различных путей из А в Г. Вершины в пути не повторяются.

Ответ ученика

Выписывай пути перебором: сначала прямой, потом через одну вершину, потом через две. Веса не нужны.

Шаг 5. Количество путей не через пункт

В том же графе сколько путей из А в Г не проходят через В?

Ответ ученика

Вычеркни вершину В и её дороги, потом перебери пути в оставшемся графе.

Шаг 6. Кратчайший путь

Таблица (города А, Б, В, Г, Д):

АБВГД
А256
Б214
В5137
Г632
Д472

Найди длину кратчайшего пути из А в Д.

Ответ ученика

Нарисуй граф и выпиши несколько путей с суммами.

Шаг 7. Подписи расстояний

Города А, Б, В, Г, Д, Е, Ф. Дороги: А—Б = 2, А—В = 3, А—Г = 7, А—Ф = 15, Б—Г = 3, В—Г = 1, Г—Е = 2, Г—Ф = 11, Е—Ф = 3. Найди кратчайший путь из А в Ф подписями расстояний.

Ответ ученика

Подписывай вершины в порядке возрастания расстояния от А.

Шаг 8. Обязательный пункт

Таблица из шага 1. Найди длину кратчайшего пути из А в Е, проходящего через В.

Ответ ученика

Найди отдельно А→В и В→Е и сложи.

Шаг 9. Запрещённый пункт

Таблица из шага 6. Найди длину кратчайшего пути из А в Д, не проходящего через Б.

Ответ ученика

Вычеркни Б вместе с её дорогами и найди кратчайший путь в остатке.

Шаг 10. Ещё запрет

Города А, Б, В, Г, Д. Дороги: А—Б = 4, А—В = 2, Б—В = 1, Б—Г = 5, В—Г = 8, В—Д = 10, Г—Д = 2. Найди длину кратчайшего пути из А в Д, не проходящего через В.

Ответ ученика

Без В остаются дороги А—Б, Б—Г, Г—Д.

Шаг 11. Количество путей с запретом

Дороги: А—Б = 3, А—В = 5, Б—В = 2, Б—Г = 4, В—Г = 6. Сколько различных путей из А в Г не проходят через В?

Ответ ученика

Вычеркни В. Веса не нужны.

Шаг 12. Исправь ошибку

Таблица в разделе «Главное». Задача: «Сколько различных путей из А в Г не проходят через В?» Ученик записал: «А→Б = 1, Б→Г = 5, ответ 6». Найди ошибки и реши правильно.

Ответ ученика

Отметь, что считает ученик: длину или количество? Все ли пути он нашёл?

Как оценить результат

Можно переходить дальше, если не менее 10 из 12 шагов выполнены верно, ученик рисует граф по таблице, различает длину и количество, не складывает веса в задачах на количество, находит кратчайший путь, решает задачи с обязательным и запрещённым пунктами и проверяет себя перебором.

Вопросы ученика

Предыдущий урок