Научная статья на тему 'Конструирование и исследование алгоритмов решения задачи о рюкзаке'

Конструирование и исследование алгоритмов решения задачи о рюкзаке Текст научной статьи по специальности «Математика»

CC BY
2046
227
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
задача о рюкзаке / алгоритм / динамическое программирование / ветви и гра- ницы / стратегия / задача про рюкзак / алгоритм / динамічне програмування / гілки і границі / стратегія. / knapsack problem / algorithm / dynamic programming / branch and bound / strategy

Аннотация научной статьи по математике, автор научной работы — С А. Канцедал, И В. Скрипина, М В. Костикова

Изложены и обоснованы основные понятия и возможности решения задачи орюкзаке точными методами ветвей и границ и методами динамического программирования.Описываются методы и алгоритмы решения задачи. Приводятся сравнительные характери-стики алгоритмов, которые получены экспериментальным путём. Даются рекомендации поих практическому применению.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DESIGN AND EXAMINATION OF ALGORITHMS FOR SOLVING THE KNAPSACK PROBLEM

The use of methods of branches and boundaries as well as the methods of dynamic programming at solving the problem of «knapsack» is grounded. The main concepts are expounded. The methods and algorithms development for solving the above specified problem are described. Recommendations on practical application of constructed algorithms based on their experimental investigation and carrying out charactheristics comparison are presented.

Текст научной работы на тему «Конструирование и исследование алгоритмов решения задачи о рюкзаке»

154

Автомобильный транспорт, вып. 36, 2015

УДК 658.52.011.56

КОНСТРУИРОВАНИЕ И ИССЛЕДОВАНИЕ АЛГОРИТМОВ РЕШЕНИЯ

ЗАДАЧИ О РЮКЗАКЕ

С.А. Канцедал, проф., д.т.н., Западнодонбасский институт Межрегиональной академии управления персоналом, г. Павлоград,

М.В. Костикова, доц., к.т.н., И.В. Скрипина, ст. преп.,

Харьковский национальный автомобильно-дорожный университет

Аннотация. Изложены и обоснованы основные понятия и возможности решения задачи о рюкзаке точными методами ветвей и границ и методами динамического программирования. Описываются методы и алгоритмы решения задачи. Приводятся сравнительные характеристики алгоритмов, которые получены экспериментальным путём. Даются рекомендации по их практическому применению.

Ключевые слова: задача о рюкзаке, алгоритм, динамическое программирование, ветви и границы, стратегия.

КОНСТРУЮВАННЯ Й ДОСЛІДЖЕННЯ АЛГОРИТМІВ РІШЕННЯ ЗАДАЧІ

ПРО РЮКЗАК

С.А. Канцедал, проф., д.т.н., Західнодонбаський інститут Міжрегіональної академії управління персоналом, м. Павлоград, М.В. Костікова,

доц., к.т.н., І.В. Скрипіна, ст. викл.,

Харківський національний автомобільно-дорожній університет

Анотація. Викладено та обґрунтовано основні поняття й можливості рішення задачі про рюкзак точними методами гілок і границь та методами динамічного програмування. Описуються методи та алгоритм розв ’язання задачі. Наводяться порівняльні характеристики алгоритмів, одержані експериментальним шляхом. Даються рекомендації до їх практичного застосування.

Ключові слова: задача про рюкзак, алгоритм, динамічне програмування, гілки і границі, стратегія.

DESIGN AND EXAMINATION OF ALGORITHMS FOR SOLVING THE

KNAPSACK PROBLEM

S. Kantsedal, Prof., D. S. (Eng.), The West Donbass Institute of Interregional Academy of Personnel Management, the town of Pavlograd, M. Kostikova, Assoc. Prof.,

Ph. D. (Eng.), I. Skrypina, senior teacher,

Khartov National Automobile and Highway University

Abstract. The use of methods of branches and boundaries as well as the methods of dynamic programming at solving the problem of «knapsack» is grounded. The main concepts are expounded. The methods and algorithms development for solving the above specified problem are described. Recommendations on practical application of constructed algorithms based on their experimental investigation and carrying out charactheristics comparison are presented.

Key words: knapsack problem, algorithm, dynamic programming, branch and bound, strategy.

Автомобильный транспорт, вып. 36, 2015

155

