Главная » Просмотр файлов » Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013)

Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (1162189), страница 153

Файл №1162189 Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013)) 153 страницаТ. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (1162189) страница 1532019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Тогда веса присваивались бы ие ребрам, а вершинам. Модифицируйте процедуру ОАсЯноктпзт-Рятнз таким образом, чтобы оиа за линейное время позволяла найти самый длинный путь в ориентированном ациклическом графе со взвешенными вершинами. 24.2.4 Разработайте эффективный алгоритм, позволяющий определить общее количество путей, содержащихся в ориентированном ациклическом графе. Проаиализируйте время работы этого алгоритма. Часть 17.

Алгоритмы для работы с графами 696 24.3. Алгоритм Дейкстры Алгоритм Дейкстры решает задачу поиска кратчайших путей из одной вершины во взвешенном ориентированном графе С = (Ъ; Е) в случае, когда веса ребер неотрицательны. Поэтому в настоящем разделе предполагается, что для всех ребер (и, и) Е Е выполняется неравенство ю(и,и) > О. Через некоторое время станет понятно, что при хорошей реализации время работы алгоритма Дейкстры меньше времени работы алгоритма Беллмана — Форда. В алгоритме Дейкстры поддерживается множество вершин Я, для которых уже вычислены окончательные веса кратчайших путей к ним из истока л.

В этом алгоритме поочередно выбирается вершина и е Ъ' — Я, которой на данном этапе соответствует минимальная оценка кратчайшего пути. После добавления этой вершины и в множество Я проводится ослабление всех исходящих из нее ребер. В приведенной ниже реализации используется неубываю1цая очередь с приоритетами сг, состоящая из вершин, в роли ключей которых выступают значения их атрибутов с1. Р!ЖЗТКА(С, иг, л) 1 11ч171АС1хе-бпчсгее-бопксе(С, В) 2 3=1) 3 Я=С.)г 4 ч'п11е Я р В 5 и = Ехтклст-Мпч(Я) 6 Я = Я0(и) 7 1ог каждой вершины и Е С.Аф(и) 8 КЕСАХ(и, и, го) // С СООТВЕТСТВУЮЩИМИ ВЫЗОВВМИ ггЕСКЕАЗЕ-КЕУ Процесс ослабления ребер в алгоритме Дейкстры проиллюстрирован на рис.

24.6. В строке 1 выполняется обычная инициализация величин й и я, а в строке 2 инициализируется пустое множество вершин Я. В этом алгоритме поддерживается инвариант, согласно которому в начале каждой итерации цикла иййе в строках 4-8 выполняется равенство Я = Ъ' — Я. В строке 3 неубывающая очередь с приоритетами Ч инициализируется таким образом, чтобы она содержала все вершины множества Тг; поскольку в этот момент Я = й, после выполнения строки 3 сформулированный выше инвариант выполняется. На каждой итерации цикла и Ьйе в строках 4-8 в строке 5 вершина и извлекается из множества Я = )г — Я и добавляется в множество Я в строке 6, в результате чего инвариант продолжает соблюдаться.

(Во время первой итерации этого цикла и = В.) Таким образом, вершина и имеет наименьшую оценку кратчайшего пути среди всех вершин множества Ъ' — Я. Затем в строках 7 и 8 ослабляются все ребра (и, и), исходящие из вершины и. Если текущий кратчайший путь к вершине и может быть улучшен в результате прохождения через вершину и, выполняется ослабление и соответствующее обновление оценки и. 4 и предшественника и.я. Обратите внимание. 697 Глава 24. Кратчайшие пути нз одной еершнны х х 1 х ~ б: — —.~ ')4) Ю в — — — ьч (б) (в) (в) х ОО (в) (г) Рнс. 24.6.

