Т. Кормен, Ч. Лейсерзон, Р. Риверст, К. Штайн - Алгоритмы. Построение и анализ (2013) (1162189), страница 159
Текст из файла (страница 159)
Докажите, что для ю' = 2, 3,..., к и всех о е Ъ' бг(в, о) = б;(в, о) + 26, 1(в, о) и что 6,(в, о) < (Е1 е, Покажите, как вычислить 6,(в, о) из б, г (в, о) для всех о Е 17 за время 0(Е), и сделайте вывод о том, что можно вычислить 6(в,о) для всех о е $' за время 0(Е 1я И'). 24.5. йиорнтм Карпа для канска цикла с мнннмальнавм средним весам Пусть С = (17, Е) представляет собой ориентированный граф с весовой функцией ш: е -+ к и пусть и = (Ц.
Определим среднай вес (шеал лкещьг) цикла с = (еы ез,..., еь), состоящего из ребер множества Е, как ь 7л(с) = — ~~ ш(е;) . в=г Пусть !л' = ппп,7л(с), где с охватывает все ориентированные циклы графа С. Цикл с, для которого выполняется равенство !л(с) = р', называется циклам с минимальным средним весам (пшшпшп шеап-юе(ййГ сус!е). В этой задаче исследуется зффективный алгоритм вычисления величины р'.
Без потери общности предположим, что каждая вершина о й Ъ' достижима из истока в Е Ъ'. Пусть 6(в,о) — вес кратчайшего пути из истока в в вершину о, а бь(в, о) — вес кратчайшего пути из истока в в вершину о, содержащего ровно !о ребер. Если такого пути не существует, то бь(в,о) = оо. ж Покажите, что если 7л' = О, то граф С не содержит циклов с отрицательным весом и 6(в, о) = пипа<ай„ г бь(в, о) для всех вершин о е Ъ'.
720 Часть р!. Алгорытмы длл работы с графами б. Покажите, что если 7л* = О, то б„(в, гг) — бь(в, о) щах >0 ойь< -1 п — й для всех вершин и Е У. (Указание; воспользуйтесь обоими свойствами из п. (а).) в. Пусть с — цикл с нулевым весом, а и и 0 — две произвольные вершины в этом цикле. Предположим, что 7л' = 0 и что вес пути из вершины и в вершину с вдоль цикла равен х.
Докажите, что б(в, о) = б(в, и) + х. (Указание: вес простого пути из вершины о в вершину и вдоль цикла равен — х.) а Покажите, что если 7л' = О, то в каждом цикле с минимальным средним весом существует вершина с, такая, что б„(в,с) - бь(в,о) щах о«я< -з п — й (Указание: покажите, как можно расширить кратчайший путь в каждую вершину, принадлежацую циклу с минимальным средним весом, вдоль цикла, чтобы получить путь к следующей вершине цикла.) д.
Покажите, что если 1л' = О, то б„(в, с) — бь(в, с) пип шах тали 0<ьйо-1 и — й е. Покажите, что если к весу каждого ребра графа С добавить константу г, то величина 7г' увеличится на Е Покажите с помощью этого факта справедливость соотношения б„(в, о) — бь(в, 0) 7л' = ппп щах ьб1' Ойьйо-1 и — й ж. Разработайте алгоритм, позволяющий вычислить величину 1л' за время 0(УЕ). 24.б. Ботанические кратчайшие нути Последовательность называется баталической (Ьйоп(с), если она монотонно возрастает, а затем монотонно убывает, или если путем циклического сдвига ее можно привести к такому виду.
Например, битоническими являются последовательности (1,4,6,8,3, — 2), (9,2, — 4, — 10, — 3) и (1,2,3,4), но не (1,3,12,4,2,10). (См. битоническую евклидову задачу о коммивояжере 15.3.) Предположим, что задан ориентированный граф С = (У, Е) с весовой функцией ю: Е -+ )к и нужно найти кратчайшие пути из одной вершины в. Имеется также дополнительная информация: для каждой вершины с е У веса ребер вдоль любого кратчайшего пути из истока в в вершину с образуют битоническую последовательность. Гзава 24. Кратчайшие нута из одной вершины Разработайте наиболее эффективный алгоритм, позволяющий решить эту задачу, и проанализируйте время его работы.
Заключительные замечания Алгоритм Дейкстры Щ1свпа) [87) был разработан в 1959 году, но в нем не содержалось никаких упоминаний об очереди с приоритетами. Алгоритм БеллманаФорда основан на отдельных алгоритмах Беллмана (Ве!Ьпап) [37) и Форда (Рогб) [108]. Беллман указал, как кратчайшие пути связаны с разностными ограничениями.
Лоулер (Еачи!ег) [223] описал алгоритм с линейным временем работы для поиска кратчайших путей в ориентированном ациклическом графе, который он рассматривает как часть "народного творчества". Если вес каждого из ребер выражается сравнительно малыми неотрицательными целыми числами, задача о кратчайших путях из одной вершины решается с помощью более эффективных алгоритмов. Последовательность значений, возврашаемых в результате вызовов процедуры Ехтклст-Мпя в алгоритме Дейкстры, монотонно возрастает со временем.
Как говорилось в заключительных замечаниях к главе 6, в этом случае существует несколько структур данных, позволяющих эффективнее реализовать различные операции над очередями с приоритетами, чем бинарная пирамида или пирамида Фибоначчи. Ахуя (АЬща), Мельхорн (МеЬ)Ьогп), Орлин (Ог














