Открыть сервис

Компонента связности

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

Определения

Неориентированные графы

Пусть задан неориентированный граф \(G = (V, E)\), где \(V\) — множество вершин, \(E\) — множество рёбер. Отношение «достижимости»: вершина \(u\) достижима из \(v\), если существует путь (последовательность рёбер) от \(v\) к \(u\). Это отношение является отношением эквивалентности на множестве вершин: оно рефлексивно (вершина достижима сама из себя), симметрично (при неориентированности графа путь обратим) и транзитивно (последовательное соединение путей). Классы эквивалентности этого отношения называются компонентами связности неориентированного графа.

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

Ориентированные графы

Для ориентированных графов (орграфов) отношение достижимости не симметрично, поэтому вводятся несколько определений связности:

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

История и развитие понятия

Понятие связности графа восходит к работам Леонарда Эйлера XVIII века, связанным с задачами о кёнигсбергских мостах. Однако формальное определение компоненты связности как максимального связного подграфа было дано в начале XX века, в период становления теории графов как самостоятельной математической дисциплины. Значительный вклад в развитие представлений о сильной связности внёс немецкий математик Ойген Нетто (Eugen Netto) в своей книге 1901 года «Lehrbuch der Combinatorik», а затем и другие авторы. Алгоритмические аспекты — поиск компонент связности — развивались с появлением первых ЭВМ в 1950-1960-х годах (алгоритм Тарьяна для сильных компонент, 1972; алгоритм Косарайю, 1978). Сейчас это стандартная операция, встроенная во многие библиотеки графовых алгоритмов (NetworkX, Boost Graph Library, igraph).

Свойства

Алгоритмы поиска

Для неориентированных графов

Поиск компонент связности в неориентированном графе выполняется простыми алгоритмами обхода — поиском в глубину (DFS) или поиском в ширину (BFS). Начиная с произвольной непосещённой вершины, обход помечает все достижимые из неё вершины — они образуют одну компоненту. Процесс повторяется для непосещённых вершин. Время работы — \(O(|V| + |E|)\). Для очень больших графов (миллиарды вершин) используются параллельные или приближённые методы.

Для ориентированных графов: поиск сильных компонент

Для поиска слабых компонент ориентированного графа достаточно игнорировать ориентацию и применить алгоритм для неориентированного графа.

Применение

Анализ социальных сетей и интернет-графов

В сети Интернет веб-страницы и гиперссылки образуют ориентированный граф. Его сильные компоненты соответствуют группам страниц, взаимно ссылающихся друг на друга. Концепция «паутины» (WWW) часто описывается как состоящая из гигантской сильной компоненты (Giant Strongly Connected Component), а также множества входящих и исходящих компонент и «тендрелей». Анализ социальных сетей (VK, Facebook* — принадлежит компании Meta, признанной экстремистской и запрещённой в РФ) использует компоненты связности для выявления сообществ (community detection) и групп пользователей, общающихся между собой.

Транспортные и коммуникационные сети

При проектировании транспортных сетей, сетей связи или электрических сетей важно знать, сохраняется ли связность после выхода из строя узлов или линий. Компоненты связности позволяют выделить участки сети, которые остаются работоспособными. В интернет-маршрутизации понятие «автономная система» (AS) часто эквивалентно сильно связной компоненте топологии.

Теория кодирования

В теории графов, связанных с кодами, например, в кодах с низкой плотностью проверок на чётность (LDPC), компоненты связности графа факторной диаграммы влияют на сходимость алгоритмов декодирования.

Биоинформатика

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

Компьютерное зрение и обработка изображений

В пиксельных изображениях компоненты связности используются для сегментации — выделения связных областей (blob detection), поиска контуров, распознавания символов. Соседние пиксели одного цвета (или близких значений) образуют компоненту, что позволяет отделить объекты от фона.

Базы данных и распределённые системы

При транзакциях в распределённых базах данных атомарность гарантируется при условии сильной связности узлов, участвующих в транзакции. В графовых базах данных (Neo4j, ArangoDB) запросы на поиск компонент связности используются для анализа социальных графов, рекомендательных систем и поиска путей.

Вариации и обобщения

Критика и ограничения

Понятие компоненты связности является строгим и дискретным: две вершины либо связаны путём, либо нет. В некоторых приложениях (например, биологические сети) более уместны нечёткие или вероятностные критерии связности, где связь между узлами может быть слабой, но не отсутствовать полностью. Кроме того, для графов огромного размера вычисление точных компонент может быть дорогим, а для стриминговых графов (с неограниченным добавлением данных) требуются приближённые методы. Тем не менее, компоненты связности остаются одним из базовых и наиболее используемых инструментов структурного анализа графов.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →