Jump to content

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

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

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

Определения

[ редактировать ]

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

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

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

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

Алгоритмы

[ редактировать ]

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

[ редактировать ]

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

  • Алгоритм Косараджу использует два прохода поиска в глубину. Первый, в исходном графе, используется для выбора порядка, в котором внешний цикл второго поиска в глубину проверяет вершины на предмет уже посещенных вершин и рекурсивно исследует их, если нет. Второй поиск в глубину выполняется на графе транспонирования исходного графа, и каждое рекурсивное исследование находит один новый сильно связный компонент. [2] [3] Назван в честь С. Рао Косараджу , описавшего его (но не опубликовавшего своих результатов) в 1978 г.; Миша Шарир позже опубликовал его в 1981 году. [4]
  • Алгоритм сильно связанных компонентов Тарьяна , опубликованный Робертом Тарьяном в 1972 году, [5] выполняет один проход поиска в глубину. Он поддерживает стек вершин, которые были исследованы в ходе поиска, но еще не назначены компоненту, и вычисляет «низкие номера» каждой вершины (индексный номер самого высокого предка, достижимого за один шаг от потомка вершины), который он используется для определения того, когда набор вершин следует извлечь из стека в новый компонент.
  • Алгоритм сильных компонент на основе пути использует поиск в глубину, как и алгоритм Тарьяна, но с двумя стеками. Один из стеков используется для отслеживания вершин, еще не назначенных компонентам, а другой отслеживает текущий путь в дереве поиска в глубину. Первая версия этого алгоритма с линейным временем была опубликована Эдсгером В. Дейкстрой в 1976 году. [6]

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

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

[ редактировать ]

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

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

Блелох и др. [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. ^ Jump up to: а б Хонг, Сунгпак; Родия, Николь С.; Олукотун, Кунле (2013), «О быстром параллельном обнаружении сильно связанных компонентов (SCC) в графах малого мира» (PDF) , Материалы Международной конференции по высокопроизводительным вычислениям, сетям, хранению и анализу - SC '13 , стр. . 1–11, номер домена : 10.1145/2503210.2503246 , ISBN.  9781450323789 , S2CID   2156324
  4. ^ Шарир, Миха (1981), «Алгоритм сильной связности и его приложения в анализе потоков данных», Computers & Mathematics with Applications , 7 : 67–72, doi : 10.1016/0898-1221(81)90008-0
  5. ^ Тарьян, Р.Э. (1972), «Алгоритмы поиска в глубину и линейные графы», SIAM Journal on Computing , 1 (2): 146–160, doi : 10.1137/0201010 , S2CID   16467262
  6. ^ Дейкстра, Эдсгер (1976), Дисциплина программирования , Нью-Джерси: Прентис Холл, гл. 25 .
  7. ^ Флейшер, Лиза К.; Хендриксон, Брюс; Пинар, Али (2000), «Об определении сильно связанных компонентов в параллельном режиме» (PDF) , Параллельная и распределенная обработка , Конспекты лекций по информатике, том. 1800, стр. 505–511, номер документа : 10.1007/3-540-45591-4_68 , ISBN.  978-3-540-67442-9
  8. ^ Блеллок, Гай Э.; Гу, Ян; Шун, Джулиан; Сунь, Ихан (2016), «Параллелизм в рандомизированных инкрементных алгоритмах» (PDF) , Материалы 28-го симпозиума ACM по параллелизму в алгоритмах и архитектурах - SPAA '16 , стр. 467–478, doi : 10.1145/2935764.2935766 , hdl : 21.1 /146176 , ISBN  9781450342100 .
  9. ^ Маурер, П.М. (февраль 2018 г.), Генерация сильно связных случайных графов (PDF) , Int'l Conf. Моделирование, Сим. и Вис. Методы 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. ^ Дулмейдж, А.Л. и Мендельсон, Н.С. (1958), «Покрытия двудольных графов», Can. Дж. Математика. , 10 : 517–534, doi : 10.4153/cjm-1958-052-0 , S2CID   123363425 .
  12. ^ Роббинс, HE (1939), «Теорема о графах с применением к задаче управления дорожным движением», American Mathematical Monthly , 46 (5): 281–283, doi : 10.2307/2303897 , JSTOR   2303897 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0464380771358eee1a63938ad8e0b9e3__1722116940
URL1:https://arc.ask3.ru/arc/aa/04/e3/0464380771358eee1a63938ad8e0b9e3.html
Заголовок, (Title) документа по адресу, URL1:
Strongly connected component - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)