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

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

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

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

Вычисление весов кратчайших путей в восходящем порядке На основе рекуррентного соотношения (25.5) можно создать приведенную ниже процедуру, предназначенную для вычисления величин е(ч в порядке возрас(й) тания )е. В качестве входных данных выступает матрица И' размером и х п, определенная, как в уравнении (25.1). Процедура возвращает матрицу Р("), содержащую веса кратчайших путей. Р(,Оу0-%АкзнАйй(И') 1 п = И(гочиа 2 Р(0) — Иl 3 $огй = 1(оп 4 Пусть Р(й) = (и',, ) — новая матрица размером и х п 5 1огг'=1(оп б Гог 3' = 1 Со п 7 1(й) . (((й-1) 1(й-1) ~(й-1)) = пип ~;~,,й + 8 гешгв .О(") На рис. 25.4 показаны матрицы Р(й), вычисленные алгоритмом Флойда — Уоршелла для графа, изображенного на рис.

25.1. Время работы алгоритма Флойда-Уоршелла определяется трижды вложенными друг в друга циклами 1ог в строках 3 — 7. Поскольку для каждого выполнения строки 7 требуется время О(1), время работы всего алгоритма составляет 9(пз). Код этого алгоритма так же компактен, как и код алгоритма из раздела 25.1. Он не содержит сложных структур данных, поэтому константа, скрытая в Е)-обозначениях, мала.

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

25.1.6). Если задана мат- Часть ) 1 Алгоритмы длл рабаты с графами 734 ми. 1 1 ми. 1 яь мц хш 2 2 х)ь 3 х)ь м)ь мп. 4 мп. 4 м(ь хп. мш м)ь м)ь 5 мп. 0 3 8 сю -4 сю 0 оо 1 7 оо 4 0 оо оо 2 оо -5 0 сю сс сю сю 6 0 р(а) П (0) 0 3 8 оо — 4 оо 0 сю 1 7 оо 4 0 оо оо 2 5 — 5 0 -2 со оо со 6 0 яь 1 1 яь яь х)ь м)ь 2 2 мц 3 яь м)ь мп.

4 1 4 м)ь 1 м(ь яь м)ь 5 мп. ро) П(п = 0 3 8 4 — 4 оо 0 сю 1 7 оо 4 0 5 11 2 5 -5 0 -2 оо оо оо б 0 мп. 1 1 2 1 м)ьяьяь 2 2 мгь 3 яь 2 2 4 1 4 мп. 1 мп. Хп. М(1 5 мп. р(г) = П(а) 0 3 8 оо 0 со сю 4 0 2 -1 -5 4 -4 1 7 5 11 0 -2 6 0 Мп. 1 1 2 1 2 2 мп. 3 мц 2 4 3 4 мп. 1 м)ь мгь яь 5 мп. р(З) П(3) 0 3 -1 3 0 -4 7 4 0 2 -1 -5 8 5 1 мп. 1 4 2 1 4 мп. 4 2 1 4 3 М)ь 2 1 4 3 4 м(е 1 4 3 4 5 МП. 4 -4 1 -1 5 3 0 -2 6 0 р(4) П(~) = 01-32-4 3 0 -4 1 — 1 7 4 0 5 3 2 — 1 — 5 0 — 2 8 5 1 6 0 ми. 3 4 5 1 4 я). 4 2 1 4 3 яь 2 1 4 3 4 х)ь 1 4 3 4 5 ми.

