stringtranslate.com

Сильно связанный компонент

Граф с сильно связанными компонентами отмечен

В математической теории направленных графов граф называется сильно связным, если каждая вершина достижима из любой другой вершины. Сильно связные компоненты направленного графа образуют разбиение на подграфы , которые сами по себе сильно связны. Можно проверить сильную связность графа или найти его сильно связные компоненты за линейное время (то есть Θ( V  +  E  )).

Определения

Направленный граф называется сильно связанным , если между каждой парой вершин графа существует путь в каждом направлении. То есть, существует путь от первой вершины в паре ко второй, и существует другой путь от второй вершины к первой. В направленном графе G, который сам по себе может не быть сильно связанным, пара вершин u и v называются сильно связанными друг с другом, если между ними существует путь в каждом направлении.

Бинарное отношение быть сильно связанным является отношением эквивалентности , а индуцированные подграфы его классов эквивалентности называются сильно связанными компонентами . Эквивалентно, сильно связанный компонент ориентированного графа G является подграфом, который сильно связан и является максимальным с этим свойством: никакие дополнительные ребра или вершины из G не могут быть включены в подграф, не нарушая его свойства быть сильно связанным. Набор сильно связанных компонентов образует разбиение множества вершин G. Сильно связанный компонент C называется тривиальным , когда C состоит из одной вершины, которая не связана сама с собой ребром, и нетривиальным в противном случае. [1]

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

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

Алгоритмы

Алгоритмы линейного времени на основе DFS

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

Хотя алгоритм Косараджу концептуально прост, алгоритм Тарьяна и алгоритм на основе пути требуют только одного поиска в глубину вместо двух.

Алгоритмы, основанные на достижимости

Предыдущие алгоритмы линейного времени основаны на поиске в глубину, который обычно считается сложным для распараллеливания. Флейшер и др. [7] в 2000 году предложили подход «разделяй и властвуй», основанный на запросах достижимости , и такие алгоритмы обычно называются алгоритмами SCC на основе достижимости. Идея этого подхода заключается в выборе случайной опорной вершины и применении прямых и обратных запросов достижимости из этой вершины. Два запроса разбивают множество вершин на 4 подмножества: вершины, достигнутые обоими поисками, либо одним, либо ни одним из поисков. Можно показать, что сильно связанный компонент должен содержаться в одном из подмножеств. Подмножество вершин, достигнутое обоими поисками, образует сильно связанный компонент, и затем алгоритм рекурсивно применяется к остальным 3 подмножествам.

Ожидаемое последовательное время выполнения этого алгоритма составляет O( n  log  n ), что на O(log  n ) больше, чем у классических алгоритмов. Параллелизм возникает из-за: (1) запросов достижимости можно распараллелить проще (например, с помощью поиска в ширину (BFS), и это может быть быстро, если диаметр графа невелик); и (2) независимости между подзадачами в процессе «разделяй и властвуй». Этот алгоритм хорошо работает на реальных графах [3] , но не имеет теоретической гарантии параллелизма (представьте, что если граф не имеет ребер, алгоритм требует O( n ) уровней рекурсий).

Blelloch et al. [8] в 2016 году показали, что если запросы достижимости применяются в случайном порядке, ограничение стоимости O( n  log  n ) все еще сохраняется. Более того, запросы затем могут быть объединены в пакеты в префиксно-удвоенном виде (т. е. 1, 2, 4, 8 запросов) и запущены одновременно в одном раунде. Общий охват этого алгоритма составляет log 2 n запросов достижимости, что, вероятно, является оптимальным параллелизмом, которого можно достичь с помощью подхода, основанного на достижимости.

Генерация случайных сильно связанных графов

Питер М. Маурер описывает алгоритм для генерации случайных сильно связанных графов, [9] основанный на модификации алгоритма для увеличения сильной связности , проблемы добавления как можно меньшего количества ребер, чтобы сделать граф сильно связанным. При использовании в сочетании с моделями Гилберта или Эрдёша-Реньи с перемаркировкой узлов алгоритм способен генерировать любой сильно связанный граф на n узлах, без ограничений на виды структур, которые могут быть сгенерированы.

Приложения