Введение

Впервые сформулированная американским математиком Д.Б. Данцигом задача о рюкзаке (ранце) (англ. Knapsack problem) - одна из AP-полных задач комбинаторной оптимизации, популярность которой вызвана большим количеством её приложений, поскольку многие из реально возникающих задач описываются в рамках данной модели. Основные сферы применения находятся в областях планирования и управления производственными и транспортными системами. Название своё получила от максимизационной задачи укладки как можно большего числа ценных вещей в рюкзак при условии, что общий объём (или вес) всех предметов, способных поместиться в рюкзак, ограничен. Непосредственно термин «рюкзак» может быть интерпретирован достаточно широко. Данная задача и её варианты широко используются для моделирования большого числа практических задач.

Анализ публикаций

Очень часто при решении задач такого класса на практике рассматривается двухкритериальная задача о рюкзаке [6].

Цель и постановка задачи

Существуют различные точные и приближённые алгоритмы решения задачи о рюкзаке. К точным алгоритмам относятся: полный перебор; метод ветвей и границ динамического программирования.

В общем виде задача о рюкзаке формулируется следующим образом. Перед походом в рюкзак, вместимостью не более A единиц веса, из набора I = {1, 2, ...,і, ..., n} предметов, каждый весом ai и «ценностью» ci, необходимо положить те предметы xi, і Є I, которые максимизируют суммарную «ценность» груза и помещаются по весу в рюкзак.

В математической форме задача представляется следующим образом: требуется найти xi, і є I, доставляющее

Задачи о рюкзаке и её модификации часто возникают в экономике, прикладной математике, криптографии, генетике и логистике для нахождения оптимальной загрузки транспорта (автомобиля, контейнера, самолёта, поезда, трюма корабля) или склада. Поэтому разработке методов решения задачи, и в первую очередь эффективных, уделено достаточно много внимания [1-7].

В литературе можно встретить обоснование и анализ различных методов решения общей задачи линейного программирования, задачи целочисленного программирования, потоковых задач, ряда задач на графах, задач о мат-роидах [1]. Приводятся также задачи дискретного программирования, заключающиеся в нахождении условных экстремумов на конечных множествах [2], задачи геометрической оптимизации (раскрашивание графа, реализация графа с минимальным числом пересечений, наиболее плотная упаковка) [4].

Исследуются как точные, так и приближённые алгоритмы решения задачи.

В настоящее время обсуждается возможность реализации задачи на основе физической системы квантового компьютера для решения задачи об упаковке рюкзака [5].

max£ ctxt = W, (1)

ІЕІ

при условиях

ТаЛ ^ V, (2)

ієІ

1

x=

0

еслипредмет помещёнврюкзак, еслипредмет непомещёнв рюкзак.

(3)

Таким образом, задача о рюкзаке - это задача целочисленного линейного программирования с булевыми переменными. Её решение

2n

, ,

комбинаций, формируемом различными наборами переменных xt, удовлетворяющих ограничению (2). Известно, что задача является AP-полной, т. е. для неё теоретически не существует полиномиального по времени решения алгоритма [1]. Среди экспоненциальных алгоритмов наиболее подходящими являются те, которые реализуют схему ветвей и границ, метод динамического программирования, аддитивный алгоритм Бала-ша [2], а также другие разработанные алгоритмы. Хотя эти алгоритмы и оценены по вычислительной сложности, вместе с тем они не имеют практических оценок решения

156

Автомобильный транспорт, вып. 36, 2015

задач, оценок работы алгоритмов в среднем, что очень важно для их применения.

Цель работы состоит в конструировании и экспериментальном исследовании трёх алгоритмов, предназначенных для решения задачи о рюкзаке. Два из них - метод ветвей и границ и динамического программирования - позволяют получить точные решения, третий метод - эвристический - даёт приближенные решения задачи. Приводятся сравнительные характеристики алгоритмов, на основании чего даются рекомендации к их практическому применению.

Разработка алгоритмов

