Мост
Точки сочленения и двусвязные компоненты
Замечание про другие т.с. и мост
Точки сочленения и двусвязные компоненты
Приложения: информационные сети, структура графа (планарность) и т.п.
Нахождение двусвязных компонент
Идея алгоритма:
при обходе в глубину ребра (прямые и обратные) помещаются в стек;
при возвращении в точку сочленения (её надо уметь распознавать) ребра очередного блока выбираются из стека.
Доказательство.
Пусть v посещена раньше, чем u. По завершении TDFS(v), будет NumVert[v] < NumVert[u], т.к. {u,v} ∈ E. Но это значит, что в TDFS добавились ребра, содержащие путь из v в u. Отсюда следует, что v лежит на пути от корня в u, т.е. u потомок v.
Аналогично рассуждаем в случае, если u посещена раньше, чем v.
Т.е. ({u, v} ∈ E) ⇒ (либо u потомок v (в дереве), либо v потомок u)
(т.е. u и v связаны отношением «предок-потомок» в дереве)
not (u и v связаны отношением «предок-потомок» в дереве) ⇒ not ({u, v} ∈ E)
Нахождение двусвязных компонент
Доказательство: 1) a = r
1а) a имеет только одного сына …
1б) a имеет хотя бы двух сыновей…
2) Пусть a – точка сочленения.
Покажем, что при a ≠ r условие 2 выполнено.
Пусть x, y ∈ V и x ≠ y ≠ a и такие, что всякий путь в G между x и y проходит через a .
По крайней мере один из x, y – потомок a…
Пусть это x. И пусть s – такой сын a, что x потомок s (м.б. x = s ).
Тогда либо нет обратного ребра от v = потомок (s) к w и условие 2 выполнено, либо … (см. далее)
Для самостоятельной работы
1) y не потомок a
Тогда существует путь x → v → w → y, не походящий через a !!!
y потомок a. Тогда ясно, что y не s (иначе был бы путь x → не через a).
Пусть s′ = сын (a) , такой что y = потомок (s′ ) (в т.ч. y = s′ )
См. след. слайд
Для самостоятельной работы
a
s
w
v
x
y
Нахождение двусвязных компонент
v′
s′
w′
Для самостоятельной работы
21.04.2014
Двусязные компоненты
Нахождение двусвязных компонент
Утверждение (эквивалентное теореме):
Вершина a ≠ r является точкой сочленения графа G ттогда, когда существует s = сын (a) , такой что
Low(s) ≥ NumVert(a)
Нахождение двусвязных компонент
w
Вычисление Low (v) w Low (si) NumVert(v) NumVert(w)
Low (v) = min {NumVert (v), A, B}
A = min {Low (si) ⎢ si =сын (v )}
B = min {NumVert (w) ⎢
Продолжение (тело основного цикла)
Продолжение (тело основного цикла)
Главная программа нахождения
компонент двусвязности графа G=(V,E)
L(7) АЛГОРИТМ ЗАВЕРШЕН!
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть