Главная » Просмотр файлов » Структуры данных и алгоритмы

Структуры данных и алгоритмы (1021739), страница 51

Файл №1021739 Структуры данных и алгоритмы (Структуры данных и алгоритмы) 51 страницаСтруктуры данных и алгоритмы (1021739) страница 512017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Отсюда следует, что процедура topsort распечатывает все вершины в обратном топологическом порядке.Эта процедура работает вследствие того, что в ациклическом орграфе нет обратных дуг. Рассмотрим, что происходит, когда поиск в глубину достигает конечной202ГЛАВА 6. ОРИЕНТИРОВАННЫЕ ГРАФЫвершины ж. Из любой вершины могут исходить только дуги дерева, прямые и поперечные дуги. Но все эти дуги направлены в вершины, которые уже пройдены(посещались до достижения вершины х), и поэтому предшествуют вершине х.6.7. Сильная связностьСильно связной компонентой ориентированного графа называется максимальноемножество вершин, в котором существуют пути из любой вершины в любую другуювершину.

Метод поиска в глубину можно эффективно использовать для нахождениясильно связных компонентов ориентированного графа.Дадим точную формулировку понятия сильной связности. Пусть G = (V, Е) —ориентированный граф. Множество вершин V разбивается на классы эквивалентности V,, 1 < i < г, так, что вершины v и w будут эквивалентны тогда и только тогда,когда существуют пути из вершины и в вершину w и из вершины w в вершину и.Пусть Е,, 1 < i < г, — множество дуг, которые начинаются и заканчиваются в множестве вершин V,, Тогда графы G, = (V,, Е,) называются сильно связными компонентами графа G. Ориентированный граф, состоящий только из одной сильно связнойкомпоненты, называется сильно связным.Пример 6*.17.

На рис. 6.23 представлен ориентированный граф с двумя сильносвязными компонентами, которые показаны на рис. 6.24. DОтметим, что каждая вершина ориентированного графа G принадлежит какойлибо сильно связной компоненте, но некоторые дуги могут не принадлежать никакойсильно связной компоненте. Такие дуги идут от вершины одной компоненты к вершине, принадлежащей другой компоненте. Можно представить связи между компонентами путем создания редуцированного (приведенного) графа для графа G.

Вершинами приведенного графа являются сильно связные компоненты графа G. В приведенном графе дуга от вершины С к вершине D существует только тогда, когда вграфе G есть дуга от какой-либо вершины, принадлежащей компоненте С, к какойлибо вершине, принадлежащей компоненте D. Редуцированный граф всегда являетсяациклическим орграфом, поскольку если бы существовал цикл, то все компоненты,входящие в этот цикл, в действительности были бы одной связной компонентой. Нарис. 6.25 показан редуцированный граф для графа из рис.

6.23.©Рис. 6.23. Ориентированный графРис. 624. Сильно связные компоненты орграфа из рис. 6.23Рис. 6.25. Редуцированный графТеперь рассмотрим алгоритм нахождения сильно связных компонент для заданного ориентированного графа G.1.2.Сначала выполняется поиск в глубину на графе G. Вершины нумеруются в порядке завершения рекурсивно вызванной процедуры dfs, т.е.

присвоение номеров вершинам происходит после строки (4) в листинге 6.8.Конструируется новый ориентированный граф G, путем обращения направлениявсех дуг графа G.6.7. СИЛЬНАЯ СВЯЗНОСТЬ2033.Выполняется поиск в глубину на графе Gr, начиная с вершины с наибольшимномером, присвоенным на шаге 1. Если проведенный поиск не охватывает всехвершин, то начинается новый поиск с вершины, имеющей наибольший номерсреди оставшихся вершин.4.

Каждое дерево в полученном остовном лесу является сильно связной компонентой графа G.Пример 6.18. Применим описанный алгоритм к ориентированному графу, представленному на рис. 6.23. Прохождение вершин графа начнем с вершины а и затемперейдем на вершину Ъ. Присвоенные после завершения шага 1 номера вершин показаны на рис. 6.26. Полученный путем обращения дуг граф G, представлен нарис. 6.27.Выполнив поиск в глубину на графе G,, получим глубинный остовный лес, показанный на рис.

