Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
5.11. ДОМИНАТОРЫ В ОРИЕНТИРОВАННЫХ АЦИКЛИЧЕСКИХ ГРАФАХ: КОМБИНИРОВАНИЕ ПОНЯТИЙВ этой главе мы уже познакомились с несколькими приемами, применяемыми для разработки эффективных алгоритмов, например с поиском в глубину и разумным упорядочением вычислений. В гл. 4 изучили много структур данных, полезных для представления множеств, над которыми выполняются различные операции. Эту главу мы закончим примером, иллюстрирующим, как можно строить эффективные алгоритмы, комбинируя структуры данных из гл. 4 с техникой для графов, развитой в данной главе. Мы будем находить доминаторы в ориентированном ациклическом графе, используя, в частности, алгоритм нахождения MIN в свободном режиме, алгоритм объединения непересекающихся множеств и 2-3-деревья вместе с поиском в глубину. Ориентированный граф Узел Мы построим алгоритм сложности Пусть Лемма 5.12. Пусть Доказательство. Обозначим через
Рис. 5.28. Преобразование из леммы 5.12. идущий из Допустим, что Лемма 5.13. Пусть
Рис. 5.29. Преобразование из леммы 5.13.
Рис. 5.30. Преобразование из леммы 5.14. Доказательство. Доказательство аналогично доказательству леммы Лемма 5.14. Пусть Доказательство. Обозначим через Допустим, что следует участок пути Легко показать, что повторное применение преобразований из лемм Говоря неформально, можно сказать, что мы строим доминаторное дерево для данного ориентированного ациклического графа 1. Прямые ребраПредположим на время, что в Составным ребром назовем упорядоченную пару Многократно применяем лемму 5.12, чтобы изменить начала прямых ребер. В какой-то момент начало каждого ребра из множества ребер с общим началом Каждому узлу Затем проходим остовное дерево в порядке, обратном к прямому. Возвращаясь по ребру
Рис. 5.31. Корневой ориентированный ациклический граф. что множество 1) Пусть 2) Если есть в (а) удаляем ( объединяем 3) Заменяем (Шаг 1 соответствует применению леммы 5.13, а шаг 2 — леммы 5.12.) Пример 5.15. Рассмотрим корневой ориентированный ациклический граф Оставляем читателю доказать, что по достижении корня действительно получается доминаторное дерево (в предположении, что
Рис. 5.32. Результаты преобразований прямых ребер: а — вначале; б - по возвращении вдоль ребра (6, 7) остовного дерева; в — по возвращении вдоль ребра нет поперечных ребер). Этот алгоритм можно эффективно реализовать с помощью алгоритма объединения непересекающихся множеств и обрабатывать им множества концов у составных ребер. Множества 2. Поперечные ребраВ общем случае нельзя предполагать, что поперечных ребер нет. Но можно с помощью метода, излагаемого ниже, заменить поперечные ребра прямыми. Однако эту замену не следует делать до работы на прямых ребрах, описанной в п. 1, ибо структура данных, которая строится в п. 1, помогает эффективно применить лемму 5.14. С другой стороны, не надо полностью выполнять п. 1 до устранения поперечных ребер, поскольку каждое устраненное поперечное ребро становится прямым. На самом деле мы должны добавить шаги обработки поперечных ребер к тому прохождению в порядке, обратном к прямому, которое было описано применительно к прямым ребрам. Заметим, что в п. 1 требуется (из-за применения леммы 5.13), чтобы в определенные моменты времени в определенные узлы не входили поперечные ребра. Поскольку прохождение ведется в порядке, обратном к прямому, шаги, описанные ниже, преобразуют поперечное ребро в прямое перед тем моментом, когда его наличие делало лемму 5.13 неприменимой. Пусть 1) При прохождении древесного ребра 2) По возвращении к о по ребру Вычисление предков с наибольшим номером можно осуществить не более чем за Обработка поперечных ребер состоит в том, что они преобразуются в прямые по лемме 5.14. Процесс преобразования поперечных ребер в прямые надо выполнять во время обработки прямых ребер. Каждому узлу 1) Заменяем 2) Удаляем каждое поперечное ребро
Рис. 5.33. Удаление поперечных ребер: а — вначале; б - после рассмотрения ребра прямым ребром 3) Пусть Пример 5.16. Рассмотрим глубинное остовное дерево на рис. 5.33,а. Значения По возвращении из узла 6 в узел 3 множество Составные поперечные ребра можно представить 2-3-деревьями. Предлагаем в качестве упражнения формальное описание доминаторного алгоритма. Если вы сможете найти подходящие структуры, вы освоили технику гл. 4 и 5. УПРАЖНЕНИЯ(см. скан) (см. скан) (см. скан) (см. скан) (см. скан) (см. скан) (см. скан) Замечания по литературеСведения по теории графов можно почерпнуть из книг Бержа [1958] и Харари [1969]. Алгоритм 5.1, строящий остовные деревья наименьшей стоимости, взят из работы Крускала [1956]. Прим [1957] указывает другой подход к этой задаче. Алгоритм, предложенный в упр. 5.3, указал нам Спира. Алгоритм, касающийся двусвязности и использующий поиск в глубину, принадлежит Хопкрофту. Алгоритм для сильно связных компонент взят у Тарьяна [1972]. В литературе отражены многочисленные применения поиска в глубину для построения оптимальных или наилучших из известных алгоритмов. Хопкрофг, Тарьян [1973а] дают линейную проверку планарности. В другой работе Хопкрофг, Тарьян [19736] описывают линейный алгоритм нахождения Алгоритм 5.5, т. е. общий алгоритм нахождения путей, по существу, принадлежит Клини [1956], который использовал его в связи с «регулярными выражениями» (разд. 9.1). Данная здесь форма этого алгоритма заимствована у Мак-Нотона, Ямады [1960]. Алгоритм сложности Данциг, Блаттнер, Рао [1967] заметили, что наличие ребер с отрицательными стоимостями не влияет на решение задачи нахождения кратчайших путей между всеми парами точек, если нет цикла с отрицательной стоимостью. Джонсон [1973] обсуждает задачи с одним источником при наличии ребер с отрицательными стоимостями; он же приводит решения упр. 5.21 и 5.22. Спира [1973] дает алгоритм нахождения кратчайшего пути за среднее время Связь между задачей нахождения путей и умножением матриц описана в работах Мунро [1971] и Фурмана [1970] (теорема 5.7) и Фишера, Мейера [1971] (теорема 5.6). Связь с транзитивной редукцией (упр. 5.13-5.15) заимствована у Ахо, Гэри, Ульмана [1972]. Ивен [1973] обсуждает
|
1 |
Оглавление
|