Алгоритм решения.
1°. Присвоить вершине метку 0.
2°. Если и , то присвоить каждой такой вершине метку 1.
3°. Пусть — множество вершин, имеющих метку . Вершинам множества при присвоить метку .
4°. Процесс присвоения вершинам меток прекратить, как только вершина получит некоторую метку .
5°. Рассмотреть вершины , такие, что
Замечание: Если на некотором шаге невозможно присвоение метки от значения вершинам в силу того, что множество пусто, и вершина не получила метки, то это означает, что в графе не существует никакого пути, соединяющего вершину с вершиной .
Доказательство того, что применение правил алгоритма всегда приводит к решению задачи 1, основывается на том очевидном факте, что вершины множества — это все те вершины, в которые можно попасть из вершины по путям, содержащим ровно дуг, и нельзя попасть по пути длины меньшей, чем .
2. Путь кратчайшей длины. Рассмотрим теперь случай, когда каждой дуге графа сопоставлено положительное число . Это число можно назвать длиной дуги. Длиной пути назовем сумму длин дуг, входящих в путь :
.
Возникает следующая задача. Найти в графе путь кратчайшей длины, соединяющий вершину с вершиной .
Алгоритм решения.
1°. Перенумеровать вершины графа так, чтобы вершина получила номер 0. Обозначить вершину через . (При этом вершина совпадет с некоторой вершиной ).
2°. Присвоить каждой вершине метку так, чтобы при .
3°. Найти такую дугу , для которой . (Полагаем, что .) У вершины заменить метку на новую, меньшую метку .
4°. Применять правило 3° до тех пор, пока для каждой дуги не станет справедливым неравенство: .
5°. Во множестве найти такую вершину , что .
Аналогично, во множестве найти такую вершину , чтобы было справедливо равенство и т. д.
После некоторого числа шагов вершина совпадет с вершиной .
Путь — кратчайший, его длина равна .