Рубрики

Приложения глубины первого поиска

Поиск в глубину (DFS) — это алгоритм (или методика) обхода графа.

Ниже приведены проблемы, которые используют DFS в качестве строительного блока.

1) Для невзвешенного графа обход DFS графа создает минимальное остовное дерево и все пары кратчайших путей.

2) Обнаружение цикла на графике
Граф имеет цикл тогда и только тогда, когда мы видим задний край во время DFS. Таким образом, мы можем запустить DFS для графа и проверить задние края. (Смотрите это для деталей)

3) Поиск пути
Мы можем специализировать алгоритм DFS, чтобы найти путь между двумя заданными вершинами u и z.
i) Вызовите DFS (G, u) с u в качестве начальной вершины.
ii) Используйте стек S, чтобы отслеживать путь между начальной и текущей вершинами.
iii) Как только конечная вершина z обнаружена, вернуть путь как
содержимое стека

Смотрите это для деталей.

4) Топологическая сортировка
Топологическая сортировка в основном используется для планирования заданий по заданным зависимостям между заданиями. В информатике приложения такого типа возникают в планировании команд, упорядочении вычисления ячеек формул при повторном вычислении значений формул в электронных таблицах, логическом синтезе, определении порядка выполнения задач компиляции в make-файлах, сериализации данных и разрешении символьных зависимостей в компоновщиках [2 ].

5) Проверить, является ли график двудольным
Мы можем увеличить либо BFS, либо DFS, когда мы впервые обнаружим новую вершину, раскрасим ее противоположность своим родителям, и для каждого другого ребра убедитесь, что она не связывает две вершины одного цвета. Первая вершина в любом связанном компоненте может быть красной или черной! Смотрите это для деталей.

6) Нахождение сильно связанных компонент графа . Направленный граф называется сильно связным, если существует путь от каждой вершины графа до любой другой вершины. (См. Это для алгоритма на основе DFS для поиска сильно связанных компонентов)

7) Решение головоломок только с одним решением
, таким как лабиринты. (DFS может быть адаптирован для поиска всех решений лабиринта путем включения только узлов текущего пути в посещаемый набор.)

Источники:
http://www8.cs.umu.se/kurser/TDBAfl/VT06/algorithms/LEC/LECTUR16/NODE16.HTM
http://en.wikipedia.org/wiki/Depth-first_search
http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/GraphAlgor/depthSearch.htm
http://ww3.algorithmdesign.net/handouts/DFS.pdf

Рекомендуемые посты:

Приложения глубины первого поиска

0.00 (0%) 0 votes