Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2011, 14:05   #1
Usr
Новичок
Джуниор
 
Регистрация: 04.11.2010
Сообщений: 2
По умолчанию Поиск циклов в орграфе

Добрый день! Помогите, пожалуйста, разобраться с задачей.

Имеется ориентированный граф. Используя метод обхода графа в глубину вывести все варианты обхода, образующие цикл.

В начале помечаю все вершины как WHITE(не посещены). Потом выбираем незакрашенную вершину, перекрашиваем ее в GREY(посещена, но не отработана) и вызываем поиск в глубину. Вершина закрашивается в BLACK, когда у мы вернулись в нее из рекурсии и у нее больше нет непосещенных вершин. При этом, если при вызове DFS(v) смежная вершина c ней вершина -GREY, то мы вернулись в неотработанную вершину, значит, найден цикл.

Проблема заключается в том, что если у какой-то вершины больше нет смежных, она закрашивается в черный. При этом, если существует какая-то другая дуга в эту вершину, то, поскольку она закрашена, этот путь не определяется как цикл. (см. прикрепленное изображение - вершина 3 закрашивается, путь 1-2-4-3-1 не будет циклом). Я уж пробовал не закрывать вершину, если в нее есть хотя бы 1 дуга, но тогда возникает проблема с определением момента, когда она отработана (закраска в BLACK)..

Подскажите, как можно изменить логику, чтобы учесть такой вариант.. Слышал что-то про проверку на наличие обратной дуги, но в таком случае ведь придется определить, является ли открываемая вершина предком данной.. Но это придется перебрать всех потомков этой вершины и сравнить их со всеми предками?

Заранее спасибо..

Последний раз редактировалось Usr; 14.01.2011 в 16:05.
Usr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множитель циклов Иллидан Общие вопросы C/C++ 6 25.12.2010 16:18
Операторы циклов while, for ISV-777 Помощь студентам 2 25.11.2010 13:00
3 вида циклов mind rebel Фриланс 11 05.03.2010 15:19
Поиск циклов в графе.Си. Karabas Помощь студентам 0 22.10.2009 23:57
Организация циклов faelar Паскаль, Turbo Pascal, PascalABC.NET 4 25.01.2009 21:30