Как известно, в методе ветвей и границ имеется два момента алгоритмизации, определяемых спецификой задачи: разбиение исходного множества комбинаций на подмножества с дальнейшим выбором подмножества для очередного разбиения и вычисления нижних (верхних) границ (оценок) значений оптимизируемой функции на подмножествах. Разбиение множества на подмножества называется ветвлением, а выбор подмножества для разбиения - его стратегией. Вычисление ошибок толкуют как решение оценочных задач. Наглядным результатом ветвления и решения оценочных задач является n -ярусное корневое дерево поиска решений с оценками вершин подмножеств каждого яруса. Оценка вершины последнего яруса - рекорд - представляет собой текущее значение оптимизируемой функции, которое далее сравнивается с оценками вершин предшествующих ярусов, в результате чего неперспективные для ветвления подмножества отсеиваются, а перспективные разбиваются, дополняя дерево решений. Алгоритм заканчивает работу тогда, когда будут сравнены с рекордом все текущие и вновь порождаемые оценки вершин. Практика показывает, что более эффективными являются те алгоритмы, которые строят бинарные деревья решений, т. е. реализуют разбиение каждого очередного множества на два подмножества, выбор подмножества для ветвления осуществляют по максимальной (минимальной) оценке оптимизируемой функции, оценочные задачи формируются так, что более точно вычисляются оценки. Поэтому при разработке алгоритма и наличии выбора следует придерживаться указанных правил.

Что касается рассматриваемой задачи, то процесс разбиения очередного множества осуществляется на два подмножества, первое из которых содержит комбинации компонент вектора с xi = 0 , второе - с xi = 1. Стратегия ветвления состоит в том, чтобы выбирать очередное подмножество для разбиения по максимальной оценке верхней границы оптимизируемой функции. В результате получаем бинарное дерево поиска решений, изображённое на рис. 1.

Рис. 1. Бинарное дерево поиска решений

Для вычисления оценок верхних границ оптимизируемой функции на подмножествах формулируется следующая оценочная задача: найти

Q = c • x, (4)

is1

при условиях

Ха • x < F, (5)

isl

0 < xi < 1, i s 1. (6)

Иными словами, для некоторого xi допускается, что оно не булево, а лежит в интервале [0, 1] . Такая релаксация строгости условий задачи приводит к тому, что оценка Q для каждой вершины дерева поиска оказывается больше W , т. е. она действительно является верхней границей оптимизируемой функции на подмножествах комбинаций.

В то же время оценочная задача легко решаема. Согласно [3] следует найти «ценности»

ci

единиц весов грузов —, i = 1, 2, ..., n и упо-

ai

c c2 cn

рядочить их по убыванию — > — > ... > —- .

Тогда все xi є 1, выбираемые в порядке по-

a

a2 a

1

Автомобильный транспорт, вып. 36, 2015

157

следовательности «ценностей» и такие, что

k

'У'а, < V , полагаются равными единице.

i=1

Очередное значение xk+1 такое, что

k+1

at • x, > V вычисляется по выражению

i=1

k

xk+1 = (V - X а,)/ak+1 , т. е. ищется значение

i=1

той переменной x,, і є I, которая полагается не булевой. Остальные х,,

і = k + 2, ..., n принимается равными нулю. В

k+1

результате получаем оценку Q = ^ с, ,-х, и

i=1

k+1

ограничение Tai < V. Пусть для ветвления

i=1

выбрана вершина r -го яруса дерева поиска с оценкой Qr и значением Vr, которые определены последовательностью х, ,

i = 1, 2, r . Тогда оценочные задачи для вершины r +1 -го яруса должны быть сформулированы так: найти

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Qr+1 = max Qr + Ё

i=r+1

ci • X

при условиях

^a, • х, < V - V. ,

i=r+1

0 < x, < 1, i є I.

Алгоритм, реализующий описанный метод, приведён ниже.

Шаг 1. Установить n; положить k = 0, рекорд R = 0.

Шаг 2. Положить k = k + 1.

Шаг 3. Положить хк = 0, вычислить оценку Qk при хк = 0 и запомнить Qk .

Шаг 4. Положить хк = 1, вычислить оценку Qk при xk =1.

Шаг 5. Выбрать вершину для ветвления vx с большей оценкой Qk.

Шаг 6. Если Qk < R , перейти к шагу 9, иначе перейти к шагу 7.

Шаг 7. Если k < n , запомнить большее Qk,

соответствующее xk , и вернуться к шагу 2; иначе перейти к шагу 8.

Шаг 8. Положить R равным большему Qk . Запомнить вектор X.