Работа алгоритма Дейкстры. Истоком а является крайняя слева вершина. В вершинах показаны оценки кратчайших путей, а залприхованные ребра указывают предшественников. Черные вершины находятся в множестве Я, а белые — в неубывающей очереди с приоритетами (г = И вЂ” Я. (а) Ситуация непосредственно перел первой итерацией цикла мЫ1е в строках 4-8. Заштрихованная вершина имеет минимальное значение а' и выбирается в качестве вершины и в строке 5.

(6)-(е) Ситуация после каждой послелующей итерации цикла мЫ!е. В каждой части в очередной итерации в качестве вершины и в строке 5 выбирается заштрихованная вершина. Значения в( и предшественники, показанные в части (е), являются окончательными. что после выполнения строки 3 вершины никогда не добавляются в множество Я и что каждая вершина извлекается из этого множества и добавляется в множество Я ровно по одному разу, поэтому количество итераций цикла шЫ(е в строках 4-8 составляет в точности ~Ц. Поскольку в алгоритме Дейкстры из множества (У вЂ” Я для помещения в множество Я всегда выбирается самая "легкая", или "близкая", вершина, можно утверждать, что этот алгоритм придерживается жадной стратегии. Жадные стратегии подробно описаны в главе !6, однако для понимания принципа работы алгоритма Дейкстры читать эту главу необязательно.

Жадные стратегии не всегда приводят к оптимальным результатам, однако, как видно из приведенной ниже теоремы и следствия из нее, алгоритм Дейкстры действительно находит кратчайшие пути. Главное — показать, что после каждого добавления вершины и в множество Я выполняется равенспю и. (( = Ю(л, и). Теорема 24.6 (Корректность алгоритма Дейкстры) По завершении обработки алгоритмом Дейкстры взвешенного ориентированного графа (л = ((у, Е) с неотрицательной весовой функцией и) и истоком л для всех вершин и б (У выполняется равенство и. (( = б(л, и). Доказательство. Воспользуемся следующим инвариантом цикла: В начале каждой итерации цикла зчЬПе в строках 4-8 для каждой вершины и е Я выполняется равенство и.

(( = б(я, и). Часть Рй Алгоритмы блл работы с графами б98 ж ь, Рис. 24.7. Доказательство теоремы 24.6. Множество о перед добавлением в него вершины и непустое. Разделим кратчайший путь р из истока я к вершине и на я х — ь р 3 и, где у — первая Р1 л вершина на пути, не влодяшая в о, а х б о — непосредственный предшественник р. Вершины х и у различны, но может быть так, что в = х или у = и.

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

Инициализация, Изначально Я = з), тик что инвариант тривиально выполняется. Сохранение. Нужно показать, что при каждой итерации равенспю и. ь( = б(а, и) выполняется для каждой вершины, добавленной в множество Я. Воспользуемся методом "от противного". Чтобы получить противоречие, предположим, что и — первая добавленная в множество Я вершина, для которой и.

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

д = б(я, и). Должно выполняться условие и уб я, поскольку я — первая вершина, добавленная в множество Я, и в момент ее добанления выполняется равенство я.Н = 6(л,л) = О. Из условия и ~ я следует также, что непосредственно перед добавлением вершины и в множество Я оно не является пустым. Из вершины а в вершину и должен вести какой-нибудь путь, так как в противном случае, в соответствии со свойством отсутствия пути, выполняется соотношение и. с( = д(а, и) = со, нарушающее справедливость предположения, что и. И Ф б(л, и).

Поскольку хоть один путь существует, должен существовать и кратчайший путь р из вершины я в вершину и. Перел добавлением вершины и в множество Я путь р соединяет вершину из множества Я (а именно — вершину я) с вершиной из множества И вЂ” Я (а именно— с вершиной и). Рассмотрим первую вершину у на пути р, принадлежащую множеству И вЂ” Я, а также предположим, что на этом пути ей предшествует вершина х Е Я. Тогда, как видно из рис. 24.7, путь р можно разложить на составляющие я» х -+ у и. (Любой из путей рз и рз может не содержать ии одного ребра.) Мы утверждаем, что у. И = б(л,п) при добавлении и в Я. Для доказательства этого утверждения заметим, что х е Я. Затем, поскольку мы выбираем как первую вершину для которой и.д уЬ б(а,и) при ее добавлении в Я. при тнава 24. Кратчайшие нута ив одной вершины б99 добавлении х в Я мы имеем х.6 = 6(в, х). Ребро (х, у) в этот момент было ослаблено, и наше утверждение вытекает из свойства сходимости.

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

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

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