Download - Packing Average
Полиномиальный в среднем алгоритм для«Упаковки»
Н.Н. Кузюрин С.А. Фомин
10 октября 2008 г.
Алгоритм динамическогопрограммирования для задачи упаковкиподмножеств. Полиномиальностьалгоритма «в среднем».
1 / 21
Полиномиальность в среднемОпределение
«Полиномиальный в среднем (точно)»Алгоритм A называется полиномиальным в среднем, если среднеевремя его работы ограничено полиномом от длины входа, т.е.существует константа c > 0, такая, что En TA = O(nc).
УпражнениеПриведите пример функции TA (времени работы некоторогоалгоритма A) и распределения исходных данных Pn(I ), для которыхTA является полиномиальной в среднем (En TA = O(nc)), а T 2
A — нет.
Определение
«Полиномиальный в среднем»Алгоритм называется полиномиальным в среднем, если существуетконстанта ε > 0, такая, что En T ε = O(n), где T — время работыалгоритма. 2 / 21
Полиномиальность в среднемОпределение
«Полиномиальный в среднем (точно)»Алгоритм A называется полиномиальным в среднем, если среднеевремя его работы ограничено полиномом от длины входа, т.е.существует константа c > 0, такая, что En TA = O(nc).
УпражнениеПриведите пример функции TA (времени работы некоторогоалгоритма A) и распределения исходных данных Pn(I ), для которыхTA является полиномиальной в среднем (En TA = O(nc)), а T 2
A — нет.
Определение
«Полиномиальный в среднем»Алгоритм называется полиномиальным в среднем, если существуетконстанта ε > 0, такая, что En T ε = O(n), где T — время работыалгоритма. 3 / 21
Полиномиальность в среднемОпределение
«Полиномиальный в среднем (точно)»Алгоритм A называется полиномиальным в среднем, если среднеевремя его работы ограничено полиномом от длины входа, т.е.существует константа c > 0, такая, что En TA = O(nc).
УпражнениеПриведите пример функции TA (времени работы некоторогоалгоритма A) и распределения исходных данных Pn(I ), для которыхTA является полиномиальной в среднем (En TA = O(nc)), а T 2
A — нет.
Определение
«Полиномиальный в среднем»Алгоритм называется полиномиальным в среднем, если существуетконстанта ε > 0, такая, что En T ε = O(n), где T — время работыалгоритма. 4 / 21
Задача об упаковке
Задача
«Упаковка» (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
Задача об упаковке
Задача
«Упаковка» (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
Задача об упаковке
Задача
«Упаковка» (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
ЦЛП для «Упаковки»
n∑j=1
xj → max
∀j : 1 ≤ j ≤ n xj ∈ {0, 1}
∀i : 1 ≤ i ≤ mn∑
j=1
aijxi ≤ 1
ЦЛП для «Упаковки» (общий случай)
n∑j=1
cjxj → max
∀j : 1 ≤ j ≤ n xj ∈ {0, 1}
∀i : 1 ≤ i ≤ mn∑
j=1
aijxi ≤ bi
8 / 21
ЦЛП для «Упаковки»
n∑j=1
xj → max
∀j : 1 ≤ j ≤ n xj ∈ {0, 1}
∀i : 1 ≤ i ≤ mn∑
j=1
aijxi ≤ 1
ЦЛП для «Упаковки» (общий случай)
n∑j=1
cjxj → max
∀j : 1 ≤ j ≤ n xj ∈ {0, 1}
∀i : 1 ≤ i ≤ mn∑
j=1
aijxi ≤ bi
9 / 21
def PackingDynP (A) :
(m, n)← A.shapeX ← [(
zeros (n, int), # решениеzeros (m, int), # покрытие0 # размер покрытия)]
for j ∈ xrange (n) :
Sj← getColumn (j)
for sol, cov, size ∈ copy (X ) :
newcov← cov + Sjif max (newcov) ≤ 1:
newsol← copy (sol)newsol[j ]← 1
X .append ((
newsol,newcov,size + 1))
return getOptimalSet (X )
[[0 1 0 1]
[1 0 1 0]
[0 1 1 0]] --> 3x4-matrix A
column(0)+< [0 0 0 0], [0 0 0]>
=> [0 1 0]+[0 0 0]=[0 1 0] => [1 0 0 0]
column(1)+< [0 0 0 0], [0 0 0]>
=> [1 0 1]+[0 0 0]=[1 0 1] => [0 1 0 0]
column(1)+< [1 0 0 0], [0 1 0]>
=> [1 0 1]+[0 1 0]=[1 1 1] => [1 1 0 0]
column(2)+< [0 0 0 0], [0 0 0]>
=> [0 1 1]+[0 0 0]=[0 1 1] => [0 0 1 0]
column(3)+< [0 0 0 0], [0 0 0]>
=> [1 0 0]+[0 0 0]=[1 0 0] => [0 0 0 1]
column(3)+< [1 0 0 0], [0 1 0]>
=> [1 0 0]+[0 1 0]=[1 1 0] => [1 0 0 1]
column(3)+< [0 0 1 0], [0 1 1]>
=> [1 0 0]+[0 1 1]=[1 1 1] => [0 0 1 1]
Выбран набор [1 1 0 0] размером 2
10 / 21
УпражнениеКакие входные данные для этого алгоритма заставят его работатьэкспоненциально долго?
УпражнениеНа каких входных данных этот алгоритм будет работать O(n3)?
ТеоремаПусть aij являются независимыми случайными величинами,принимающими значения {0, 1}, причем выполняется:
P{aij = 1} = p
P{aij = 0} = 1− p
mp2 ≥ ln n.
Тогда алгоритм является полиномиальным в среднем.
11 / 21
УпражнениеКакие входные данные для этого алгоритма заставят его работатьэкспоненциально долго?
УпражнениеНа каких входных данных этот алгоритм будет работать O(n3)?
ТеоремаПусть aij являются независимыми случайными величинами,принимающими значения {0, 1}, причем выполняется:
P{aij = 1} = p
P{aij = 0} = 1− p
mp2 ≥ ln n.
Тогда алгоритм является полиномиальным в среднем.
12 / 21
УпражнениеКакие входные данные для этого алгоритма заставят его работатьэкспоненциально долго?
УпражнениеНа каких входных данных этот алгоритм будет работать O(n3)?
ТеоремаПусть aij являются независимыми случайными величинами,принимающими значения {0, 1}, причем выполняется:
P{aij = 1} = p
P{aij = 0} = 1− p
mp2 ≥ ln n.
Тогда алгоритм является полиномиальным в среднем.
13 / 21
Мат. ожидание времени работы: O(nm E |T (n)|).xk — вектор с k единицами и n − k нулями;pki — вероятность выполнения i-неравенства для xk .Pk — вероятность того, что xk — допустимое решение;
pki ≡ P
n∑
j=1
aijxkj ≤ 1
≤ P
k∑
j=1
aij ≤ 1
=
= (1− p)k + kp(1− p)k−1 = (1− p)k−1(1 + p(k − 1)) ≤
≤ (1− p)k−1(1 + p)k−1 = (1− p2)k−1 ≤ e−p2(k−1).
Pk =m∏
i=1
pki ≤m∏
i=1
e−p2(k−1) = e−mp2(k−1).
14 / 21
Мат. ожидание времени работы: O(nm E |T (n)|).xk — вектор с k единицами и n − k нулями;pki — вероятность выполнения i-неравенства для xk .Pk — вероятность того, что xk — допустимое решение;
pki ≡ P
n∑
j=1
aijxkj ≤ 1
≤ P
k∑
j=1
aij ≤ 1
=
= (1− p)k + kp(1− p)k−1 = (1− p)k−1(1 + p(k − 1)) ≤
≤ (1− p)k−1(1 + p)k−1 = (1− p2)k−1 ≤ e−p2(k−1).
Pk =m∏
i=1
pki ≤m∏
i=1
e−p2(k−1) = e−mp2(k−1).
15 / 21
Мат. ожидание времени работы: O(nm E |T (n)|).xk — вектор с k единицами и n − k нулями;pki — вероятность выполнения i-неравенства для xk .Pk — вероятность того, что xk — допустимое решение;
pki ≡ P
n∑
j=1
aijxkj ≤ 1
≤ P
k∑
j=1
aij ≤ 1
=
= (1− p)k + kp(1− p)k−1 = (1− p)k−1(1 + p(k − 1)) ≤
≤ (1− p)k−1(1 + p)k−1 = (1− p2)k−1 ≤ e−p2(k−1).
Pk =m∏
i=1
pki ≤m∏
i=1
e−p2(k−1) = e−mp2(k−1).
16 / 21
Мат. ожидание времени работы: O(nm E |T (n)|).xk — вектор с k единицами и n − k нулями;pki — вероятность выполнения i-неравенства для xk .Pk — вероятность того, что xk — допустимое решение;
pki ≡ P
n∑
j=1
aijxkj ≤ 1
≤ P
k∑
j=1
aij ≤ 1
=
= (1− p)k + kp(1− p)k−1 = (1− p)k−1(1 + p(k − 1)) ≤
≤ (1− p)k−1(1 + p)k−1 = (1− p2)k−1 ≤ e−p2(k−1).
Pk =m∏
i=1
pki ≤m∏
i=1
e−p2(k−1) = e−mp2(k−1).
17 / 21
E |T (n)| ≤n∑
k=0
(n
k
)Pk = 1 +
n∑k=1
(n
k
)Pk ≤ 1 + n +
n∑k=2
(n
k
)Pk <
< 1 + n +n∑
k=2
(n
k
)e−mp2(k−1) ≤ 1 + n +
n∑k=2
ek ln n−mp2(k−1) =
= 1 + n + nn∑
k=2
e(k−1)(ln n−mp2).
При условии mp2 ≥ ln n в последней сумме каждый член непревосходит 1. Это и означает, что E[T (n)] = O(n2).
18 / 21
E |T (n)| ≤n∑
k=0
(n
k
)Pk = 1 +
n∑k=1
(n
k
)Pk ≤ 1 + n +
n∑k=2
(n
k
)Pk <
< 1 + n +n∑
k=2
(n
k
)e−mp2(k−1) ≤ 1 + n +
n∑k=2
ek ln n−mp2(k−1) =
= 1 + n + nn∑
k=2
e(k−1)(ln n−mp2).
При условии mp2 ≥ ln n в последней сумме каждый член непревосходит 1. Это и означает, что E[T (n)] = O(n2).
19 / 21