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

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

Файл №1123758 Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.)) 141 страницаТ. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ (2 изд.) (1123758) страница 1412019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Следовательно, г( [и] = б (з, и), что противоречит нашему выбору вершины и. Приходим к выводу„что во время добавления вершины и в множество Я выполняется равенство Н [и] = б (з, и), а следовательно, оно выполняется и в дальнейшем. Завершение. По завершении работы алгоритма выполняется равенство Я = $. Из этого равенства и инварианта Я = У вЂ” 5 следует, что Я = 'и". Таким образом, для всех вершин и е )Г выполняется равенство Ы [и] = б (з, и). ° Следствие 24.7.

Если выполнить алгоритм Дейкстры для взвешенного ориентированного графа С = (К Е) с неотрицательной весовой функцией и и истоком з, то по завершении работы алгоритма подграф предшествования С является деревом кратчайших путей с корнем в вершине з.

Доказательство. Сформулированное выше утверждение непосредственно следует из теоремы 24.6 и свойства подграфа предшествования. В Анализ Насколько быстро работает алгоритм Дейкстры? В нем поддерживается неубывающая очередь с приоритетами Я и тремя операциями, характерными для очередей с приоритетами: 1мзект (явно вызывается в строке 3), Ехтклст Мпч (строка 5) и Рескелзе КеУ (неявно присутствует в процедуре КеьАх, которая вызывается в строке 8). Процедура 1мзект, как и процедура Ехтклст Мпч, вызывается по одному разу для каждой вершины.

Поскольку каждая вершина и е )г добавляется в множество Я ровно по одному разу, каждое ребро в списке смежных вершин А4 [и] обрабатывается в цикле Гог, заданном в строках 7-8, ровно по одному разу на протяжении работы алгоритма. Так как полное количество ребер во всех списках смежных вершин равно [Е], всего выполняется [Е] итераций этого цикла 1ог, а следовательно, не более [Е[ операций РЕСКЕАЯЕ КЕУ. (Еще раз заметим, что здесь используется групповой анализ.) Время выполнения алгоритма Дейкстры зависит от реализации неубывающей очереди с приоритетами. Сначала рассмотрим случай, когда неубывающая очередь с приоритетами поддерживается за счет того, что все вершины пронумерованы от 1 до Щ. Атрибут а'[и] просто помещается в элемент массива с индексом и.

Каждая операция 1мзеит и Рескелзе Кеу занимает время 0(1), а каждая Глава 24. Кратчайшие пути из одной вершины 685 операция Ехтклст Мпч — время О (У) (поскольку в ней производится поиск по всему массиву); в результате полное время работы алгоритма равно О (Уз + Е) = = О(Уз) Если граф достаточно разреженный, в частности, если количество вершин и ребер в нем связаны соотношением Е = о (Уз/1бУ), с практической точки зрения целесообразно реализовать неубывающую очередь с приоритетами в виде бинарной неубывающей пирамиды. (Как было сказано в разделе 6.5, важная деталь реализации заключается в том, что вершины и соответствующие им элементы пирамиды должны поддерживать идентификаторы друг друга.) Далее, каждая операция Ехтклст Мпч занимает время О (!к У).

Как и раньше, таких операций 1Ц. Время, необходимое для построения неубывающей пирамиды, равно О (У). Каждая операция Впскплзл Кну занимает время О (1к У), и всего выполняется не более ~Е1 таких операций. Поэтому полное время выполнения алгоритма равно О ((У + Е) 1к У), что равно О (Е 1к У), если все вершины достижимы из истока. Это время работы оказывается лучшим по сравнению со временем работы прямой реализации О (Уз), если Е = о (Уз/!б У). Фактически время работы алгоритма может достигать значения О(У )к У + Е), если неубывающая очередь с приоритетами реализуется с помощью пирамиды Фибоначчн (см.

главу 20). Амортизированная стоимость каждой из 1Ц операций Ехтклст Мпч равна О (1я У), и каждый вызов процедуры Рнскплзн Кп' (всего не более 1Е1), занимает лишь О (1) амортнзированного времени. Исторически сложилось так, что развитие пирамид Фибоначчи было стимулировано наблюдением, согласно которому в алгоритме Дейкстры процедура Ркскплзк Кпу обычно вызывается намного чаще, чем процедура Ехтклст Мпч, поэтому любой метод, уменьшающий амортизированное время каждой операции Впскллзв Клу до величины о (1я У), не увеличивая при этом амортизированное время операции Ехтклст Мпч, позволяет получить реализацию, которая в асимптотическом пределе работает быстрее, чем реализация с помощью бинарных пирамид. Алгоритм Дейкстры имеет некоторую схожесть как с поиском в ширину (см.

раздел 22.2), так и с алгоритмом Прима, предназначенным для построения минимальных остовных деревьев (см. раздел 23.2). Поиск в ширину он напоминает в том отношении, что множество Е соответствует множеству черных вершин, используемых при поиске в ширину; точно так же, как вершинам множества Я сопоставляются конечные веса кратчайших путей, так и черным вершинам при поиске в ширину сопоставляются правильные расстояния.

На алгоритм Прима алгоритм Дейкстры похож в том отношении, что в обоих этих алгоритмах с помощью неубывающей очереди с приоритетами находится "самая легкая" вершина за пределами заданного множества (в алгоритме Дейкстры это множество 5, а в алгоритме Прима — "выращиваемое" дерево), затем эта вершина добавляется в множество, после чего соответствующим образом корректируются и упорядочиваются веса оставшихся за пределами множества вершин. 686 Часть Ч1 Алгоритмы для работы с графами Упражнения 24.3-1. Выполните алгоритм Дейкстры над ориентированным графом, изобра- женным на рис. 24.2.

