
- •Предисловие
- •Введение
- •Алгоритмы и их сложность
- •Примеры задач и алгоритмов
- •Задачи на графах: «Коммивояжер», «Кратчайшие пути», «Остовные деревья»
- •Приближенные алгоритмы: «Составление расписаний»
- •«Сортировка слиянием»
- •«Быстрая сортировка»
- •Формально об алгоритмах. Несложно о сложности
- •«RAM»: машины с произвольным доступом
- •Сложность в худшем случае
- •Сложность в среднем
- •Полиномиальные алгоритмы
- •Полиномиальность и эффективность
- •Аппроксимация с гарантированной точностью
- •Алгоритмы с оценками точности
- •Жадные алгоритмы для «Покрытия множеств»
- •Приближенные алгоритмы для «Вершинного покрытия»
- •Жадный алгоритм для «Рюкзака»
- •Алгоритм Кристофидеса
- •Аппроксимация с заданной точностью
- •«Рюкзак»: динамическое программирование
- •Полностью полиномиальная приближенная схема для «Рюкзака»
- •Вероятностный анализ детерминированных алгоритмов
- •Сложность и полиномиальность в среднем
- •Задача упаковки
- •Выполнимость КНФ
- •Точность алгоритма для почти всех входов
- •«Рюкзак»: полиномиальность в среднем
- •Вероятностные алгоритмы и их анализ
- •Вероятностная проверка тождеств
- •Максимальное по включению независимое множество в графе
- •Протокол византийского соглашения
- •Вероятностное округление
- •Максимальный разрез в графе
- •Методы дерандомизации
- •Метод условных вероятностей
- •Метод малых вероятностных пространств
- •Полиномиальная проверка простоты
- •Основы теории сложности вычислений
- •Сложность вычислений
- •Машины Тьюринга и вычислимость
- •Сводимость по Куку
- •Недетерминированные алгоритмы
- •Сводимость по Карпу
- •Вероятностные вычисления
- •Вероятностно проверяемые доказательства
- •Схемы и схемная сложность
- •Коммуникационная сложность
- •Диаграмма классов сложности
- •Приложения
- •Введение в Python
- •Глоссарий
- •Предметный указатель
- •Список алгоритмов

3.5. «РЮКЗАК»: ПОЛИНОМИАЛЬНОСТЬ В СРЕДНЕМ |
145 |
3.5«Рюкзак»: полиномиальность в среднем
Полиномиальность «в среднем» алгоритма динамического программирования Немхаузера – Ульмана для задачи о рюкзаке
([BV03]).
Итак, рассмотрим еще раз задачу 13 «Knapsack». Как мы видели в разделе 2.2.1, для задачи 13 «Knapsack» существует алгоритм 25 «Рюкзак Немхаузера–Ульмана», поддерживающий в процессе своей рабо-
ты множество парето-оптимальных или, как иногда говорят, доминирующих решений (определение 2.2.1 «Пареторюкзак»). Сложность этого алгоритма — O(n jParetoSolu onsj), т. е. напрямую зависит от конечного раз-
мера множества доминирующих решений для данного входного рюкзака. И хотя можно показать, что существуют такие входные наборы, для которых размер множества доминирующих решений будет экспоненциальным по n (упражнение 2.2.5), для практических целей интересно проанализировать, насколько «часто» встречаются такие плохие входные наборы, возможно ли ожидать от этого алгоритма полиномиального времени работы «в среднем».
Оказалось, справедлива следующая теорема, доказательство которой и составляет все содержание этого раздела.
Теорема 12. Пусть
ai — «веса», произвольные положительные числа;
ci — «стоимости», независимые случайные величины, равномерно распределенные на [0; 1];
q = max jP aretoSolutionsj — число доминирующих подмножеств для всех n предметов.

