УДК 519.6
А. А. БОСОВ, А. В. ГОРБОВА (ДИИТ), Н. В. ХАЛИПОВА (Академия таможенной службы Украины)
ОБОСНОВАНИЕ ЭВРИСТИЧЕСКОГО АЛГОРИТМА В ЗАДАЧЕ О РАНЦЕ
Введение: Сформирована задача о ранце в терминах функций множества и приведен эвристический алгоритм. Цель: доказательство того, что эвристический алгоритм является необходимым условием. Некоторые факты из работы [2]. Показана эквивалентность предела последовательности по Э. Борелю и сходимостью по мере. Доказана теорема о необходимости максимума функции множества. Ситуации достаточности алгоритма: Приведены три ситуации, когда эвристический алгоритм является достаточным. Контрпример: Приведен контрпример из работы [1] и дано добавление в эвристический алгоритм, что позволяет получать решение задачи о ранце. Векторная оптимизация: С задачей о ранце завязывается задача векторной оптимизации инвестирования мероприятий. Выводы: Предложен алгоритм решения задачи о ранце и для аддитивных функций алгоритм определения Парето решения задачи векторной оптимизации по двум показателям. Приложение: Приведена программа в среде Maple решения задачи о ранце.
Ключевые слова: задача о ранце, функции множества, векторная оптимизация, задача инвестирования
Введение
Пусть Q = {(Oj,ю2,...,юп} перечень предметов, для каждого oi сопоставляется да числа pt = p(oi), ценность предмета oi и mi = m(oi) - масса (вес) предмета oi.
Необходимо найти такой перечень предметов A eQ, чтобы
P( A) = Х Р (o), (1)
oe A
было бы максимальным и выполнялось условие M(A) = £ m(o) < M, (2)
ЮЕ A
где M - максимальная масса предметов, которая может быть помещена в ранце. В работе [1] приводится алгоритм: Для каждого предмета oi e Q вычисляется
х = Р(0) 1 m(ai)
1. Множество Q упорядочиваем согласно правилу
^ 2 >... >Хп;
2. F := 0; A := {};
3. M0 = M ;
4. for i from 1 to n do
5. if M0 >M then
6. A:=Aunion{oi}; M0:=M0-mi; F := F + pi;
7. end if
8. End do
9. Print (A, F).
Данному алгоритму в работе [1] предпосылается: «Разумным кажется вкладывать в ранец те предметы, для которых удельная стоимость максимальна».
Целью данной работы является доказательство того, что предполагаемое утверждение не только «разумно», но представляет собой необходимое условие решения задачи о ранце.
Некоторые факты из работы [2]
Ради замкнутости изложения приводим некоторые факты из работы [2].
Полагаем S(Q) - алгебра подмножеств
множества Q, а отображение S(Q) —R, определяем как функцию множества F(A) для любого A е S(Q). Среди функций множества определенных на S(Q) выбираю функцию A) со следующими свойствами:
1. A) > 0, VA eS(Q).
2. Если ц( A) = 0, то A = {};
3. ц(A U B) = ц(A) + ц(B) - ц(A П B);
4. Если B является пределом любой последовательности множеств {Bn}, п = 1,2,..., то lim^(Bn) = ц(B).
Таким образом, определенную функцию множества A) будем называть мерой на алгебре S(Q).
Свойство 4. функции A) можно записать следующим образом
© А. А. Босов, А. В. Горбова, Н. В. Халипова, 2012
lim ц( BABn) = 0:
(3) гда
где А - операция симметрической разности двух множеств.
Соотношение (3) можно положить в основу определения предела последовательности множеств.
Имеет место
Теорема 1. Если Вп предел по Борелю последовательности {Вп}, а В - предел в смысле (3), то из существования предела Вп следует существование В и из существования В следует существование предела, Вп и они совпадают.
Данная теорема позволяет отказаться от весьма громоздкого определения предела по Борелю, а пользоваться соотношение (3).
Определение 1. Под производной от функции множества Е(А) по мере |л.(А) на последовательности {Вп } будем понимать предел
Е (ААВп) - Е (А)
Ьт—-п--— = а
ц(ААВп) -ц(А)
и записывать в виде
№ (А)
d ц
д
= a .
{Bn
dF (A)
d ц
{Bn }^в
F (A AB) - F (A) ц( A AB) - ц( A)
(4)
Теорема 2. Если на множестве А функция Е (А) принимает максимальное значение, то с необходимостью имеет место
dF (A)
d ц
> 0.
{Bn }^{ю}с A
Доказательство. Пусть на A функция F (An) принимает максимальное значение, то-
Е(ААВп) - Е(А) < 0.
Не ограничивая общности рассмотрения, считываем что множества Вп начиная с некоторого номера принадлежит множеству А, тогда
ААВп) -Ц( А) = ц( А) -ц( Вп) -
-2ц( А П Вп) -ц( А) = -ц( Вп),
и потому отношение
F (AABn) - F (A) ц( AABn) -ц( A)
>0.
Вычислив предел при п ^<х> получаем доказательство теоремы 2.
Введем функцию Лагранжа
Ц(А) = Р(А) + г (М - М (А)), производная, которой по мере А) существует и задача (1), (2) сводится к максимизации Ц(А) ,что в силу теоремы 2 дает
dF (A)
d ц
= p(ю) - tm(ra) > 0 .
{Bn }^{ю}с A
Откуда получаем, что множество A состоит
Естественно, возникает вопрос: «Когда существует данная производная?».
Ответом на данный вопрос является требование, чтобы функция F(A) была бы непрерывной, то есть для любой последовательности {An} сходящиеся к A имеет место
lim F (An) = F (A).
Если {Bn} сходится к множеству B. Тогда для непрерывной функции F(A) производная по мере равна
из таких ю eQ , при которых
Р(ю) т(ю)
> t.
А множитель Лагранжа принимает минимально возможное таким, чтобы выполнялось соотношение (2). Полученный результат, позволяет эвристический алгоритм решения задачи о ранце считать необходимым и тем самым и слово «эвристический» можно отбросить.
Ситуации достаточности алгоритма
Не ограничивая общности рассмотрения будем считать, что нумерация предметов во множестве Q такова, что имеет место:
p(a>i) > p(^) > ... > p(®„).
Укажем некоторые ситуации, когда предложенный алгоритм является, не только необходим, но и достаточным.
c1: Пусть m(ai) = const, i = 1, n .
c2: Если т(ю1) > т(ю2) > ... > т(юп), этого достаточно.
c3: Если при некотором t имеет место
£ т(ю) = M(A) .
(5)
Первые две ситуации с1 и с2 очевидны. Рассмотрим ситуацию с3. В этой ситуации, множество А. представляет собой
А. =!ае О.
. Р(ю),
т(ю)
>.
М (А).
п3: Если ЬорХ = А( с О, £1ор1 - множество,
построенное по приведенному алгоритму, то тогда выбираем такое множество Ьор1 или
£1ор1, у которого Р максимально.
Таким образом, алгоритм позволяет находить решение в задаче о ранце.
Векторная оптимизация
Заметим, что с задачей о ранце (1), (2) можно связать задачу о векторной оптимизации в виде
( Р(А) > -М (А)
• тах
при условии А е Н(О).
Решение данной задачи сводится к построению множества А. определяемого следующим образом
А. ={»еО, р(<% ^ >|
Пусть существует такое ю0 ё А., что можно заменить ю ё А., на ю0 и соотношение (5) не будет нарушено. Но так как р(ю) > р(ю0), то значение Р для измененного А. будет меньше Р(А.), что и доказывает достаточность (5).
Контрпример
В работе [1] приводится контрпример, когда О состоит из двух предметов {ю1,ю2} и т(ю1) = 200, р(ю1) = 190, т(ю2) = 1, р(ю2) = 5, а емкость ранца М (А) = 200.
Чтобы учесть и такую ситуацию, предлагается приведенный алгоритм пополнить следующим:
п1: Вычисляем
Р = Х Р(ю).
юеО
п2: Удаляем последовательно из О такие предметы, у которых р(ю) минимальна, до тех пор пока М(А) не станет меньше или равным
Тогда Р( А.) и М (А.) получаем как некоторые функции параметра . > 0, в пространстве функционалов зависимости Р от М качественный характер имеет вид:
А Р
Рис. 1. Качественная зависимость Р от М
И по заданному М0 определяем максимально возможное Р. Если зададимся Р, то находим минимально необходимую вместимость ранца (рис. 1).
В заключение отметим, что при условии, когда Р(А) и М(А) являются аддиативными функциями, то предложенный алгоритм с необходимостью определяет Парето решение соответствующей задачи векторной оптимизации.
Выводы
Доказано необходимость эвристического алгоритма и дано его усовершенствование решения задачи о ранце. Для аддитивных функций предложен алгоритм определения Парето решения задачи векторной оптимизации по двум показателям.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Лазарев, А. А. Теория расписаний, задачи и алгоритмы [Текст] / А. А. Лазарев, Е. Р. Гафаров. -М. : МГУ им. М. В. Ломоносова, 2011. - С. 222.
2. Босов, А. А. Функции множества и их применение [Текст] / А. А. Босов. - Днепродзержинск: Вид. дiм «Андрш», 2007. - 182 с.
Поступила в редколлегию 05.11.2012. Принята к печати 23.11.2012.
Приложение
ПРОГРАММА В СРЕДЕ MAPLE РЕШЕНИЯ ЗАДАЧИ О РАНЦЕ
(Рациональное инвестирование)
>restart:with(linalg):with(plots): n:=12; Число предметов(число мероприятий).
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the name changecoords has been redefined
n := 12
> Mr:=534; Вместимость ранца(Распологаемые финансы).
Mr := 534
> m: = [52,56,65,54,75,50,70,84,60,52,65,67]; Массы предметов(затраты по мероприятиям).
m := [52, 56, 65, 54, 75, 50, 70, 84, 60, 52, 65, 67]
> p: = [164,163,165,165,191,160,182,184,164,165,167,168]; Ценность предметов(прибыль от мероприятий).
p := [164, 163, 165, 165, 191, 160, 182, 184, 164, 165, 167, 168]
> t:=[seq(p[i]/m[i],i=1..n)];
41 163 33 55 191 16 13 46 41 165 167 168
t :=
> ttmin:=sort(t,4>4);
ttmm :=
13 56'13 18 75' 5' 5'21'15' 52' 65' 67 16 165 41 55 163 41 13 167 191 33 168 46
5 ' 52 ' 13 18 56 ' 15' 5 ' 65 ' 75 ' 13 67 ' 21
>W:=[]:for i from 1 to n do for j from 1 to n do if ttmin[i]=t[j] then W:=[op(W),w[j]] end if: end do: end do;print(W);
[ w w w w w w w w www w ]
1- 6' 10' 1' 4' 2' 9' 7' 11 5' 3' 12 8
PP:=array(1..n,[]);MM:=array(1..n,[]);LL:=array(1..n,[]);LLL:=array(1..n,[]);
PP := array( 1 .. 12, [ ]) MM := array( 1 .. 12, [ ]) LL := array( 1 .. 12, [ ]) LLL := array( 1 .. 12, [ ])
>k:=0:L:=[]:LL:=[]:P:=0:M:=0:for z in W do k:=k+1:
L: = [op(L),z]:P:=P+p[op(1,z)]:M:=M+m[op(1,z)]:print(L,"P=\P,4M=\M):PP[k]:=P: MM[k]:=M:LL:=[op(LL),L] end do:
[w6], P=, 160, M=, 50 [w6, w10], P=, 325, M=, 102 [w6, w10, w1], P=, 489, M=, 154 [w6, w10, w1, w4], P=, 654, M=, 208 [w6, w10, w1, w4, w2], P=, 817, M=, 264 [w6, w10, w1, w4, w2, w9], P=, 981, M=, 324
[w6, w10, w1, w4, w2, w9, w7], P=, 1163, M=, 394 [w6, w10, w1, w4, w2, w9, w7, w11], P=, 1330, M=, 459 [w6, w10, w1, w4, w2, w9, w7, w11, w5], P=, 1521, M=, 534 [w6, w10, w1, w4, w2, w9, w7, w11, w5, w3], P=, 1686, M=, 599 [w6, w10, w1, w4, w2, w9, w7, w11, w5, w3, w12], P=, 1854, M=, 666 [w6, w10, w1, w4, w2, w9, w7, w11, w5, w3, w12, w8], P=, 2038, M=, 750
>
>for ii from 1 to n do if Mr>=MM[ii] then Mopt:=MM[ii]:Popt:=PP[ii]:Lopt:=LL[ii] end if: end do; >print('Lopt=\Lopt,4Popt=\Popt,'Mopt=\Mopt);
Lopt=, [w6, w10, w1, w4, w2, w9, w7, w11, w5], Popt=, 1521, Mopt= 534
> P1:=array(1..n,[]);M1:=array(1..n,[]);
P1 := array( 1 .. 12, [ ]) Ml := array( 1 .. 12, [ ])
>LLL:=[LL[n]]:i2:=1:P1[i2]:=P:M1[i2]:=M:for i from 1 to n-1 do fmin:=10000:k:=0:for j from 1 to n do k:=k+1: if L[j]<>h then if fmin>=p[op(1,L[j])] then fmin:=p[op(1,L[j])]:jmin:=op(1,L[j]):jj:=k: end if: end if: end do;print(fmin,m[jmin]):L[jj]:=h:LLL:=[op(LLL),L]:i2:=i2+1:M:=M-m[jmin]:P:=P-p[jmin]:print(L,P,M);P1[i2]:=P:M1[i2]:=M: end do:
160, 50
[h, w10, w1, w4, w2, w9, w7, w11, w5, w3, w12, w8], 1878, 700
163,56
[h, w10, w1, w4, h, w9, w7, w11, w5, w3, w12, w8], 1715, 644
164,60
[h, w10, w1, w4, h, h, w7, w11, w5, w3, w12, w8], 1551, 584
164,52
[h, w10, h, w4, h, h, w7, w11, w5, w3, w12, w8], 1387, 532
165,65
[h, w10, h, w4, h, h, w7, w11, w5, h, w12, w8], 1222, 467 165,54
[h, w10, h, h, h, h, w7, w11, w5, h, w12, w8], 1057, 413 165,52
[h, h, h, h, h, h, w7, w11, w5, h, w12, w8], 892, 361 167,65
[h, h, h, h, h, h, w7, h, w5, h, w12, w8], 725, 296 168,67
[h, h, h, h, h, h, w7, h, w5, h, h, w8], 557, 229 182,70
[h, h, h, h, h, h, h, h, w h, h, w8], 375, 159 184,84
[h, h, h, h, h, h, h, h, w5, h, h, h], 191, 75
>for kk from n by -1 to 1 do if Mr>=M1[kk] then M1opt:=M1[kk]:P1opt:=P1[kk]:L1opt:=LLL[kk]: end if: end do;print('L1opt=\L1opt,4P1opt=\P1opt,'M1opt=\M1opt);
L1opt=, [h, w10, h, w4, h, h, w7, w11, w5, w3, w12, w8], P1opt=, 1387 M1opt=, 532
> if P1opt>Popt then print('L1opt=\L1opt,4P1opt=\P1opt,'M1opt=\M1opt) else print('Lopt=\Lopt,4Popt=\Popt,'Mopt=\Mopt): end if:
Lopt=, [w6, w10, w1, w4, w2, w9, w7, w11, w5], Popt=, 1521, Mopt= 534
>
А. А. БОСОВ, А. В. ГОРБОВА, Н. В. ХАЛ1ПОВА (ДПТ)
ОБГРУНТУВАННЯ ЕВРИСТИЧНОГО АЛГОРИТМУ В ЗАДАЧ1 ПРО РАНЦ1
Вступ: Сформована завдання про ранцi в термшах функЦй множини i приведений евристичний алгоритм. Мета: доказ того, що евристичний алгоритм е необхвдною умовою. Деякi факти з роботи [2]. Показана екиваленгтсгь границ послiдовностi по Е. Борелю i збiжнiстю по трг Доведено теорему про необхiднiсть максимуму функци безлiчi. Ситуаци достатност1 алгоритму: Наведено три ситуаци, коли евристичний алгоритм е достатшм. Контрприклад: Наведено контр прийме з роботи [1] i дано додавання в евристичний алгоритм, що дозволяе отримувати рiшення задачi про ранцi. Векторна оптимзащя: 1з завданням про ранщ зав'язуеться завдання векторно! опгатзащ! швестування заходв. Висновки: запропоновано алгоритм ршення задачi про ранцi i для ади-тивних функцiй алгоритм визначення Парето рiшення задачi векторно! оптишзаци за двома показниками. Додаток: наведена програма в середовищi Maple ршення задачi про ранцi.
Ключовi слова: задача про ранщ, функцц множини, векторна оптимiзацiя, завдання iнвестування
А. А. BОSОV, А. V. GОRBОVА, N. V. KHALIPOVА (DIIT)
SUBSTANTIATION OF A HEURISTIC ALGORITHM IN THE KNAPSACK PROBLEM
Introduction: Formed knapsack problem in terms of set functions and is a heuristic algorithm. The goal: to prove that the heuristic algorithm is essential. Some facts from [2]. The equivalence of the limit order to E.Borelyu and convergence in measure. The theorem about the need to set a maximum of function. The situation is quite the algorithm: We present three cases where a heuristic algorithm is sufficient. Counterexample: An Rear take from [1], and given the addition heuristic algorithm, which allows to obtain the solution of the knapsack problem. Vector optimization: With the knapsack problem is tied vector optimization of investment activities. Conclusions: The proposed algorithm for solving the knapsack problem and for additive functions algorithm for Pareto solutions of vector optimization for the two indicators. Appendix: an agenda for the Maple solutions knapsack problem. Keywords: knapsack problem, set functions, vector optimization, the task of investing