"Информатика", Горячев А.В., Суворова Н.И.
Путь в графе показывает, как можно перейти от одной вершины к другой по рёбрам. Такие последовательности помогают описывать маршруты и сравнивать их: длину пути считают по числу пройденных рёбер, а простой путь не проходит через одну вершину дважды. Если рёбра обозначают дороги и имеют длину, сравнивают суммарную длину маршрутов. Эти понятия нужны, чтобы находить кратчайший путь между заданными вершинами.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Путь — последовательность вершин графа, в которой каждые соседние вершины соединены ребром. Например, запись A–B–C означает переход из A в B, а затем из B в C; оба нужных ребра должны существовать. Это понятие позволяет описывать возможное движение по графу.
Длина пути — количество рёбер, входящих в путь. В записи A–B–C–D три ребра, поэтому длина пути равна 3, хотя вершин четыре. По длине можно сравнивать, сколько переходов требуется для разных маршрутов.
Простой путь — путь, в котором ни одна вершина не повторяется. Например, A–B–C–D может быть простым, если все его соседние вершины соединены рёбрами и обозначения не повторяются. Простые пути удобно перечислять и анализировать, потому что в них нет возвращений к уже посещённым вершинам.
Кратчайший путь — путь между заданными вершинами с наименьшей длиной. Если рёбра одинаковы по значению, сравнивают число рёбер; если на рёбрах указаны длины, складывают их значения. Такой путь помогает выбрать самый короткий маршрут по заданному условию.
Чтобы последовательность вершин была путём, нужно проверить каждую пару, стоящую рядом. Например, для A–B–D–E проверяют рёбра AB, BD и DE: одного отсутствующего ребра достаточно, чтобы последовательность перестала быть путём. Проверка нужна потому, что запись задаёт не просто набор посещённых вершин, а непрерывное движение по графу.
Длину считают по рёбрам, потому что ребро обозначает один переход от вершины к соседней. При движении A–B–C можно совершить два перехода, хотя в записи стоят три вершины. Поэтому длина пути из n вершин равна n − 1, если каждая соседняя пара соединена ребром; так длина показывает число шагов, а не число мест остановки.
Начальная вершина стоит первой в записи, а конечная — последней. Так путь из A в D записывают, например, A–B–D, если рёбра AB и BD есть в графе. Порядок важен: запись D–B–A показывает движение в обратном направлении, а в ориентированном графе обратные переходы могут быть запрещены.
Повторение вершины означает, что путь возвращается в уже посещённое место. Если такой обход не нужен для выполнения условия, его можно исключить: после удаления части пути между повторными посещениями концы маршрута сохраняются, а число переходов уменьшается. Поэтому простой путь удобнее изучать при поиске маршрута без лишних возвращений и при перечислении возможных вариантов.
Чтобы выбрать кратчайший путь, сравнивают длины всех подходящих путей между заданными концами. Если все рёбра равнозначны, достаточно посчитать переходы; если рёбра имеют разные длины, нужно сложить значения на рёбрах каждого маршрута. Например, маршрут из трёх дорог общей длиной 12 может оказаться длиннее маршрута из четырёх дорог общей длиной 9, поэтому число рёбер не всегда решает задачу.
| Признак | Что проверяем | Как записываем | Практический смысл |
|---|---|---|---|
| Начальная и конечная вершины | С каких и на каких вершинах начинается и заканчивается путь | Первая и последняя вершины последовательности | Определяют направление движения |
| Длина пути | Сколько рёбер пройдено | Количество переходов между вершинами | Позволяет сравнивать пути |
| Простота пути | Повторяются ли вершины | В простом пути повторений нет | Упрощает поиск и описание маршрута |
| Кратчайший путь | Имеет ли путь минимальную длину среди возможных | Выбирается сравнением длин | Используется для поиска оптимального маршрута |
Сначала определи, какие вершины должны быть концами пути, затем проверь непрерывность переходов. После этого выясни, что именно требуется сравнить: число рёбер или сумму их длин. Таблица помогает не смешивать эти признаки.
Задача 1. Для примера задан граф, в котором есть рёбра AB, BD и DE. Нужно проверить последовательность A–B–D–E и найти её длину. Названия рёбер здесь записаны без тире: AB соединяет A и B.
Ответ: A–B–D–E — путь длины 3.
Задача 2. В заданном для примера графе есть рёбра AB, AC, BC, BD и CD. Запишем все простые пути длины 3 из A в D. Длина 3 означает, что нужно сделать три перехода, а простой путь не должен повторять вершины.
Ответ: A–B–C–D и A–C–B–D.
Задача 3. На дорогах указаны длины: AB = 4, AC = 2, CB = 1, BF = 5, CD = 4, DF = 2, CF = 8. Нужно найти кратчайший путь из A в F. Поскольку дороги имеют разные длины, сравниваем суммы, а не только количество рёбер.
Ответ: кратчайшие маршруты — A–C–D–F и A–C–B–F, длина каждого равна 8.
Ошибка — считать длиной пути число вершин. Её допускают, потому что при чтении записи внимание часто сосредоточено на обозначениях вершин, а не на переходах между ними. Проверь себя: пересчитай рёбра; у пути из четырёх вершин длина равна трём.
Ошибка — записывать рядом вершины, между которыми нет ребра. Так может случиться, если смотреть только на начальную и конечную точки или предполагать, что любой переход возможен. Проверяй каждую соседнюю пару по рисунку графа или таблице смежности.
Ошибка — считать любой маршрут простым и не замечать повторов. Повтор вершины легко пропустить в длинной записи, особенно если обозначения похожи. Прочитай последовательность по порядку и отметь каждую вершину: в простом пути ни одна отметка не встречается дважды.
Ошибка — выбирать путь с наименьшим числом вершин вместо пути с наименьшей длиной. Это особенно опасно, когда рёбра имеют разные веса: короткий по записи маршрут может включать длинные дороги. Для проверки отдельно посчитай рёбра или сложи их веса — именно эту величину требует условие.
Для работы с путями нужно уметь читать граф и различать его вершины и рёбра. Таблица или матрица смежности помогает проверить, есть ли ребро между двумя соседними вершинами последовательности. Те же проверки используются в задачах на алгоритмы и поиск маршрутов. На практике графы описывают дороги, навигацию и другие транспортные сети.
Можно ли считать последовательность вершин путём, если одно нужное ребро отсутствует?
Нет. Каждые две соседние вершины последовательности должны быть соединены ребром. Если хотя бы одного такого ребра нет, последовательность не является путём.
Почему длина пути на единицу меньше числа его вершин?
При переходе между соседними вершинами используется одно ребро. Поэтому у последовательности из n вершин будет n − 1 переход, если она образует путь.
Может ли путь проходить через одну и ту же вершину несколько раз?
Да, если определение задачи не требует, чтобы путь был простым. В простом пути вершины не повторяются, а в обычном пути повторение возможно.
Всегда ли кратчайший путь содержит наименьшее число рёбер?
Нет, если у рёбер разные длины. Кратчайшим будет путь с наименьшей суммой длин рёбер, даже если он содержит больше рёбер.
Как найти кратчайший путь, если рёбра имеют разные длины?
Сложи длины рёбер каждого возможного маршрута между нужными вершинами. Кратчайшим будет маршрут с наименьшей суммой; в больших графах для поиска применяют специальные алгоритмы.
§ 13. Пути в графах