Поделитесь своими знаниями, ответьте на вопрос:
Между населёнными пунктами A, B, C, D, E, F, Z построены дороги, протяжённость которых приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пунктами нет.) Определите длину кратчайшего пути между пунктами A и Z (при условии, что передвигаться можно только по построенным дорогам
Шаг 1: Создание таблицы смежности
Перед началом работы алгоритма нам необходимо создать таблицу смежности, которая покажет связи между населенными пунктами и длину дорог между ними.
A B C D E F Z
A 0 3 0 0 0 0 0
B 3 0 2 0 0 0 0
C 0 2 0 1 3 0 0
D 0 0 1 0 0 1 0
E 0 0 3 0 0 0 2
F 0 0 0 1 0 0 4
Z 0 0 0 0 2 4 0
В этой таблице каждая ячейка обозначает длину дороги между соответствующими населенными пунктами. Если между пунктами нет прямого пути, то значение ячейки будет нулем.
Шаг 2: Инициализация
Начнем с пункта A и определим его текущую длину как 0, а длину до всех остальных пунктов как бесконечность. Также создадим список посещенных пунктов, в котором пока будет только пункт A.
A B C D E F Z
A 0 ∞ ∞ ∞ ∞ ∞ ∞
Шаг 3: Поиск кратчайшего пути
Теперь начнем поиск кратчайшего пути. На каждом шаге мы будем выбирать наименьшее значение из текущих длин до пунктов, которые еще не были посещены.
- Выберем пункт B, так как его длина сейчас составляет 3. Обновим длины до всех смежных с ним пунктов:
A B C D E F Z
A 0 3 ∞ ∞ ∞ ∞ ∞
B 3 0 2 ∞ ∞ ∞ ∞
- Затем выберем пункт C с длиной 2 и обновим длины:
A B C D E F Z
A 0 3 2 ∞ ∞ ∞ ∞
B 3 0 2 ∞ ∞ ∞ ∞
C 2 2 0 1 3 ∞ ∞
- Пункт D имеет длину 1, поэтому обновим длины:
A B C D E F Z
A 0 3 2 1 ∞ ∞ ∞
B 3 0 2 1 ∞ ∞ ∞
C 2 2 0 1 3 ∞ ∞
D 1 1 1 0 3 ∞ ∞
- Теперь выберем пункт E, его длина равна 3:
A B C D E F Z
A 0 3 2 1 3 ∞ ∞
B 3 0 2 1 3 ∞ ∞
C 2 2 0 1 3 ∞ ∞
D 1 1 1 0 3 ∞ ∞
E 3 3 3 3 0 ∞ ∞
- Значение F равно 3, поэтому:
A B C D E F Z
A 0 3 2 1 3 3 ∞
B 3 0 2 1 3 3 ∞
C 2 2 0 1 3 4 ∞
D 1 1 1 0 3 2 ∞
E 3 3 3 3 0 4 ∞
F 3 3 4 2 4 0 ∞
- И наконец, выберем пункт Z:
A B C D E F Z
A 0 3 2 1 3 3 5
B 3 0 2 1 3 3 5
C 2 2 0 1 3 4 5
D 1 1 1 0 3 2 6
E 3 3 3 3 0 4 4
F 3 3 4 2 4 0 6
Z 5 5 5 6 4 6 0
Окончательный результат показывает длину кратчайшего пути между пунктами A и Z равной 5.
Таким образом, длина кратчайшего пути между пунктами A и Z составляет 5 единицы длины дороги.