Average Knapsack

401 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
401
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Average Knapsack

  1. 1. Полиномиальный в среднем алгоритм для «Рюкзака» Н.Н. Кузюрин С.А. Фомин 10 октября 2008 г. Лекция основана на результатах из: «Beier, R. and V¨cking, B. (2003). In o Proceedings of the 35th ACM Symposium on Theory of Computing (STOC), pages 232–241». 1 / 15
  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 / 15
  3. 3. Задача о рюкзаке Задача «0–1 Рюкзак (Knapsack)» Даны: c1 , . . . , cn , cj ∈ N — «стоимости» предметов; a1 , . . . , an , aj ∈ N — «размеры» или «веса»; B ∈ N — «размер рюкзака». Найти максимальное значение f ∗ целевой функции n f ≡ ci xi → max i=1 с ограничением на размер «рюкзака»: n ai xi ≤ B, xi ∈ {0, 1}. i=1 3 / 15
  4. 4. def KnapsackNemhauserUllman (Items, B) : ParetoS ← [Solution ()] # Парето-оптимальные по весу for item ∈ Items : newSolutions ← [ ] for solution ∈ ParetoS : if solution.weight + item.weight ≤ B : newSolutions.append (solution + item) mergedSolution ← mergeSolutions (ParetoS, newSolutions) ParetoS ← mergedSolution return ParetoS[−1], len (ParetoS) Предметы ( стоимость ): [ 6 , вес 3 3 2 3 6 , , , ], 4 5 3 8 B = 10 ParetoS newSolutions mergedSolution [0] 0 [6] 3 [0, 6] 0 3 [0, 6] 0 3 [3, 9] 4 7 [0, 6, 7] 0 3 9 0 3 9 [0, 6, 7] [2, 8] 5 8 0 6 9 [0, 3, 7] 0 6 9 3 9 12 [0, 3, 7] [ 3 , 6 , 10 ] [ 0 , 6 , 6 , 12 ] 0 3 9 10 [0, 6, 6, 0 3 9 12 10 ] [6] 8 9 [ 0 , 6 , 6 , 12 ] 0 3 10 12 Оптимальное решение: 10 4 / 15
  5. 5. def KnapsackNemhauserUllman (Items, B) : ParetoS ← [Solution ()] # Парето-оптимальные по весу for item ∈ Items : newSolutions ← [ ] for solution ∈ ParetoS : if solution.weight + item.weight ≤ B : newSolutions.append (solution + item) mergedSolution ← mergeSolutions (ParetoS, newSolutions) ParetoS ← mergedSolution return ParetoS[−1], len (ParetoS) Предметы ( стоимость ): [ 6 , вес 3 3 2 3 6 , , , ], 4 5 3 8 B = 10 ParetoS newSolutions mergedSolution [0] 0 [6] 3 [0, 6] 0 3 [0, 6] 0 3 [3, 9] 4 7 [0, 6, 7] 0 3 9 0 3 9 [0, 6, 7] [2, 8] 5 8 0 6 9 [0, 3, 7] 0 6 9 3 9 12 [0, 3, 7] [ 3 , 6 , 10 ] [ 0 , 6 , 6 , 12 ] 0 3 9 10 [0, 6, 6, 0 3 9 12 10 ] [6] 8 9 [ 0 , 6 , 6 , 12 ] 0 3 10 12 Оптимальное решение: 10 5 / 15
  6. 6. Сложность алгоритма — O(n · |ParetoSolutions|). 6 / 15
  7. 7. Мат. ожидание сложности алгоритма полиномиально Теорема Пусть: ai — «веса», произвольные положительные числа; ci — «стоимости», независимые случайные величины, равномерно распределенные на [0, 1]; q = max |ParetoSolutions| — число доминирующих подмножеств для всех n предметов. Тогда E(q) = O(n3 ). 7 / 15
  8. 8. Определения m = 2n , S1 , . . . , Sm — подмножества [n] в порядке неубывания весов. (Веса i∈Sk ai множеств Sk в нашей теме не возникают.) Для любых 2 ≤ u ≤ m, 1 ≤ k ≤ u: Plusk = Su Sk Minusk = Sk Su Δ+ k = ci i∈Plusk Δ− k = ci i∈Minusk Δu = min Δ+ − Δ− k k 1≤k<u ∀u ≥ 2, Su — доминирующее множество ⇔ Δu > 0. 8 / 15
  9. 9. События Рассмотрим некоторое u, пусть Su = [1, . . . , t] (иначе перенумеруем). ∀ 1 ≤ k < u Plusk ⊆ [1, . . . , t], Minusk ⊆ [t + 1, . . . , n] Пусть 0 < ε < 1. ПаретоНабор = {Δu > 0} ДельтаМала = Δu < ε2 ЭлементМалj = {cj < ε} ЭлементНеМалj = ЭлементМалj = {cj ≥ ε} t ВНабореНеМалы = ∩j=1 ЭлементНеМалj 9 / 15
  10. 10. P(ВНабореНеМалы|ПаретоНабор) ≤ nε ∀j ≤ t и 0 < ε < 1: P (cj < ε| ∀k : Δ+ > Δ− k k = P (cj < ε| cj > x) при x ≥ ε: 0 ≤ ε−x ε(1−x) x(1−ε) при x < ε: 1−x = 1−x − 1−x ≤ ε P(cj < ε|cj > x) - 0 x ε 1 P(ВНабореНеМалы|ПаретоНабор) = P(∪t ЭлементМалj |ПаретоНабор) j=1 t ≤ P(ЭлементМалj |ПаретоНабор) j=1 ≤ t · ε ≤ nε. 10 / 15
  11. 11. P(ДельтаМала|ПаретоНабор ∧ ВНабореНеМалы) ≤ nε Оценим P(ПаретоНабор) при априорности событий (при условии): «∀j cj ∈ [0, 1]», «ВНабореНеМалы»(и, следовательно, «Δ+ ≥ ε»): k P(ПаретоНабор|ВНабореНеМалы) = P ∀k Δ− ≤ Δ+ , ∀j > t cj ∈ [0, 1] = k k 1 = P ∀k Δ− ≤ (1 − ε) Δ+ , ∀j > t cj ∈ [0, 1 − ε] ≤ k k (1 − ε)n−t 1 ≤ P ∀k Δ− ≤ Δ+ − ε2 , ∀j > t cj ∈ [0, 1 − ε] ≤ k k (1 − ε)n−t 1 ≤ P (ДельтаМала|ВНабореНеМалы) (1 − ε)n−t С другой стороны, ДельтаМала ⊂ ПаретоНабор, и P(ДельтаМала|ПаретоНабор ∧ ВНабореНеМалы) = P(ДельтаМала|ВНабореНеМалы) = ≥ (1 − ε)n−t ≥ (1 − ε)n ≥ 1 − nε P(ПаретоНабор|ВНабореНеМалы) 11 / 15
  12. 12. P(A|B) = P(A|B ∩ C ) · P(C |B) + P(A|B ∩ C ) · P(C |B) x +y P(A|B) = x +y +z +w событие A событие C P(A|B ∩ C ) · P(C |B) = y y +z y = · x z y +z x +y +z +w w событие B P(A|B ∩ C ) · P(C |B) = x x +w = · x +w x +y +z +w 12 / 15
  13. 13. P(ДельтаМала|ПаретоНабор) ≤ 2nε P(A|B) = P(A|B ∩ C ) · P(C |B) + P(A|B ∩ C ) · P(C |B) Оценим P(ДельтаМала|ПаретоНабор): P(ДельтаМала|ПаретоНабор) = = P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) · P(ВНабореНеМалы|ПаретоНабор) + P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) · P(ВНабореНеМалы|ПаретоНабор) ≤ P(ДельтаМала|ПаретоНабор ∩ ВНабореНеМалы) + P(ВНабореНеМалы|ПаретоНабор) ≤ nε + nε = 2nε 13 / 15
  14. 14. E(q) = O(n3 ) 1 Возьмем ε = 3n , тогда E(Δu |Δu > 0) ≥ ε2 · P(ДельтаМала|ПаретоНабор) = ε2 · (1 − P[ДельтаМала|ПаретоНабор]) 1 2 1 ≥ ε2 · (1 − 2nε) = 2 · (1 − ) = 9n 3 27n2 Обозначим мат. ожидание стоимости Sm через Cm . Имеем две оценки: n · E(ci ) = n 2 Cm = m 1 m u=2 P(Δu > 0) E(Δu |Δu > 0) ≥ 27n2 u=2 P(Δu > 0) m n E(q) = 1 + P(Δu > 0) ≤ 1 + · 27n2 = O(n3 ) 2 u=2 14 / 15
  15. 15. Интернет поддержка курса http://discopal.ispras.ru/ Вопросы? 15 / 15

×