Главная » Просмотр файлов » 1626435697-9d9ede204f9baad60159c2d6531787c7

1626435697-9d9ede204f9baad60159c2d6531787c7 (844297), страница 41

Файл №844297 1626435697-9d9ede204f9baad60159c2d6531787c7 (Хопкрофт, Ульман 1979 - Построение и анализ вычислительных алгоритмов) 41 страница1626435697-9d9ede204f9baad60159c2d6531787c7 (844297) страница 412021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 41)

Остовное дерево наименьшей стоимости. Гл. в. АлГОРитмы ИА ГРАФАХ димся в о, а узел иг помечен как "старый", ибо ги может оказаться отцом узла и. С) Пример 5.2. Условимся изображать ребра, входящие в Т, сплошными линиями, а ребра из  — штриховыми. Кроме того, корень дерева (начальный узел, выбираемый в строке 8) будем рисовать наверху, а сыновей каждого узла будем располагать слева направо в том порядке, в котором их ребра добавлялись в строке 4 процедуры ПОИСК. На рис. 5.7,б показано одно возможнсе разбиение графа, изображенного на рис, 5.7,а, на множества древесных и обратных ребер, построенное в процессе поиска в глубину.

Вначале все узлы помечены как "новые". Допустим, что в строке 8 выбирается и,. Выполняя ПОИСК(а,), можно в строке 2 взять ги=п,. Так как узел пе помечен как "новый", добавляем (по ие) к Т и вызываем ПОИСК(а,). Теперь можно было бы выбрать узел п, из т'.(О,), но ои уже помечен как "старый". Тогда выберем в=о,. Так как оа — "новый" узел, добавляем (о„о,) к Т и вызываем ПОИСК(ое). Каждый узел, смежный с ам является теперь "старым", так что снова вызываем ПОИСК(п,).

Выполняя процедуру ПОИСК(вв), находим ребро (о„п.), добавляем его к Т и вызываем ПОИСК(и,). Заметим, что на рис. 5.7,б узел и, расположен справа от найденного ранее сына ьа узла ое. Никакие "новые" узлы не смежны с п„так что опять вызываем ПОИСК(пв). На этот раз мы не обнаруживаем "новых" узлов, смежных с а„и потому вызываем ПОИСК(о,). Далее ПОИСК(о,) находит о„а ПОИСК(и,) находит о,. Все узлы оказываются на дереве, и они помечены как "старые".

Таким образом, алгоритм закончит работу. Если бы граф не был связным, то цикл в строках 8, 9 надо было повторить для каждой компоненты. П Теорема 5.2. Алгоритм 5.2 на гра4уе с а узлами и е ребрами требует 0(МАХ(а, е)) шагов, а в Рис. 5.7. Граф и его остовное дерево, построенное в процессе поиска в глубину. кэ. метод поиске в глгаинэ Л о к а з а т ел ь с т в о. Строка 7 н поиск "нового" узла в строке 8 требуют 0(п) шагов, если список узлов составлен и один раз просмотрен. Время, затрачиваемое на ПОИСК(о), если не считать рекурсивных вызовов процедуры самой себя, пропорцио. нально числу узлов, смежных с о.

ПОИСК(о) вызывается только один раз для данного о, поскольку после вызова узел о помечается как "старый". Таким образом, всего на ПОИСК тратится время 0(МАХ(п, е)); теорема доказана. С) Мощность метода поиска в глубину частично отражена в приве. денной ниже лемме, в которой утверждается, что каждое ребро неориентированного графа 0 либо принадлежит глубинному остовному лесу, либо соединяет предка с потомком в некотором дереве, входящем в глубинный останный лес.

