Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нахождение всех циклов в графе 
:(
    Опции темы
Dimitry
Дата 28.4.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.3.2007

Репутация: нет
Всего: нет



Требуется проверить не существует ли в неориентированном графе циклов.
Как найти все циклы в графе?

PM MAIL   Вверх
esperant0
Дата 28.4.2007, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



1) Ищите обратные ребра

2) Перебором


удачи


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
neutrino
Дата 28.4.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



DFS вам в помощь. Вам нужно найти Biconnected Component, и если таков существует, то соответственно граф иммет цикл. Сложность O(n + m), где n - количестве вершин, m - количество ребер.

Добавлено через 3 минуты и 53 секунды
Цитата(esperant0 @  28.4.2007,  00:32 Найти цитируемый пост)
1) Ищите обратные ребра

да, но:
Цитата(Dimitry @  27.4.2007,  23:56 Найти цитируемый пост)
в неориентированном графе


Для задания ориентации ребер используйте один проход DFS. Потом ищите обратные ребра.




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
esperant0
Дата 28.4.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(neutrino @ 28.4.2007,  11:49)
DFS вам в помощь. Вам нужно найти Biconnected Component, и если таков существует, то соответственно граф иммет цикл. Сложность O(n + m), где n - количестве вершин, m - количество ребер.

Добавлено @ 11:53
Цитата(esperant0 @  28.4.2007,  00:32 Найти цитируемый пост)
1) Ищите обратные ребра

да, но:
Цитата(Dimitry @  27.4.2007,  23:56 Найти цитируемый пост)
в неориентированном графе


Для задания ориентации ребер используйте один проход DFS. Потом ищите обратные ребра.

neutrino,  У ненаправлено графа также можно определить обратные ребра - см. Кормен упражнения, и тогда все становиться на свои места.


Более того у ненаправленного графа все ребра или ребра дерева или обратные




--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1003 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.