Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
14.3. Поиск в глубинуВ этом разделе мы опишем последовательный метод обхода графа. Этот метод, известный как поиск в глубину или, короче, ПВГ, оказался весьма полезным при построении ряда эффективных алгоритмов. Некоторые из них обсуждаются в остальных разделах этой главы. Изложение материала в данном разделе базируется на результатах работы [14.19]. 14.3.1. ПВГ в неориентированном графеВначале рассмотрим ПВГ в неориентированном графе. Мы будем предполагать, что рассматриваемые графы связны. Если граф не связен, то ПВГ выполняется отдельно в каждой компоненте графа. Мы будем также предполагать, что в графе нет петель. ПВГ в неориентированном графе выполняется следующим образом: В графе G выбираем произвольную вершину, например v, и начинаем из нее поиск. Начальная вершина v, называемая корнем ПВГ, после этого считается пройденной. Затем выбираем ребро В общем случае, когда мы находимся в какой-либо вершине 1. Если все ребра, инцидентные 2. Если существуют непросмотренные ребра, инцидентные Случай 1. Если у ранее не была пройдена, то мы проходим ребро Случай 2. Если у ранее была пройдена, то мы продолжаем поиск другого непросмотренного ребра, инцидентного ПВГ завершается, когда мы возвращаемся в корень и все вершины графа пройдены. Из описания видно, что поиск в глубину разбивает ребра графа G на ребра дерева и обратные ребра. Легко показать, что ребра дерева образуют остов графа G. ПВГ вводит ориентацию на ребра графа G. Получаемый в результате ориентированный граф мы будем
Рис. 14.12. ПВГ в неориентированном графе. обозначать через G. Ребра дерева с ориентацией, налагаемой ПВГ, будут образовывать ориентированный остов G. Этот ориентированный остов будем называть деревом ПВГ. Отметим, что способ прохождения графа не единствен, так как ребра, инцидентные вершине, могут выбираться для рассмотрения в произвольном порядке. В качестве примера на рис. 14.12 показан ПВГ в неориентированном графе. На этом рисунке ребра дерева изображены сплошными, а обратные ребра — штриховыми линиями. Для каждой вершины приведен список инцидентных ей ребер. Такой список для вершины v называется списком смежности вершины v и определяет порядок, в котором ребра, инцидентные вершине у, выбираются для просмотра. Представим формальное описание алгоритма ПВГ. При этом рассматриваемый граф не обязательно должен быть связным. Массив MARK, используемый в алгоритме, имеет по одному элементу для каждой вершины. Сначала мы устанавливаем Алгоритм 14.4. ПВГ в неориентированном графе. S1. G — данный граф. Пусть S2. (Начало ПВГ в компоненте графа G). Выбрать какую-либо вершину, например вершину S3. Если все ребра, инцидентные вершине v, уже помечены как «просмотренные», то идти к шагу Ориентировать ребро 1. Если 2. Если Если FATHER Если для всех вершин S7. (ПВГ завершен) HALT. Пусть Т — дерево ПВГ связного неориентированного графа. Как мы упоминали ранее, Т — ориентированный остов графа G. Для дальнейшего обсуждения нам необходимо ввести некоторые термины. Если в дереве Т существует ориентированный путь из вершины v в вершину w, то v называют предком Две вершины и и w являются соотносимыми, если одна из них — потомок другой. Иначе v и w являются несоотносимыми. Если Покажем сейчас, что в графе G не существует пересекающих ребер. Пусть Пусть Тогда из алгоритма ПВГ следует, что вершины поддерева
Рис. 14.13. Если бы такое ребро существовало, то Теорема 14.6. Если Отсутствие пересекающих ребер в неориентированном графе является важным свойством, которое образует основу алгоритма, обсуждаемого в следующем разделе, для выделения двусвязных компонент графа. 14.3.2. ПВГ в ориентированном графеПоиск в глубину в ориентированном графе в основном совпадает с поиском в неориентированном графе. Главное отличие в этом случае заключается в том, что ребра графа проходятся только в соответствии с ориентацией. Как следствие этого ограничения, ребра в ориентированном графе G разбиваются поиском в глубину в G на четыре категории (а не на две, как в случае неориентированного графа). Непросмотренное ребро Случай 1. Вершина w еще не пройдена. В этом случае Случай 2. Вершина w уже была пройдена. а. Если w — потомок v в лесе ПВГ (т. е. подграфе на ребрах дерева), то ребро б. Если w — предок у в лесе ПВГ, то ребро в. Если v и w несоотносимы в лесе ПВГ и существует пересекающих ребер типа 1. Ребро 2. Ребро 3. Лес ПВГ (подграф на ребрах дерева) может быть несвязным, даже если рассматриваемый ориентированный граф связен. Первую вершину, проходимую в каждой компоненте леса ПВГ, будем называть корнем соответствующей компоненты. Представим описание алгоритма ПВГ для ориентированного графа. В этом алгоритме мы используем новый массив SCAN, в котором для каждой вершины графа присутствует только один элемент. Вначале мы полагаем SCAN Алгоритм 14.5. ПВГ в ориентированном графе. S1. Пусть G — данный ориентированный граф без петель. Пусть S2. (Начало ПВГ с нового корня.) Взять произвольную вершину, например Если все ребра, исходящие из вершины v, уже помечены как «просмотренные», то SCAN Пометить ребро 1) Если 2) В противном случае положить Если FATHER Если для любой вершины MAR (ПВГ завершен.) HALT,
Рис. 14.14. а — ПВГ в ориентированном графе G; б — лес ПВГ для графа О. На рис. 14.14, а представлен ПВГ в ориентированном графе. Для каждой вершины указана ее глубина. Ребра дерева изображены сплошными, а другие ребра — штриховыми линиями. Лес ПВГ изображен отдельно на рис. 14.14, б. Мы отмечали ранее, что лес ПВГ ориентированного графа не может быть связным, даже если этот граф связен. Это видно на рис. 14.14, б. Тогда возникает задача определения достаточных условий для связности леса ПВГ. Докажем, что лес ПВГ сильно связного графа связен. Фактически мы будем доказывать более общий результат. Пусть Т — лес ПВГ в ориентированном графе поддерево дерева Т с корнем Из вышеизложенного мы можем сделать вывод, что все вершины Теорема 14.7. Пусть Следующее утверждение является непосредственным следствием из этой теоремы. Следствие 14.7.1. Лес ПВГ сильно связного графа связен. Легко показать, что алгоритмы ПВГ 14.4 и 14.5 имеют сложность
|
1 |
Оглавление
|