Рассмотрите два варианта задачи, в одном из которых истоком является вершина з, а в другом — вершина з. Используя в качестве образца рис. 24.6, укажите, чему будуг равны значения И и я, и какие вершины будут входить в множество Я после каждой итерации цикла згИ!е. 24.3-2. Приведите простой пример ориентированного графа с отрицательными весами ребер, лля которого алгоритм Дейкстры дает неправильные ответы. Почему доказательство теоремы 24.6 не годится, если веса ребер могут быть отрицательными? 24.3-3. Предположим, что строка 4 алгоритма Дейкстры изменена следующим образом: 4 зчЫ!е )ф > 1 В результате этого изменения цикл згЬПе выполняется ٠— 1 раз, а не ~Ц раз.

Корректен ли предложенный алгоритм? 24.3-4. Пусть дан ориентированный граф С = (К Е), с каждым ребром (и, е) ЕЕ которого связано значение г (и, е), являющееся действительным числом в интервале О < г (и, с) < 1, и представляющее надежность соединительного кабеля между вершиной и и вершиной е. Величина г (и, е) интерпретируется как вероятность того, что в канале, соединяющем вершины и и е, не произойдет сбой; при этом предполагается, что все вероятности независимы. Сформулируйте эффективный алгоритм, позволяющий найти наиболее надежный путь, соединяющий две заданные вершины.

24.3-5. Пусть С = (Ъ; Е) — взвешенный ориентированный граф с весовой функ- цией ш: Š— (1, 2,..., И'), где И' — некоторое положительное целое число. Ни для каких двух вершин кратчайшие пути, ведущие из истока а в эти вершины, не имеют одинаковые веса. Предположим, что определен невзвешенный ориентированный граф С' = 1~" 0 1г', Е'), в котором каждое ребро (и, е) е Е заменяется и (и, с) последовательными ребрами единичного веса. Сколько вершин содержит граф С'? Теперь предположим, что в графе С' выполняется поиск в ширину. Покажите, что порядок, в котором вершины множества 1" окрашиваются в черный цвет при поиске в ширину в графе С', совпадает с порядком извлечения вершин множества Ъ' из очереди с приоритетами в строке 5 при выполнении алгоритма Ппкзткл над графом С.

24.3-6. Пусть С = (1г, .Е) — взвешенный ориентированный граф с весовой функ- цией ю: Е -~ (О, 1,..., И~), где И" — некоторое целое неотрицательное число. Модифицируйте алгоритм Дейкстры таким образом, чтобы он 687 Глава 24. Кратчайшие пути иэ одной вершины находил кратчайшие пути из заданной вершины в в течение времени 0 (И~Ъ'+ Е). 24.3-7. Модифнцируйте алгоритм из упражнения 24.3-6 таким образом, чтобы он выполнялся за время 0 ИУ+ Е) 18 И').

(Указание: сколько различных оценок кратчайших путей для вершин из множества У вЂ” Я может встретиться одновременно?) 24.3-8. Предположим, что имеется взвешенный ориентированный граф С = = (Ъ', Е), в котором веса ребер, исходящих из некоторого истока в, могут быть отрицательными, веса всех других ребер неотрицательные„и циклы с отрицательными весами отсутствуют. Докажите, что в таком графе алгоритм Дейкстры корректно находит кратчайшие пути из истока в.

24.4 Разностные ограничения и кратчайшие пути В главе 29 изучается общая задача линейного программирования, в котором нужно оптимизировать линейную функцию, удовлетворяющую системе линейных неравенств. В этом разделе исследуется частный случай задачи линейного программирования, который сводится к поиску кратчайших путей из одной вершины. Полученную в результате задачу о кратчайших путях из одной вершины можно решить с помощью алгоритма Беллмана-Форда, решив таким образом задачу линейного программирования. Линейное программирование В общей задаче линейного программирования (11пеаг-ргойгаппп)п8 ргоЫеш) задается матрица А размером гп х и, пз-компонентный вектор Ь и и-иэмпонентный вектор с.

Нужно найти состоящий из и элементов вектор х, максимизирующий целевую функцию (оЬ)есйче Йпсйоп) 2 „', с;х;, на которую накладывается гп ограничений Ах < Ь. Несмотря на то, что время работы симплекс-алгоритма, который рассматривается в главе 29, не всегда выражается полиномиальной функцией от размера входных данных, существуют другие алгоритмы линейного программирования с полиномиальным временем работы. Имеется ряд причин, по которым важно понимать, как устроены задачи линейного программирования.

Во-первых, если известно, что данная задача приводится к задаче линейного программирования с полиномиальным размером, то отсюда непосредственно следует, что для такой задачи существует алгоритм с полиномиальным временем работы. Во-вторых, имеется большое количество частных случаев задач линейного программирования, для которых существуют более производительные алгоритмы. Например, 688 в настоящем разделе показано, что задача о кратчайших путях из заданного истока — именно такой частный случай.

К другим задачам, которые можно привести к задачам линейного программирования, относятся задача о кратчайшем пути между парой заданных вершин (упражнение 24.4-4) и задача о максимальном потоке (упражнение 26.1-8). Иногда не имеет значения, какой должна получиться целевая функция; достаточно найти произвольное допустимое реиюеиие (геаз(Ые зо!щюп), т.е.

любой вектор х, удовлетворяющий неравенству Ах < Ь, или определить, что допустимых решений не существует. Сосредоточим внимание на таких зидачох существования (ГеаяЬ1!йу ргоЫеш). Системы разностных ограничений В системе разностпых ограничений (зуз!еш ог" ййегелсе солзггппГз) каждая строка в матрице линейного программирования А содержит одно значение 1 и одно значение — 1, а все прочие элементы в этой строке равны О.

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

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

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