Jump to content

Доступность

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

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

Определение [ править ]

Для ориентированного графа , с набором вершин и набор кромок , отношение достижимости является транзитивным замыканием , то есть набор всех упорядоченных пар вершин в для которого существует последовательность вершин такой, что край находится в для всех . [1]

Если является ациклическим , то его отношение достижимости является частичным порядком ; любой частичный порядок может быть определен таким образом, например, как отношение достижимости его транзитивной редукции . [2] Примечательным следствием этого является то, что, поскольку частичные порядки антисимметричны, если может достичь , то мы знаем, что не могу достичь . Интуитивно, если бы мы могли путешествовать из к и обратно в , затем будет содержать цикл , что противоречит тому, что он ацикличен.Если направлен, но не ацикличен (т.е. содержит хотя бы один цикл), то его отношение достижимости будет соответствовать предпорядку, а не частичному порядку. [3]

Алгоритмы [ править ]

Алгоритмы определения достижимости делятся на два класса: требующие предварительной обработки и не требующие предварительной обработки.

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

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

Алгоритм Флойда-Уоршалла [ править ]

Алгоритм Флойда – Уоршалла [5] может использоваться для вычисления транзитивного замыкания любого ориентированного графа, что приводит к отношению достижимости, как в определении выше.

Алгоритм требует время и пространство в худшем случае. Этот алгоритм интересует не только достижимость, но и вычисляет кратчайшее расстояние между всеми парами вершин. Для графов, содержащих отрицательные циклы, кратчайшие пути могут быть неопределенными, но достижимость между парами все равно можно отметить.

Алгоритм Торупа [ править ]

Для плоских орграфов доступен гораздо более быстрый метод, описанный Миккелем Торупом в 2004 году. [6] Этот метод может отвечать на запросы о достижимости на плоском графе в время после траты время предварительной обработки для создания структуры данных размер. Этот алгоритм также может предоставлять приблизительные расстояния по кратчайшему пути, а также информацию о маршруте.

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

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

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

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

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

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

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

Алгоритм Камеды [ править ]

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

Еще более быстрый метод предварительной обработки, предложенный Т. Камедой в 1975 году: [7] может использоваться, если граф является плоским , ациклическим , а также обладает следующими дополнительными свойствами: все вершины с 0-й степенью и все вершины с 0-й степенью находятся на одной и той же грани (часто предполагается, что это внешняя грань), и можно разбить границу этой грани на две части так, чтобы все вершины 0-градусной степени находились в одной части, а всеНа другом появляются вершины с нулевой степенью (т.е. два типа вершин не чередуются).

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

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

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

Основной результат этого метода гласит, что доступен из если итолько если , что легко вычисляется в время.

Связанные проблемы [ править ]

Связанная с этим проблема заключается в решении запросов о достижимости с некоторым числом отказов вершин. Например: «Может ли вершина все еще достиг вершины хотя вершины потерпели неудачу и больше не могут быть использованы?" Подобная проблема может рассматривать сбои ребер, а не сбои вершин или их сочетание. Техника поиска в ширину работает так же хорошо для таких запросов, но построение эффективного оракула более испытывающий. [8] [9]

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

См. также [ править ]

Ссылки [ править ]

  1. ^ Скиена, Стивен С. (2011), «15.5 Транзитивное замыкание и редукция», Руководство по разработке алгоритмов (2-е изд.), Springer, стр. 495–497, ISBN  9781848000698 .
  2. ^ Кон, Пол Мориц (2003), Основная алгебра: группы, кольца и поля , Springer, стр. 17, ISBN  9781852335878 .
  3. ^ Шмидт, Гюнтер (2010), Реляционная математика , Энциклопедия математики и ее приложений, том. 132, Издательство Кембриджского университета, стр. 132. 77, ISBN  9780521762687 .
  4. ^ Герстинг, Джудит Л. (2006), Математические структуры для информатики (6-е изд.), Macmillan, стр. 519, ISBN  9780716768647 .
  5. ^ Кормен, Томас Х .; Лейзерсон, Чарльз Э .; Ривест, Рональд Л .; Штейн, Клиффорд (2001), «Транзитивное замыкание ориентированного графа», Введение в алгоритмы (2-е изд.), MIT Press и McGraw-Hill, стр. 632–634, ISBN  0-262-03293-7 .
  6. ^ Торуп, Миккель (2004), «Компактные оракулы для достижимости и приблизительных расстояний в плоских орграфах», Journal of the ACM , 51 (6): 993–1024, doi : 10.1145/1039488.1039493 , MR   2145261 , S2CID   18864647 .
  7. ^ Камеда, Т. (1975), «О векторном представлении достижимости в плоских ориентированных графах», Information Processing Letters , 3 (3): 75–77, doi : 10.1016/0020-0190(75)90019-8 .
  8. ^ Деметреску, Камил; Торуп, Миккель ; Чоудхури, Резаул Алам; Рамачандран, Виджая (2008), «Oracles для расстояний, избегая неудавшего узла или ссылки», Siam Journal on Computing , 37 (5): 1299–1318, Citeeseerx   10.1.1.329.5435 , doi : 10.1137/s0097539705429847 , mr   238699 .
  9. ^ Хальфтермейер, Пьер, Связность в сетях и компактные схемы маркировки для планирования действий в чрезвычайных ситуациях , Университет Бордо .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4897555da8c3617040a8b2cd538d9e42__1687771680
URL1:https://arc.ask3.ru/arc/aa/48/42/4897555da8c3617040a8b2cd538d9e42.html
Заголовок, (Title) документа по адресу, URL1:
Reachability - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)