Шаг 9. Положить k = k -1.

Шаг 10. Если k = 0 , остановиться; иначе перейти к шагу 11.

Шаг 11. Выбрать запомненное Qk .

Шаг 12. Если Qk < R , вернуться к шагу 9, иначе вернуться к шагу 3.

Метод динамического программирования вначале разрабатывался Р. Беллманом и его учениками для решения задач управления динамическими объектами, движение которых (переход из состояния в состояние) описывалось дифференциальными уравнениями, осуществлялось под воздействием управлений, а оптимизируемыми функциями являлись интегральные функционалы. Позже он был распространён для решения некоторых классов задач статической оптимизации, в частности, задач комбинаторного характера.

Метод предполагает, что процесс управления может быть представлен как последовательный N -шаговый (N -стадийный) процесс принятия решений. При этом выработка решений на очередных этапах не оказывает влияние на величину оптимизируемой функции, достигнутой на предшествующих шагах, т. е. рассматриваются системы без последствия (обратной связи).

Если указанные условия выполняются, то оптимальное управление может быть построено, если следовать принципу оптимальности: оптимальная стратегия обладает тем свойством, что каковы бы ни были непосредственно предшествующее состояние и управление, последующее управление должно быть оптимальным по отношению к этому состоянию. Иными словами, в каждом состоянии по отношению к нему необходимо действовать оптимально.

Чаще всего при построении оптимальной стратегии управления вычисления начинают в порядке, обратном течению N -шагового процесса принятия решений, т. е. с конца. При этом обязательным при решении всех задач является построение на каждом шаге функции Беллмана: экстремального значения функционала по управлению в зависимости от состояния системы. В том случае, когда в

158

Автомобильный транспорт, вып. 36, 2015

наличии много возможных состояний либо много допустимых управлений, либо имеет место то и другое, вычисление функции Беллмана может оказаться слишком трудоёмким и в целом метод окажется неэффективным. Наиболее просто функция Беллмана вычисляется для первого шага. Для всех остальных шагов она определяется на основании функционального уравнения, связывающего очередной и предшествующий шаги процесса принятия решений. Вывод функционального уравнения, фактически рекуррентного соотношения, специфичен для каждой задачи и во многих случаях может представлять определённые трудности.

В рассматриваемой задаче оптимальную стратегию представляет набор значений переменных xf, і є I, доставляющий максимальное значение функции W и удовлетворяющий условиям (2), (3). Процесс

определения этого набора представим как N -стадийный процесс, на каждом шаге которого i = 1, 2, ..., N; исходя из принципа оптимальности, выбирается значение xi = 0 или хк = 1. Стадии принятия решений отсчитываются в обратном порядке (справа налево) 1, 2, ., i, ., N . Тогда стадия i означает, что до конца процесса принятия решения осталось i шагов.

Поскольку в данной задаче выбор на каждом шаге значения xi , а следовательно, и его влияние на оптимизируемую функцию зависит от текущей грузоподъёмности рюкзака VT, состояние системы определим последовательностью целых чисел

S = 0, 1, ..., j, ..., V, интерпретируя их как распределение этой грузоподъёмности. На основании этого функцию Беллмана - как максимальное значение оптимизируемой функции от состояния системы - на каждом шаге i = 1, 2, ., N будем представлять функцией Bf (S). Для первого шага N -стадийного процесса она будет иметь вид

Для i -го шага i = 2, ..., N функция Беллмана записывается так

Bj (S) = max [cj • xj

по Xi

0,

0 или 1,

+ Bi-1(S - ai • xi)] если [S / ai ]< 1, если [S/ai ]> 1.

(8)

В свою очередь рекуррентное соотношение

(8) можно интерпретировать следующим образом: пока [S/a, ]< 1, Bг (S) = B,.-1(S); для [S/at ]>1, B, (S)=max{B!-1 (S), [c, + B,- (S-at)]}.

Решение задачи о рюкзаке с использованием введённых соотношений выполняется традиционно. Вводится в рассмотрение две матрицы: MB(i, s)n-1xV , MX(i,S)N-1xV .

В матрицу MB построчно заносятся значения функции Беллмана, вычисляемые по выражениям (7), (8). В матрицу MX записываются оптимизирующие функцию Беллмана значения компонент вектора X . Максимальная стоимость предметов рюкзака вычисляется на основании компонент (N -1) -й строки матрицы MB по выражению

