Однако немаловажно разнообразие особей, представленных в родительском пуле, т. к. оно имеет непосредственное влияние на эффективность операторов скрещивания. Влияние этого критерия на скорость поиска оптимального решения зависит от размера популяции и мощности множества, в
котором происходит поиск решения. Чем большей становится область поиска, тем значительнее становится влияние этого критерия. Также, исходя из значения разнообразия родительского пула, можно сделать вывод о необходимом размере популяции и родительского пула.
СПИСОК ЛИТЕРАТУРЫ
1. Chellapilla, K. Combining Mutation Operators in Evolutionary Programming [Text] / K. Chellapilla // IEEE transactions on Evolutionary Computation. -1998. -Vol. 2. -№ 3. -P. 91-96.
2. Fogel, L. Artificial Intelligence through Simulated Evolution [Text] / L. Fogel, A. Owens, M. Walsh -NY: Wiley, 1966.
3. Naidoo, A. The Induction of Finite Transducers Using Genetic Programming [Электронный ресурс] / A. Naidoo, N. Pillay // Proc. of Euro GP. Springer, 2007. -Режим доступа: http://saturn.cs.unp.ac.za/~nelishiap/ papers/eurogp07.pdf
4. Емельянов, В.В. Теория и практика эволюци-
онного моделирования [Текст] / В.В. Емельянов, В.В. Курейчик, В.М. Курейчик. -М.: Физматлит, 2003. -С. 432.
5. Найханова, Л.В. Технология создания методов автоматического построения онтологий с применением генетического и автоматного программирования [Текст] / Л.В. Найханова. -Улан-Удэ: Изд-во БНЦ СО РАН, 2008. -244 с.
6. Поликарпова, Н. Автоматное программирование [Текст] / Н. Поликарпова, А. Шалыто. -СПб.: Питер, 2009. - 176с.
7. Рабочая книга социолога [Текст]. -М.: Наука, 1977. -С. 257-297.
УДК 519.6
А.Г. Ченцов, П.А. Ченцов
МАРШРУТИЗАЦИЯ ПЕРЕМЕЩЕНИЙ С ОГРАНИЧЕНИЯМИ И НЕСТАЦИОНАРНЫМИ ФУНКЦИЯМИ СТОИМОСТИ
Рассматривается задача о посещении конечной системы мегаполисов при условии выполнения (внутренних) работ в период каждого посещения и ограничениях в виде условий предшествования (условия типа «одно после другого»). Имеется особенность в задании функций стоимости внешних перемещений и внутренних работ: упомянутые функции зависят от номера в очереди. Данный номер можно интерпретировать как дискретное время, что позволяет трактовать названную особенность как своеобразную нестационарность. Эта нестационарность может быть, в частности, связана с приоритетами клиентов, заинтересованных в обслуживании мегаполисов. В этой конкретизации клиенты могут в своей совокупности рассматриваться как система с противоречивыми интересами участников. Исполнитель, осуществляющий серию работ, сопровождающихся внешними перемещениями, оптимизирует систему возникающих
затрат (издержек) в условиях ограничений и противоречий, порождаемых претензиями клиентов.
Возможны и другие конкретизации рассматриваемой ниже общей постановки. В частности, допускаются случаи, когда номера в очереди соответствуют фактическим моментам времени, а упомянутая выше нестационарность отвечает динамике меняющихся состояний среды, в которой реализуются перемещения. Допускается также случай, когда номера в очереди определяют всякий раз промежуток реального времени, в течение которого осуществляются работы в пределах того или иного мегаполиса при однородных способах оценивания затрат (уровнях цен). Здесь «момент» является укрупненным представлением промежутка, естественным для уровня макрозадачи, касающейся организации внешних перемещений и увязки с внутренними работами посредством выбора пунктов прибытия и отправления.
В статье представлен оптимальный алгоритм маршрутизации, построенный на основе экономичной модификации динамического программирования, причем снижение вычислительных затрат осуществляется за счет рационального учета ограничений (условий предшествования). Алгоритм реализован на ПЭВМ с использованием элементов параллельной структуры.
Излагаемые ниже результаты анонсированы в [1].
Постановка задачи
Введем сначала некоторые общие обозначения, используя сокращения: ДР - допустимое решение; МДП - метод динамического программирования; ПМ - подмножество; УП - упорядоченная пара. Через := обозначаем равенство по определению.
Семейством называется множество, все элементы которого сами являются множествами. Если h - объект, то {И} есть def одноэлементное множество, содержащее И. Для любых двух объектов х, у через (х, у) обозначаем УП [3] с первым элементом х и вторым элементом у. Если даны три объекта и, V и м>, то (и, V, м>):= ((и, V), м>) - триплет. В этой связи отметим соглашение [4, гл. 1, раздел 3]: для любых множеств А, В и С полагается, что А х В х С := (А х В) х С . Если г есть УП, то через рг1 (г) и рг2 (г) обозначаем первый и второй элементы г, однозначно определяемые условием г = (Р1 (г), рг2 (г)); если г е А х В , где А и В -множества, то рг1 (г) е А и рг2 (г) е В. Если и, V и - множества, р еи х V и д еW, то в силу упомянутого выше соглашения [4] (р, q) е и х V х W. Для всякого множества 5" через Fm(5) обозначаем семейство всех непустых конечных ПМ 5. Каждому непустому конечному множеству К сопоставляем мощность | К |е N, где N := {1; 2; ...}; полагаем | 01:= 0.
В дальнейшем Я - вещественная прямая, [0,<»[:= {Е, е Я | 0 < Е} (неотрицательная полуось), N0:= {0} и N = {0; 1; 2; ...} и
к~1 := {' е ^|(к < /)&(/ < I)} Ук еN0 VI е N0.
Тогда 1, п = {' е N \ ' < п} Уп е N . Если К-непустое конечное множество, то через (Ы)[К] обозначаем множество всех биекций [5] «промежутка» 1,| К | на К. Напомним, что перестановкой непустого множества А называется всякая биек-ция А на себя.
Всюду в дальнейшем фиксируем число N е N,
2 < N, непустое множество X, точку х° е X, а также множества
М1 е Fin(X), ..., Мы е Fin(X), именуемые мегаполисами. Предполагается, что х0 й иМ1 и, кроме того, Ур е Уд е 1, N " (р * д) ^ (Мр п Мд =0).
Для дальнейшего удобно ввести (конечное) множество
N
X := {х0} и (иМ1) е Fin(X).
1=1 '
Ниже рассматриваются перемещения в X. Полагаем, что Р := (Ы)[1, N]; если а е Р, то через а-1 обозначаем перестановку, обратную к а : а-1 еР и
а-1 (а(5)) = а(а_1 (5)) = 5
В терминах множества К, К определяются условия предшествования: перестановка а е Р (т. е. маршрут) допустима по предшествованию, если У г е К Vtl е\,Ы е 1, N
((а(^) = рг (г)) & (а^) = рг2 (г))) ^ (^ < ^).
Итак, элементы К - суть УП индексов, именуемые адресными; для каждой адресной пары первый элемент называем отправителем, а второй - получателем. Требуется, чтобы каждый отправитель (точнее мегаполис с индексом отправителя) посещался ранее соответствующего получателя. Тогда А := {а е Р | а-1 (рг1 (г)) < а-1 (рг2 (г)) У г е К} есть множество всех маршрутов а е Р, допустимых по предшествованию. Полагаем в дальнейшем, что для всякого непустого множества К0, К с К , непременно Зг0 е К0 : рг1 (г0) * рг2 (г) Уг е К0.
Тогда, как показано в монографии [2, раздел 2.2], А * 0. Итак, в рассматриваемом случае допустимые маршруты существуют. Нам потребуются также трассы (траектории), согласованные с тем или иным маршрутом. Речь идет при этом о перемещениях вида
х° ^ (х1Д е Ма (1) ^ х1,2 е Ма (1)) ^ ... (1)
... ^ (^,1 е Ма(N) ^ ^,2 е Ма(N)Х
где перемещения в круглых скобках отвечают внутренним работам; фрагменты внутренних работ связываются внешними перемещениями. Разумеется, в (1) требуется, чтобы а е А. В терминах (1) определяются допустимые трассы со звеньями, определяемыми посредством УП
г1 = (х1,1, х1,2), ..., гN = (х N ,1 , XN,2^.
Этот кортеж дополняем начальной УП
г0 := (х0, х0), полагая, что х0 = х0 (в дальнейшем обозначение х0 понимается только в упомянутом смысле). Возвращаясь к (1), полагаем далее, что для всякого а е А 2а есть def множество всех кортежей (х,) — : 0, N ^ X х X, для каждого из
которых х0 = X0 и 2. е Ма( .) х Ма( .)
разумеется, 2а есть непустое конечное множество. Каждую УП К (2 )е 0N X'а е A, (х, )еС^ е 2 а » будем называть допустимым решением (ДР) формулируемой ниже задачи маршрутизации.
Мы намеренно игнорируем сейчас описание перемещений при выполнении внутренних работ, которые могут иметь достаточно сложную структуру; в (1) определены, собственно говоря, скач-
^И Х1,1 ^ Х1,2, ..., XN,1 ^ XN,2.
Появление данных скачков связано как раз с работами, которые (на макроуровне) не детализируются, что позволяет, не проигрывая в качестве, построить работоспособный алгоритм с учетом естественной иерархии: внутренние работы относятся к задачам нижнего уровня, а перемещения (1) - к задаче верхнего уровня (макрозадаче). При этом используется аддитивный способ агрегирования затрат, а тогда при решении задач нижнего уровня можно ограничиться оптимальными режимами, при которых упомянутым выше скачкам можно сопоставить экстремумы стоимостей соответствующих внутрешшх работ. Последние могут быть несложными и тоща pN шение задач нижнего уровня очевидно и может быть сразу отражено в виде стоимостей скачков х^ ^ х5 2, где 5 е 1, N. В других случаях «внутренние» задачи могут потребовать разработки специальных методов решения, но во всех случаях иерархический подход представляется полезным (см., например, [6, 7]). В настоящей статье основное внимание уделяется решению макрозадачи.
Введем три типа функций стоимости: стоимости внешних перемещений, внутренних работ (имеются в виду экстремумы задач нижнего уровня) и терминального состояния. Функции первого типа суть
е1 : X хМ1 х ёд ^ [0,<»[, ...,
(2)
..., еN : XхМд х 1,N ^ [0,<»[.
Если 5е1, N хе X, уе М5 и t е1, N то С5 (х, у, t) есть стоимость перемещения из х в у, завершаемого «в момент» t. Индекс 5 используется для указания того, что оценивается перемещение на мегаполис М; зависимость от t существенна и
может, в частности, отражать желания клиента, заинтересованного в обслуживании М.
Для оценивания внутренних работ используются функции
С :М1 хМ1 х1,N ^ [0,<»[, ... ..., CN : MN х MN х1,N ^ [0, <»[.
(3)
Если 5 е1, N, х е , уе и ?е 1, N , то С (х, у, t) оценивает внутренние работы в пределах М, осуществляемые «в момент» t при условии, что (см. (1)) х есть пункт прибытия на М , а у - пункт отправления; в наиболее логичном варианте с5 (х, у, t) есть экстремум внутренних затрат при фиксации х и у («рабочий» вариант, реализуемый в (1), имеет при ] е 1 , N следую щий вид: 5 = а(/), х = х]Л, у = х/ 2, 1 = ] ). Для оценивания терминального состояния используем функцию
N
/: иМ, ^ [0,«>[.
1=1
Заметим, что функции е, ..., ем, С,..., си являются по существу объемными матрицами, а / сводится к вектору. Если а е А и (г1) — е 2а , то полагаем, что
П(а, (^ ),е) := Е Са(/) (ег2 (х,-1 ), ег1 (х, X t) +
г=1
N
+ Е Са(»)(х«, t) + f (еГ2(XN )).
(4)
В правой части (4) выделены три существенных компоненты аддитивного критерия, связанные с оцениванием внешних перемещений, внутренних затрат и терминального состояния. В качестве основной рассматриваем задачу
П^ (х, ),е^ ) ^ mln, а е А (х Хе^ 6 2а . (5) Напомним, что множество ДР непусто и конечно; задаче (5) сопоставляется значение
V := т т тт П(а,(7,) —^[0,<»[ (6)
аеА (х, )„ 07, 6 2а ' 6
и непустое множество оптимальных решений (имеются в виду ДР (а0,(х°).е^), где а0 е А и
(х'0),е О^ е 2а0 , для котор^1х П^Ю,^) = У ). Наша цель - нахождение V и какого-либо оптимального ДР.
В [1] изложена схема решения на основе широко понимаемого МДП; особо отметим теорему 1 работы [1] (доказательство теоремы получается естественной комбинацией конструкций [6, 8]), доставляющую уравнение Беллмана, а также эко-
номичную вычислительную процедуру (см. [1, раздел 3]), не предусматривающую построение всего массива значений функции Беллмана. В настоящей статье ограничимся алгоритмической стороной дела, связанной с упомянутой вычислительной процедурой. Итак, рассмотрим алгоритм на функциональном уровне.
Слои функции Беллмана. Функция Беллмана [1] определена на множестве Pos := X х N, где N - семейство всех ПМ 1, N. Элементы Pos (а это УП) именуем позициями. Мы, однако, сразу будем выделять конечный набор ПМ Pos, на которых рекуррентно определяются функции, являющиеся, как показано в [1], сужениями настоящей функции Беллмана.
Пусть G := {K е N. | Vz е K (pr^z) е K) ^ ^ (pr2(z) е K)}, где N. - семейство всех непустых ПМ 1,N, то есть N. := N \ {0};
Gs : = {K е G | 5 = K |} Vs e^N.
При Kj := {prj (z): z е K} имеем G1 = { {t}: : t е 1,N \ Kj} ; GN = {\Ñ} ^(^дноэлемеь^т-ное семейство). Следуя [2], вводим оператор вычеркивания I: N. ^ N., полагая при K е N., что I(K):= K \{pr2(z): z е S[K]}, где S[K] := {z е K | (pr (z) е K) & (pr2 (z) е K)}. Кроме того, из результатов [9, 10] следует, что G= {K \ { j}: K е G,, j е I(K)} Vs е 2^.
Определяем M в виде объединения всех множеств i е1,N\Kj. Тогда D0 := {(x,0): x е M},DN := {(x0,!,^)} суть крайние слои пространства позиций. Если s е 1, N -1 и K е Gs, то последовательно определяем множества J (K): = {j е!^ \ K |{ j} и K е G 5+1} и Ms [K] := U Mt, после чего вводим клетку
ieJs (K)
Ds [ K ] := {(x, K): x е Ms [ K ]}. Тогда полагаем, что Ds := U Ds [K] Vs е 1, N-1.
Итак, построены множества D0,D1, ..., DN; каждое из них есть непустое ПМ множества Pos. Получили слои пространства позиций. Далее определяем функции
Vo: Do ^ [0, <4, (7)
Vx: D, ^ [0,<[, ..., Vn : DN ^ [0,<[ посредством рекуррентной процедуры. Итак, полагаем, что
V0(x,0):= f (x) Vx е M, (8)
получая (в виде (8)) функцию на D0. Если s е1, N, то преобразование Vs-1 в Vs задается правилом
К ( x K ) := m in min ( x, РГ1 ( z)
jeI(K) zeMj хМ. J
N-1 KI +1) + Cj (z, N-1KI +1) + (9)
+К-1 (pr2(z),K\{j})] V(x,K) e Ds;
учитываем здесь, что (см. монографию [2, раздел 4.9]) при (u,U ) e Ds, tel (U) и veM, непременно (v,U \{t}) e Ds1. Заметим, что [1] V = VN (x0,1, N), тогда из (9) вытекает, что
V = min min [c (x0,pri(z),1) +
jeI(1,N) zeM. хМ. j 1 (1U)
+Cj ( z,1) + Vn-,(pr2( z ),1,N \{j})].
Построение оптимального решения. Полагаем далее z 0 := z0. Считаем, что все слои функции Беллмана построены на основе (8), (9). Приступаем к построению (оптимального) ДР. Для этого, используя (10), выбираем k e 1(1, N) и Zj e Mk х Mk , для которых
V = сц( x°, Pr1 (z1),1) + ck (z1,1) + (11)
+ Vn^(zjXN\{Ц}).
Осуществляем перемещение (x0, 1, N) ^ ^ (p^y, N \{^}), где
(p^XW\{^}) e Dn-1. (12)
Используем (9) в условиях, когда s = N -1, а ( x, K ) есть позиция (12): выбираем k2 e I(l,N \{k }) и z2 e Mk х Mk ,длякоторых
Vn^p^),^\{^}) =
= Ck 2 (pr (Z1 ), pr (z 2),2) + (z 2,2) + (13)
+Vn-2(pr2(z 2)1N \{k j : je 1,2}).
Заметим, что из (11), (13) следует, в частности, что
V = Ck1 ( x0 ,pi1 (z 1),1) + Ck2 (pr2 (z 1),
pr1 (z 2 X 2) + Ckt (z1,1) + Ck2 (z 2,2) +
+Vn^(p^XÏN \{kj : j e 1,2}) =
2 (14)
= Z Ck, (pr2 (zt-1),pr1 (zt), 1 ) +
t=1
+£ Ckt (zt, t) + Vn-2 (pr2 (z2),1N \{kt : t e 1,2}),
t=1
где (pr ^XÏN \{k t : te 1,2}) = (pr2(z 2),ÎN \ \ {k1;k2}) e D-2. Если N = 2, то в силу (8) оптимальное решение уже построено. Если N > 2, то упомянутую выше процедуру выбора локальных решений на основе (9) следует продолжать вплоть до исчерпывания списка 1, N.
4
Вычислительный эксперимент
Для вычислений использовалась программа, написанная на Microsoft Visual C++ 2005. Вычисления производились на ПЭВМ с процессором Intel i7-2630QM с 8 Гб оперативной памяти, работающей под управлением Windows 7.
В настоящем разделе исследуется модельный пример ОЗМ. Речь пойдет о плоской задаче маршрутизации: имеется в виду случай X = R х R . На плоскости фиксируется база x0 = (0,0). В качестве р : X х X ^ [0, <х)[ используем функцию евклидова расстояния: при x1 е X и x2 е X число р( xj, x2) есть евклидово расстояние между плоскими векторами xj и x2.
Полагаем, что N = 27. Каждый мегаполис M , i е 1,27, задается равномерной сеткой на окружности радиуса 7,5. Полагаем, что |Mi | = 50, i e 1,27. Центры окружностей определены на плоскости случайным образом, но так, что получающиеся при этом мегаполисы не пересекаются и не содержат базу. Точки M можно рассматривать как входы-выходы в помещение, в пределах которого исполнителю следует достичь заданной точки и, выполнив там некоторое действие, покинуть помещение, вновь используя один из портов (возможно, тот же, через который был произведен вход). В пределах каждой окружности случайным образом выбирается упомянутая точка -так называемый «рубильник», с которым связано выполнение внутренних работ. Цель внутренних
работ - приведение в действие «рубильника», связанного с каждым мегаполисом. Фиксируем точки а, е X, ' е 1,27, определяющие положения «рубильников».
Далее вводятся непосредственно функции стоимости. Полагаем, что при каждом 5 е 1,27 функция С5 определяется условием: при х е X , у е М5 и t е 1,27
С, (х, у, t) = р( х, у)(1,1 + s1n(t)).
Стоимости внешних перемещений определены. Для оценивания внутренних работ используются функции с,., ' е 1,27, определяемые следующим образом: если 5 е1,27, хеМ5, уеМх и t е 1,27 , то
с^ (х, у, t) = р( х, а! )(1,1 + ^^)) + +р(а,, у )(1,1 + ^^)).
Наконец, функцию fотождествляем с евклидовой нормой на плоскости X. Таким образом, определены функции стоимости е1, ..., е27, с1, ..., с27, f.
Что касается точных координат мегаполисов и «рубильников» - они не приводятся с целью экономии места (как и полученный в ходе решения маршрут).
Получены следующие результаты: V = = 1424,36; время счета 3 ч 25 мин 32 с. Результат отображен на рисунке. Тонкими стрелками показан маршрут движения, толстыми - адресные пары.
Результаты работы алгоритма
В статье предлагается метод построения оптимального решения маршрутной задачи о посещении системы мегаполисов, осложненной ограничениями и необходимостью выполнения тех или иных работ в пределах упомянутых мегаполисов. Решение базируется на идеях динамического программирования. При этом используется специальный метод, позволяющий ограничиться частичным построением массива значений функции Беллмана за счет использования условий предшествования, моделирующих ограничения, типичные для многих инженерных задач (применения развиваемых методов могут быть связаны, в частности, с проблемой снижения облучаемости персонала АЭС при выполнении комплекса работ в условиях повышенной радиации (см. [11]).
Рассматриваемая постановка восходит на идейном уровне к известной труднорешаемой задаче коммивояжера [12-14], для которой в [15, 16] построен вариант МДП; отметим также метод ветвей и границ (см. [17]). Существенные особенности рассматриваемой в настоящей работе задачи связаны с наличием ограничений, многовариантностью на этапах перемещений между мегаполисами и включением (в постановку) фрагментов внутренних работ. Построенный в статье оптимальный алгоритм реализован в виде стандартной программы на ПЭВМ с элементами параллельной структуры, позволяющей решать задачи умеренной размерности с большим числом ограничений в виде условий предшествования.
СПИСОК ЛИТЕРАТУРЫ
1. Ченцов, А.Г. Динамическое программирование в одной нестационарной задаче маршрутизации [Текст] / А.Г. Ченцов, П.А. Ченцов // Известия Ин-та математики и информатики УдГУ -2012. -Вып. 1 (39). -С.151-154.
2. Ченцов, А.Г. Экстремальные задачи маршрутизации и распределения заданий: вопросы теории [Текст] / А.Г. Ченцов. -М. -Ижевск: НИЦ «Регулярная и хаотическая динамика»; Ижевский институт компьютерных исследований, 2008. -240 с.
3. Куратовский, К. Теория множеств [Текст] / К. Куратовский, А. Мостовский. -М.: Мир, 1970. -416 с.
4. Дьедонне, Ж. Основы современного анализа [Текст] / Ж. Дьедонне. -М.: Мир, 1964. -430 с.
5. Кормен, Т. Алгоритмы: построение и анализ [Текст] / Т. Кормен, Ч. Лейзерсон, Р. Ривест. -М.: МЦНМО, 1999. -960 с.
6. Ченцов, А.А. Экстремальная задача маршрутизации перемещений с ограничениями и внутренними потерями [Текст] / А.А. Ченцов, А.Г. Ченцов, П.А. Ченцов, // Известия вузов. Математика. -2010. -№ 6. -С. 64-81.
7. Ченцов, А.А. Обобщенная задача курьера с неоднородными внутренними работами [Текст] / А.А. Ченцов, А.Г. Ченцов // Алгоритмы и програм. средства параллел. вычислений. -Екатеринбург: Изд-во УрО РАН, 2011. -Вып. 11. -С. 80-109.
8. Тонков, Л.В. К вопросу оптимального выбора маршрута в условиях временного дисконтирования [Текст] / Л.В. Тонков, А.Г. Ченцов // Кибернетика и систем. анализ. -1999. -№ 1. -С. 95-106.
9. Григорьев, А.М. Динамическое программирование в обобщенной задаче курьера с внутренними работами: элементы параллельной структуры [Текст] / А.М. Григорьев, Е.Е. Иванко, А.Г. Ченцов // Моделирование и анализ информационных систем. -Ярославль,
2011. -Т. 18. -№ 3. -С.101-124.
10. Ченцов, А.Г. Одна параллельная процедура построения функции Беллмана в обобщенной задаче курьера с внутренними работами [Текст] / А.Г. Ченцов // Автоматика и телемеханика. -2012. -№ 3. -С. 134-149.
11. Сесекин, А.Н. Использование метода динамического программирования для оптимизации траектории перемещения работников в радиационно-опасных зонах с целью минимизации облучения [Текст] / А.Н. Сесекин, О.Л. Ташлыков, С.Е. Щеклеин, М.Ю. Куклин, А.Г. Ченцов, А.А. Кадников // Известия вузов. Ядерная энергетика. -2006. -№ 2. -С. 41-48.
12. Меламед, И.И. Задача коммивояжера. Вопросы теории [Текст] / И.И. Меламед, С.И. Сергеев, И.Х. Сигал // Автоматика и телемеханика. -1989. -№ 9. -С. 3-34.
13. Меламед, И.И. Задача коммивояжера. Точные алгоритмы [Текст] / И.И. Меламед, С.И. Сергеев, И.Х. Сигал // Автоматика и телемеханика. -1989. -№ 10. -С. 3-29.
14. Меламед, И.И. Задача коммивояжера. Приближенные алгоритмы [Текст] / И.И. Меламед, С.И. Сергеев, И.Х. Сигал // Автоматика и телемеханика. -1989. -№ 11. -С. 3-26.
15. Беллман, Р. Применение динамического программирования к задаче о коммивояжере [Текст] / Р. Беллман // Кибернетический сборник. -М.: Мир, 1964. -Т. 9. -С. 219-228.
16. Хелд, М. Применение динамического программирования к задачам упорядочения [Текст] / М. Хелд, Р.М. Карп // Кибернетический сборник. -М.: Мир, 1964. -Т. 9. -С. 202-218.
17. Литл, Дж. Алгоритм для решения задачи о коммивояжере [Текст] / Дж. Литл, К. Мурти, Д. Суини, К. Кэрел // Экономика и математические методы. -1965. -Т.1. -Вып. 1. -С. 94-107.