Поиск в глубину ( DFS )
Поиск в глубину (DFS, depth-first search) представляет собой классический гибкий алгоритм, который применяется для решения задачи связанности и множества других задач обработки графов
Стратегия поиска в глубину такова: идти "вглубь", пока это возможно (есть не пройденные входящие ребра), и возвращаться и искать другой путь, когда таких ребер нет. Так делается, пока не обнаружены все вершины, достижимые из исходной. Алгоритм поиска в глубину использует цвета вершин. Каждая из вершин вначале белая. Будучи обнаруженной, она становится серой; она станет черной, когда будет полностью обработана, то есть когда все смежные с ней вершины окрашены.
1. Начинаем поиск с произвольной вершины s. В качестве текущей вершины v берем вершину s. Красим её в серый цвет. 1 2 5 4 10 6 8 7 9 3 11 12 13
2. Из текущей вершины v двигаемся в любую, ранее не пройденную вершину w (белую), 4 если такая вершина найдется (если вершины w нет, см. пункт 3). Запоминаем дугу, по которой мы 9 попали в вершину w. В качестве текущей вершины v берем вершину w. 1 2 3 5 8 7 10 6 11 12 13
3. Если из вершины v мы не можем попасть в ранее не пройденную вершину w, то 4 возвращаемся в вершину x, из которой мы попали в v, и красим v в чёрный цвет. В качестве текущей 9 вершины v берем вершину x. 1 2 3 5 8 7 10 6 11 12 13
4. Процесс поиска (пункты 2, 3) заканчивается, когда мы пытаемся вернуться 4 назад из вершины, с которой начался поиск (вершина s). 9 1 2 3 5 8 7 10 6 11 Обход графа завершен. 12 13