Bn (V) = max{BN - (V), [cn + Bn - (V - an )]}.

При этом определяется и оптимальное значение xП = 0 или 1. Остальные значения компонент вектора X вычисляются на основании значений элементов матрицы MX последовательно по выражениям

x*-1 = MX(n -1, V - an • X*),

xn-2 = MX(n - 2, V - an • xn - an-1 • xn-1) , •••,

x* = MX1 V - an • x* - an-1 • x*-1 -. • - a2^x2 ) .

В качестве эвристического рассматривается алгоритм, приближённо решающий оценочную задачу (4)-(6).

Bj (S) =max(cj • x1) по x1 =Ц

0, если если

S / a1 S / a,

<1,

>1,

(7)

где [S / a1 ] - целая часть числа S / a1. Таким образом, пока [S /a1 ]<1, B1(S) = 0 .

Он включает следующие действия.

Шаг 1. Установить n . Сформировать вектор «ценностей» единиц грузов

(

Y =

c1 c

2

c

\

V a1 a2

n /

Для остальных S = j, . , V , B1 (S) =c1 .

Автомобильный транспорт, вып. 36, 2015

159

Шаг 2. Упорядочить компоненты вектора Y по убыванию и получить соответствующий вектор индексов предметов X .

Шаг 3. Положить начальный вес рюкзака L = 0, начальную «ценность» груза z = 0 . Шаг 4. Положить і = 1.

Шаг 5. Вычислить L = L + A(хі) .

Шаг 6. Если L < V, вычислить z = z + c(xi), иначе вычислить L = L — c(xt) и перейти к шагу 8.

Шаг 7. Положить і = і + 1; если і < n, вернуться к шагу 5.

Шаг 8. Вычислить недогрузку рюкзака AV = V — L и остановиться.

Результаты эксперимента

Экспериментальные характеристики алгоритмов получены путём решения представительного набора случайных задач. Программы составлены на языке Visual Basic. Экспериментальные данные обрабатывались средствами пакета Statgraphics версии 5.1.

Всего каждым алгоритмом решалось 6 наборов случайных задач размером 10, 20, 30, 40, 50, 60 предметов по 100 задач в каждом наборе. Для алгоритмов, реализующих схему ветвей и границ и метод динамического программирования, определялись средние процессорные времена Tv, Td счёта задач и недогрузки рюкзака Rv. Для эвристического алгоритма вычислялись средняя As и максимальная A max погрешности по отношению к точному решению задачи, стандартное отклонение St, 95-процентный доверительный интервал De, Dr для среднего As, а также средняя недогрузка рюкзака Re.

Полученные данные приведены в табл. 1 и 2.

Таблица 1 Данные эксперимента для алгоритмов, реализующих схему ветвей и границ и метода динамического программирования

Количество предметов N T ± v Td Rv

10 0,000547 0,000021 3,93

20 0,001641 0,000247 1,90

30 0,003867 0,000586 0,39

40 0,017031 0,001094 0,15

50 0,103281 0,002188 0,11

60 0,377344 0,003811 0,06

Таблица 2 Данные эксперимента для эвристического алгоритма

Количество предметов N A s A max St De Dr Re

10 1,78 9,87 2,54 2,49 2,59 9,44

20 1,36 6,25 1,43 1,40 1,45 4,31

30 0,99 3,66 0,90 0,88 0,92 2,76

40 1,05 2,87 0,80 0,78 0,81 1,90

50 0,82 2,19 0,57 0,56 0,58 1,65

60 0,73 2,25 0,50 0,49 0,51 1,20

Данные таблиц показывают, что средняя A s и максимальная Amax погрешности эвристического алгоритма достаточно низки. Так, для размера задачи N = 10 они составляют меньше 2 и 10 процентов соответственно. Более того, с увеличением размера задачи N погрешности существенно убывают, так что, например, для N = 60 они составляют меньше 1 и 3 процентов. Наблюдается весьма малый разброс случайных St и узкий доверительный интервал \Ре, Dr ] для среднего, что свидетельствует о статистической устойчивости этих характеристик алгоритма.

