Нахождение всех циклов в ориентированном графе

Здесь должен работать поиск algorithm в глубину с возвратом. Сохраните graph-theory массив логических значений, чтобы graph-theory отслеживать, посещали ли algorithms вы узел раньше. Если у вас graph-algorithm заканчиваются новые узлы algorithms для перехода (без попадания algorithm-design в узел, в котором вы уже graph-algorithm были), просто вернитесь назад algorithms и попробуйте другую ветвь.

DFS graph-theory легко реализовать, если у graph-algorithm вас есть список смежности graph-algorithm для представления графа. Например, adj graph-algorithm [A] = {B, C} указывает, что graph-theory B и C являются дочерними algorithm-design элементами A.

Например, псевдокод graph-algorithm ниже. "start" - это узел, с graph-theory которого вы начинаете.

dfs(adj,node,visited):  
  if (visited[node]):  
    if (node == start):  
      "found a path"  
    return;  
  visited[node]=YES;  
  for child in adj[node]:  
    dfs(adj,child,visited)
  visited[node]=NO;

Вызовите algorithm указанную выше функцию с graph-algorithm начальным узлом:

visited = {}
dfs(adj,start,visited)

algorithm

graph-theory

graph-algorithm

2022-11-18T10:21:24+00:00
Вопросы с похожей тематикой, как у вопроса:

Нахождение всех циклов в ориентированном графе