Аппроксимационные схемы Определение Алгоритм A называется - аппроксимационной схемой, если для любого ]0,1[ и любых исходных данных I задачи верно z A ( I ) (1 ) z ( I ) Другими словами, алгоритм A является (1–)-приближенным алгоритмом для всех ]0,1[. Алгоритм H 1. l := min { 1/ – 2, n}, z A := 0 2. Для всех подмножеств L J, |L| l–1 if ( w j c) and ( p j z A ) then z A : jL 1 jL pj jL Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе 3. Для всех подмножеств L J, |L| = l if ( w j c) then jL Применить алгоритм AMG к задаче с множеством предметов {j | pj min {pi, iL}}\ L и вместимостью рюкзака c wj jL if p j z MG z A then jL z A : p j z MG . jL Теорема Алгоритм H является -аппроксимационной схемой. 2 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Доказательство. Если оптимальное решение z содержит не более l предметов, то z A z и утверждение верно. Пусть в оптимальном решении более чем l предметов. Выберем в нем подмножество L из l предметов с наибольшими весами pj. Рассмотрим подзадачу S с множеством предметов { j | pj min {pi, i L } }\ L и вместимостью рюкзака c w j . Оптимальное решение этой подзадачи jL обозначим через z S . Тогда z z S jL p j . Приближенное решение, полученное алгоритмом AMG, обозначим через z SMG . По определению z A MG 1 MG z 2 zS . и, кроме того, p z j S S jL 3 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Рассмотрим два случая: 1. l z . Тогда z A p j l 2 jL jL 2. p j 12 ( z jL jL pj) l z . Тогда в p j l 2 p j z SMG 1 ( z 2 jL jL pj) p j 12 z S 1 ( z 2 l 1 l l 2 z ) z l2 L найдется предмет с jL p j l 12 z . По определению в подзадаче S все предметы имеют вес не более Применяя свойство 2 для LP-релаксаций, получаем z p j z S p j z SMG l 12 z z A l 12 z . jL 1 z. l 2 jL Итак, в обоих случаях получаем z A ll12 z . Величина ll12 растет с ростом l l 1 1 1 1 . ■ и 1 l2 T = O(n nl) = O(nl+1). П = O(n). 4 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе 1 1 Пример. Положим n 1, c M и p1 =2, p2 = p3 =…= pn = M, w1 = 1, w2 = w3 =…= wn = M. Оптимум z* = M(l + 2), l = n – 3, zA = (l +1)M + 2 и zA / z* (l+1) / (l+2) при M . Определение. -аппроксимационная схема A называется полиномиальной, если ее трудоемкость полиномиально зависит от длины записи исходных данных. TH = O(nl+1) = O(n1/ –1) — полиномиальная зависимость при заданном . Если = 0.1, то TH = O(n9), то есть алгоритм H является полиномиальной аппроксимационной схемой для задачи о рюкзаке. Определение. -аппроксимационная схема A называется полностью полиномиальной, если ее трудоемкость полиномиально зависит от длины записи исходных данных и величины 1/. 5 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Теорема Для задачи о рюкзаке существует полностью полиномиальная -аппроксимационная схема. Доказательство Для примера I = {p1,…, pn, w1,…, wn, c} построим новый p пример I , в котором c c, w j w j , p j Kj для некоторой константы K > 0, которую определим позже. Для примера I применим алгоритм ДП и найдем оптимальный набор предметов X . Скорее всего он будет отличаться от оптимального набора X для примера I. Оценим разность между полученным значением z A и оптимальным z : pj z pj K K K jX jX A pj K jX pj K( K jX 1) ( p K ) z | X | K. j jX Второе неравенство в этой цепочке следует из оптимальности X для I . 6 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Мы хотим получить z z A z Следовательно, K z | X | | X | K z . . Так как n |X *| и z* pmax , то z z pmax n n | X | и, полагая K pmax n , получим нужное значение для параметра K. Трудоемкость алгоритма определяется трудоемкостью ДП. Если вместо исходной задачи решать обратную к ней, то T = O(Un), где U — верхняя оценка на оптимальное значение целевой функции z p j. jX max Очевидно, что z npmax , но pmax K n , то есть z n2 / . p Полагая U = n2/ , получаем T O(n3 1 ) , П = O(Un) O(n3 1 ) . ■ 7 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Задача о ближайшем соседе Дано: функция f (x, y) 0 — затраты на обслуживание отрезка дороги от x до y, 0 x y M, x, y — целочисленные точки, n — число отрезков. Найти: оптимальное разбиение сегмента [0,M] на n отрезков. Математическая модель: n min f ( xk 1, xk ) k 1 0 = x0 … xn = M 8 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Алгоритм динамического программирования Sk(y) — минимальные затраты на обслуживание k отрезков для сегмента [0, y]. Рекуррентные соотношения: S1(y) = f (0,y), y = 1,…, M S k ( y ) min {S k 1 ( x) f ( x, y )}, y = 1,…, M, k = 2,…, n. 1 x y T = O(nM 2) 9 П = O(nM) Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Оптимизация числа отрезков Для каждого n = 1,…, M найти Sn(M) и выбрать наименьшее значение T = O(M 3), П = O(M 2). Модифицированный вариант ~ S ( y) — минимальные затраты на обслуживание сегмента [0, y]. Рекуррентные соотношения: ~ S (0) 0, ~ ~ S ( y ) min {S ( x) f ( x, y )}, y = 1,…, M. 0 x y 1 T = O(M 2), П = O(M). 10 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Замена оборудования Дано: g — начальная стоимость оборудования, (t) — относительная остаточная стоимость на год t (t) — эксплуатационные затраты за все года от 0 до t. S(t) = g(1 – (t)) + (t) — суммарные затраты за все года от 0 до t. (t) = S(t)/t — удельные затраты Критерий оптимизации (t ) min (t ) t 0 Будем менять оборудование через каждые t* лет. 11 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Случай 1. S(t) — вогнутая растущая функция. Пусть (t) — выпуклая убывающая функция (0) = 1, (t) 0; (t) — вогнутая растущая функция (0) = 0. Покажем, что (t) убывает с ростом t. g (t) Так как S(t) — вогнутая функция, то для любого [0,1] и t0 < t2 имеем (1–)S(t0) + S(t2) S((1–)t0+ t2). Для t1 < t2 положим = t1/t2, t0 = 0. g (t) Тогда S(t0)=0 и t1S(t2) t2S(t1), t то есть (t1) (t2). Следовательно, оборудование выгодно эксплуатировать как можно дольше. 12 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Случай 2. (t) = e– t, (t) = k (e t –1), > 0, k > 0, > 0. Тогда (t) = [g(1 – e– t) + k (e– t –1)]/t — выпуклая функция. и t* можно найти методом дихотомии за O(log(T/)) операций, где — требуемая точность, T — оценка сверху на t*. 1 (t) (t) t 13 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Задача замены оборудования с учетом дисконтирования затрат Приведение затрат к начальному моменту Пусть — банковский процент, или коэффициент эффективности капиталовложений (годовая норма дисконта). Если S1 — капитал в начальный год, то по истечении года эта сумма станет равной S2 = S1(1 + ), а в конце t-го года St = S1(1 + )t–1. Если в год t хотим потратить сумму St, то в начальный год должны иметь St S1 . Затраты St в год t, будучи приведенными к начальному t 1 (1 ) моменту t =1, равны ~ S t 1 St , где 11 — коэффициент дисконтирования, 0 < 1. 14 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Если в течении T лет производились траты S1, S2,…, St приведенные затраты вычисляются по формуле: то суммарные ~ T t 1 S St . t 1 Пример. Рассмотрим распределение капитала в 8 млн. руб. в течение 8 лет при банковском проценте = 0.1 ( = 0.91) и трех стратегиях: 1) все траты в 1-й год; 2) равномерные траты; 3) все траты в последний год. Стратегия 1 2 3 15 Год 1 8 1 – 2 – 1 – 3 – 1 – 4 – 1 – 5 – 1 – 6 – 1 – 7 – 1 – 8 – 1 8 Суммарные приведенные затраты 8.0 5.9 4.2 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Постановка задачи g — начальная стоимость оборудования; ct — стоимость эксплуатации оборудования в t год, ct+1 ct; Система функционирует бесконечно, оборудование периодически заменяется. T — период замены оборудования; ST — суммарные затраты при фиксированном периоде замены T : T T T t 1 t 1 t 1 ST g t 1ct T g T t 1ct 2T g 2T t 1ct ... . за первые T лет за вторые T лет …………. Благодаря дисконтированию затрат ( < 1) величина ST конечна: T T t 1 t 1 ST ( g t 1ct )(1 T 2T ...) ( g t 1ct ) /(1 T ) . Задача отыскания оптимального периода замены оборудования: 16 ST min T 0 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Теорема. Если эксплуатационные затраты ct не убывают со временем, то оптимальный период замены T*, если он существует, определяется следующим соотношением T*=min {T | cT+1> (1– )ST , T >0, целое}. Оборудование не рекомендуется заменять до тех пор, пока эксплуатационные расходы следующего года не превысят средневзвешенную сумму уже произведенных затрат. 17 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Лемма 1. ST 1 ST 1 ST KT , (cT 1 (1 ) ST ), где KT , T /(1 T 1 ), Доказательство. ST 1 ( g T 1. T 1 t 1 T 1 c ) /( 1 ) ST t t 1 ST (1 T ) T cT 1 ST (1 T 1 ) 1 T 1 T (c (1 ) ST ). ■ T 1 T 1 1 Следствие 1. При T > 0 ST+1 > 0 cT + 1 > (1 – )ST . 18 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Лемма 2. Пусть существует T* = min {T | ST+1 > 0}. Тогда последовательность {ST}, T = T*, T*+1, T*+2,… — монотонно возрастающая. Доказательство проведем индукцией по T. При T = T* имеем ST*+1 > 0 и ST* < ST*+1. Пусть ST* < ST*+1 < …< ST , T > T*. Покажем, что ST < ST+1. Учитывая неубывание последовательности {ct} и положительность ST, по лемме 1 имеем ST 1 ST KT , (cT 1 (1 ) ST ) KT , (cT (1 ) ST ) K T , (cT (1 ) ST 1 (1 )ST ) K T , ST /( K T 1, ) (1 )ST (1 T 1 ) ST 0 . ■ T 1 1 Утверждение теоремы вытекает из следствий 1 и леммы 2. Если T* не существует, то затраты ST — невозрастающая функция и оборудование заменять не следует. ■ 19 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Применение динамического программирования Рассмотрим систему, функционирующую в течение T лет, причем решение о замене оборудования принимается каждый год. Дано: {1,…, m} — набор типов оборудования; g ti — стоимость оборудования i-го типа, купленного в год t; cti ( ) — стоимость годовых эксплуатационных затрат на оборудование i-го типа, купленного в год t и проработавшего лет; ti ( ) — остаточная стоимость оборудования i-го типа возраста , купленного в год t; n — максимально допустимый возраст оборудования; i0, 0 — тип и возраст оборудования в начале функционирования; Пусть Sti ( ) — минимальные суммарные затраты в интервале [t, T], приведенные к началу t-го года, при условии, что в начале t-го года было i оборудование типа i возраста . Требуется найти S10 ( 0 ) . 20 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе Рекуррентные соотношения: cTi ( 1) Ti ( 1), если замены нет, i ST ( ) min k k k i min [ g c ( 1 ) ( 1 )] T T T ( ), в случае замены, 1k m T 1 n, 1 i m, cti ( 1) Sti1 ( 1), Sti ( ) min k k k i min [ g c ( 1 ) S ( 1 )] t t 1 t ( ), 1 k m t если продолжаем эксплуатировать оборудование если заменяем оборудование 1 n, 1 i m, 1 t < T. Алгоритм может быть реализован с трудоемкостью T = O(m2nT), и памятью П = O(mnT). 21 Лекция 5. Задачи о рюкзаке (продолжение) + задача о ближайшем соседе