2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Поиск всех циклов в графе, проходящих через заданную вершину
Сообщение06.07.2024, 18:34 
Аватара пользователя


26/05/12
1700
приходит весна?
Имеется односвязный направленный граф. Из каждой вершины можно попасть в другую гарантированно одним путём, но, как правило, несколькими. Аналогично, гарантировано, что выйдя из вершины, можно в неё вернуться, и сделать это можно, как правило, более чем одним способом.

Выбирается вершина (в моём случае не важно какая, граф самоподобен и выглядит одинаково из любой вершины). Требуется найти все циклы, проходящие через выбранную вершину и через любое число других, но посещающую каждую не более одного раза. Имеет ли эта задача устоявшееся название (типа задачи коммивояжера)?

На вскидку приходит поиск в глубину. На каждой итерации из текущей вершины просматриваем список выходящих рёбер, если очередное ребро ведёт в ещё не посещённую вершину, то сохраняем текущие вершину и ребро в стек, помечаем новую вершину посещённой и переходим к следующей итерации с новой вершиной в качестве текущей. Если новая вершина является исходной, то недеструктивно просматриваем стек, чтобы восстановить цикл и сохраняем найденный результат, переходим к следующему ребру. Если для текущей вершины все выходящие рёбра просмотрены, то снимаем с неё пометку "пройденности", достаём из стека предыдущую вершину и ребро, по которому попали в текущую, делаем предыдущую текущей и переходим к следующей итерации с новым ребром.

На первый взгляд такой алгоритм будет иметь экспоненциальную сложность: $$O\left(m^N\right)$$ где m — число рёбер выходящих из каждой вершины и N — размер графа. Конечно, не всякий рассматриваемый путь пройдёт все вершины, прежде чем упрётся в уже посещённую, но тем не менее, вопрос производительности (для меня во всяком случае) стоит.

Если я прав в моей оценке сложности, то есть ли какие-нибудь улучшения к алгоритму или что-нибудь принципиально более совершенное?

 Профиль  
                  
 
 Re: Поиск всех циклов в графе, проходящих через заданную вершину
Сообщение18.07.2024, 23:51 
Модератор
Аватара пользователя


11/01/06
5710
См. https://cs.stackexchange.com/q/60410

 Профиль  
                  
 
 Re: Поиск всех циклов в графе, проходящих через заданную вершину
Сообщение31.07.2024, 01:47 
Аватара пользователя


26/05/12
1700
приходит весна?
maxal, спасибо, поразбираюсь, что за алгоритм Джонсона такой интересный.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group