р(в) п(м— Рнс. 25.4. Последовательность матриц Р(ь) н П(ь), вычисленных алп)ритмом Флойда-Уоргаелла длл графа, иэображенного на рис. 25.1. рица предшествования П, то вывести вершины на указанном кратчайшем пути можно с помощью процедуры Рнгмт-А).).-Р)ыиб-Бноитнбт-РАтн. Матрицу предшествования П можно так же вычислить "на лету", в процессе вычисления в алгоритме Флойда — Уоршелла матриц ь)("). Точнее говоря, вычисляется последовательность мк)риц П(0), П(~),..., П~"), где П = П("), а элемент )г~ ) гт определяется как предшественник вершины 7' на кратчайшем пути из вершины г, все промежуточные вершины которого принадлежат множеству 11, 2,..., Ц.

Можно дать рекурсивное определение величины )г, . Когда Й = О, кратчай(ь) ший путь из вершины т в вершину 7' не содержит промежуточных вершин. Таким Глава 75. Кратчайшие луши менсду всеми ларами вершин 735 образом, (о) ( )чп., если г = 5 или гр,. = со еслигф5иги, <оо. (25.6) / (ь-1) ,(ь-1) <,(ь-)) ~(ь-1) ( я„), если с(сй > с(,„+ с(„ (25.7) Вопрос о том, как включить вычисление матрицы П(ь) в процедуру Е).оуп%ккзнлп., предлагается рассмотреть в упр. 25.2.3 самостоятельно. На рис. 25.4 показана последовательность матриц П("), полученных в результате обработки алгоритмом графа, изображенного на рис.

25.1. В упомянутом упражнении также предлагается выполнить более сложную задачу — доказать, что подграф предшествовання С,; является деревом кратчайших путей с корнем 1. Еще один способ реконструкции кратчайших путей рассматривается в упр. 25.2.7. Транзитивнве замыкание ориентированного графа Может возникнуть необходимость установить, существуют ли в заданном ориентированном графе С = (Ъ; Е), множество вершин которого — И = (1, 2,..., и), пути из вершины 1 в вершину 5' для всех возможных пар вершин (,5 Е )7.

Триизитивное замыкание ((гапябве с1оаше) графа С определяется как граф С* = (17, Е'), где Е* = ((г, )): в графе О имеется путь из вершины 1 в вершину 5) Один из способов найти транзитивное замыкание графа в течение времени (Э(пз) — присвоить каждому ребру нз множества Е вес 1 и выполнить алгоритм Флойда-Уоршелла. Если путь из вершины г в вершину 5 существует, то мы получим г(ц < п; в противном случае г(; = оо. Имеется и другой, подобный путь вычисления транзитивного замыкания графа С в течение времени Е)(пз), на практике позволяющий сэкономить время и память. Этот метод включает в себя подстановку логических операций У (логическое ИЛИ) и д (логическое И) вместо используемых в алгоритме Флойда-Уоршелла арифметических операций тгп и +.

Определим значение (м ()ч) для г',5',)с = 1,2,...,и равным 1, если в графе С существует путь из вершйны 1 в вершину 5„все промежуточные вершины которого принадлежат множеству (1, 2,..., Ц; в противном случае эта величина равна О. Конструируя транзитивное замыкание С* = (17, Е'), будем помещать ребро (г',5) в множество Е' Если при )с > 1 получаем путы й 5', где )с ,-й 5', то выбранный предшественник вершины 5 совпадает с выбранным предшественником этой же вершины на кратчайшем пути из вершины )с, все промежуточные вершины которого принадлежат множеству (1, 2,..., )с — 1).

В противном случае выбирается тот же предшественник вершины 5, который был выбран на кратчайшем пути из вершины (, все промежуточные вершины которого принадлежат множеству (1, 2,..., /с — 1). Выражаясь формально, при Е > 1 Часть ЬЬ Алгормвмы длл работы с графами 736 тогда и только тогда, копза 1,. = 1. Рекурсивное определение величины 1, (ь) (ь) построенное по аналогии с рекуррентным соотношением (25.5), имеет вид (/с) (1-1) Г (/с-1) (ь — 1)) сб сб 1 сь /сг (25.8) Как и в алгоритме Флойда-Уоршелла, мы вычисляем матрицы Т(ь) = (1) ) в порядке возрастания Й.

