Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Packing Average

473 views

Published on

  • Be the first to comment

  • Be the first to like this

Packing Average

  1. 1. Полиномиальный в среднем алгоритм для «Упаковки» Н.Н. Кузюрин С.А. Фомин 10 октября 2008 г. Алгоритм динамического программирования для задачи упаковки подмножеств. Полиномиальность алгоритма «в среднем». 1 / 21
  2. 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. 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. 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. 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. 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. 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. 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. 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
  10. 10. def PackingDynP (A) : [[0 1 0 1] (m, n) ← A.shape [1 0 1 0] X ← [( [0 1 1 0]] --> 3x4-matrix A zeros (n, int), # решение zeros (m, int), # покрытие column(0)+< [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]> for j ∈ xrange (n) : => [1 0 1]+[0 0 0]=[1 0 1] => [0 1 0 0] Sj ← getColumn (j) column(1)+< [1 0 0 0], [0 1 0]> for sol, cov, size ∈ copy (X ) : => [1 0 1]+[0 1 0]=[1 1 1] => [1 1 0 0] newcov ← cov + Sj column(2)+< [0 0 0 0], [0 0 0]> if max (newcov) ≤ 1 : => [0 1 1]+[0 0 0]=[0 1 1] => [0 0 1 0] newsol ← copy (sol) column(3)+< [0 0 0 0], [0 0 0]> newsol[j] ← 1 => [1 0 0]+[0 0 0]=[1 0 0] => [0 0 0 1] X .append (( column(3)+< [1 0 0 0], [0 1 0]> newsol, => [1 0 0]+[0 1 0]=[1 1 0] => [1 0 0 1] column(3)+< [0 0 1 0], [0 1 1]> newcov, => [1 0 0]+[0 1 1]=[1 1 1] => [0 0 1 1] size + 1)) Выбран набор [1 1 0 0] размером 2 return getOptimalSet (X ) 10 / 21
  11. 11. Упражнение Какие входные данные для этого алгоритма заставят его работать экспоненциально долго? Упражнение На каких входных данных этот алгоритм будет работать O(n3 )? Теорема Пусть aij являются независимыми случайными величинами, принимающими значения {0, 1}, причем выполняется: P{aij = 1} = p P{aij = 0} = 1 − p mp 2 ≥ ln n. Тогда алгоритм является полиномиальным в среднем. 11 / 21
  12. 12. Упражнение Какие входные данные для этого алгоритма заставят его работать экспоненциально долго? Упражнение На каких входных данных этот алгоритм будет работать O(n3 )? Теорема Пусть aij являются независимыми случайными величинами, принимающими значения {0, 1}, причем выполняется: P{aij = 1} = p P{aij = 0} = 1 − p mp 2 ≥ ln n. Тогда алгоритм является полиномиальным в среднем. 12 / 21
  13. 13. Упражнение Какие входные данные для этого алгоритма заставят его работать экспоненциально долго? Упражнение На каких входных данных этот алгоритм будет работать O(n3 )? Теорема Пусть aij являются независимыми случайными величинами, принимающими значения {0, 1}, причем выполняется: P{aij = 1} = p P{aij = 0} = 1 − p mp 2 ≥ ln n. Тогда алгоритм является полиномиальным в среднем. 13 / 21
  14. 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. 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. 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. 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. 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. 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
  20. 20. 20 / 21
  21. 21. Интернет поддержка курса http://discopal.ispras.ru/ Вопросы? 21 / 21

×