Теория:

Суть алгоритма заключается в том, чтобы пройти кратчайший путь от исходной вершины к конечной целевой вершине. Условно от исходной вершины спускается "волна", которая рассматривает сразу все смежные вершины. Поэтому алгоритм называется волновым.
Описание алгоритма
1. Присваиваем исходной вершине число \(0\). Это означает, что из нее не исходят ребра к смежным вершинам (к ним \(0\) путей).
2. Движемся к смежным с исходной вершинам. Им присваиваем число \(1\), так как от исходной вершины к смежным вершинам ведут по одному ребру (по \(1\) пути у каждой).
3. Дальше рассматриваем смежные вершины, у тех которые отмечены числом \(1\). Этим вершинам присваиваем число \(2\), так как к каждой из них уже ведут два ребра.
4. Следующим смежным с предыдущими вершинам присваиваем число \(3\). Если к этим вершинам ведут еще другие пути, но с большей длинной пути от исходной вершины, то присваиваем наименьшее число (выбираем наименьший путь). Считается, что эта вершина уже исследована ранее.
5. Алгоритм повторяется до тех пор, пока не достигнет конечной целевой вершины или пока не останется неисследованных вершин.
Если волновой алгоритм исследовал все доступные вершины, но так и не достиг целевой вершины, значит, путь проложить невозможно.
Дан граф (рис. \(1\)).
ГР1.png
Рис. \(1\). Исходный граф
Реализация алгоритма на графеОписание хода реализации алгоритма
гр2.pngПрисваиваем исходной вершине \(A\) число \(0\), так как в нее не ведет ни один путь
гр3.pngКаждой смежной с исходной вершине(\(В\), \(F\), \(G\)) присваиваем \(1\), так как в них ведет единственный путь от исходной вершины
гр4.png
Рассматриваем вершины, смежные предыдущим \(В\), \(F\), \(G\). Присваиваем им число \(2\).
Опишем путь к каждой из них.
Путь к вершине \(D\): \(A—B—D\). Два ребра от исходной вершины, поэтому присвоили число \(2\).
Самый короткий путь к вершине \(E\): \(A—F—E\). 
Самый короткий путь к вершине \(I\): \(A—G—I\).
 
гр5.png 
Рассматриваем вершины, смежные предыдущим. Им будет присвоено число \(3\). Как видно из схемы, это вершины \(J\), \(K\), \(L\). К ним ведет по три ребра от исходной вершины \(А\). Каждый путь для наглядности выделен соответствующим цветом
 
гр6.pngРассматриваем вершины, смежные предыдущим. Им будет присвоено число \(4\). Как видно из схемы, это вершины \(N\) и \(O\). К ним ведет по четыре ребра от исходной вершины \(А\). Каждый путь для наглядности выделен соответствующим цветом. К вершине \(N\) имеется два таких пути
гр7.png Теперь исследуем оставшиеся две последние вершины \(Q\) и \(P\). Обе они смежны только с вершиной \(О\), которой уже присвоено число \(4\). Поэтому вершинам \(Q\) и \(O\) присваиваем число \(5\). И как видно из схемы к этим вершинам ведет путь из пяти рёбер от исходной вершины \(А\): \(A—G—I—L—O—P(Q)\)