1. Полиномиальный в среднем алгоритм для
«Упаковки»
Н.Н. Кузюрин С.А. Фомин
10 октября 2008 г.
Алгоритм динамического
программирования для задачи упаковки
подмножеств. Полиномиальность
алгоритма «в среднем».
1 / 21
2. Полиномиальность в среднем
Определение
«Полиномиальный в среднем (точно)»
Алгоритм A называется полиномиальным в среднем, если среднее
время его работы ограничено полиномом от длины входа, т.е.
существует константа c > 0, такая, что En TA = O(nc ).
Упражнение
Приведите пример функции TA (времени работы некоторого
алгоритма A) и распределения исходных данных Pn (I ), для которых
TA является полиномиальной в среднем (En TA = O(nc )), а TA — нет.
2
Определение
«Полиномиальный в среднем»
Алгоритм называется полиномиальным в среднем, если существует
константа ε > 0, такая, что En T ε = O(n), где T — время работы
алгоритма. 2 / 21
3. Полиномиальность в среднем
Определение
«Полиномиальный в среднем (точно)»
Алгоритм A называется полиномиальным в среднем, если среднее
время его работы ограничено полиномом от длины входа, т.е.
существует константа c > 0, такая, что En TA = O(nc ).
Упражнение
Приведите пример функции TA (времени работы некоторого
алгоритма A) и распределения исходных данных Pn (I ), для которых
TA является полиномиальной в среднем (En TA = O(nc )), а TA — нет.
2
Определение
«Полиномиальный в среднем»
Алгоритм называется полиномиальным в среднем, если существует
константа ε > 0, такая, что En T ε = O(n), где T — время работы
алгоритма. 3 / 21
4. Полиномиальность в среднем
Определение
«Полиномиальный в среднем (точно)»
Алгоритм A называется полиномиальным в среднем, если среднее
время его работы ограничено полиномом от длины входа, т.е.
существует константа c > 0, такая, что En TA = O(nc ).
Упражнение
Приведите пример функции TA (времени работы некоторого
алгоритма A) и распределения исходных данных Pn (I ), для которых
TA является полиномиальной в среднем (En TA = O(nc )), а TA — нет.
2
Определение
«Полиномиальный в среднем»
Алгоритм называется полиномиальным в среднем, если существует
константа ε > 0, такая, что En T ε = O(n), где T — время работы
алгоритма. 4 / 21
5. Задача об упаковке
Задача
«Упаковка» (Packing)
Дано конечное множество L из m элементов и система его
подмножеств S1 , . . . , Sn . Требуется найти максимальную по числу
подмножеств подсистему попарно непересекающихся подмножеств.
Определение
Для m-элементного множества L, L = {l1 , . . . , lm } и семейства его
подмножеств {S1 , . . . , Sn }:
Элемент li и подмножество Sj инцидентны, если li ∈ Sj .
Матрицей инцидентности называется {0,1}-матрица A = (aij )
размером m × n, в которой aij = 1 в том и только в том случае,
когда элемент li и подмножество Sj инцидентны.
5 / 21
6. Задача об упаковке
Задача
«Упаковка» (Packing)
Дано конечное множество L из m элементов и система его
подмножеств S1 , . . . , Sn . Требуется найти максимальную по числу
подмножеств подсистему попарно непересекающихся подмножеств.
Определение
Для m-элементного множества L, L = {l1 , . . . , lm } и семейства его
подмножеств {S1 , . . . , Sn }:
Элемент li и подмножество Sj инцидентны, если li ∈ Sj .
Матрицей инцидентности называется {0,1}-матрица A = (aij )
размером m × n, в которой aij = 1 в том и только в том случае,
когда элемент li и подмножество Sj инцидентны.
6 / 21
7. Задача об упаковке
Задача
«Упаковка» (Packing)
Дано конечное множество L из m элементов и система его
подмножеств S1 , . . . , Sn . Требуется найти максимальную по числу
подмножеств подсистему попарно непересекающихся подмножеств.
Определение
Для m-элементного множества L, L = {l1 , . . . , lm } и семейства его
подмножеств {S1 , . . . , Sn }:
Элемент li и подмножество Sj инцидентны, если li ∈ Sj .
Матрицей инцидентности называется {0,1}-матрица A = (aij )
размером m × n, в которой aij = 1 в том и только в том случае,
когда элемент li и подмножество Sj инцидентны.
7 / 21
8. ЦЛП для «Упаковки»
n
xj → max
j=1
∀j : 1 ≤ j ≤ n xj ∈ {0, 1}
n
∀i : 1 ≤ i ≤ m aij xi ≤ 1
j=1
ЦЛП для «Упаковки» (общий случай)
n
cj xj → max
j=1
∀j : 1 ≤ j ≤ n xj ∈ {0, 1}
n
∀i : 1 ≤ i ≤ m aij xi ≤ bi
j=1
8 / 21
9. ЦЛП для «Упаковки»
n
xj → max
j=1
∀j : 1 ≤ j ≤ n xj ∈ {0, 1}
n
∀i : 1 ≤ i ≤ m aij xi ≤ 1
j=1
ЦЛП для «Упаковки» (общий случай)
n
cj xj → max
j=1
∀j : 1 ≤ j ≤ n xj ∈ {0, 1}
n
∀i : 1 ≤ i ≤ m aij xi ≤ bi
j=1
9 / 21
11. Упражнение
Какие входные данные для этого алгоритма заставят его работать
экспоненциально долго?
Упражнение
На каких входных данных этот алгоритм будет работать O(n3 )?
Теорема
Пусть aij являются независимыми случайными величинами,
принимающими значения {0, 1}, причем выполняется:
P{aij = 1} = p
P{aij = 0} = 1 − p
mp 2 ≥ ln n.
Тогда алгоритм является полиномиальным в среднем.
11 / 21
12. Упражнение
Какие входные данные для этого алгоритма заставят его работать
экспоненциально долго?
Упражнение
На каких входных данных этот алгоритм будет работать O(n3 )?
Теорема
Пусть aij являются независимыми случайными величинами,
принимающими значения {0, 1}, причем выполняется:
P{aij = 1} = p
P{aij = 0} = 1 − p
mp 2 ≥ ln n.
Тогда алгоритм является полиномиальным в среднем.
12 / 21
13. Упражнение
Какие входные данные для этого алгоритма заставят его работать
экспоненциально долго?
Упражнение
На каких входных данных этот алгоритм будет работать O(n3 )?
Теорема
Пусть aij являются независимыми случайными величинами,
принимающими значения {0, 1}, причем выполняется:
P{aij = 1} = p
P{aij = 0} = 1 − p
mp 2 ≥ ln n.
Тогда алгоритм является полиномиальным в среднем.
13 / 21
14. Мат. ожидание времени работы: O(nm E |T (n)|).
x k — вектор с k единицами и n − k нулями;
pki — вероятность выполнения i-неравенства для x k .
Pk — вероятность того, что x k — допустимое решение;
n k
pki ≡ P aij xjk ≤ 1 ≤ P aij ≤ 1 =
j=1 j=1
k k−1
= (1 − p) + kp(1 − p) = (1 − p)k−1 (1 + p(k − 1)) ≤
2 (k−1)
≤ (1 − p)k−1 (1 + p)k−1 = (1 − p 2 )k−1 ≤ e −p .
m m
2 (k−1) 2 (k−1)
Pk = pki ≤ e −p = e −mp .
i=1 i=1
14 / 21
15. Мат. ожидание времени работы: O(nm E |T (n)|).
x k — вектор с k единицами и n − k нулями;
pki — вероятность выполнения i-неравенства для x k .
Pk — вероятность того, что x k — допустимое решение;
n k
pki ≡ P aij xjk ≤ 1 ≤ P aij ≤ 1 =
j=1 j=1
k k−1
= (1 − p) + kp(1 − p) = (1 − p)k−1 (1 + p(k − 1)) ≤
2 (k−1)
≤ (1 − p)k−1 (1 + p)k−1 = (1 − p 2 )k−1 ≤ e −p .
m m
2 (k−1) 2 (k−1)
Pk = pki ≤ e −p = e −mp .
i=1 i=1
15 / 21
16. Мат. ожидание времени работы: O(nm E |T (n)|).
x k — вектор с k единицами и n − k нулями;
pki — вероятность выполнения i-неравенства для x k .
Pk — вероятность того, что x k — допустимое решение;
n k
pki ≡ P aij xjk ≤ 1 ≤ P aij ≤ 1 =
j=1 j=1
k k−1
= (1 − p) + kp(1 − p) = (1 − p)k−1 (1 + p(k − 1)) ≤
2 (k−1)
≤ (1 − p)k−1 (1 + p)k−1 = (1 − p 2 )k−1 ≤ e −p .
m m
2 (k−1) 2 (k−1)
Pk = pki ≤ e −p = e −mp .
i=1 i=1
16 / 21
17. Мат. ожидание времени работы: O(nm E |T (n)|).
x k — вектор с k единицами и n − k нулями;
pki — вероятность выполнения i-неравенства для x k .
Pk — вероятность того, что x k — допустимое решение;
n k
pki ≡ P aij xjk ≤ 1 ≤ P aij ≤ 1 =
j=1 j=1
k k−1
= (1 − p) + kp(1 − p) = (1 − p)k−1 (1 + p(k − 1)) ≤
2 (k−1)
≤ (1 − p)k−1 (1 + p)k−1 = (1 − p 2 )k−1 ≤ e −p .
m m
2 (k−1) 2 (k−1)
Pk = pki ≤ e −p = e −mp .
i=1 i=1
17 / 21
18. n n n
n n n
E |T (n)| ≤ Pk = 1 + Pk ≤ 1 + n + Pk <
k k k
k=0 k=1 k=2
n n
n −mp2 (k−1) 2 (k−1)
<1+n+ e ≤1+n+ e k ln n−mp =
k
k=2 k=2
n
2
=1+n+n e (k−1)(ln n−mp ) .
k=2
При условии mp 2 ≥ ln n в последней сумме каждый член не
превосходит 1. Это и означает, что E[T (n)] = O(n2 ).
18 / 21
19. n n n
n n n
E |T (n)| ≤ Pk = 1 + Pk ≤ 1 + n + Pk <
k k k
k=0 k=1 k=2
n n
n −mp2 (k−1) 2 (k−1)
<1+n+ e ≤1+n+ e k ln n−mp =
k
k=2 k=2
n
2
=1+n+n e (k−1)(ln n−mp ) .
k=2
При условии mp 2 ≥ ln n в последней сумме каждый член не
превосходит 1. Это и означает, что E[T (n)] = O(n2 ).
19 / 21