Как проверить, ацикличен ли ориентированный граф?

Выполнение простого поиска algorithm-design в глубину недостаточно для поиска цикла. В directed-acyclic-graphs DFS можно посещать узел несколько algorithm-design раз без цикла. В зависимости directed-acyclic-graphs от того, с чего вы начали, вы algorithms также можете не просмотреть algorithm-design всю диаграмму.

Проверить наличие dag циклов в связном компоненте directed-acyclic-graphs графа можно следующим образом. Найдите algorithm узел, у которого есть только directed-graph выходящие ребра. Если такого theory узла нет, значит, есть цикл. Запустите dag DFS на этом узле. При обходе theory каждого ребра проверьте, указывает algorithms ли оно обратно на узел, уже algorithm находящийся в вашем стеке. Это directed-graph указывает на наличие цикла. Если algorithms вы не найдете такого ребра, значит, в directed-acyclic-graphs этом связном компоненте нет directed-acyclic-graphs циклов.

Как указывает Рутгер algorithms Принс, если ваш граф не связан, вам algorithm-design нужно повторить поиск для theory каждого связного компонента.

Для algorithms справки: Tarjan's strongly connected component algorithm тесно связан с directed-graph ним. Это также поможет вам directed-acyclic-graphs найти циклы, а не просто directed-acyclic-graphs сообщить, существуют ли они.

algorithm

theory

directed-graph

directed-acyclic-graphs

2022-10-25T19:55:07+00:00
Вопросы с похожей тематикой, как у вопроса:

Как проверить, ацикличен ли ориентированный граф?