На этом шаге мы рассмотрим.этот алгоритм.
В приведённой ниже записи нерекурсивного алгоритма поиска в глубину на графе [1, с.125-126] предполагается, что:
while (Имеется хотя бы одна непосещённая вершина)
{
Пусть p - первая из непосещённых вершин.
Посетить вершину p и поместить её в пустой стек S;
while (Стек S непуст)
{
Пусть p - вершина, находящаяся на верхушке стека S;
if (Вершина p имеет непосещённые смежные вершины)
{
Пусть q - первая непосещённая вершина из вершин,
смежных вершине p. Пройти по ребру (p,q), посетить
вершину q и поместить её в стек S
}
else Удалить вершину p из стека S
}
}
В результате работы алгоритма пройденные рёбра графа образуют вместе с посещёнными вершинами одно или несколько деревьев.
Если приписать пройденным рёбрам ориентацию в соответствии с тем направлением, в каком они проходятся при выполнении алгоритма, то мы получим совокупность корневых деревьев, причём их корнями будут служить те вершины, которые в процессе работы алгоритма помещались в пустой стек.
На следующем шаге мы рассмотрим поиск в ширину на графе.