Метод динамического программирования в минимаксной задаче распределения заданий с равноценными исполнителями
Бесплатный доступ
В работе рассмотрен ряд специфических вариантов метода динамического программирования, используемых для решения минимаксной задачи распределения заданий при условии, что исполнители равноценны, и их порядок не важен. Для разработанных рекурсивных схем метода динамического программирования показана корректность, проводится сравнение вычислительной трудоемкости классической и предложенных схем. Демонстрируется, что использование специфики условия равноценности исполнителей позволяет сократить количество операций в рассмотренном методе динамического программирования по сравнению с классическим более чем в 4 раза, при этом при увеличении размерности исходной задачи относительный выигрыш лишь увеличивается. Одна из использованных техник сокращения вычислений - > динамическое программирование - по-видимому является общей для целого класса задач, допускающих использование при решении принципа Беллмана. Применение данной техники связано с неполным расчетом значений функции Беллмана в задаче, обладающей некоторой внутренней симметрией, после чего решение исходной задачи получается склеиванием полученных массивов значений функции Беллмана.
Метод динамического программирования, распределение заданий
Короткий адрес: https://sciup.org/147159192
IDR: 147159192
Текст научной статьи Метод динамического программирования в минимаксной задаче распределения заданий с равноценными исполнителями
Одним из классических способов исследования задачи дискретной оптимизации является метод динамического программирования (МДП) [1]. На сегодняшний день этот метод относительно редко используется собственно для нахождения оптимального решения. Для решения большинства, задач либо разработаны более эффективные методы математического программирования, либо достаточными оказываются многочисленные приближенные и эмпирические алгоритмы. Способом точного решения МДП остается лишь в ряде прикладных задач, обладающих сложной структурой. В этом случае создание соответствующего МДП представляет самостоятельную сложность и является существенным шагом вперед по сравнению, например, с более простыми переборными или эмпирическими алгоритмами. Особый интерес представляют случаи, когда, сложные ограничения на. задачу, доставляющие трудности в формализации задачи на. языке, например, линейного программированя, оказываются выгодны в процедуре МДП. Так, например, в обобщенной задаче курьера. [2] удается использовать условия группировки « городов ^ в « мегаполисы ^ и условия предшествования для существенного уменьшения количества, вычислений, обеспечивая высокую прикладную эффективность МДП в труднорешаемой задаче.
Несмотря на. указанные ограничения, МДП остается как удобным инструментом оценки вычислительной сложности комбинаторной задачи [3, 4], так и способом ее дальнейшего качественного исследования. Так, например, в ряде работ автора. [5, 6] близкие к МДП схемы используются для построения условий устойчивости в задачах комбинаторной оптимизации при изменении множества начальных данных. Также интерес представляют различные смешанные схемы решения сложных комбинаторных задач, в которых динамическое программирование используется ограниченным образом в комбинации с быстрыми приближенными алгоритмами [7].
Настоящая работа посвящена построению специфических схем МДП, используемых для решения минимаксной задачи распределения заданий среди конечного числа равноценных исполнителей. Насколько известно автору, впервые МДП для минимаксной распределительной задачи был изложен в работе [8] и, далее, в [2, 9]. Представленные в работе алгоритмы учитывают «симметричность» распределительной задачи с равноценными исполнителями, благодаря чему удается сократить объем вычислений по сравнению с классической схемой, а также реализовать идею «встречного» динамического программирования (впервые, по-видимому, кратко описанную в работе [10] при учете ограничений в задаче линейного целочисленного программирования). Полученные результаты представляют в первую очередь теоретический интерес, углубляя представление о структуре МДП в задаче распределения заданий.
Минимаксная постановка (или bottleneck в англоязычной литературе) относительно редко рассматривается в работах, посвященных задаче распределения заданий. Между тем, существует большое число важных приложений, связанных именно с этой задачей. В качестве одного из примеров можно привести задачу мультикоммивояжер (mTSP [И]). В минимаксной постановке этой задачи требуется разбить множество « городов ^ между коммивояжерами таким образом, чтобы длина пути самого загруженного коммивояжера была минимальна. Задачи подобного плана возникают, например, при оптимизации перемещений бригады исполнителей в агрессивной внешней среде [7, 11]. Другой областью приложения минимаксной задачи распределения заданий является формирование наиболее вероятных эволюционных деревьев с приложениями в области биологии и лингвистики.
1. Обозначения и классическая схема
Пусть X - конечное множество распределяемых заданий, N Е N - количество исполнителей. Далее будем считать, что |X| > N. Для всякого подмножества K С X задана функция d ( K ) трудоемкости выполнения заданий этого подмножества одним исполнителем (в настоящей постановке мы считаем всех исполнителей равносильными, что, например, является весьма распространенным условием в прикладных постановках задачи мультикоммивояжера)
d : P ( X) ^ R+ , (1)
где d (0) = 0. а под P ( X ) мы традиционно понимаем лпюжество всех подмножеств X.
Для любого K С X , любого к Е 1 , N через Mk ( K ) будем обозначать совокупность всех разбиений множества K , содержащих не более к непустых подмножеств:
Mk ( K ) A {Ke P ( P ( K )) | ( |K| < к )&( J S = K )&( VA EKVB EK ( A П B = 0) V ( A = B )) }.
S ∈ K
В данной постановке мы допускаем ситуации, в которых не все исполнители снабжаются заданиями. На практике такие ситуации возникают в случае тесной связи между заданиями, когда, например, выполнение одного из двух заданий обеспечивает средства для выполнения второго. При этом может оказаться « более выгодным ^ отдать исполнение обоих заданий одному исполнителю, оставив второго без заданий.
Всякий элемент а Е Mk(K) будем называть распределением множества заданий K по к исполнителям; перечисляя все непустые подмножества распределения а, будем писать а = {K i,...,KiY ____ ''
При заданных к Е 1 ,N,K С X стоимостью всякого распределения а Е Mk ( K ) будем называть функцию D : Mk ( K ) ^ R+ , определяемую как максимум трудоемкости по составляющим распределение подмножествам:
Vа = {Ki,...,Ki}E Mk(K) D(а) = maxd(Kj).(2)
j e i ,i
Распределение а о E Mk ( K ) будем называть оптимальным на Mk ( K ), если справедливо
D (а о) = min D (а).(3)
a e M k ( K )
Минимаксная задача распределения заданий заключается в нахождении стоимости оптимального распределения на M n ( X ) при заданных X, N, d. Отметим, что излагаемый классический метод динамического программирования и рассматриваемые ниже его модификации, позволяют помимо расчета стоимости оптимального распределения восстановить также и само оптимальное распределение, однако этой части метода динамического программирования в настоящей работе мы не касаемся. В схеме 1 изложен классический вариант МДП для нахождения стоимости оптимального распределения заданий из множества X среди N исполнителей.
Замечание. Здесь мы не станем останавливаться на подробном рассмотрении данного классического соотношения. Отметим лишь без доказательства, что всякая величина Vi ( K ) совпадает со стоимостью оптимального распределения заданий из множества K среди i исполнителей и, в частности, величина v n ( X ) совпадает с искомой стоимостью оптимального распределения заданий множества X среди N исполнителей. Строгое доказательство этих фактов, а также корректности рекурсивной схемы 1 можно найти в работе [2]. В последующих же разделах сосредоточимся на сокращении количества итераций в схеме 1 при нахождении стоимости оптимального распределения на M n ( X ) в условиях равноценности исполнителей.
Схема 1
1) VK С X V 1(K) = d(K);
2) VK С X v2(K) = k rnin k (max{d(K 1), vi(K2)}) ;
3) VK С Xvз(K)= 1 min (max{d(Ki),v2(K2)});
2. Сокращенная схема МДП
K 1 r K 2 = K
··· ··· ··· ···
N — 1) VK С X vN - 1( K ) = k п к п k (max {d ( K 1) , vN _ 2( K 2) } );
N ) v n ( X )= min (max {d ( K 1) ,v n - i( K 2) } ) .
K 1 r K 2 = X
Выражение K 1 U K 2 = K означает разбиение множества K на два подмножества K 1 11 K 2: K 1 nK 2 = 0 , K 1 UK 2 = K , в котором порядок подмножеств K 1 , K 2 полагается существенным.
Сокращение количества итераций в схеме 1 будем проводить в три последовательных этапа. Первые два сокращения, описываемые в разделах 2.1 и 2.2, очевидно следуют из отказа от учета порядка и различий на множестве исполнителей. Эти ссокращения если и не излагались ранее теоретически, то, вероятно, были учтены при написании соответствующих алгоритмов и программ. Третье сокращение, рассматриваемое в разделе 2.3, развивает идею «встречного» динамического программирования.
-
2.1. Отбрасывание множеств « малой » мощности
Начнем усечение схемы 1 с отказа от расчета таких значений vi ( K ), для которых справедливо |К| < i В этом случае вместо трэдовмного перебора подмножеств P ( K ) при вычислении соответствующего минимума, достаточно приравнять vi ( K ) значению vi - 1( K ), расчитанному на предыдущем шаге.
Схема 2
···
N - 1)
N )
VK с X V* ( K ) = d ( K );
∀K ⊆ X |
V * ( K ) = < |
min (max {d ( K 1) ,V * ( K 2) } ) , К i U K 2 = К _ V * ( K ) , |
если если |
|K|> 2 |K| < 2 |
, min ,. (max {d ( K 1) ,V * ( K 2) } ) , |
если |
|K| > 3 |
||
∀K ⊆ X |
v * ( K ) = * |
К 1 U K 2= К 2 |
||
_ V * ( K ) , |
если |
|K| < 3 |
∀K ⊆ X
vN ( X ) =
min (max{d(K),v*_2(K2)}) , vN- 1(K) = К1 UK2=Kv N 2V
VN - 2( K ) ,
|K| > N - 1:
|K|
,min (max {d ( K 1) ,vN - 1( K 2)})
К 1 U K 2= X
учитывая, что |X| > N.
Действительно, раз i > |K| , значит, по меньшей мере, один исполнитель остался без заданий. Пусть а Е Mi ( K ) — некоторое оптималг>иое распределение на Mi ( K ). обладающее в силу сказанного в разделе 1 стоимостью vi ( K ). Отбрасывая из этого распределения работника без заданий, получим распределение в Е Mi — 1( K ), содержащее тот же самый набор непустых подмножеств, что и а , а, значит, справедливо D ( а ) = D ( в )• Распределение в оптимально на Mi - 1( K ) (если бы это было не так и существовало бы распределение в Е Mi - 1( K ): D ( в ) < D ( в )■ т0- учитывая. что D ( а ) = D ( в ) п добавляя к в исполнителя без заданий, можно было бы получить распределение а' Е Mi ( K ): D ( а' ) < D ( а ), что противоречит оптимальности а ), следовательно, D ( в ) = vi - 1( K ), а, значит, и Vi ( K ) = vi — 1 ( K ).
-
2.2. Отбрасывание подмножеств « большой » мощности
Продолжим сокращение количества операций в итерационной схеме метода динамического программирования, взяв за основу теперь уже рекурсивную схему 2. Рассмотрим новую схему 3, в котором на каждом i -том шаге для всякого K С X будем искать минимум, перебирая только такие разбиения K = K 1 U K 2, в которых |K 1 | < |K|/i:
если |K| < 2:
если |K| > 3:
если |K| < 3:
N — 1)
N )
VK С X
VN - 1 ( K ) =
min к 1 U K 2 = к \ к 1 |<| K | / ( N - 1)
vN — 2 ( K ) ,
(max {d ( K 1 ) ,vN - 2 ( K 2 ) }) ,
|K| > N — 1:
|K| < N - 1:
vN X X ) = min v (max {d ( K i ) ,VN - 1 ( K 2 ) }) •
K 1 U K 2 = X \ к 1 \<\ X \ /N
Действительно, если на i -м шаге мощность множества K 1 превосходит величину |K|/i, значит, в распределении заданий множества K 2 между i — 1 исполнителем (стоимости которого соответствует функция v *— 1( K 2)) присутствует хотя бы одно подмножество мощности не более |K|/i. Меняя местами это подмножество и K 1, получим идентичное исходному распределение, которое встретится при переборе разбиений K 1 U K 2 = K , при этом будет выполнено |K 1 | < |K|/i. Запишем сказанное строго.
Докажем для начала простую техническую лемму, в которой будем писать и* =1 Ki = K, обозначая разбиение множества K на k подмножеств: UL1 Ki = K 11 Vi, j G 1 , k ( i = j ) ^ ( Ki^Kj = 0) . Порядок следования подмножеств в записи суммы полагаем существенным. В отличие от записи {K 1 ,..., K*} , где перечислялись только непустые подмножества, в записи U* =1 Ki = K всякое подмножество Ki может быть пустым.
Лемма 1. Пусть задано конечное мноснсество K С X: |K| > 1, функуия d из (1) и величина k G N: |K| > k. тогда min uk=1 Ki=к \K 1 \<\к\/k v
(max {d ( Ki ) } ) =
\ i E 1 ,k /
“^^
( )
✓
min к i с к \ K 1 \<\ K \ /k ^
( max d ( K 1 ) , min (max {d ( Ki ) } ) .
U k =2 K i = к \ к 1 i E 2 ,*
■^г"— ( * * )
✓
Доказательство. Пусть Uk =1 K 0 = K — разбиение K, доставляют,ее минимум в ( * ), причем |K 0 | < |K|/k. тогда ( * ) = max iE 1*{d ( K 0) } = max {d ( K 0 ) , max iE 2^ {d ( K 0) }} > ( ** ) . С другой стороны, если Uk =1 L 0 = K — разбиение K, доставляют, ее минимум в ( ** ), где в новь |L 0 | < |K|/k, тогда ( ** ) = max {d ( L 1 ) , max iE 2 *{d ( L 0) }} = max iE у*{d ( L 0) } > ( * ) . Из приведенных рассуждений следует, что ( * ) = ( ** ). □
Предложение 1. ( Vk G 1 , N — 1 , VK С X v * ( K ) = v ** ( K )) & ( vN ( X ) = vN * ( X )).
Доказательство. Пользуясь индукцией на номер шага k , покажем первую часть утверждения .
Б.И. k = 1 . VK С X v* * ( K ) = d ( K ) = v * ( K ). _______
Ш.И. Пусть для некоторого k G 1 , N — 1 справедливо: Vi G 1 , k — 1 , VK С X v * ( K ) = v ** ( K ). Покажем, что VK С X v* ( K ) = v ** ( K ). Рассмотрим произвольное подмножество K С X. Ес ли |K | < k, то по индукции и в силу схем 2 и 3 имеем v* ( K ) = v* - 1 ( K ) П=' v* — 1 ( K ) = v ** ( K ) . Пусть |K| > k. Величина v* ( K ) (будучи равна согласно рассуждениям раздела 2.1 величине v* ( K )) соответствует стоимости оптимального распределения заданий множества K среди k работников, а значит из определений (2), (3)
v* (K) = min uk=1 Ki=к
I max {d ( Ki ) } I .
V i E 1 ,*
Хотя бы одно подмножество из всякого разбиения и*=1 Ki = K должно иметь мощность, не превосходящую |K|/k, поскольку иначе и*=1 |Kj| > |K|. Правая часть (4) не зависит от порядка следования подмножеств в разбиении, а значит без ограничения общности подмножество, содержащее \K\/k элементов будем обозначать как K1, иными словами min
□ = =1 K i = K
( max {d ( Ki ) } ^ =
\ i E 1 ,k /
min max {d ( Ki ) } .
□ L1 K i = k V i c 1 ,k /
\ K 1 \<\ K | /k
Согласно лемме min
□ = =1 K i = к \ K 1 \<\ к \ /k
(max {d ( Ki ) } ^ = \ i E 1 ,k
min
K 1 E K \ K 1 \<\ K \ /k
max
d ( K 1 ) ,
min (max {d ( Ki ) } )
□ = =2 K i = K \ K 1 i E 2 ,k
li
Величина vk-1(K \ K1) совпадает co стоимостью оптимального распределения заданий мно жества K \ K1 между k — 1 исполнителем, а значит min
K 1 E K \ K 1 \<\ K \ /k
max
d ( K 1 ) ,
min (max {d ( Ki ) } )
□ = =2 K i = K \ K 1 i E 2 ,k
=
min
K 1 E K \ K 1 \<\ K \ /k
(max { d ( K 1 ) , v k- 1 ( K \ K 1 )})
По индукции имеем min
K 1 E K \ K 1 \<\ K \ /k
(max { d ( K 1 ) ,vk - 1 ( K \ K 1 )})
min
K 1 E K \ K 1 \<\ K \ /k
(max { d ( K 1 ) ,vk - 1 ( K \K 1 )})
и, наконец, из схемы 3
min (max { d ( К 1 ) , v *- 1 ( К \ К 1 )}) = v*k * ( К ) .
K 1 E K
\ K 1 \<\ K \ /k
Вторая часть утверждения vN ( X ) = vN * ( X ) доказывается аналогично при k = N,K =
X. □
-
2.3. Сокращение числа « слоев »
Покажем, наконец, что в схеме 3 вычисления достаточно проводить лишь «до середины»: для i < V = [( N — 1) / 2] + 1. Запишем суженную таким образом схему 4.
С х е
м
а 4
VK C X
VK с X
v k * ( K ) = d ( K )
min,(max {d ( K 1) ,v ** ( K 2) } ) , ec.ли \K \ > 2;
** ( TZX K1 ^K2= K v2 (K) = \K 1 \<\K\/2
v Г ( K ) ,
если \K\ < 2;
. . .
V )
VK с X
VK C X
v 3 * ( K ) =
vV * ( K ) =
min K 1 □ K 2 = K \ K 1 \<\ K \ / 3
v ** ( K ) ,
(max {d ( K 1 ) ,v ** ( K2)} ) ,
min K 1 □ K 2 = K \ K 1 \<\ K \ /V
если \K\ > 3;
если \K\ < 3;
(max {d ( K 1 ) ,vV - 1 ( K 2 ) }) ,
если \K\ > V;
vV *- 1 ( K ) ,
если \K\ < V.
Дополним схему 4 последним шагом vN* (X) = min max {vV* (К1) ,v**-v (К 2)}. (5)
K 1 U K 2 = X
В силу того, что N — V < V, оба выражения vV * ( К 1) и v* _ v ( К 2) конструктивно определены из итерационной схемы 4 для всех К 1 , К 2 С X.
Предложение 2. Величина v*** ( X ) выраснсает стоимость оптимального распределения на M* ( X ).
Доказательство. Рассмотрим произвольное распределение а £ M* ( X ): L* =1 Li = X. Разобьем распределение а на две части а 1: ui =i Li = X 1 и а 2: L* v +1 Li = X 2, г де X 1 = U V =1 Li 11 X 2 = U * v +1 Li. В таких обозначениях очевидно X 1 L X 2 = X, а 1 £ M v ( X 1) , а 2 £ M* - v ( X 2) , и. как следствие, учитывая определение (2). имеем D ( а ) = max {D ( а 1) , D ( а 2) }.
Учитывая, что а 1 £ M v ( X 1), а 2 £ M* - V ( X 2), а согласно предложению 1 величины v ** ( X 1) и v* _ v ( X 2) совпадают со стоимостями оптимальных распределений на M v ( X 1) и M n - V ( X 2) соответственно, получаем неравенства D ( а 1) > vV * ( X 1) и D ( а 2) > v* _ v ( X 2), а значит имеем
D ( а ) = max {D ( а 1) , D ( а 2) } > max {vV * ( X 1) , v* - v ( X 2) } >
।min max{vv*(к1) ,vN*-v(К2)} = v***(X), K1 UK 2= X справедливое для всякого а £ M* (X).
Итак, стоимость всякого а £ M* ( X ) не менее v* * ( X ). Покажем, что найдется а о £ M* ( X ): D ( а 0) = v* * ( X ) . Пусть на множествах К 0 11 К 0 = X \ Ку достигается минимум правой части выражения (5). Пусть далее а 0 — оптимальное распределение на M v ( К 0): Li =1 L 1 = К 0. а а 0 — оптимальное распределение на M* - V ( К 0): L* - V L 2 = К 0. Учитывая, что К 0 L К 0 = X, составим распределение а 0 £ M* ( X ): ( LV =1 L 1) Ц( L* - VL 2) = К 0 L К 0 = X. По построению
D ( а 0) = max {D ( а 0) , D ( а 2) } = max {vV * ( К 0) ,v* *- v ( К 0) } =
।min max {vV * ( К 1) ,v* - V ( К 2 ) } = vN * ( X ) .
K 1 U K 2 = X
z
3. Сравнение числа операций
Проведем численное сравнение количества « единичных: операций » , требующихся для расчета стоимости оптимального распределения заданий из множества X среди N исполнителей с использованием схем 1 и 4. Единичной операцией будем считать взятие максимума из двух чисел. Именно такие операции составляют основу вычислений в схемах 1 и 4 на всех шагах, следующих за первым. Число иных операций в обеих схемах будем считать пропорциональным числу единичных операций.
Пусть далее |X| = п. На каждом из шагов 2 ,..., N — 1 схемы 1 перебираются всевозможные подмножества К С X. Для всякого i £ 0 , п существует СП подмножеств К мощности i. Для всякого подмножества К : |К| = i сутнествует 2 i ра:?>биепий вида К 1 L К 2 = К. каждому из которых соответствует одна единичная операция. Таким образом, суммарное число единичных операций на шагах 2 ,... ,N — 1 схемы 1 можно записать в виде
n
-
( N — 2) £ 2 iCn.
i =0
Таблица
Сравнение числа операций в различных вариантах МДП
n |
Классический |
Встречный |
Отношение |
10 |
178171 |
47316 |
3,765 |
12 |
1598419 |
412110 |
3,878 |
14 |
14365291 |
3588409 |
4,003 |
16 |
129205699 |
31307602 |
4,126 |
18 |
1162523611 |
273844200 |
4,245 |
20 |
10461401779 |
2401589556 |
4,356 |
22 |
94147373131 |
21113768572 |
4,459 |
24 |
847305386659 |
186039820510 |
4,554 |
26 |
7625664593851 |
1642544688531 |
4,642 |
28 |
68630645800339 |
14527969382181 |
4,724 |
30 |
617674470025771 |
128701822410531 |
4,799 |
100 |
1,546е+048 |
2,721е+047 |
5,681 |
250 |
5,720е+119 |
9,828е+118 |
5,820 |
На последнем шаге производится перебор 2 n подмножеств множества X, каждому из которых вновв соответствует одна единичная операция. Итоговое количество единичных операций в схеме 1 можно выразить формулой
2 n + ( N — 2) Е 2 iCn.
i =0
В схеме 2 на всяком шаге j Е 2 ,..., N — 1 исключается расчет значений функции Vj ( K ) в случае, когда количество распределяемых заданий \К | превосходит числ о исполнителей j
N -1 ( nх
2 n +
ЕЕ 2 с }• j=2 1 i=j
Далее, в схеме 3, исключая на j -том шаге из рассмотрения все разбиения K i U K 2 = K , где \К 1 | > \K\/j. имеем
[n/N] N-1 z n /[
Е cn + Е ЕД -БсП}• k =0 j =2 i = j k =0
Наконец, сужая количество насчитываемых слоев, в схеме 4 имеем:
[( N - 1) / 2]+1 n [ i/j ]
-
2 n + Е ЕД - Е Д •
j =2 i = j k =0
В таблице п как и прежде обозначает количество распределяемых заданий; количество исполнителей N принимается равным 5; в колонке « классический » представлено значение функции (6); в колонке « встречный » - значение функции (7); в колонке « отношение » приводится отношение величины (6) к величине (7) для соответствующего значения п.
Работа проводилась при финансовой поддержке РФФИ (гранты 10-08-004 84-а, 10-01-96020-р-урал-а) и программы Президиума УрО РАН (проект 09-П-1-10Ц).
Список литературы Метод динамического программирования в минимаксной задаче распределения заданий с равноценными исполнителями
- Беллман, Р. Динамическое программирование/Р. Беллман. -М.: Изд-во иностр. лит., 1960. -400 с.
- Ченцов, А.Г. Экстремальные задачи маршрутизации и распределения заданий: вопросы теории/А.Г. Ченцов. -М.: РХД, 2007. -240 с.
- Held, M. A Dynamic Programming Approach to Sequencing Problems/M. Held, R.M. Karp//J. of the Society for Industrial and Applied Mathematics. -1962. -V. 10, № 1. -P. 196-210.
- Karp, R.M. Dynamic programming meets the principle of inclusion and exclusion/R.M. Karp//Oper. Res. Lett. -1982. -№ 1 (2). -P. 49-51.
- Иванко, Е.Е. Критерий устойчивости оптимального маршрута в задаче коммивояжера при добавлении вершины/Е.Е. Иванко//Вестн. Удмурт. ун-та. Математика. Механика. Компьютерные науки. -2011. -№ 1. -С. 58-66.
- Иванко, Е.Е. Достаточные условия устойчивости в задаче коммивояжера/Е.Е. Иванко//Тр. Ин-та математики и механики УрО РАН. -2011. -№ 3. -С. 155-168.
- Иванко, Е.Е. Об одном подходе к решению задачи маршрутизации перемещений с несколькими участниками/Е.Е. Иванко, А.Г. Ченцов, П.А. Ченцов//Изв. РАН. Теория и системы управления. -2010. -№ 4. -С. 63-71.
- Коротаева, Л.Н. Об одной задаче о назначениях/Л.Н. Коротаева, Э.М. Назаров, А.Г. Ченцов//Журн. вычисл. математики и мат. физики. -1993. -Т. 33, № 4. -С. 483-494.
- Ченцов, А.Г. К вопросу о построении процедуры разбиения конечного множества на основе метода динамического программирования/А.Г. Ченцов, П.А. Ченцов//Автоматика и телемеханика. -2000. -№ 4. -С. 129-142.
- Алексеев, О.Г. Комплексное применение методов дискретной оптимизации/О.Г. Алексеев. -М.: Наука, 1986. -247 c.
- Gutin, G. The Traveling Salesman Problem and Its Variations/G. Gutin, A. Punnen. -Berlin: Springer, 2002. -850 p.