146 |
Глава 3. ВЕРОЯТНОСТНЫЙ АНАЛИЗ ДЕТЕРМИНИРОВАННЫХ АЛГОРИТМОВ |
Тогда
E(q) = O(n3):
Сначала введем некоторые определения.
∑ Пусть m = 2n, S1; : : : ; Sm — подмножества [n] в порядке неубывания весов. Сразу заметим, что веса i2Sk ai множеств Sk в нашем рассмотрении не возникают.
Для фиксированной u 2 [2 : : : m] и переменной k 2 [1 : : : u) определим:
P lusk — предметы в Su, которых нет в Sk;
Minusk — предметы в Sk, которых нет в Su;
∆k+ |
— сумма стоимостей предметов в P lusk; |
∆k |
— сумма стоимостей предметов в Minusk; |
∆u |
— минимальная разность ∆k+ ∆k , по всем k меньшим u; условно говоря, это «максимальное пре- |
|
имущество в стоимости» над всеми предыдущими подмножествами S1; : : : ; Su 1. |
Или, более формально:
P lusk |
= Su n Sk; |
|
Minusk |
= Sk n Su; |
|
∆k+ |
= |
ci; |
|
|
P lus |
|
|
i2∑ k |
∆k |
= |
∑ ci; |

3.5. «РЮКЗАК»: ПОЛИНОМИАЛЬНОСТЬ В СРЕДНЕМ |
147 |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Следующее утверждение следует напрямую из этих определений и определения 2.2.1 «Парето-рюкзак»:
Лемма 9. 8u 2, Su — доминирующее множество тогда и только тогда, когда ∆u > 0.
Учитывая, что стоимость самого последнего множества Sm ограничена по крайней мере n, то интуитивно уже можно утверждать, что чем больше в среднем будет прирост стоимости ∆u > 0 для каждого доминирующего набора u, тем меньше в среднем будет размер всего множества парето-решений
P aretoSolutions.
Далее мы последовательно:
1.оценим вероятность «неблагоприятных» с точки зрения минимизации размера P aretoSolutions событий, таких, как небольшой прирост ∆u > 0 для нового доминирующего подмножества;
2.определим математическое ожидание прироста стоимости ∆u > 0 для нового доминирующего подмножества u;

