packing average

21
Полиномиальный в среднем алгоритм для «Упаковки» Н.Н. Кузюрин С.А. Фомин 10 октября 2008 г. Алгоритм динамического программирования для задачи упаковки подмножеств. Полиномиальность алгоритма «в среднем». 1 / 21

Upload: stas-fomin

Post on 12-Jun-2015

287 views

Category:

Documents


0 download

TRANSCRIPT

Полиномиальный в среднем алгоритм для«Упаковки»

Н.Н. Кузюрин С.А. Фомин

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

20 / 21

Интернет поддержка курса

http://discopal.ispras.ru/

Вопросы?

21 / 21