Как найти кратчайший путь между городами по схеме дорог
Условие
Между посёлками А, Б, В, Г и Д проложены дороги с двусторонним движением: А–Б 3 км, А–В 5 км, Б–В 1 км, Б–Г 7 км, В–Г 3 км, В–Д 9 км, Г–Д 2 км. Других дорог нет. Найдите длину кратчайшего пути из А в Д и укажите сам маршрут.
Ответ
9 км, маршрут А–Б–В–Г–Д
Решение по шагам
Шаг 1. Чем короткий путь отличается от пути с малым числом дорог
«Кратчайший» — это путь с наименьшей суммарной длиной, а не с наименьшим количеством дорог. Например, маршрут А–В–Д состоит всего из двух дорог, но его длина км — как мы увидим, это далеко не лучший вариант.
Дороги двусторонние, значит по каждой можно ехать в любую сторону.
Шаг 2. Метод меток: расставляем расстояния от А
Заведём для каждого посёлка метку — найденную на данный момент кратчайшую длину пути из А в . Начинаем с .
Прямые дороги из А дают первые метки:
км, км.
Дальше метки будем уточнять: если через какой-то посёлок доехать дешевле, метка уменьшается.
Осталось ещё 3 шага — откроются после входа:
- Шаг 3. Уточняем метки В и Г
- Шаг 4. Считаем метку Д
- Шаг 5. Проверка
Бесплатно · займёт минуту
Частые ошибки
- ✗
Выбирают маршрут с наименьшим числом дорог (А–В–Д, 14 км) вместо самого короткого по километрам.
- ✗
Сворачивают к финишу при первой возможности: доехав до В, сразу едут по дороге В–Д и получают А–Б–В–Д = 13 км.
- ✗
Не догадываются, что в В выгоднее приехать через Б (4 км), а не напрямую (5 км).
- ✗
Считают, что маршрут из четырёх дорог заведомо хуже маршрута из двух, и даже не проверяют А–Б–В–Г–Д.