6.28. Обход остовного леса мы начинаем с вершины а, принимаемойв качестве корня дерева, так как она имеет самый высокий номер. Из корня а можнодостигнуть только вершины с и Ь. Следующее дерево имеет только корень d, поскольку вершина d имеет самый высокий номер среди оставшихся (но она и единственная оставшаяся вершина). Каждое из этих деревьев формирует отдельную сильносвязанную компоненту исходного графа G. П—-0Рис.

6.26. Номера вершин после выполненияшага 1 алгоритмаРис. 6.27. Граф GrРис. 6.28. Глубинныйостовный лесВыше мы утверждали, что вершины строго связной компоненты в точности соответствуют вершинам дерева в остовном лесу, полученном при применении поиска вглубину к графу G,. Докажем это.Сначала покажем, что если вершины v и w принадлежат одной связной компоненте, то они принадлежат и одному остовному дереву. Если вершины v и w принадлежат одной связной компоненте, то в графе G существует путь от вершины v к вершине w и путь от вершины w к вершине v. Допустим, что поиск в глубину на графе<?, начат от некоторого корня х и достиг или вершины v, или вершины и>.

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

Поэтому при обходе графа G рекурсивный вызов процедуры dfsдля вершины v заканчивается раньше, чем вызов dfs для вершины х. Но если приобходе графа G вызывается процедура dfs для вершины и, то из-за наличия пути от204ГЛАВА 6. ОРИЕНТИРОВАННЫЕ ГРАФЫвершины v к вершине ж процедура dfs для вершины х начнется и закончится доокончания процедуры dfs(v), и, следовательно, вершина х получит меньший номер,чем вершина и. Получаем противоречие.Отсюда заключаем, что при обходе графа G вершина v посещается при выполнении dfs(x) и поэтому вершина о является потомком вершины х.

Следовательно, вграфе G существует путь от вершины х к вершине и. Более того, так как существуети путь от вершины v к вершине х, то вершины х и v принадлежат одной сильносвязной компоненте. Аналогично доказывается, что вершины х и w принадлежат одной сильно связной компоненте. Отсюда вытекает, что и вершины и и w принадлежат той же сильно связной компоненте, так как существует путь от вершины и квершине w через вершину х и путь от вершины w к вершине и через вершину х.Упражнения6.1.

Представьте граф, изображенный на рис. 6.29, посредствома) матрицы смежности, содержащей стоимости дуг;б) связанных списков смежности, показывающих стоимость дуг.Рис. 6.29. Ориентированный граф с помеченными дугами6.2.6.3.6.4.6.5.Постройте математическую модель для следующей задачи составления календарного плана работ. Есть множество задач 5*i, T2, ..., Т,, для выполнения которых необходимо время t\, t2, ..., t,, и множество отношений вида "задача Т<должна закончиться до начала задачи Т".

Найдите минимальное время, необходимое для выполнения всех задач.Выполните реализацию операторов FIRST, NEXT и VERTEX для орграфов,представленных посредствома) матриц смежности;б) связанных списков смежности;в) списков смежности, показанных на рис. 6.5.Для графа, показанного на рис. 6.29, используйтеа) алгоритм Дейкстры для нахождения кратчайших путей от вершины а доостальных вершин;б) алгоритм Флойда для нахождения кратчайших путей между всеми парамивершин.Напишите законченную программу алгоритма Дейкстры, используя связанныесписки смежности и очередь с приоритетами, реализованную посредством частично упорядоченного дерева.УПРАЖНЕНИЯ205*6.6.Покажите, что алгоритм Дейкстры работает неправильно, если стоимости дугмогут быть отрицательными.**6.7.

Покажите, что алгоритм Флойда работает корректно, если некоторые дугиимеют отрицательную стоимость, но нет циклов, состоящих из дуг с отрицательными стоимостями.6.8. Полагая, что вершины графа из рис. 6.29 упорядочены как а, Ъ, ..., /, постройте глубинный остовный лес. Укажите дуги дерева, прямые, обратные и поперечные, а также подсчитайте глубинные номера вершин.*6.9. Пусть есть глубинный остовный лес и совершается обход составляющих егоостовных деревьев слева направо в обратном порядке. Покажите, что в этомслучае список вершин будет совпадать со списком вершин, полученных с помощью процедуры dfs, вызываемой при построении остовного леса.6.10. Корнем ациклического орграфа называется вершина г такая, что существуютпути, исходящие из этой вершины и достигающие всех остальных вершинорграфа. Напишите программу, определяющую, имеет ли данный ациклический орграф корень.*6.11.

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

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

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

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