Это не официальный сайт wikipedia.org 01.01.2023

Точка сочленения — Википедия

Точка сочленения

(перенаправлено с «Шарнир (теория графов)»)

Точкой сочленения (англ. articulation point) в теории графов называется вершина графа, при удалении которой количество компонент связности возрастает. Для обозначения этого понятия также используются термины «разделяющая вершина» и «шарнир».

ОпределенияПравить

Вершина v   графа G   называется шарниром, если подграф G 1  , полученный из графа G   удалением вершины v   и всех инцидентных ей рёбер, состоит из большего количества компонент связности, чем исходный граф G  .

 
Граф, содержащий два шарнира (вершины 2 и 5) и три блока (12, 2345, 56).

С понятием шарнира также связано понятие двусвязности. Двусвязный граф - связный граф, не содержащий шарниров. Компонента двусвязности - максимальный (по включению) двусвязный подграф исходного графа. Компоненты двусвязности иногда называют блоками.

Рёберным аналогом шарнира является мост. Мостом называется такое ребро графа, в результате удаления которого количество компонент связности в графе возрастает.

Поиск шарнировПравить

Эффективное решение задачи поиска всех шарниров графа основано на алгоритме поиска в глубину.

Пусть дан граф G  . Через A d j ( v )   обозначим множество всех вершин графа, смежных с v  . Предположим, что мы просмотрели граф в глубину, начав с некоторой произвольной вершины. Занумеруем все вершины графа в том порядке, в котором мы в них вошли, и каждой вершине v   припишем соответствующий номер n ( v )  . Если в вершину u   мы впервые попали из вершины v  , то вершину u   будем называть потомком v  , а v   — предком u  . Множество всех потомков вершины v   обозначим через C h ( v )  . Через L o w ( v )   обозначим минимальный номер среди всех вершин, смежных с v   и с теми вершинами, в которые мы пришли по пути, проходящем через v  .

Ясно, что величину L o w ( v )   можно вычислить рекурсивно, непосредственно в процессе обхода в глубину: если в настоящий момент рассматривается вершина v  , и из неё нельзя перейти в ещё не посещённую вершину (т.е. нужно вернуться к предку v  , или прекратить обход, если v   — стартовая вершина), то для всех её потомков L o w   уже посчитано, а значит, и для неё можно провести соответствующие вычисления по формуле

L o w ( v ) = min { min x C h ( v ) L o w ( x ) , min y A d j ( v ) / C h ( v ) n ( y ) } .  

Зная величину L o w ( v )   для всех вершин графа, можно однозначным образом определить все его шарниры согласно следующим двум правилам:

  1. Стартовая вершина (т.е. та, с которой мы начали обход) является шарниром тогда и только тогда, когда у неё больше одного потомка.
  2. Вершина v  , отличная от стартовой, является шарниром тогда и только тогда, когда у неё есть потомок u такой, что L o w ( u ) = n ( v )  .

В качестве примера рассмотрим применение описанного алгоритма к графу, изображённому на рисунке справа. Числа, которыми помечены вершины, соответствуют одному из возможных вариантов обхода в глубину. При таком порядке у каждой из вершин ровно один потомок, за исключением вершины 6, у которой потомков нет. Стартовая вершина 1 имеет единственного потомка, следовательно, шарниром она не является. Для остальных вершин вычислим значения интересующей нас функции:

L o w ( 6 ) = 5 , L o w ( 5 ) = 2 , L o w ( 4 ) = 2 , L o w ( 3 ) = 2 , L o w ( 2 ) = 1  .

У вершины 2 есть потомок 3, а у 5 потомок 6 — в обоих случаях выполнено искомое соотношение L o w ( u ) = n ( v )  . Следовательно, 2 и 5 являются шарнирами. Других шарниров в этом графе нет.

См. такжеПравить

ЛитератураПравить

  • В. Е. Алексеев, В. А. Таланов. Графы и алгоритмы. Структуры данных. Модели вычислений. — М.: БИНОМ. Лаборатория знаний, 2006. — ISBN 5-94774-543-7.