Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
§ 2. Задача о коммивояжере2.1. Описание задачи коммивояжера и ее формулировка в виде целочисленной задачи линейного программирования были даны в § 3 гл. 2; в § 3 гл. 10 излагался метод ветвей и границ для ее решения. В этом параграфе мыприведем другой алгоритм, основанный на идеях динамического программирования и предложенный одновременно и независимо Беллманом [54] и Хелдом и Карпом [94]. Напомним постановку задачи (в удобной здесь форме). Требуется найти кратчайший замкнутый маршрут (цикл), проходящий через каждый из заданных городов
чисел
(Ясно, что в силу замкнутости искомого цикла безразлично, какой город считать начальным; поэтому в качестве начального фиксирован город 0.) 2.2. Введем необходимый для дальнейшего аппарат. Пусть Обозначим через
длину кратчайшего пути, соединяющего город Перестановку
Излагаемый ниже алгоритм основан на следующей простой теореме. Теорема 2.1. Пусть
и
Доказательство непосредственно следует из определений (2.2) и (2.3). 2.3. Перейдем непосредственно к изложению алгоритма. Шаг 0. Вычисляем функцию
Количество значений
При этом на одно значение функции требуется одно действие (выбор из таблицы). Количество значений
Шаг 1. Вычисляем функцию
По окончании вычеркиваем из памяти таблицу значений Количество значений
На одно значение функции требуются три действия (два выбора из таблицы и одно сложение). Необходимый объем памяти
Шаг
для всех значений
Для каждого значения функции Количество значений
На одно значение функции требуется
Шаг
Перестановка Количество значений
На одно значение функции требуется
2.4. Получим теперь выражение для суммарного объема необходимых вычислений
где — количество операций, приходящихся на одно значение. Находим:
При всех
Таким образом,
Преобразуем теперь последнюю сумму в выражении для
Тогда
откуда
Окончательно имеем
Отметим, что полный перебор составляет 2.5. Получим выражение для максимального потребного объема памяти
Но
так что
где Отдельно рассмотрим два случая. I случай.
II случай.
Но (см. I случай)
так что
Итак, в обоих случаях
В конечном счете удалось (по сравнению с полным перебором, для которого
|
1 |
Оглавление
|