Академический Документы
Профессиональный Документы
Культура Документы
Ptas Knapsack - Beam
Ptas Knapsack - Beam
для «Рюкзака»
Н. Н. Кузюрин С. А. Фомин
3 декабря 2010 г.
1/15
Задача о рюкзаке
.
Задача .
..
«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
.
.. 2/15
.
.
.
Определение .
..
Алгоритм с мультипликативной ошибкой не более (1 + ε), где ε > 0,
называется
. ε-оптимальным.
.. .
.
3/15
.
Определение .
..
Алгоритм с мультипликативной ошибкой не более (1 + ε), где ε > 0,
называется
. ε-оптимальным.
.. .
.
.
Определение .
..
Полностью полиномиальной аппроксимационной схемой (FPTAS)
называется приближенный алгоритм, в котором уровень точности ε
выступает в качестве нового параметра, и алгоритм находит
ε-оптимальное решение за время, ограниченное полиномом от длины
.входа и величины ε−1 .
.. .
.
3/15
«Рюкзак»: отбор легких решений
4/15
«Рюкзак»: отбор легких решений
Предметы ( стоимость
вес ): [ 63 , 43 , 25 , 56 , 75 , 18 ], B = 9
T item newT
0 6
0: 0 3
[ 63 ]
0 6 3
0: 0
, 6: 3 4
[ 34 , 97 ]
0 9
0: 0
, 9: 7
, 3: 34 , 6: 6
3
2
5
[ 25 , 59 , 88 ]
0 2
0: 0
, 2: 5
, 3: 34 , 5: 5
9
, 6: 63 , 8: 88 , 9: 9
7
5
6
[ 56 , 11
9
]
0 2
0: 0
, 2: 5
, 3: 34 , 5: 5
6
, 6: 63 , 8: 88 , 9: 9
7
, 11: 11
9
5
7
[]
0 2
0: 0
, 2: 5
, 3: 34 , 5: 5
6
, 6: 63 , 8: 88 , 9: 9
7
, 11: 11
9
1
8
[ 18 ]
11
Оптимальное решение: 9
5/15
.
Лемма .
..
Сложность
. алгоритма с отбором «легких» решений — O(nf∗ ).
.. .
.
6/15
.
Лемма .
..
Сложность
. алгоритма с отбором «легких» решений — O(nf∗ ).
.. .
.
Округлим ci ← ⌊ci /scale⌋ · scale, т. е. выполнено ci ≡ 0 (mod scale):
6/15
.
Лемма .
..
Сложность
. алгоритма с отбором «легких» решений — O(nf∗ ).
.. .
.
Округлим ci ← ⌊ci /scale⌋ · scale, т. е. выполнено ci ≡ 0 (mod scale):
ci можно поделить на scale ⇒ это не изменит оптимального набора.
6/15
.
Лемма .
..
Сложность
. алгоритма с отбором «легких» решений — O(nf∗ ).
.. .
.
Округлим ci ← ⌊ci /scale⌋ · scale, т. е. выполнено ci ≡ 0 (mod scale):
ci можно поделить на scale ⇒ это не изменит оптимального набора.
∗
nf
Время работы ⇒ O( scale ).
6/15
.
Лемма .
..
Сложность
. алгоритма с отбором «легких» решений — O(nf∗ ).
.. .
.
Округлим ci ← ⌊ci /scale⌋ · scale, т. е. выполнено ci ≡ 0 (mod scale):
ci можно поделить на scale ⇒ это не изменит оптимального набора.
∗
nf
Время работы ⇒ O( scale ).
Веса ai не меняли ⇒ любое допустимое решение «округленной»
допустимо для исходной.
6/15
.
Лемма .
..
Сложность
. алгоритма с отбором «легких» решений — O(nf∗ ).
.. .
.
Округлим ci ← ⌊ci /scale⌋ · scale, т. е. выполнено ci ≡ 0 (mod scale):
ci можно поделить на scale ⇒ это не изменит оптимального набора.
∗
nf
Время работы ⇒ O( scale ).
Веса ai не меняли ⇒ любое допустимое решение «округленной»
допустимо для исходной.
Потери «округления» ⇒ оптимум получившейся задачи будет
меньше исходной.
6/15
.
Лемма .
..
Сложность
. алгоритма с отбором «легких» решений — O(nf∗ ).
.. .
.
Округлим ci ← ⌊ci /scale⌋ · scale, т. е. выполнено ci ≡ 0 (mod scale):
ci можно поделить на scale ⇒ это не изменит оптимального набора.
∗
nf
Время работы ⇒ O( scale ).
Веса ai не меняли ⇒ любое допустимое решение «округленной»
допустимо для исходной.
Потери «округления» ⇒ оптимум получившейся задачи будет
меньше исходной.
Стоит ли игра свеч?
6/15
«округленная» задача
7/15
«округленная» задача
7/15
«округленная» задача
7/15
«округленная» задача
7/15
«округленная» задача
7/15
Решение «округленной» — аппроксимация исходной
f∗ : оптимум исходной задачи;
∑n ∑n
f′ : стоимость аппроксимации, f′ = i=1 ci x̃i ≥ i=1 c̃i x̃i = f̃.
8/15
Решение «округленной» — аппроксимация исходной
f∗ : оптимум исходной задачи;
∑n ∑n
f′ : стоимость аппроксимации, f′ = i=1 ci x̃i ≥ i=1 c̃i x̃i = f̃.
Абсолютная погрешность f∗ − f′ ≤ f∗ − f̃ ≤ n · scale.
8/15
Решение «округленной» — аппроксимация исходной
f∗ : оптимум исходной задачи;
∑n ∑n
f′ : стоимость аппроксимации, f′ = i=1 ci x̃i ≥ i=1 c̃i x̃i = f̃.
Абсолютная погрешность f∗ − f′ ≤ f∗ − f̃ ≤ n · scale.
ε ∗
Погрешность ≤ 1+ε f
8/15
Решение «округленной» — аппроксимация исходной
f∗ : оптимум исходной задачи;
∑n ∑n
f′ : стоимость аппроксимации, f′ = i=1 ci x̃i ≥ i=1 c̃i x̃i = f̃.
Абсолютная погрешность f∗ − f′ ≤ f∗ − f̃ ≤ n · scale.
ε ∗
Погрешность ≤ 1+ε f
⇒ решение — ε-приближенное:
ε ∗ f∗
f′ ≥ f∗ − f = .
1+ε (1 + ε)
8/15
Решение «округленной» — аппроксимация исходной
f∗ : оптимум исходной задачи;
∑n ∑n
f′ : стоимость аппроксимации, f′ = i=1 ci x̃i ≥ i=1 c̃i x̃i = f̃.
Абсолютная погрешность f∗ − f′ ≤ f∗ − f̃ ≤ n · scale.
ε ∗
Погрешность ≤ 1+ε f
⇒ решение — ε-приближенное:
ε ∗ f∗
f′ ≥ f∗ − f = .
1+ε (1 + ε)
scale → max
εf∗
scale ≤
n(1 + ε)
8/15
Решение «округленной» — аппроксимация исходной
f∗ : оптимум исходной задачи;
∑n ∑n
f′ : стоимость аппроксимации, f′ = i=1 ci x̃i ≥ i=1 c̃i x̃i = f̃.
Абсолютная погрешность f∗ − f′ ≤ f∗ − f̃ ≤ n · scale.
ε ∗
Погрешность ≤ 1+ε f
⇒ решение — ε-приближенное:
ε ∗ f∗
f′ ≥ f∗ − f = .
1+ε (1 + ε)
scale → max
εf∗
scale ≤
n(1 + ε)
{ }
Нижняя оценка оптимума flb ≤ f∗ ⇒ scale = max 1, εflb
n(1+ε) .
8/15
PTAS для рюкзака
9/15
Выбор flb :«MaxItemCost»
10/15
Выбор flb :«MaxItemCost»
Сложность «KnapsackFPTASMaxItemCost »:
( ) ( n · nc )
nf′ max
O ≤O =
scale scale
( ) ( ) ( )
n · ncmax n3 (1 + ε) n3
=O cmax ε =O =O .
n(1+ε) ε ε
10/15
«Жадный-2» для «Рюкзака»
# берем предмет (c,a) Входной массив T <= [(10, 1), (170, 100), (50, 40), (40, 20)]
Отсортированный T => [(50, 40), (170, 100), (40, 20), (10, 1)]
Ag = Ag + a
Берем предмет: <= ($50 , 40 кг)
Cg = Cg + c Берем предмет: <= ($40 , 20 кг)
#выбираем, что больше Берем предмет: <= ($10 , 1 кг)
Cg=$100 или Cmax=$170 ?
return max(Cg, Cmax)
Набран рюкзак стоимостью $170
11/15
Выбор flb :«KnapsackGreedy»
.
Теорема .
.. ( 2)
Алгоритм «KnapsackFPTASKnapsackGreedy » имеет сложность O nε .
.
.. .
.
12/15
Выбор flb :«KnapsackGreedy»
.
Теорема .
.. ( 2)
Алгоритм «KnapsackFPTASKnapsackGreedy » имеет сложность O nε .
.
.. .
.
.
Доказательство. .
..
Используя f′ ≤ f∗ ≤ 2fG :
( ′ ) ′ ( 2 ) ( 2)
nf n · f 2n (1 + ε) n
O =O ε·f
≤O =O .
scale G ε ε
n(1+ε)
.
.. .
.
12/15
Трассировка алгоритма «KnapsackFPTAS»
Используются нижние оценки «MaxItemCost» и «KnapsackGreedy».
D = [ 134 , 789 , 56 , 345 , 4567 , 555
16 250 43 333 857 47
] B = 1000
5312
Op mal Knapsack: 963 costs 5312
lower_bound= max_item_cost ⇒ flb = 4567
ε = 0.1 ⇒ scale = 69.196969697
1 11 0 4 66 8
Ds = [ 16 , 250 , 43 , 333 , 857 , 47 ]
75
Approx. knapsack: 920 costs 5256
lower_bound= knapsack_greedy ⇒ flb = 4567
ε = 0.1 ⇒ scale = 69.196969697
4 0 11 66 1 8
Ds = [ 333 , 43 , 250 , 857 , 16 , 47 ]
75
Approx. knapsack: 920 costs 5256
lower_bound= knapsack_greedy ⇒ flb = 4567
ε = 0.06 ⇒ scale = 43.0849056604
8 1 18 106 3 12
Ds = [ 333 , 43 , 250 , 857 , 16 , 47 ]
Approx. knapsack: 122 963
costs 5312
13/15
«Карта памяти» лекции
С-приближенный алгоритм
определения ε-оптимальный алгоритм
FPTAS
динамическое программирование
FPTAS: cложность O(n²/ε)
14/15
Интернет поддержка курса
.
.
http://discopal.ispras.ru/
.
.. .
.
.
Вопросы?
.
.. .
.
.
15/15