Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Book-advanced-algorithms.pdf
Скачиваний:
275
Добавлен:
27.03.2016
Размер:
5.11 Mб
Скачать

40

Глава 1. АЛГОРИТМЫ И ИХ СЛОЖНОСТЬ

4.Наиболее предпочтительным решением является построение точного эффективного алгоритма для рассматриваемой задачи.

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

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

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

1.1.3Приближенные алгоритмы: «Составление расписаний»

Очень часто алгоритмы, используемые на практике, не находят точное решение, а довольствуются нахождением приближенного (в некотором смысле) решения. Такие алгоритмы называются приближенными. Особенно часто приближенные алгоритмы применяют для решения NP-трудных задач, причем актуальной задачей является анализ точности получаемого решения.

Рассмотрим для иллюстрации одну из простейших задач составления расписаний.

Задача 8. «Составление расписаний»

1.1. ПРИМЕРЫ ЗАДАЧ И АЛГОРИТМОВ

41

Имеется m одинаковых машин и n независимых работ с длительностями исполнения t1; : : : ; tn. Распределить эти работы по машинам так, чтобы минимизировать максимальную загрузку (загрузка машины равна сумме длительностей работ, приписанных данной машине).

Несмотря на простоту постановки, эта задача трудна с вычислительной точки зрения (NP-трудна). Даже для случая m = 2 она остается NP-трудной, поскольку к ней сводится NP-трудная задача о камнях: для заданного множества из n камней с весами t1; : : : ; tn выяснить, можно ли разбить это множество на два так, чтобы суммы весов в них были равны. Это условие можно записать в виде булева уравнения:

n

xiti = A/2;

i=1

где A = n ti, xi 2 f0; 1g и необходимо, чтобы A было четным.

i=1

Определение 1.1.1. Эвристикой, в теории алгоритмов обычно называют некоторый интуитивнопонятный алгоритм (или принцип построения алгоритмов). Эвристика может не гарантировать какую-либо точность решения, и не иметь никаких оценок времени работы, но часто применяеняется из-за хороших практических результатов.

Традиционный подход к задачам такого рода состоит в использовании простых эвристик (см. определение 1.1.1), одну из которых мы сейчас проанализируем.

Эвристика: Берется произвольная работа и помещается на машину, имеющую наименьшую загрузку (загрузка равна сумме длин работ на данной машине).

Эта эвристика обладает следующим очевидным свойством.

Лемма 4. В любой момент работы этой эвристики разница в загрузке между наиболее и наименее загруженными машинами не превосходит tmax = maxi ti.

tmax
T

42

Глава 1. АЛГОРИТМЫ И ИХ СЛОЖНОСТЬ

Теперь мы можем доказать утверждение о качестве работы нашей эвристики.

Лемма 5. Построенное расписание отличается от оптимального (по критерию минимизации максимальной загрузки) не более чем в два раза.

Доказательство. Пусть T — длина оптимального расписания (сумма длин работ на наиболее загруженной машине), T A — длина расписания, которое построено нашей эвристикой, TminA — сумма длительностей работ на наименее загруженной машине (в расписании, построенном нашей эвристикой). Имеют место очевидные неравенства:

T TminA ;

T tmax:

А теперь мы легко можем оценить качество получаемого расписания:

T A

T A + tmax

 

T + tmax

 

tmax

 

 

 

min

 

 

1 +

 

= 2:

T

T

T

T

Супремум отношения TTA по всем входным данным фиксированного размера, показывающий, в какое максимально возможное число раз алгоритм A может ошибиться при поиске решения, иногда называют мультипликативной ошибкой алгоритма A. Таким образом, мы доказали, что мультипликативная ошибка рассмотренного алгоритма не превосходит 2.

Более того, если предположить, что ! 0, т. е. если мы интересуемся асимптотической ошибкой, то из доказанного очевидно вытекает, что TTA 1 + ", где " ! 0. Таким образом, асимптотическая мультипликативная ошибка нашего алгоритма стремится к единице, что является весьма желательным, но далеко не всегда достижимым эффектом.

1.1. ПРИМЕРЫ ЗАДАЧ И АЛГОРИТМОВ

43

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

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

Простая же иллюстрация может быть сделана сейчас на примере уже рассмотренной ранее задачи 4 «TSP». Действительно, предположим, что существует эффективный алгоритм A, который для любого входа задачи строит гамильтонов цикл веса не более чем в K раз превосходящего оптимум, причем K является функцией только от размера входа, т. е. K = f(n), где n — число вершин графа. Подадим на вход алгоритма A набор весов специального вида. Пусть дан произвольный граф G = (V; E), jV j = n. Тогда вес ребра e в полном графе зададим формулой: w(e) = 1, если e 2 E, и w(e) = Kn, если e 2/ E.

Посмотрим, что должен выдать алгоритм A для таких входов. Нетрудно видеть, что если в графе G = (V; E) есть гамильтонов цикл, то алгоритм должен выдать число, не превосходящее n. Если же гамильтонова цикла в G нет, то алгоритм выдает число, не меньшее nK + n 1 > n. Таким образом, применяя алгоритм A, мы можем решить задачу о существовании гамильтонова цикла в графе G, которая, как известно, является NP-полной. Значит, такого алгоритма A не должно существовать в предположении, что

P ≠ NP.

Еще одна простая, но общая идея, которая повсеместно применяется при решении NP-трудных за-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]