Таким образом, все ребра графа О, будь то древесные или обратные, соединяют два узла„ один из которых является предком другого в остовном лесу. Лемма 5.3. Если (о, ш) — обратное ребро, то либо о — предок узла ш, либо го — предок узла о в вставном лесу,. Д о к а з а т ел ь с т в о. Без потери общности будем считать, что о посещается раньше ш, т. е. ПОИСК(о) вызывается раньше, чем ПОИСК(ш). Поэтому в тот момент, когда достигнут узел о, узел и все еще помечен как "новый'*. Все "новые" узлы, посещенные во время вызова процедуры ПОИСК(о), станут потомками узла о в остовном лесу. Но ПОИСК(о) не может закончиться, пока узел ш не достигнут, ибо го находится в списке Ь(о). П Поиск в глубину задает на узлах остовного леса естественный порядок, а именно: узлы можно пометить в том порядке, в каком они посещались, если положить вначале СЧЕТ=1 между строками 6 и 7 алгоритма 5.2 и вставить в начало процедуры ПОИСК ПГНОМЕР[о) СЧЕТ; СЧЕТ -СЧЕТ+1; Тогда узлы леса получат метки от 1 до их числа в лесу.

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

Часто мы будем обращаться сэтими метками узлов так, как будто это имена узлов, Поэтому высказывание типа о(ш, где о и ш — узлы, имеет смысл. Пример 3.3. Поиск в глубину задает на графе, изображенном на рис. 5.7,а, следующий порядок: о„о„о„о„о„о,. В этом можно убедиться, проследив порядок вызовов процедуры Г!ОИСК ГЛ. 6. АЛГОРИТМЫ ИА ГРАФАХ на различных узлах, или пройдя дерево на рис. 5.7,б в прялюм порядке. П Особо отметим, что если о — подлинный предок узла ыг, то о« гн. Аналогично если о находится слева от иг в дереве, то о(гн. 5.3. ДВУСВЯЗНОС4Ь Рассмотрим приложение метода поиска в глубину к выделению в неориеитированном графе двусвязных компонент.

Пусть 6= =(]У, Е) — связный неориентированный граф. Узел а называют точкой сочленения графа 6, если существуют такие узлы о и вг, что о, мг и а различны и всякий путь между и и вг содержит узел а. Иначе говоря, а — точка сочленения графа 6, если удаление узла а расщепляет 6 не менее чем на две части. Граф 6 называется деусеязнам, если для любой тройки различных узлов о, мг, а существует путь между о и ыг, не содержащий а.

Таким образом, неориентированный связный граф двусвязеи тогда и только тогда, когда в нем нет точек сочленения. На множестве ребер графа 6 можно задать естественное отношение, полагая, что для ребер е, и е, выполняется это отношение, если е,=е, или они лежат на некотором цикле. Легко показать, что это отношение является отношением эквивалентности '), разбивающим множество ребер графа 6 на такие классы эквивалентности Е„Е„..., Е„, что два различных ребра принадлежат одному и тому же классу тогда и только тогда, когда они лежат на ОбщЕМ ЦИКЛЕ. ДЛя 1~1(]г ОбОЗНаЧИМ ЧЕРЕЗ )гг МНОжЕСтВО УЗЛОВ, лежащих на ребрах из Е,.

Каждый граф 6,=(1/„Ег) называется деусеязной компонентой графа 6. Пример 5.4. Рассмотрим неориентированный граф на рис. 5.8,а. Узел о, является точкой сочленения, так как каждый путь между о, и о, проходит через о,. Классы эквивалентности, состоящие из ребер, лежащих на общих циклах, таковы: ((о„ о,), (о„ (о,), (о„ о,)), ((О64 О4) (Оз О6)! (О4 О6))4 ((о4 ое))~ ((о., о,), (ое, ое), (о44 ое), (ог, ое)4 (ое, оз)).

Эти классы порождают двусвязные компоненты, изображенные на рис. 5.8,б. Не очевидно здесь лишь то, что ребро (о„о,), будучи '1 К называется отношением вквивалектности на множестве 3, если к рейыексивно (ака для всех а Е 31, симметрично (нз айЬ следует Ьйа для всех а, Ь Е о) н транзитивно (нз а4ХЬ н Ьйс следует айс). Легко показать, что отношение зквнвалентностн на о разбнвает о на непересекающиеся классы зквнвалентностн. (Подмножество [а]=(Ь[Ьйа) называсгся классом вквиваленлтости.) 6.8. двусвязность Рнс. 5.8. а — неорнентнрованный граф, б — его двусвяаные компоненты. само классом эквивалентности (оно не входит ни в один цикл), порождает "двусвязную компоненту", состоящую из о, и о,.

П Следующая лемма дает полезную информацию о двусвязности. Лемма 5.4. Пусть б,= ()гы Е,) для 1(г(й — двусвязные компоненты связного неориентированного графа 6=(г', Е). Тогда 1) граф 6, двусвязен для каждого 1, 1(1(й; 2) для всех 1~/ пересечение У, д Р'у содержит не более одного узла; 3) а — точка сочленения графа 6 тогда и только тогда, когда а Е У~ () )гу для некоторых 1~1', Д о к а з а т е л ь с т в о. 1) Допустим, что найдутся такие три различных узла о, го и а в Уы что все пути в 6; между о и го проходят через а. Тогда, разумеется, (о, го) (Ео Следовательно„ в Е; есть различные ребра (о, о') и (т, гоз), а в 6~ — цикл, содержащий их.

По определению двусвязной компоненты все ребра и узлы на этом цикле принадлежат Е, и $'~ соответственно. Поэтому в б, есть два пути между о и го и только один из них содержит а; получили противоречие. 2) Допустим, что пересечению г', П 'гу принадлежат два различных узла о и го. Тогда существуют цикл С, в бы содержащий о и в, и цикл С, в 6;, также содержащий о и в. Поскольку Е~ и Е; не пересекаются, то множества ребер, входящих в С, и С„тоже не пере- 292 Гл. д.

АлГОРитмы ИА ГРАФАХ секаются. Тем не менее из ребер зтих циклов можно построить новый цикл, содержащий узлы о и ю. Отсюда следует, что хотя бы одно ребро в Е, совпадает с каким-то ребром в Ел Таким образом, вопреки предположению Е~ и Ет не являются классами эквивалентности. 3) Пусть а — точка сочленения графа 6. Тогда существуют такие два узла и и ги, что о, ги и а различны и каждый путь между о и гп содержит а.

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

