Опубликован: 05.01.2015 | Уровень: для всех | Доступ: платный
Лекция 21:

Кратчайшие пути

Перспективы

В таблице 21.4 перечислены алгоритмы, рассмотренные в настоящей главе, и характеристики их производительности в худшем случае. Эти алгоритмы широко применяются, поскольку, как было сказано в разделе 21.6, задачи поиска кратчайших путей связаны с большим количеством других задач во вполне конкретном техническом смысле, который непосредственно приводит к эффективным алгоритмам для решения всего класса задач или, по крайней мере, указывает на существование таких алгоритмов.

В этой таблице сравниваются трудоемкости (время выполнения в худшем случае) различных алгоритмов поиска кратчайших путей, которые были рассмотрены в настоящей главе. Границы для худшего случая, обозначенные как осторожные, не всегда полезны для прогнозирования производительности на реальных сетях - особенно это относится к алгоритму Беллмана-Форда, который обычно выполняется за линейное время.

Таблица 21.4. Трудоемкости алгоритмов поиска кратчайших путей
Ограничение на веса Алгоритм Трудоемкость Примечание
С одним истоком
Неотрицательные Дейкстры V2 Оптимальный (насыщенные сети)
Неотрицательные Дейкстры (PFS) E lgV Осторожная граница
Без циклов Очередь истоков E Оптимальный
Без отрицательных циклов Беллмана-Форда VE Можно усовершенствовать?
Нет Вопрос открыт ? NP-трудный
Для всех пар вершин
Неотрицательные Флойда V3 Одинаково для всех сетей
Неотрицательные Дейкстры (PFS) VE lgV Осторожная граница
Без циклов DFS VE Одинаково для всех сетей
Без отрицательных циклов Флойда V3 Одинаково для всех сетей
Без отрицательных циклов Джонсона VE lgV Осторожная граница
Нет Вопрос открыт ? NP-трудный

Общая задача поиска кратчайших путей в сетях, в которых веса ребер могут принимать отрицательные значения, является трудноразрешимой. Задачи поиска кратчайших путей представляют собой хорошую иллюстрацию той границы, которая часто отделяет трудноразрешимые задачи от легких, поскольку имеются многочисленные алгоритмы для решения различных вариантов этой задачи с различными ограничениями на сети: ребра только с положительными весами, или ацикличность, или даже подзадачи, где возможны отрицательные веса ребер, но нет отрицательных циклов. Некоторые алгоритмы оптимальны или почти оптимальны, хотя имеются существенные разрывы между наилучшей известной нижней границей, лучшим известным алгоритмом для задачи с одним истоком в сетях, которые не содержат отрицательных циклов, и для задачи всех пар вершин в сетях с неотрицательными весами.

Все эти алгоритмы основаны на небольшом количестве абстрактных действий и могут быть приведены в общей постановке. Конкретнее, единственные операции, которые выполняются над весами ребер - это сложение и сравнение: любая постановка, в которой эти операции имеют смысл, может служить платформой для алгоритмов поиска кратчайших путей. Как уже было сказано, эта точка зрения объединяет алгоритмы для вычисления транзитивного замыкания орграфа с алгоритмами поиска кратчайших путей в сетях. Сложность, привносимая отрицательными весами ребер, соответствует свойству монотонности для этих абстрактных операций: если можно гарантировать, что сумма двух весов никогда не меньше любого из весов, то можно использовать алгоритмы из разделов 21.2-21.4. Если же подобную гарантию дать нельзя, необходимо использовать алгоритмы из раздела 21.7. Инкапсуляция этих соображений в АТД не составляет особого труда и расширяет применимость данных алгоритмов.

Задачи поиска кратчайших путей выводят нас на перепутье между элементарными алгоритмами обработки графов и задачами, которые мы не можем решить. Это первые в ряду других классов аналогичных задач, в числе которых находятся задачи о сетевых потоках и линейное программирование. Как и при поиске кратчайших путей, в этих областях имеется четкая грань между легкими и трудноразрешимыми задачами. Имеются не только многочисленные эффективные алгоритмы, пригодные при соответствующих ограничениях, но и многочисленные возможности для поиска лучших алгоритмов - а также случаи, когда встречаются однозначно NP-трудные задачи.

Многие такие задачи были подробно рассмотрены как задачи из области исследования операций еще до появления компьютеров и соответствующих им алгоритмов. Исторически исследование операций занималось общими математическими и алгоритмическими моделями, а компьютерные науки - конкретными алгоритмическими решениями и базовыми абстракциями, которые могут как вылиться в эффективные реализации, так и помочь построению общих решений. И модели из исследования операций, и базовые алгоритмические абстракции компьютерных наук применялись для разработки компьютерных реализаций, которые могут решать практические задачи большого размера. Поэтому в некоторых областях трудно провести четкую границу между исследованием операций и компьютерными науками. Например, в обеих областях исследователи до сих пор ищут эффективные решения задач вроде поиска кратчайших путей. По мере рассмотрения все более трудных задач можно разрабатывать классические методы, опираясь на результаты обеих этих областей.

Бактыгуль Асаинова
Бактыгуль Асаинова

Здравствуйте прошла курсы на тему Алгоритмы С++. Но не пришел сертификат и не доступен.Где и как можно его скаачат?

Александра Боброва
Александра Боброва

Я прошла все лекции на 100%.

Но в https://www.intuit.ru/intuituser/study/diplomas ничего нет.

Что делать? Как получить сертификат?

Александр Ефимов
Александр Ефимов
Россия, Спб, СпбГтурп
Павел Сусликов
Павел Сусликов
Россия