Нахождение всех циклов в ориентированном графе
Здесь должен работать поиск 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
Нахождение всех циклов в ориентированном графе
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.