Что касается временных характеристик, реализующих метод ветвей и границ и метод динамического программирования, то они отличаются. Эмпирические зависимости среднего времени счёта от размера задачи, полученные методом регрессивного анализа, приведены ниже. Для метода ветвей и границ характерна экспоненциальная зависимость

Tv = e 91212+0133 N . Для метода динамического программирования - степенная -Td = e 17 0377 . N2,804. Таким образом, по времени счёта более предпочтителен метод динамического программирования. Однако он требует существенного объёма памяти, который растёт как 2. \N .(V +1)], т. е. примерно

как O(N2) . На практике возможно применение обоих методов, в том числе и эвристического, если требуется быстрое, прикидочное решение задачи.

Выводы

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

В данной статье авторы представили сконструированные и экспериментально исследованные алгоритмы, реализующие решения задачи о рюкзаке точным методом ветвей и границ, методом динамического программирования, а также эвристическим методом.

160

Автомобильный транспорт, вып. 36, 2015

Практическая значимость исследований состоит в том, что получена оценка решения задач, оценка работы разработанных алгоритмов в среднем, что является важным фактором их применения.

Литература

1. Пападимитриу Х. Комбинаторная оптими-

зация. Алгоритмы и сложность / Х. Пападимитриу, К. Стайглиц. - М.: Мир, 1985. - 510 с.

2. Корбут А.А. Дискретное программирова-

ние. / А.А. Корбут, Ю.Ю. Финкельш-тейн. - М.: Наука, 1969. - 368 с.

3. Шкурба В.В. Задачи трёх станков /

B. В. Шкурба. - М.: Наука, 1976. - 96 с.

4. Саати Т. Целочисленные методы оптими-

зации и связанные с ними экстремальные проблемы. / Т. Саати. - М.: Мир, 1973. - 304 с.

5. Казаков А.Я. Модифицированные модели

Джейнса-Каммингса и квантовая версия задачи о рюкзаке / А.Я. Казаков // Журнал экспериментальной и теоретической физики. - 2003. - Т. 124, Вып. 6 (12). -

C. 1264-1270.

6. Замкова Л.И. Булева двухкритериальная

задача о рюкзаке / Л.И. Замкова // Известия Южного федерального университета. Технические науки. - 2009. - № 4. -С.201 - 204.

7. Gilmore P.C. The Theory and Computation of

Knapsack Functions / P.C. Gilmore, R.E. Gomory // Operations Research. -1966. - Vol. 14, No. 6. - pp. 1045 - 1074.

References

1. Papadimitriu H., Stayglits K. Kombinatorna-

ya optimizatsiya. Algoritmyi i slozhnost [Combinatorial optimization. Algorithms and Complexity]. Moscow, Mir Publ., 1985.510 p.

2. Korbut A.A., Finkelshteyn Yu.Yu. Diskretnoe

programmirovanie [Discrete programming]. Moscow, Nauka Publ., 1969. 368 p.

3. Shkurba V.V. Zadachi trYoh stankov [Task

three machines]. Moscow, Nauka Publ., 1976. 96 p.

4. Saati T. Tselochislennyie metodyi optimizatsii

i svyazannyie s nimi ekstremalnyie prob-lemyi [Integer optimization techniques and associated extreme problems]. Moscow, Mir Publ., 1973. 304 p.

5. Kazakov A.Ya. Modifitsirovannyie modeli

Dzheynsa-Kammingsa i kvantovaya versi-ya zadachi o ryukzake [Modified Jaynes-Cummings model and the quantum version of the knapsack problem]. Zhurnal Eksper-imentalnoy i Teoreticheskoy Fiziki, 2003, Vol. 124, no. 6 (12). pp. 1264-1270.

6. Zamkova L.I. Buleva dvuhkriterialnaya

zadacha o ryukzake [Boolean twocriterial knapsack problem]. Izvestiya Yuzhnogo federalnogo universiteta. Tehnicheskie nauki, 2009, no. 4. pp. 201-204.

7. Gilmore P.C., Gomory R.E. The Theory and

Computation of Knapsack Functions. Operations Research. 1966, Vol. 14, no. 6. pp.1045-1074.

Рецензент: П.Ф. Горбачёв, профессор, д.т.н., ХНАДУ.

Статья поступила в редакцию 16 февраля 2015 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.