Отчасти это связано с тем, что, согласно лемме 5.3, в нем нет "поперечных ребер". Иными словами, если узел п — не предок и не потомок узла ги в остовном лесу, то о и га не могут соединяться никаким ребром. Если а — точка сочленения, то удаление ребра а и всех ребер, инцидентных ему, расщепляет граф б по крайней мере на две части. Рис. 5.9. Остоииое дерево, построенное поиском и глубину. 20а ь.з, двзсаязность Одна из них состоит из сына з узла а и всех его потомков в глубинном остовном дереве. Следовательно, в этом остовном дереве узел а должен иметь сына з, потомки которого не соединены обратными ребрами с подлинными предками узла а. Обратно, из-за отсутствия поперечных ребер узел а, отличный от корня, является точкой со.

членении, если никакой потомок некоторого его сына не соединен обратным ребром нн с каким подлинным предком узла а. Корень глубинного остовного дерева является точкой сочленения тогда и только тогда, когда он имеет не менее двух сыновей. Пример 5.5. Остовное дерево, построенное поиском в глубину, для графа, изображенного на рис. 5.8,а, показано на рис. 5.9. Точками сочленения являются о,, о, и о,. Узел о, имеет сына о„и ни нз какого потомка узла о, не выходит обратного ребра к подлинному предку узла о,. Аналогично узел о, имеет сына о„а о, — сына о, с подобными свойствами. С! Высказанные выше идеи выражены в следующей лемме. Лемма 5.5. Пусть 6= (г', Е) — связный неориентированный гриф, а 5=- ($', Т) — глубинное остовное дерево для него.

Узел а является точкой сочленения графа 6 тогда и только тогда, когда выполнено одно из условий: !) а — корень и а имеет более одного сына; 2) а — не корень и для некоторого его сына з нет обратных ребер между потомками узла з (в том числе самим з) и подлинными предками узла а. Д о к а з а те л ь с та о.

Характеристики

Тип файла
DJVU-файл
Размер
5,53 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6556
Авторов
на СтудИзбе
299
Средний доход
с одного платного файла
Обучение Подробнее