148 |
Глава 3. ВЕРОЯТНОСТНЫЙ АНАЛИЗ ДЕТЕРМИНИРОВАННЫХ АЛГОРИТМОВ |
3.получим мат. ожидание размера P aretoSolutions и, следовательно, математическое ожидание времени работы алгоритма.
Итак, рассмотрим некоторое u, пусть Su = [1; : : : ; t] (это только вопрос удобства — нам ничего не мешает перенумеровать предметы в исходном наборе).
Тогда:
8 1 k < u P lusk [1; : : : ; t]; Minusk [t + 1; : : : ; n]:
Для некоторого параметра 0 < " < 1 определим следующие события с достаточно «говорящими» названиями:
ПаретоНабор |
= |
f∆u > 0g |
||||
ДельтаМала |
= |
|
∆ < "2 |
} |
||
ЭлементМалj |
= |
{cj u< " |
g |
|
||
ЭлементНеМалj |
= |
f |
|
= fcj "g |
||
ЭлементМал |
j |
|||||
ВНабореНеМалы |
= \jt=1ЭлементНеМалj |
Оценим вероятность того, что в доминирующем подмножестве есть элемент с «малой» стоимостью.
Лемма 10. P(ВНабореНеМалыjПаретоНабор) n".
Доказательство. 8j t и 0 < " < 1 имеем для некоторого x:

3.5. «РЮКЗАК»: ПОЛИНОМИАЛЬНОСТЬ В СРЕДНЕМ
P (cj < " |
k : ∆k+ > ∆k |
) |
= P (cj < " |
cj > x) |
|
|
j 8 |
j |
|
P(cj < "jcj > x-) |
|
|
|
|
|
|
0 x " 1 |
P(ВНабореНеМалыjПаретоНабор) = P([tj=1ЭлементМалjjПаретоНабор)
149
{ |
при x ": |
0 |
x = |
1 |
x |
1 |
x |
|
": |
|
при x < ": |
1 |
|
||||||||
|
|
" |
x |
"(1 |
x) |
|
x(1 |
") |
|
|
∑t
P(ЭлементМалjjПаретоНабор) t " n":
j=1
Теперь оценим вероятность того, что прирост стоимости доминирующего подмножества будет «мал», при условии, что в наборе нет «малых» предметов.
Лемма 11. P(ДельтаМалаjПаретоНабор ^ ВНабореНеМалы) n".
Доказательство. Оценим P(ПаретоНабор) при априорности событий (при условии): «8j cj 2 [0; 1]», «ВНабореНеМалы»(и,

150 |
|
|
|
Глава 3. |
ВЕРОЯТНОСТНЫЙ АНАЛИЗ ДЕТЕРМИНИРОВАННЫХ АЛГОРИТМОВ |
|||||||||||||||||||
следовательно, «∆k+ "»): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
P(ПаретоНаборjВНабореНеМалы) = |
|
|
|
|
|
|
|
+ |
t |
|
c |
|
|
; |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
= P (8k ∆k ∆k ; |
|
|
|
1]) = |
|
|
|
|
||||||||||||
|
|
|
1 |
8j >+ |
|
|
|
j 2 |
[0 |
|
) |
|
|
|||||||||||
= |
|
|
|
|
|
P |
k ∆k |
|
(1 ") ∆k |
; |
8 |
j > t cj |
2 |
[0; 1 "] |
|
|
||||||||
|
|
|
1 |
|
|
|
||||||||||||||||||
(1 |
|
t |
(8 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
")n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
P (8k ∆k ∆k+ "2; 8j > t cj 2 [0; 1 1 "]) |
||||||||||||||||||||||
(1 ")n t |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P ( |
|
jВНабореНеМалы) : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ДельтаМала |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(1 ")n |
t |
Здесь был использован известный факт из геометрии: объем политопа (выпуклой области, задаваемой системой неравенств в (n t)-мерном пространстве), «уменьшенного» в 1 " раз, меньше исходного
в(1 ")n t. А вероятность как раз и выражалась через объем политопа!
Сдругой стороны, ДельтаМала ПаретоНабор, и
P(ДельтаМалаjПаретоНабор ^ ВНабореНеМалы) =
|
P( |
|
jВНабореНеМалы) |
|
|
|
|
= |
ДельтаМала |
|
(1 ")n t |
(1 ")n 1 n": |
|||
P |
|
|
|
||||
|
|
|
j |
|
|
|
|
|
|
(ПаретоНабор ВНабореНеМалы) |
Далее нам понадобится небольшая техническая лемма из теории вероятностей.
Лемма 12.
P(AjB) = P(AjB \ C) P(CjB) + P(AjB \ C) P(CjB):

3.5. «РЮКЗАК»: ПОЛИНОМИАЛЬНОСТЬ В СРЕДНЕМ |
151 |
Доказательство. Рассмотрим пересечение событий A, B, C, где «разрезанные» части обозначены x, y, z, w:
Используя соотношение
P(AjB) = P(A \ B);
P(B)

152 |
|
Глава 3. |
ВЕРОЯТНОСТНЫЙ АНАЛИЗ ДЕТЕРМИНИРОВАННЫХ АЛГОРИТМОВ |
|||||||||||||
получим |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P(AjB \ C) P(CjB) + P(AjB \ |
|
|
) P( |
|
jB) = |
|
|
|
|
|
|
|
||||
C |
C |
|
|
|
|
|
|
|
||||||||
|
|
y |
|
y + z |
|
x |
|
x + w |
|
|||||||
|
= |
|
|
|
+ |
|
|
|
= |
|
||||||
|
y + z |
x + y + z + w |
x + w |
x + y + z + w |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
= |
x + y |
= P(AjB): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
x + y + z + w |
Теперь мы готовы оценить вероятность малого прироста стоимости доминирующего подмножества:
Лемма 13. P(ДельтаМалаjПаретоНабор) 2n".
Доказательство. Оценим P(ДельтаМалаjПаретоНабор), используя леммы 10, 11, 12:
P(ДельтаМалаjПаретоНабор) =
= P(ДельтаМалаjПаретоНабор \ ВНабореНеМалы) P(ВНабореНеМалыjПаретоНабор)
+P(ДельтаМалаjПаретоНабор \ ВНабореНеМалы) P(ВНабореНеМалыjПаретоНабор)
P(ДельтаМалаjПаретоНабор \ ВНабореНеМалы) + P(ВНабореНеМалыjПаретоНабор)
n" + n" = 2n":

3.5. «РЮКЗАК»: ПОЛИНОМИАЛЬНОСТЬ В СРЕДНЕМ |
153 |
Рис. 3.6: Граф зависимостей утверждений в разделе 3.5

154 |
Глава 3. |
ВЕРОЯТНОСТНЫЙ АНАЛИЗ ДЕТЕРМИНИРОВАННЫХ АЛГОРИТМОВ |
|||||||||||||
Теперь мы готовы перейти к доказательству самой теоремы. Возьмем " = |
1 |
|
, тогда |
||||||||||||
3n |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
E(∆uj∆u > 0) |
|
"2 |
P( |
|
jПаретоНабор) = |
|
|
|
|
|
|
|||
|
ДельтаМала |
|
|
|
|
|
|
||||||||
|
|
= |
"2 |
(1 P(ДельтаМалаjПаретоНабор)) |
|
|
|
|
|||||||
|
|
"2 |
1 |
|
2 |
1 |
|
|
|||||||
|
|
(1 2n") = |
|
(1 |
|
) = |
|
: |
|||||||
|
|
9n2 |
3 |
27n2 |
Обозначим математическое ожидание стоимости Sm через Cm. Sm — это множество максимального веса и стоимости, содержащее все предметы.
С одной стороны,
n Cm = n E(ci) = 2 :
С другой стороны, учитывая, что стоимость пустого набора S1 равна нулю, стоимость Sm можно под-
считать, как |
∆u, и |
|
|
|
|
|
|
|
|
|
|
∑u2f2; :::;mg:∆u>0 |
m |
|
|
|
|
|
|
|
|
m |
|
|
∑ |
|
|
|
|
1 |
|
|
∑ |
|
|
Cm = P(∆u > 0) E(∆uj∆u > 0) |
|
27n2 |
u=2 |
P(∆u > 0): |
|||||||
|
u=2 |
|
|
|
|
|
|
|
|
|
|
Откуда получаем |
m |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
27 |
|
|
|||||
|
∑ P(∆u > 0) = 27n2 |
|
|
|
|
||||||
|
|
|
= |
|
|
n3: |
|
||||
|
2 |
|
2 |
|
u=2
Теперь мы можем выразить математическое ожидание размера множества доминирующих решений:
E(q) = 1 + ∑m P(∆u > 0) 1 + 272 n3 = O(n3):
u=2
3.5. «РЮКЗАК»: ПОЛИНОМИАЛЬНОСТЬ В СРЕДНЕМ |
155 |
Вспоминая, что сложность алгоритма равна O(nq), получаем полиномиальность алгоритма 25 «Рюкзак Немхаузера–Ульмана» в среднем, разумеется, на случайных входных данных с описанным в начале раздела распределением.
Напомним связь между утверждениями (леммами и теоремами) раздела 3.5 на рис. 3.6.
Следует отметить, что в работе [BV03] доказана полиномиальность в среднем не только для равномерного, но и для других типов вероятностных распределений исходных данных в задаче о рюкзаке.
Некоторые экспериментальные результаты поведения алгоритма 25 «Рюкзак Немхаузера–Ульмана» на случайных данных, можно увидеть на рисунке 3.7. Представлено время (показатель me) работы алгоритма 25 «Рюкзак Немхаузера–Ульмана» и максимальный размер множества частичных решений (показатель ParetoS) в зависимости от n — числа предметов для рюкзака.

156 |
|
|
|
|
|
Глава 3. ВЕРОЯТНОСТНЫЙ АНАЛИЗ ДЕТЕРМИНИРОВАННЫХ АЛГОРИТМОВ |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|