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