Алгоритмы поиска сильно связанных компонентов могут использоваться для решения задач 2-выполнимости (систем булевых переменных с ограничениями на значения пар переменных): как показали Аспвалл, Пласс и Тарьян (1979), экземпляр 2-выполнимости невыполним тогда и только тогда, когда существует переменная v такая, что v и ее отрицание содержатся в одном и том же сильно связанном компоненте графа импликации экземпляра. [10]

Сильно связанные компоненты также используются для вычисления разложения Дульмейджа–Мендельсона , классификации ребер двудольного графа в соответствии с тем, могут ли они быть частью идеального паросочетания в графе. [11]

Связанные результаты

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

Согласно теореме Роббинса , неориентированный граф может быть ориентирован таким образом, что он станет сильно связанным, если и только если он 2-рёберно связан . Один из способов доказать этот результат — найти разложение уха базового неориентированного графа, а затем сориентировать каждое ухо последовательно. [12]

Смотрите также

Ссылки

  1. ^ Нуутила, Эско; Сойсалон-Сойнинен, Эльяс (1994), «О поиске сильно связанных компонентов в ориентированном графе», Information Processing Letters , 49 (1): 9–14, doi :10.1016/0020-0190(94)90047-7
  2. ^ Томас Х. Кормен , Чарльз Э. Лейзерсон , Рональд Л. Ривест и Клиффорд Стайн . Введение в алгоритмы , второе издание. MIT Press и McGraw-Hill, 2001. ISBN 0-262-03293-7 . Раздел 22.5, стр. 552–557. 
  3. ^ ab Hong, Sungpack; Rodia, Nicole C.; Olukotun, Kunle (2013), "О быстром параллельном обнаружении сильно связанных компонентов (SCC) в графах малого мира" (PDF) , Труды Международной конференции по высокопроизводительным вычислениям, сетевым технологиям, хранению и анализу - SC '13 , стр. 1–11, doi :10.1145/2503210.2503246, ISBN 9781450323789, S2CID  2156324
  4. ^ Шарир, Миха (1981), «Алгоритм сильной связности и его применение в анализе потоков данных», Компьютеры и математика с приложениями , 7 : 67–72, doi : 10.1016/0898-1221(81)90008-0
  5. ^ Tarjan, RE (1972), «Поиск в глубину и алгоритмы линейных графов», SIAM Journal on Computing , 1 (2): 146–160, doi :10.1137/0201010, S2CID  16467262
  6. ^ Дейкстра, Эдсгер (1976), Дисциплина программирования , Нью-Джерси: Prentice Hall, гл. 25.
  7. ^ Флейшер, Лиза К.; Хендриксон, Брюс; Пынар, Али (2000), «Об идентификации сильно связанных компонентов параллельно» (PDF) , Параллельная и распределенная обработка , Lecture Notes in Computer Science, т. 1800, стр. 505–511, doi :10.1007/3-540-45591-4_68, ISBN 978-3-540-67442-9
  8. ^ Blelloch, Guy E.; Gu, Yan; Shun, Julian; Sun, Yihan (2016), «Параллелизм в рандомизированных инкрементальных алгоритмах» (PDF) , Труды 28-го симпозиума ACM по параллелизму в алгоритмах и архитектурах — SPAA '16 , стр. 467–478, doi : 10.1145/2935764.2935766 , hdl : 1721.1/146176 , ISBN 9781450342100.
  9. ^ Маурер, П.М. (февраль 2018 г.), Генерация сильно связанных случайных графов (PDF) , Международная конференция по моделированию, симуляции и визуализации методов MSV'17, CSREA Press, ISBN 978-1-60132-465-8, получено 27 декабря 2019 г.
  10. ^ Аспвалл, Бенгт; Пласс, Майкл Ф.; Тарьян, Роберт Э. (1979), «Линейный алгоритм для проверки истинности некоторых квантифицированных булевых формул», Information Processing Letters , 8 (3): 121–123, doi :10.1016/0020-0190(79)90002-4.
  11. ^ Dulmage, AL & Mendelsohn, NS (1958), "Покрытия двудольных графов", Can. J. Math. , 10 : 517–534, doi : 10.4153/cjm-1958-052-0 , S2CID  123363425.
  12. Роббинс, Х. Э. (1939), «Теорема о графах с приложением к проблеме управления дорожным движением», American Mathematical Monthly , 46 (5): 281–283, doi :10.2307/2303897, JSTOR  2303897.

Внешние ссылки