Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 16.11.2017
Сообщений: 22
1

Поиск простых циклов в ориентированном графе

21.02.2021, 21:03. Показов 2924. Ответов 6

Author24 — интернет-сервис помощи студентам
Есть ориентированный граф(задан списком смежности, или матрицей смежности, не критично), необходимо найти простые циклы, точнее их длину. Выводить циклы нет необходимости, нужна только длина простых циклов.
Понимаю, что задача NP-сложная, но не совсем пойму, как корректно организовать поиск в глубину, пробовал удалять последнее ребро в пути, но это не корректно. А если не удалять, то программа не находит больше одного цикла.
Даже идейные ответы принимаются, я в тупике.
Длины циклов необходимы для определения существования ядра в графе.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2021, 21:03
Ответы с готовыми решениями:

Поиск циклов в ориентированном графе
Доброго времени суток. Может кому-нибудь из вас не составит особого труда, или возможно кто-то...

Класс для поиска простых контуров на ориентированном графе
Ребят, помогите прогу написать :gsorry: завтра сдавать, а я не знаю ничего совсем :gsorry::gcray: ...

Поиск всех контуров в ориентированном графе
Нужно найти все контуры. Контур - путь, у которого начало и конец совпадают. Т.е. например...

Поиск циклов в графе. Поиск центра взвешенного графа
В интернете, к сожалению, по этим вопросам не так уж много нашел. Можете посоветовать...

6
392 / 262 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
21.02.2021, 21:57 2
А вы гуглить пробовали?
0
0 / 0 / 0
Регистрация: 16.11.2017
Сообщений: 22
21.02.2021, 22:13  [ТС] 3
Да, пробовал. Нет ничего конкретного, что помогло бы. Всё найденные алгоритмы ищут или 1 цикл, или не работают.
0
392 / 262 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
21.02.2021, 22:19 4
Даже всё отсюда? Всякие dfs, какие-то джонсоны
Кликните здесь для просмотра всего текста
https://qastack.ru/programming/546655/finding-all-cycles-in-a-directed-graph
0
0 / 0 / 0
Регистрация: 16.11.2017
Сообщений: 22
21.02.2021, 23:09  [ТС] 5
Джонсон же кратчайшие пути ищет. За ссылку спасибо, посмотрю. Странно, что на этот сайт не натыкался
0
392 / 262 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
21.02.2021, 23:25 6
А очевидный перебор пробовали или он работать не будет? Или слишком медленно?

Типо такого :

void func(vector<int>path){

int beg = path[0];
int last = path.back();

перебираем все связанные с last вершины, текущая - num
если num = beg то нашли цикл, выводим path
если num нету в path, то заводим vector<int>t = path; t.push_back(num); func(t);

}

int main()

для всех вершин i запускаем func({i});


Вроде бы он должен перебрать все простые пути вообще, если я правильно понимаю, ну и определить из них циклы.
0
0 / 0 / 0
Регистрация: 16.11.2017
Сообщений: 22
22.02.2021, 08:05  [ТС] 7
Да, это переборная задача, я просто не совсем понимал, как корректно перебор организовать
0
22.02.2021, 08:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2021, 08:05
Помогаю со студенческими работами здесь

Поиск Ф-циклов в графе
Нужно вывести на печать все фундаментальные циклы графа. Мой код выводит правильно(судя по данному...

Поиск циклов в графе
Как узнать что граф имеет цикл?

Поиск отрицательных циклов в графе
Добрый день. Имеется код производящий обход графа. Мне надо &quot;Определить, имеются ли //у него...

Поиск отрицательых циклов в графе
подскажите пожалуйста, как определить, есть ли в графе отрицательные циклы....граф задаётся...

Поиск всех циклов в неориентированном графе.
На входе программа принимает номера вершин и вес ребра между ними. Например: 2 3 1 - между...

Реализация матрицы смежности и инцидентности, поиск циклов в графе
Здравствуйте. Есть программа, выводящая матрицу смежности и инцидентности. Прошу помощи в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru