Изменения

Перейти к: навигация, поиск

Построение компонент рёберной двусвязности

295 байт убрано, 11:09, 11 декабря 2011
Нет описания правки
== Основные понятия ==
 
*[[Отношение реберной двусвязности#Реберная двусвязность|Реберная двусвязность]]
*[[Отношение реберной двусвязности#Компоненты реберной двусвязности|Компонента реберной двусвязности]]
 
Построение компонент реберной двусвязности будет осуществляться с помощью [[Обход в глубину, цвета вершин|обхода в глубину]].
== Двупроходный алгоритм ==
Первый способ найти искомые компоненты - сначала определить критерий перехода в новую [[Отношение реберной двусвязности#Компоненты реберной двусвязности|компоненту реберной двусвязности]], а затем покрасить вершины графа в нужные цвета.
Первый проход определяет Первым проходом запустим [[Использование обхода в глубину для поиска мостов|алгоритм для каждой вершины <tex>v</tex> поиска мостов]], чтобы посчитать две величины: <tex>enter(v)</tex> - время входа поиска в глубину в вершину и [[Использование обхода в глубину для поиска мостов#Функция | <tex>ret(v)]]</tex>.
Определим критерий перехода к новой компоненте.
<tex>ret[v] \leftarrow time </tex>
'''for''' всех <tex>u</tex> смежных с <tex>v</tex>
''if'' <tex>(v, u)</tex> - обратное ребро
<tex>ret[v] \leftarrow min(ret[v], enter[u])</tex>
'''if''' вершина <tex>u</tex> - белая
'''dfs'''(<tex>u</tex>)
<tex> ret[v] \leftarrow min(ret[v], ret[u]) </tex>
Анонимный участник

Навигация