ТКА)с($1Т!ЧЕ-СЬОЯ1КЕ ((с) 1 и= )С.Ц 2 Пусть Т(0) = ф.)~ — новая матрица размером и х и 0 7 (0)~ Э Гога =11оп 4 Гог у = 1 то п 5 1Г а == 7' или ((, з) б С. Е 6 (О) 7 еЬе1~") = 0 8 Гогlс = 11оп 9 Пусть Т(ь) = ~1~ ~ — новая матрица размером п х и и /(Ю 10 фогт' = 1(оп 11 Гог т' = 1 10 и 12 1(ь) = 1('. ")7~~1(ь "Дт(ь. ") гу гу 1 сь ьу 13 гепггп Т(") На рис. 25.5 показаны матрицы Т(ь), вычисленные процедурой Ткл)сз)т(чеСьоз(лж для приведенного графа. Время работы процедуры Ткана)т(же-Сьо- 1000 1000 1000 1е~ 0111 1с>0111000111 011001100111 1011 1011 1011 Рис.

2ЗД. Ориентированный граф и матрицы 2'1"с, вычисленные алгоритмом транзитивного ьм мыввнил. Глава 25. Кратчайшие пути менсау всеми нарами вершин 737 з((кк, как и время работы алгоритма Флойда-Уоршелла, равно 9(пз). Однако на некоторых компьютерах логические операции с однобитовымн величинами выполняются быстрее, чем арифметические операции со словами, представляющими целочисленные данные. Кроме того, поскольку в прямом алгоритме транзитнвного замыкания используются толью булевы, а не целые величины, ему требуется меньший обьем памяти, чем алгоритму Флойда-Уоршелла. Объем сэкономленной памяти зависит от размера слова компьютера. Упражнения 25.2.2 Примените алгоритм Флойда-Уоршелла ко взвешенному ориентированному графу, изображенному на рис.

25.2. Приведите матрицы Р(~1, полученные на каждой итерации внешнего цикла. 25.2.2 Покажите, как найти транзитивное замыкание с использованием методики из раздела 25.1. 25.2.3 Модифнцируйте процедуру Рвот(з-%лкзнльь таким образом, чтобы в ней вычнслялись матрицы П("1 в соответствии с уравнениями (25.6) и (25.7). Дайте строгое доказательство того, что для всех 1 Е У граф предшествования С,; представляет собой дерево кратчайших путей с корнем г'. (Указание: чтобы показать, что граф С,; ациклическнй, сначала покажите, что из равенства к," = 1 в соот(ь) ветствии с определением к(1 следует, что д, > с(я + га( .

Затем адаптируйте (ь) (ь) (ц доказательство леммы 24.16.) 25.2.4 Как было показано, для работы алгоритма Флойда — Уоршелла требуется объем (ь) памяти, равный 9(пз), поскольку мы вычисляем величины д( 1 для (,7', к 1,2,..., и. Покажите, что приведенная ниже процедура, в которой все верхние индексы просто опущены, корректна н что для ее работы требуется обьем памяти Е(пз), Р(лллР-%АкзнА1л. (И') 1 и = РУ.гоевв 2 2)ее И' 3 аког )с = 1 то и 4 Гог 1 = 1 Го и 5 Гогз' = 1(о и 6 ч(; = ш(п (с(б, с(чь + Аьу) 7 ГЕГНГП лл 24 эви 3726 73л Часть И Алгоритмы длл райоты с графами 25.2.5 Предположим, что мы модифицируем способ обработки равенства в уравнении (25.7): (ь — 1) (1-1) (ь-1) (ь — 1) Корректно ли такое альтернативное определение матрицы предшествования П? 25.2.

6 Как с помощью выходных данных алгоритма Флойда — Уоршелла установить наличие цикла с отрицательным весом? 25.2. 7 В одном из способов, позволяющих восстановить в алгоритме Флойда-Уоршелла кРатчайшие пУти, использУютсЯ величины фг ДлЯ 1,7, Й = 1,2,..., и, тле ф; представляет собой промежуточную вершину с наибольшим номером, принадлежащую кратчайшему пути из вершины 1 в вершину 7, все промежуточные вершины которого принадлежат множеству (1, 2,..., Ц. Дайте рекурсивное определение величин ф,, модифицируйте процедуру Рьоуп-%лкзнльь таким образом, (ь) чтобы в ней вычислялись эти величины, и перепишите процедуру Ркпчт-Ап.- Рл)кл-Бноктлзт-Рлтн так, чтобы в качестве ее входных данных выступала матрица Ф = (ф~" ).

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

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

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