В начале алгорит проверяет все соседние узлы, затем узлы в двух шагах, затем в трех и так далее пока одна из них не окажеться целевой, либо пока не проверит все точки. При этом в каждом следующем узле запоминается узел из которого в него попали, когда будет достигнута цель, по этим данным восстанавливается пройденый путь. Типичным является то, что для каждого узла его непроверенные соседи помещаются в список Open, который обычно является FIFO очередью.
К недостатка можно отнести то что поиск ведется равномерно по всем направлениям, а не только в направлении цели(это сильно сказывается на производительности), и что не все шаги равны, по крайней мере, шаги по диагонали должны быть длиннее ортогональных. Так же минусом можно считать что в нем не учитывается \»проходимость\» той или иной поверхности: либо можно пройти, либо нет.
Алгоритм поиска в ширину находит кройчаший возможный путь, если он существует.
Реализацию поиска в ширину на Python рассмотрим на примере приложения findway, вот интерисующая нас часть программы, с подробными коментариями…