Вы находитесь на странице: 1из 179

А. В.

Лежнёв

Динамическое
программирование
в экономических
задачах
4-е издание, электронное

Рекомендовано
Учебно-методическим
объединением по образованию
в области прикладной информатики
в качестве учебного пособия для студентов
высших учебных заведений

Москва
Лаборатория знаний
2020
УДК 519.8+330
ББК 22.19: 65.053
Л40

Лежнёв А. В.
Л40 Динамическое программирование в экономических зада-
чах : учебное пособие / А. В. Лежнёв. — 4-е изд., электрон. —
М. : Лаборатория знаний, 2020. — 179 с. — Систем. требования:
Adobe Reader XI ; экран 10".— Загл. с титул. экрана. — Текст :
электронный.
ISBN 978-5-00101-682-3
Изложен принцип оптимальности и базирующийся на нем метод
динамического программирования решения задач управления мно-
гошаговыми процессами, разобран ряд примеров решения типовых
задач экономического содержания, рассмотрены обобщения класси-
ческого принципа оптимальности и метода динамического програм-
мирования на случай задач из теории графов. Контрольные вопросы
и задачи позволят закрепить полученные знания теоретического
материала и обрести навык самостоятельного решения задач, дадут
возможность использовать пособие для работы на практических
занятиях.
Для студентов экономических специальностей вузов, а также для
студентов технических специальностей, изучающих соответствую-
щий раздел математического программирования.
УДК 519.8+330
ББК 22.19: 65.053

Деривативное издание на основе печатного аналога:


Динамическое программирование в экономических задачах :
учебное пособие / А. В. Лежнёв. — М. : БИНОМ. Лаборатория
знаний, 2006. — 176 с. : ил. — ISBN 5-94774-344-2.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений,


установленных техническими средствами защиты авторских прав,
правообладатель вправе требовать от нарушителя возмещения убытков
или выплаты компенсации

ISBN 978-5-00101-682-3 c Лаборатория знаний, 2015



ПРЕДИСЛОВИЕ

Настоящее учебное пособие предназначено для студентов широкого круга эко-


номических специальностей, обучающихся по дисциплине «Математика». Тема
и содержание учебного пособия и уровень сложности излагаемого матери-
ала соответствуют требованиям государственных образовательных стандар-
тов. Актуальность разработки пособия обусловлена высокой востребованно-
стью экономического образования в современных условиях, важностью повы-
шения уровня математической подготовки студентов-экономистов и недостат-
ком доступных учебных пособий, сочетающих систематизированное изложе-
ние теоретических основ метода динамического программирования с после-
довательным обучением решению данным методом типовых экономических
задач. При разработке пособия учтен опыт преподавания дисциплины «Ма-
тематика» в Краснодарском филиале Российского государственного торгово-
экономического университета.
В предлагаемом учебном пособии изложен необходимый теоретический
материал и детально разобран ряд примеров решения задач экономического
содержания, способствующих лучшему уяснению рассматриваемых понятий
и методов и усвоению пройденного материала. Наличие контрольных вопро-
сов и задач для самостоятельного решения позволит студентам закрепить по-
лученные теоретические знания и обрести навык решения задач, а преподава-
телям даст возможность использовать пособие на практических занятиях. Для
понимания излагаемого в пособии материала достаточно знаний, получаемых
студентами при изучении дисциплины «Математика» на первом курсе вузов
в объеме, установленном типовыми рабочими программами.
При оформлении настоящего учебного пособия приняты следующие со-
глашения. Вновь вводимые понятия и термины выделяются в тексте полу-
жирным курсивом. Наиболее важные и принципиальные фрагменты тек-
ста, на которые следует обратить особое внимание при изучении материала,
выделяются в тексте светлым курсивом.
Автор приносит благодарность рецензентам проф. Г. Т. Вартумяну
и доц. О. Б. Пантелеевой за ценные замечания, проф. Г. Л. Авагян за вни-
мание к работе, а также студентам А. Волкоморовой и Д. Шведу, принявшим
активное участие в обсуждении данного учебного пособия.
ВВЕДЕНИЕ

Динамическое программирование — математический метод поиска


оптимальных решений по управлению многошаговыми процессами, в ко-
торых состояние исследуемых систем изменяется во времени или по-
этапно. Подобные системы и процессы имеют широкое распростране-
ние в реальном мире, а необходимость эффективного управления ими
объективно определяет важность и актуальность использования мате-
матических методов решения соответствующих управленческих задач.
Теоретической основой метода динамического программирования (ДП)
является принцип оптимальности, имеющий широкую сферу приложе-
ний в экономике, технике, естествознании, военном деле.
Регулярное изучение многошаговых процессов восходит к работам
русского математика А. А. Маркова начала XX века. Его исследования
были продолжены в 40-х годах американским математиком А. Вальдом
(A. Wald), что привело к возникновению так называемого последова-
тельного анализа. Впервые основные принципы оптимального управле-
ния многошаговыми процессами наиболее полно и систематизированно
были сформулированы в 50-х годах XX века американским математиком
Р. Беллманом (R. Bellman).
В первых задачах, решенных методом ДП, рассматривались про-
цессы, развивающиеся во времени, что и объясняет наличие термина
«динамическое» в названии метода. Термин «программирование» озна-
чает, что метод ДП может быть представлен в виде четкой последо-
вательности арифметических и логических операций, т. е. в виде алго-
ритма, по которому можно составить программу решения соответству-
ющих задач на электронно-вычислительных машинах (ЭВМ). Иначе ме-
тод ДП называется «динамическим планированием»; это название, учи-
тывая многообразие значений термина «программирование», в большей
степени раскрывает существо и назначение рассматриваемого метода.
Разработка и изучение математических методов решения тех или
иных задач может, безусловно, представлять самостоятельный теоре-
тический интерес. В то же время весьма важным и актуальным яв-
ляется вопрос о практической роли и значимости математических ме-
тодов для решения различных экономических задач. Подобные во-
просы, обостряемые господствующей в настоящее время прагматично-
Введение 5

стью и утилитарностью мышления, закономерно возникают у студентов,


изучающих соответствующий материал. Ответ на поставленный вопрос
является актуальным и для различного ранга руководителей и специ-
алистов, находящихся в условиях постоянного поиска путей повыше-
ния эффективности функционирования руководимых ими экономиче-
ских структур. Остановимся кратко на данной проблеме, поскольку ее
сложность и многоплановость приводят к существованию различных
точек зрения.
Прежде всего подчеркнем, что удивительно высокая эффективность
математики в естественных и технических науках постоянно подтвер-
ждается всей практической деятельностью человека; подчас даже выда-
ющиеся ученые нашего времени пишут эмоциональные статьи о «непо-
стижимой эффективности математики в естественных науках». Наи-
более грандиозные технические проекты XX века — развитие авиации,
освоение атомной энергии, выход в космос — без использования мощного
математического инструментария не могли бы быть осуществлены в со-
временном виде и качестве при минимальном количестве катастрофиче-
ских ошибок. Для экономических наук и экономики вообще дело обстоит
сложнее, однако даже самый общий взгляд на проблему приводит к осо-
знанию того, что тезис о возможной высокой эффективности матема-
тики в экономике является вполне естественным и логичным. Действи-
тельно, вся математика изначально и многие ее разделы впоследствии —
в том числе и ДП — своим происхождением и развитием обязаны именно
практической, хозяйственной, экономической жизни общества. Выйдя
из самих ее основ и неоднократно пройдя классический цикл «от живого
созерцания к абстрактному мышлению и от него к практике», развив
в себе мощные количественные методы анализа, математика не может
не найти эффективные приложения в самых различных сферах челове-
ческой деятельности. Данное обстоятельство подчеркивает, в частности,
неправомерность острого противопоставления математики и реального
мира, равно как теории и практики вообще.
В то же время, справедливость общих положений еще не означает
их безусловного приоритета в каждом конкретном случае, а любой ме-
тод в любой области знания имеет свою сферу применения, подчас
весьма ограниченную. По этим причинам не следует преувеличивать
и тем более абсолютизировать роль и возможности математических ме-
тодов и математики вообще — возникающие «натяжки» легко выявля-
ются и вызывают у обучающихся негативное отношение к предмету. Как
показывает практика, существует широкий класс экономических струк-
тур, управление которыми осуществляется на интуитивном уровне без
какого-либо использования математических моделей и методов и дает
6 Введение

вполне приемлемые результаты. К таким структурам относятся, как


правило, организации, работа которых трудно поддается формализа-
ции и не может быть описана четкими количественными показателями
и критериями, либо отдельные предприятия мелкого масштаба. Приме-
нение математики в организациях и на предприятиях такого типа сво-
дится к элементарным арифметическим расчетам в рамках задач бух-
галтерского учета. Данные обстоятельства создают и укрепляют иллю-
зию возможности успешного управления любыми экономическими си-
стемами без использования какой-либо серьезной математики вообще.
Однако такая точка зрения является излишне упрощенной: имею-
щиеся примеры не умаляют прикладных возможностей математики,
а лишь свидетельствуют о возможности функционирования некоторых
экономических структур без должного математического обеспечения,
оставляя при этом открытым вопрос об эффективности самого функ-
ционирования. Ситуация кардинально меняется при управлении эконо-
мическими и техническими системами, характеризующимися сложной
организационной структурой, высоким уровнем технической оснащен-
ности, широким диапазоном возможных производственных ситуаций,
быстрым изменением условий функционирования. В таких условиях ин-
туиция, догадка, «чутье» как основа принятия управленческих реше-
ний — несмотря на отдельные достоинства интуитивного подхода — зача-
стую оказываются малопродуктивными. Действительно, интуиция фор-
мируется лишь на основе ранее приобретенного опыта и накопленных
знаний в той или иной сфере деятельности, что требует значительных
временных затрат, сопряжено с неизбежными ошибками в управлении
и сопровождается устойчивым снижением экономической эффективно-
сти. В жестких экономических условиях данный путь может «слишком
дорого стоить» и оказаться непозволительной роскошью. Более того,
для целесообразного управления сложными экономическими системами
недостаточно ведущихся на каждом предприятии бухгалтерских расче-
тов, которые лишь отражают сложившееся положение вещей и не ори-
ентированы на поиск оптимальных управленческих решений (хотя ис-
ходные данные и результаты таких расчетов могут служить материалом
для реализации оптимизационных задач управления).
Ошибки в управлении сложными дорогостоящими или даже уни-
кальными экономическими системами имеют чрезвычайно высокую
цену. Для исключения или, по меньшей мере, снижения риска возникно-
вения таких ошибок неизбежно приходится прибегать к использованию
математических моделей, учитывающих и выражающих в мате-
матической форме весь спектр существенных соотношений между раз-
личными количественными характеристиками и параметрами управля-
Введение 7

емых систем и окружающего их реального мира. Иными словами, ма-


тематическая модель представляет собой математическое описание ис-
следуемых систем, процессов или явлений (конечно, не абсолютно точ-
ное, а приближенное). Задачи управления, опирающиеся на грамотно
построенные математические модели, приводят к достоверным, прием-
лемым для практического применения результатам, однако являются
весьма сложными, и для их решения, как правило, не существует про-
стых рецептов и явных формул. Тем самым объективно возникает по-
требность в разработке специальных математических методов решения
поставленных задач.
Как показывает история науки последнего времени, рациональное
применение математических методов может дать исключительно весо-
мый дополнительный экономический эффект, многократно окупающий
затраты на постановку и исследование задачи управления, разработку
или адаптацию метода ее решения и реализацию его на ЭВМ. Не слу-
чайно современный развитый мир является свидетелем нарастающего
процесса математизации широкого спектра наук: экономических, соци-
альных и даже чисто гуманитарных, не говоря уже о естественных и тех-
нических. При этом проявляется следующая общая закономерность: чем
крупнее масштаб управляемых систем, тем более весомый экономиче-
ский эффект дает применение математических методов не только в аб-
солютном, но и в относительном исчислении.
Ускоренному проникновению математики в различные сферы дея-
тельности человека в значительной степени способствует бурное раз-
витие компьютерных технологий. Само появление ЭВМ с их большой
вычислительной мощностью позволило ставить и решать столь слож-
ные задачи, подступиться к которым без помощи ЭВМ было совершенно
немыслимо. Обрела практический смысл разработка сложных матема-
тических методов и алгоритмов управления, значительная часть кото-
рых без привязки к ЭВМ превращается в отвлеченное формализованное
построение. Как признают многие ведущие ученые мира, целенаправ-
ленное использование вычислительной мощности ЭВМ является прин-
ципиально новым методом познания реального мира: огромный коли-
чественный рост производительности вычислений привел к качествен-
ным сдвигам в науке в целом и в математике в частности. В совре-
менных условиях математические методы реализуются, как правило,
в виде специального программного обеспечения для ЭВМ и их наиболее
широкого класса — персональных компьютеров. Важно заметить, что
при этом многие сложности и специфика реализуемых математических
методов скрываются за фасадом простого и удобного пользовательского
программного интерфейса; часто складывается обманчивое впечатле-
8 Введение

ние, что математика не играет здесь никакой существенной роли, хотя


дело обстоит совершенно наоборот!
Математическим методам свойственно различаться глубиной логи-
ческого анализа. В связи с этим подчеркнем, что любую задачу управле-
ния — в том числе и рассматриваемые в настоящем учебном пособии за-
дачи управления многошаговыми процессами — с достаточной для прак-
тических целей точностью можно решить путем последовательного рас-
смотрения всех допустимых вариантов управления, или методом пе-
ребора (если множество допустимых вариантов бесконечно, то перебор
проводится с некоторым малым приращением значений управляющих
параметров). Логика метода перебора является наиболее простой и,
тем самым, весьма привлекательной для реализации. Однако за внеш-
ней простотой данного метода скрывается следующая серьезная про-
блема: объем вычислительных работ, связанных с простым перебором,
для сложных реальных задач может оказаться столь велик, что с его
проведением в разумные приемлемые сроки не смогут справиться даже
самые мощные ЭВМ. В то же время практическую значимость представ-
ляет не столько потенциальная, сколько актуальная разрешимость за-
дачи: решение задачи управления, являясь оптимальным или близким
к таковому, должно быть получено оперативно, в режиме «реального
времени», иначе оно устареет и потеряет свою значимость еще до окон-
чания поиска решения. В соответствии с данным обстоятельством воз-
никает объективная необходимость в разработке иных более эффектив-
ных методов решения, пусть логически более сложных, но позволяющих
снизить трудоемкость вычислений.
Для задач управления многошаговыми процессами таким методом
является метод ДП, рассматриваемый в настоящем учебном пособии.
Излагаемый в пособии материал разделен на три главы. В первой
главе приводится общая постановка задачи управления многошаговыми
процессами, устанавливаются основные допущения классического ме-
тода ДП, обсуждаются проблемы, возникающие при решении соответ-
ствующих задач, формулируется принцип оптимальности Р. Беллмана,
рассматриваются замечания по практическому применению метода ДП.
Особенностью изложения данного материала, в отличие от традицион-
ного, является выделение предварительного этапа метода ДП, что во
многих случаях позволяет снизить объем вычислений и упростить их.
Излагаемый в данной главе теоретический материал не имеет жесткой
привязки к экономическим задачам и может быть полезен читателям
широкого круга специальностей. Во второй главе приводятся примеры
решения ряда типовых экономических задач методом ДП. Данной главе
отведена значительная часть пособия, поскольку затруднения у студен-
Введение 9

тов вызывает именно проведение математической формализации эко-


номической задачи и практическое применение общего принципа опти-
мальности. Рассматриваемые в главе задачи выбраны достаточно про-
стыми, чтобы продемонстрировать существо метода ДП и довести реше-
ние до конкретного числового результата, не осложняя изложение гро-
моздкими вычислениями и второстепенными деталями. В третьей главе
рассматриваются важные и естественные обобщения классического
принципа оптимальности и метода ДП для задач, формулируемых в тер-
минах теории графов. Приведенные в пособии контрольные вопросы
и задачи для самостоятельного решения позволяют закрепить знания
теоретического материала и приобрести навыки практического реше-
ния задач. Наличие ряда вариантов исходных данных позволит исполь-
зовать предложенные задачи на практических и семинарских занятиях,
для домашних заданий и при проведении контрольных работ и тестов.
Отметим, что методологическая проблема выбора наиболее адекват-
ной формы изложения сложных математических дисциплин для студен-
тов экономических специальностей не является окончательно решенной.
Ограниченность часов на изучение темы, сильно варьирующийся уро-
вень математической подготовки студентов, да и сами цели обучения
студентов-экономистов требуют специального подхода к преподаванию.
В этих условиях особую важность приобретают вопросы соблюдения
баланса между строгостью и доступностью изложения, а неизбежный
отказ от излишней формализации и строгих доказательств не должен
сопровождаться потерей логики и стройности изложения. При разра-
ботке настоящего учебного пособия автор предпринял попытку найти
и реализовать соответствующий стиль изложения, считая вслед за ос-
новоположником метода ДП, что ценность пособия определяется «в
конечном счете по его внутреннему содержанию, а не по удельному
весу высокопарных псевдоабстракций, которыми так легко пересолить
любой текст» [1].

Условные обозначения
В гл. 1 и 2 настоящего учебного пособия используются следующие
основные обозначения:
N — число шагов в многошаговом процессе, N  1;
i — номер шага процесса, i = 1, 2, . . . , N , или индекс переменной
или функции, указывающий их отношение к номеру шага
процесса;
x, xi — фазовая переменная, или переменная состояния;
10 Введение

N — число шагов в многошаговом процессе, N  1;


i — номер шага процесса, i = 1, 2, . . . , N , или индекс переменной
или функции, указывающий их отношение к номеру шага
процесса;
x, xi — фазовая переменная, или переменная состояния;
X — множество допустимых значений фазовой переменной;
u, ui — управляющая переменная, или управление;
U — множество допустимых значений управляющей переменной;
fi — функция процесса для шага с номером i;
zi — частная целевая функция на шаге с номером i;
Z — целевая функция, или критерий оптимальности для всего
многошагового процесса;
Bi (xi ) — функция Беллмана;
ũi (xi−1 ) — условно-оптимальное управление.
В гл. 3, посвященной приложениям метода динамического программи-
рования в теории графов, данные обозначения используются в суще-
ственно меньшей степени.
Глава 1

ЗАДАЧИ УПРАВЛЕНИЯ
МНОГОШАГОВЫМИ ПРОЦЕССАМИ
И МЕТОД ДИНАМИЧЕСКОГО
ПРОГРАММИРОВАНИЯ

В настоящей главе приводится общая постановка задач управления


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

1.1. Основные понятия и постановка задачи


Все объекты реального мира изменяются с течением времени. Измене-
ние состояния широкого класса объектов и систем — возможно, с неко-
торым несущественным упрощением реальной ситуации — происходит
по шагам, т. е. поэтапно, скачками, дискретно. Процесс, при котором
происходит последовательный переход объекта или системы данного
класса из одного состояния в другое, называется многошаговым
процессом. При этом разделение всего процесса на отдельные после-
довательные шаги либо естественным образом вытекает из реальных
свойств системы, либо вводится в задачу искусственно из тех или
иных соображений. Наиболее важными и содержательными системами
рассматриваемого класса являются управляемые системы, на состоя-
ние которых может целенаправленно влиять некоторый управляющий
субъект, или, как говорят, «лицо, принимающее решения». В насто-
ящем учебном пособии рассматриваются именно такие управляемые
системы, меняющие свое состояние в ходе многошаговых процессов.
Возможность осуществлять управление системой обусловливает воз-
никновение проблемы выбора и неизбежно приводит к задаче поиска
наилучшего, наиболее целесообразного, оптимального с той или иной
точки зрения управления. Такого типа задачи называются задачами
управления многошаговыми процессами, или задачами много-
этапной оптимизации, или просто задачами ДП . Подчеркнем,
12 Глава 1. Задачи управления многошаговыми процессами

что в рассматриваемых задачах шаги процесса не обязательно опреде-


ляются течением времени, а могут быть связаны с изменением других
параметров и характеристик систем. Не останавливаясь в настоящий
момент на подробных формулировках, приведем кратко некоторые
примеры задач данного типа экономической направленности:
— распределение ресурсов (финансовых, материальных, топливно-
энергетических и т. п.) между несколькими предприятиями с це-
лью получения максимальной прибыли за определенный период
времени;
— составление календарных планов ремонта и обновления техно-
логического оборудования на предприятии;
— управление запасами сырья и готовой продукции на предприятии
для обеспечения его бесперебойной работы;
— проектирование дороги минимальной стоимости в условиях слож-
ного рельефа местности;
— загрузка транспортного средства предметами различных типо-
размеров с целью перевозки груза максимальной стоимости;
— определение наиболее экономичного режима полета летательного
аппарата.
Детальные постановки упомянутых задач мы рассмотрим далее,
а начнем общее исследование задач управления многошаговыми про-
цессами с определения основных понятий и терминов.
Рассмотрим некоторую техническую или экономическую систему
или объект: техническое средство, предприятие, производственное объ-
единение, отрасль промышленности, регион и т. д. Состояние системы —
будем обозначать ее через S — в определенной степени характеризуется
набором параметров, которые могут иметь различный экономический
смысл и представлять собой, например, производственные мощности,
обеспеченность ресурсами, штат сотрудников, себестоимость продук-
ции, объем средств на счете предприятия и т. п. Набор параметров,
характеризующий состояние системы, называется переменной состо-
яния, или фазовой переменной и обозначается через x. В общем
случае в наборе присутствует несколько параметров, а фазовая пере-
менная при этом является вектором. В простейшем случае состояние
системы может быть охарактеризовано только одним числовым пара-
метром, и фазовая переменная является величиной скалярной (одно-
мерной). В настоящем учебном пособии будет рассматриваться именно
этот простейший случай; при этом общие принципы решения задач
управления многошаговыми процессами сохраняются, а громоздкость
и трудоемкость их решения существенно снижаются.
1.1. Основные понятия и постановка задачи 13

Вообще говоря, состояние системы не тождественно значению фа-


зовой переменной, характеризующему это состояние (подобно тому,
как не являются тождественными гражданин и его паспортные дан-
ные). Тем не менее справедливо полагать, что в рамках детализации,
обусловленной существом задачи, значение фазовой переменной одно-
значно определяет состояние системы. По этой причине мы далее будем
кратко говорить «состояние x», подразумевая состояние системы, соот-
ветствующее значению x фазовой переменной. Фазовая переменная x
может принимать значения из некоторого множества X допустимых
значений, что записывается в виде x ∈ X. Множество X задается, как
правило, в виде ограничений типа равенств или неравенств, называ-
емых фазовыми ограничениями.
Состояние управляемой системы S может меняться под влиянием
различных факторов. Наиболее важную роль среди них играет воз-
действие со стороны управляющего субъекта, осуществляемое путем
выбора им надлежащих значений управляющих параметров, назы-
ваемых иначе управляющими переменными или просто управле-
ниями. В различных конкретных задачах в качестве управлений могут
выступать, например, состав работающего оборудования, режим его
эксплуатации, количество потребляемых ресурсов, объем подлежащих
производству товаров, цены на производимую продукцию, количество
принимаемых работников и т. п. Как и для фазовых переменных, бу-
дем рассматривать простейший и наименее громоздкий случай только
одной управляющей переменной, которую будем обозначать через u.
Управляющая переменная u может принимать значения из некоторого
множества U допустимых значений, u ∈ U ; множество U задается, как
правило, в виде ограничений типа равенств или неравенств.
Рассмотрим шаг, при котором система S под действием управ-
ления u переходит из некоторого исходного состояния x0 в другое
последующее состояние x1 . Этот переход может быть представлен ма-
тематически следующим образом:

x1 = f (x0 , u),

где f — некоторая функция, выражающая закон изменения состояния


системы S, определяемая внутренними свойствами системы и внешними
условиями ее существования и называемая функцией процесса. Само
приведенное уравнение называется уравнением процесса.
Переход системы S из состояния x0 в состояние x1 сопровожда-
ется получением некоторого экономического эффекта, который зависит
от исходного состояния и применяемого управления и количественно
14 Глава 1. Задачи управления многошаговыми процессами

выражается целевой функцией, или критерием оптимальности z:

z = z(x0 , u).

Функцию z можно понимать как количественный показатель эффек-


тивности управления системой S на рассматриваемом шаге. Например,
если функция z представляет собой доход или прибыль, то наиболь-
ший интерес представляет ее максимальное значение: z → max; если
же функция z представляет расход, убыток, затраты, издержки, то
наибольший интерес представляет ее минимальное значение: z → min.
В отдельных случаях используется запись z → extr, в которой под
символом «extr» подразумевается экстремум, т. е. максимальное или
минимальное значение функции.
Основным объектом изучения в данном учебном пособии явля-
ются многошаговые процессы, включающие в общем случае некоторое
число N шагов. Будем обозначать через i переменный номер шага,
который может принимать значения от 1 до N включительно; это
обстоятельство будем отмечать записью i = 1, 2, . . . , N . На каждом
шаге процесса управление u может принимать различные значения
u1 , u2 , . . . , uN .
Обозначим через xi состояние системы после шага с номером i;
при этом через x0 естественно обозначить начальное состояние системы
перед первым шагом процесса.
На первом шаге, i = 1, система S под действием управления u1
переходит из начального состояния x0 в состояние x1 , и при этом до-
стигается экономический эффект, равный z1 . На втором шаге, i = 2,
система S под действием управления u2 переходит из состояния x1
в состояние x2 , и при этом достигается экономический эффект, рав-
ный z2 .
Рассуждая аналогично, получим наконец, что на последнем шаге
процесса, i = N , система S под действием управления uN переходит
из состояния xN −1 в конечное состояние xN , и при этом достигается
экономический эффект, равный zN . Таким образом, при многошаговом
процессе система S под действием управлений u1 , u2 , . . . , uN переходит
последовательно из начального состояния x0 в состояния x1 , x2 , . . . , xN ,
причем различным наборам управлений соответствуют различные по-
следовательности состояний.
На каждом из шагов процесса фазовые переменные xi и управ-
ления ui могут принимать значения из соответствующих допустимых
множеств: xi ∈ Xi , ui ∈ Ui . Особую роль среди них играют множество
начальных состояний X0 и множество конечных состояний XN . Состав,
1.1. Основные понятия и постановка задачи 15
z1 z2 zN −1 zN

x0 xN

x1
xN −1

u1 u2 uN −1 uN

Рис. 1.1

вид и свойства этих множеств обычно бывают известны из формули-


ровок соответствующих задач.
Схематически многошаговый процесс представлен на рис. 1.1, где
точками отмечены состояния системы и соответствующие значения
фазовых переменных (от x0 до xN ), стрелками показаны возможные
изменения состояний системы в зависимости от выбора управлений
(от u1 до uN ), а также указаны экономические эффекты (от z1 до zN )
на каждом из шагов процесса.
Приведем ряд общих определений, относящихся к постановке задачи
управления многошаговыми процессами.
Последовательность состояний x0 , x1 , . . . , xN от начального до ко-
нечного называется траекторией системы.
Совокупность значений управления (u1 , u2 , . . . , uN ) называется век-
тором управляющих параметров, или вектором управлений.
(Напомним, что в алгебре вектором называется упорядоченный на-
бор чисел, количество чисел в наборе — размерностью вектора, а сами
числа — координатами, компонентами или элементами. Таким образом,
(u1 , u2 , . . . , uN ) — вектор размерности N .)
Допустимым вектором управляющих параметров, или до-
пустимым управлением, или допустимым решением задачи
называется такой вектор управлений (u1 , u2 , . . . , uN ), под действием
которых система S переходит из начального состояния x0 ∈ X0 в ко-
нечное состояние xN ∈ XN .
Функции zi , i = 1, 2, . . . , N , выражающие экономический эффект
на отдельных шагах процесса, будем называть частными целевыми
функциями. Итоговый, результирующий экономический эффект по
всему многошаговому процессу будем обозначать через Z и называть
целевой функцией, или критерием оптимальности для всего
16 Глава 1. Задачи управления многошаговыми процессами

процесса. Функция Z, как правило, определяется значениями частных


целевых функций zi . Простейшим, естественным и наиболее распро-
страненным способом вычисления Z является суммирование частных
целевых функций zi ; данный способ построения целевой функции яв-
ляется определяющим для применимости метода ДП, что будет особо
оговорено ниже.
Оптимальным вектором управляющих параметров, или
оптимальным управлением, или оптимальным решением за-
дачи называется такое допустимое управление (u∗1 , u∗2 , . . . , u∗N ), которое
доставляет целевой функции Z максимальное или минимальное значе-
ние по сравнению со всеми остальными допустимыми управлениями.
Исследование целевой функции Z на максимум или минимум
определяется экономическим содержанием решаемой задачи. Отме-
тим, что свойство допустимости означает фактическую реализуемость
управления, а свойство оптимальности — наибольшую целесообраз-
ность управления с точки зрения выбранного критерия.
Значение целевой функции Z, которое она принимает при опти-
мальном управлении (u∗1 , u∗2 , . . . , u∗N ), называется оптимальным зна-
чением задачи и обозначается через Z ∗ .
Последовательность x∗0 , x∗1 , . . . , x∗N оптимальных состояний системы
называется оптимальной траекторией.
Как видно из введенных обозначений, символом «*» отмечаются те
математические объекты, которые имеют непосредственное отношение
к оптимальному решению.
Введенные понятия позволяют следующим образом кратко сфор-
мулировать постановку задачи управления многошаговым процессом:
задача состоит в поиске ее оптимального решения.

1.2. Допущения метода


динамического программирования
При рассмотрении классического метода ДП принимаются следующие
основные допущения относительно характера решаемых задач. Данные
допущения выполняются для широкого класса экономических и техни-
ческих систем и процессов, а отказ от них приводит к существенному
повышению сложности и громоздкости методов решения соответству-
ющих задач.
Отсутствие последействия: состояние xi системы S после шага
с номером i непосредственно зависит только от предшествующего
состояния xi−1 и от управления ui на данном шаге. Это предположение
1.3. Замечания по оптимизации многошаговых процессов 17

можно записать следующим образом:


xi = fi (xi−1 , ui ),
или, в развернутом виде,
x1 = f1 (x0 , u1 ), x2 = f2 (x1 , u2 ), ..., xN = fN (xN −1 , uN ).
Зависимость состояния xi от предшествовавших ранее состояний
xi−2 , xi−3 , . . . (т. е. от всей долгой предыстории) является косвенной,
проявляющейся только через xi−1 .
Для частных целевых функций zi на каждом из шагов процесса
принимается аналогичное предположение:
zi = zi (xi−1 , ui ),
или
z1 = z1 (x0 , u1 ), z2 = z2 (x1 , u2 ), ..., zN = zN (xN −1 , uN ).
Аддитивность1) целевой функции относительно разбиения
процесса на шаги: результирующая целевая функция Z для всего мно-
гошагового процесса представляется в виде суммы частных целевых
функций zi на каждом из шагов:
Z = z1 + z2 + . . . + zN .
Целевая функция Z данного вида иначе называется аддитивным
критерием.
Всюду далее в настоящем учебном пособии будут рассматриваться
только такие системы и процессы, для которых приведенные основные
допущения выполняются.

1.3. Замечания по оптимизации


многошаговых процессов
Сделаем ряд предварительных замечаний относительно оптимизации
многошаговых процессов.
Прежде всего подчеркнем, что оптимизация процесса по совокуп-
ности шагов не сводится к независимой оптимизации по отдельным
шагам. Действительно, достижение максимального эффекта на одном
из шагов может потребовать слишком больших затрат ресурсов и, как
следствие, привести к снижению экономического эффекта как на по-
следующих шагах, так и по всему многошаговому процессу в целом.
1)
Термин «аддитивность» латинского происхождения означает свойство, имеющее
отношение к операции сложения.
18 Глава 1. Задачи управления многошаговыми процессами

Наглядным примером может служить бег на длинную дистанцию, ко-


торый никоим образом не сводится к многократному повторению бега
на короткую дистанцию на максимальной скорости. Целевой функцией
в данном примере является время пробегания всей дистанции, допусти-
мым решением — тактика, позволяющая просто «добежать» до конца
дистанции, оптимальным решением — тактика, позволяющая пробежать
дистанцию за минимальное время.
Более содержательный пример представляет задача планирования
модернизации предприятия. Как правило, модернизация осуществля-
ется в условиях ограниченности финансовых и иных ресурсов, ослож-
няется требованием обеспечения бесперебойности производства и, как
следствие, проводится не единовременно, разом, а поэтапно. При этом
формирование оптимальной политики распределения и использования
ресурсов по этапам играет определяющую роль в обеспечении общего
успеха модернизации предприятия в целом.
Это интуитивно ясное замечание может быть проиллюстриро-
вано математически следующим свойством: максимум (или минимум)
суммы, вообще говоря, не равен сумме максимумов (или минимумов)
слагаемых. Точнее, для произвольных функций a(t) и b(t) можно га-
рантировать лишь выполнение неравенства
max{a(t) + b(t)}  max{a(t)} + max{b(t)},
t t t

причем, вообще говоря, равенство может не иметь места. В качестве


примера можно рассмотреть функции a(t) = t и b(t) = 1 − t, заданные
при 0  t  1. При этом
a(t) + b(t) = 1, max {a(t)} = 1, max {b(t)} = 1,
0t1 0t1

так что
max{a(t) + b(t)} = 1 = 2 = max{a(t)} + max{b(t)}.
t t t

Таким образом, максимум суммы двух или большего числа сла-


гаемых нельзя вычислять по отдельности, а соответствующая задача
максимизации является более сложной и требует более взвешенного
подхода к ее решению. В то же время, если одна из функций яв-
ляется постоянной, например, a(t) ≡ A, где A — некоторое число, то
соответствующее равенство все-таки имеет место:
max{A + b(t)} = A + max{b(t)};
t t
иными словами, постоянное слагаемое можно выносить за знак мак-
симума.
1.3. Замечания по оптимизации многошаговых процессов 19

Аналогичное замечание можно сделать и относительно вычисления


минимума:
min{a(t) + b(t)}  min{a(t)} + min{b(t)},
t t t
min{A + b(t)} = A + min{b(t)}.
t t

Здесь уместно отметить связь между задачами на максимум и ми-


нимум: минимум функции F (t), заданной на некотором множестве T ,
достигается в тех же точках, что и максимум функции −F (t), причем
имеет место равенство
min{F (t)} = −max{−F (t)}.
t∈T t∈T

Следовательно, задачу оптимизации многошагового процесса с поис-


ком минимума целевой функции Z можно свести к подобной задаче
оптимизации с поиском максимума целевой функции −Z; оптималь-
ные решения при этом не изменятся, а оптимальное значение задачи
изменит знак на противоположный.
Рассмотрим подробнее целевую функцию
Z = z1 (x0 , u1 ) + z2 (x1 , u2 ) + . . . + zN (xN −1 , uN )
всего процесса и покажем, что она является функцией начального
состояния x0 и управляющих переменных u1 , u2 , . . . , uN . Действительно,
в силу соотношения x1 = f1 (x0 , u1 ) состояние x1 зависит от x0 и u1 .
Далее, в силу соотношения x2 = f2 (x1 , u2 ) состояние x2 зависит от u2
и косвенно через посредство x1 зависит от x0 и u1 , т. е.
 
x2 = f2 f1 (x0 , u1 ), u2 .
Рассуждая аналогично, получим наконец, что в силу соотношения
xN = fN (xN −1 , uN ) конечное состояние xN системы зависит от uN
и косвенно через посредство xN −1 зависит от x0 и u1 , u2 , . . . , uN −1 .
Соответственно и целевая функция Z зависит от x0 и всех управля-
ющих переменных:
Z = Z(x0 , u1 , u2 , . . . , uN ).
Если же в некоторых задачах начальное состояние x0 является фик-
сированным, то целевая функция зависит только от управляющих
переменных.
Таким образом, принципиально задача оптимального управления
многошаговым процессом является задачей поиска экстремума функ-
ции многих переменных. Задачи такого типа являются весьма труд-
ными. Рассуждая теоретически, для их решения можно попытаться
применить классический метод дифференциального исчисления, опи-
20 Глава 1. Задачи управления многошаговыми процессами

рающийся на использование производных от целевой функции. Для


этого, как известно, необходимо:
1) вычислить частные производные целевой функции по всем пе-
ременным;
2) составить и решить систему уравнений для поиска тех точек,
в которых возможен экстремум (они называются критическими
точками);
3) проверить, в каких из найденных критических точек экстремум
действительно существует, и вычислить его значение.
Однако применение данного классического метода для решения
рассматриваемых задач оптимизации многошаговых процессов суще-
ственно затруднено по следующим причинам. Прежде всего, в случае
дискретных управлений (т. е. принимающих ряд отдельных значений,
не составляющих непрерывного числового интервала) данный метод
вообще неприменим. Для случая непрерывных управлений возникают
следующие проблемы:
1) функция Z является сложной, и непосредственное вычисление
ее частных производных приводит к исключительно громоздким
выражениям;
2) получаемые системы уравнений для поиска критических точек
являются, как правило, нелинейными, и для их решения не су-
ществует универсальных методов;
3) описанный классический метод позволяет найти точки экстре-
мума только внутри области определения целевой функции и не
подходит для их поиска на границах, зачастую имеющих слож-
ный вид. В то же время в реальных задачах экстремумы часто
достигаются именно на границах.
Итак, попытка применения классических методов дифференциаль-
ного исчисления к оптимизации многошаговых процессов приводит
к задачам, не менее сложным, чем исходная, что не является эффектив-
ным путем решения. Следовательно, для решения поставленных задач
необходимо применять иные методы, в большей степени учитывающие
специфику задач. Наиболее известным и эффективным из таких мето-
дов является метод ДП, к рассмотрению основ которого мы приступаем.

1.4. Методика вычисления


оптимального значения задачи
Выясним, как может быть осуществлено вычисление оптимального
значения Z ∗ задачи управления многошаговыми процессами в част-
ном случае, когда начальное состояние x0 системы фиксировано, или,
1.4. Методика вычисления оптимального значения задачи 21

иными словами, множество X0 начальных состояний системы сво-


дится к единственному элементу x0 . Проводимые рассуждения поз-
волят ближе подойти к пониманию общего принципа оптимальности
решения рассматриваемых задач. Для определенности рассмотрим слу-
чай поиска максимума.
Рассмотрим прежде всего простейший из многошаговых процессов,
включающий два шага управления, N = 2. В этом случае вектор
управляющих переменных (u1 , u2 ) содержит две компоненты, и целевая
функция Z является функцией двух переменных u1 , u2 :
Z = Z(u1 , u2 ) = z1 (x0 , u1 ) + z2 (x1 , u2 ),
где x1 = f1 (x0 , u1 ). Для определения оптимального значения Z ∗ необ-
ходимо вычислить максимум целевой функции по обеим управляющим
переменным u1 , u2 :
 
Z ∗ = max z1 (x0 , u1 ) + z2 (x1 , u2 ) .
u1 ,u2

Максимум по двум переменным всегда может быть найден путем


последовательного вычисления максимумов по каждой из переменных;
следовательно,
  
Z ∗ = max max z1 (x0 , u1 ) + z2 (x1 , u2 ) .
u1 u2

(Конечно, для справедливости такого преобразования необходимо,


чтобы множества векторов (u1 , u2 ), учитываемых при одновременном
и при последовательном способах вычисления Z ∗ , полностью совпа-
дали). В полученной сумме первое слагаемое z1 (x0 , u1 ) не зависит
от переменной u2 , по которой вычисляется внутренний максимум. Сле-
довательно, это слагаемое может быть вынесено за знак внутреннего
максимума:
 
max z1 (x0 , u1 ) + z2 (x1 , u2 ) = z1 (x0 , u1 ) + max{z2 (x1 , u2 )}.
u2 u2
Таким образом, справедливо равенство
 
Z ∗ = max z1 (x0 , u1 ) + max{z2 (x1 , u2 )} .
u1 u2
В результате проведенных преобразований вычисление максимума
по двум переменным u1 , u2 удалось «разнести» на два последователь-
ных вычисления максимума по переменным u2 и u1 , т. е. двумерная
задача свелась к последовательному решению двух одномерных за-
дач. Как правило, одномерная задача существенно проще двумерной (и
тем более многомерной), а проведенные преобразования соответствуют
общей закономерности: решить несколько задач низшей размерности
проще, чем решить одну задачу высшей размерности.
22 Глава 1. Задачи управления многошаговыми процессами

Структура последнего равенства «подсказывает», что вычисле-


ние Z ∗ следует разбить на 2 шага — это соответствует структуре мно-
гошагового процесса и приводит к более простым выражениям. С этой
целью введем новую вспомогательную функцию B1 (x1 ), принимая в ка-
честве нее внутренний максимум:
B1 (x1 ) = max{z2 (x1 , u2 )}.
u2

Смысл функции B1 (x1 ) состоит в том, что она представляет собой


максимальное значение частной целевой функции z2 на втором шаге
процесса при условии, что перед этим шагом управляемая система
находилась в состоянии x1 . С учетом введенной функции B1 (x1 ) можно
записать:
 
Z ∗ = max z1 (x0 , u1 ) + B1 (x1 ) | x1 = f1 (x0 , u1 ) .
u1

В данной записи и всюду далее вертикальная черта «|» означает «при


условии»: максимум выражения z1 (x0 , u1 ) + B1 (x1 ) по переменной u1
вычисляется при условии, что x1 не является произвольным, а опре-
деляется равенством x1 = f1 (x0 , u1 ).
Преобразуем два последних выражения к однотипной форме. Для
единообразия обозначений введем две новых функции: функцию B2 (x2 ),
тождественно равную нулю: B2 (x2 ) = 0 для всех x2 , и функцию B0 (x0 ),
определенную только для одного значения x0 и равную оптимальному
значению Z ∗ , подлежащему вычислению: B0 (x0 ) = Z ∗ . С использо-
ванием введенных обозначений полученные выше равенства можно
записать следующим образом:
 
B1 (x1 ) = max z2 (x1 , u2 ) + B2 (x2 ) | x2 = f2 (x1 , u2 ) ,
u2
 
B0 (x0 ) = max z1 (x0 , u1 ) + B1 (x1 ) | x1 = f1 (x0 , u1 ) .
u1

Важно подчеркнуть, что полученные два равенства полностью сов-


падают по структуре и отличаются только индексами переменных
и функций. Таким образом, проведенные преобразования с использо-
ванием введенных вспомогательных функций B0 (x0 ), B1 (x1 ) и B2 (x2 )
не только позволили упростить вычисления оптимального значения
задачи Z ∗ путем снижения размерности, но и привели вычисления
к однотипной форме, соответствующей структуре процесса. Расчеты
проводятся в порядке убывания индексов: B2 (x2 ) = 0 по определению;
с учетом этого равенства далее вычисляется B1 (x1 ); наконец, вычис-
ляется B0 (x0 ) = Z ∗ . На вид последних двух равенств следует обратить
особое внимание, поскольку он является характерным для записи об-
щего принципа оптимальности.
1.4. Методика вычисления оптимального значения задачи 23

Отметим, что для одношагового процесса при N = 1 можно фор-


мально провести такую же логику. Вектор управляющих переменных
в этом случае содержит только одну компоненту, и целевая функция Z
является функцией одной переменной u1 :
Z = Z(u1 ) = z1 (x0 , u1 ).

В этом случае решение задачи оптимизации сводится к поиску мак-


симума функции одной переменной:
Z ∗ = max{z1 (x0 , u1 )},
u1

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


B0 (x0 ) = Z ∗ и B1 (x1 ) = 0 позволяет придать последнему соотно-
шению уже полученный выше типовой вид (хотя, конечно, для N = 1
такое преобразование не имеет глубокого смысла и является скорее
усложнением, чем упрощением задачи).
Рассмотренная методика вычисления оптимального значения за-
дачи Z ∗ может быть распространена и на общий случай многошаго-
вых процессов. При этом могут быть проведены рассуждения, подоб-
ные известному методу математической индукции. Действительно,
для N = 1 и N = 2 способ вычисления Z ∗ уже рассмотрен выше.
Предположим, что мы умеем вычислять оптимальное значение задачи
для любого процесса, включающего N −1 шаг, и рассмотрим N -шаговый
процесс. На первом шаге под действием управления u1 система из на-
чального состояния x0 перейдет в состояние x1 = f1 (x0 , u1 ), обеспечив
экономический эффект z1 (x0 , u1 ). При этом для последующего пере-
вода системы из состояния x1 в конечное состояние xN остается ровно
N − 1 шаг. В силу нашего предположения для получаемого «укорочен-
ного» на 1 шаг процесса может быть вычислено оптимальное значение
задачи — обозначим его через B1 (x1 ) и назовем условно-оптимальным,
поскольку оно относится не ко всему процессу и зависит от выбора
состояния x1 . В соответствии с аддитивностью критерия для любого
фиксированного управления u1 наибольшее значение целевой функ-
ции Z всего N -шагового процесса будет равно
z1 (x0 , u1 ) + B1 (x1 )

(частный экономический эффект на первом шаге плюс максимальный


эффект на последующих N − 1 шагах). Следовательно, для вычисле-
ния оптимального значения Z ∗ всей задачи (обозначим его для еди-
нообразия, как и выше, через B0 (x0 )) достаточно взять максимум
от рассмотренной суммы по всевозможным управлениям u1 на первом
24 Глава 1. Задачи управления многошаговыми процессами

шаге:
 
Z ∗ = B0 (x0 ) = max z1 (x0 , u1 ) + B1 (x1 ) |x1 = f1 (x0 , u1 ) .
u1

Данное соотношение совпадает по форме с типовыми равенствами,


полученными выше для случаев N = 2 и N = 1; конечно, его можно
было бы также получить путем строгих аналитических преобразо-
ваний, аналогичных проведенным выше для случая N = 2. Следуя
подобной методике, мы можем вычислить оптимальное значение задачи
для любого многошагового процесса.
Проведенные выкладки можно сопроводить следующими нестро-
гими рассуждениями. Как показано выше, проводить оптимизацию
многошагового процесса по отдельным шагам независимо нельзя, так
что придется проводить ее по всем шагам в совокупности. Однако, на-
ходясь на некотором промежуточном шаге, мы не в состоянии повлиять
на итоги уже проведенных предшествующих шагов. Таким образом,
придется оптимизировать текущий шаг (с экономическим эффектом
zi ) с учетом всех последующих шагов, пытаясь предусмотреть их итоги
(экономический эффект Bi ). При этом начинать оптимизацию необ-
ходимо с последнего шага, поскольку он не имеет последующих и
позволяет провести расчеты наиболее просто.
Последовательное проведение подобных рассуждений приводит
к установлению принципа оптимальности, лежащего в основе ме-
тода ДП решения задач управления многошаговыми процессами.

1.5. Принцип оптимальности Беллмана


Согласно Р. Беллману, основной принцип оптимальности управления
многошаговыми процессами может быть словесно выражен следую-
щим образом: «Оптимальное поведение обладает тем свойством, что,
каковы бы ни были исходное состояние и первоначальное решение,
последующие решения должны составлять оптимальное поведение от-
носительно состояния, получающегося в результате первоначального
решения». Иными словами, любой участок оптимальной траектории,
в том числе и завершающий, также является оптимальным, а ошибки
в управлении, приводящие к отклонениям от оптимальной территории,
впоследствии не могут быть исправлены. Конечно, столь общее поло-
жение не может быть непосредственно применено к решению задач ДП
и нуждается в конкретизации.
Для строгой формулировки принципа оптимальности введем, как
и выше, ряд вспомогательных функций B0 (x0 ), B1 (x1 ), . . . , BN (xN ).
Функции Bi (xi ), i = 0, 1, 2, . . . , N , имеют важный экономический смысл
1.5. Принцип оптимальности Беллмана 25

и представляют собой максимальные значения (рассмотрим для опре-


деленности случай задачи на поиск максимума) сумм частных целевых
функций
zi+1 (xi , ui+1 ) + . . . + zN (xN −1 , uN ),
вычисляемые по всем допустимым «укороченным» наборам управле-
ний (ui+1 , . . . , uN ). Иными словами, Bi (xi ) — условно-оптимальное
значение целевой функции при переводе системы из состояния xi
после шага с номером i в конечное состояние xN ; условность оптималь-
ного значения состоит в том, что оно относится не ко всему процессу,
а к его заключительной части, и зависит от выбора состояния xi ,
являющегося начальным для «укороченного» процесса. Тем самым
функции Bi (xi ), называемые функциями Беллмана, характеризуют
экстремальные свойства управляемой системы S на последних шагах
процесса. При этом имеет место простое и важное соотношение
BN (xN ) = 0,
справедливое по той причине, что состояние xN уже является ко-
нечным, дальнейших изменений состояний системы не происходит,
и соответствующий экономический эффект равен 0.
Принцип оптимальности Р. Беллмана, лежащий в основе метода ДП
решения рассматриваемых задач, выражается следующим основным
функциональным уравнением:
 
Bi−1 (xi−1 ) = max zi (xi−1 , ui ) + Bi (xi ) | xi = fi (xi−1 , ui ) , (∗)
ui
в котором индекс i изменяется по номерам всех шагов процесса в об-
ратном порядке: i = N, N − 1, . . . , 2, 1.
По своей структуре функциональное уравнение Беллмана является
рекуррентным. Это означает, что в последовательности функций
B0 (x0 ), B1 (x1 ), . . . , BN (xN ) каждая предшествующая выражается через
последующую 1) .
Важно подчеркнуть, что при вычислении максимума в функци-
ональном уравнении Беллмана для каждого фиксированного значе-
ния xi−1 одновременно с Bi−1 (xi−1 ) определяется то значение перемен-
ной ui (одно или несколько), для которых этот максимум достигается.
Это значение зависит от состояния xi−1 , и обозначать его будем через
ũi (xi−1 ) (символ «∼», называемый «тильда», служит в алфавитах раз-
личных языков на латинской основе для указания передачи буквой осо-
бого звучания, а в математике часто обозначает некоторую условность
1)
Здесь можно провести простую аналогию с известной функцией «факториал»,
определяемой равенством n! = 1 · 2 · . . . · (n − 1) · n; для нее справедливо рекуррентное
соотношение n! = n · (n − 1)!, показывающее, каким образом значение факториала
n! выражается через предшествующее значение (n − 1)!.
26 Глава 1. Задачи управления многошаговыми процессами

или приближенность). Фактически ũi (xi−1 ) является (возможно, мно-


гозначной) функцией, называемой условно-оптимальным управ-
лением (условность заключается в зависимости управления от вы-
бора состояния xi−1 ). И хотя функции ũi (xi−1 ) явно не фигурируют
в уравнении (∗), они играют не менее важную роль, чем функции
Беллмана Bi−1 (xi−1 ), и используются для окончательного построе-
ния оптимального решения. Таким образом, при проведении расчетов
последовательно вычисляются и запоминаются условно-оптимальные
управления ũN (xN −1 ), ũN −1 (xN −2 ), . . . , ũ1 (x0 ).
Следует заметить, что принцип оптимальности Беллмана рассмат-
ривает конкретную решаемую задачу с оптимальным значением B0 (x0 )
не обособленно, а как представителя семейства подобных ей задач с оп-
тимальными значениями B1 (x1 ), . . . , BN (xN ) меньшей размерности, т. е.
более простых. Между задачами этого семейства существует связь, ко-
торая описывается функциональным уравнением (∗) и позволяет, на-
чиная с простейшей функции BN (xN ) = 0, последовательно вычислить
все остальные функции BN −1 (xN −1 ), . . . , B0 (x0 ), т. е. фактически полу-
чить решения всего семейства задач. Данный прием, заключающийся
в замене задачи семейством однотипных задач, в результате решения
которых находится решение исходной задачи, называется принципом
инвариантного погружения.
Полностью аналогичное выражение имеет принцип оптимальности
и для решения задач на минимум; при этом в функциональном уравне-
нии (∗) обозначение максимума «max» просто меняется на обозначение
минимума «min».

1.6. Метод динамического программирования


и его основные этапы
Рассмотренный принцип оптимальности лежит в основе метода ДП
решения задач управления многошаговыми процессами. Метод ДП
включает три основных этапа:
1) предварительный этап;
2) этап условной оптимизации;
3) этап безусловной оптимизации.
Изложим содержание этих этапов, имея в виду задачу ДП на поиск
максимума.
Предварительный этап проводится с целью уменьшения вы-
числительной работы на последующем этапе решения и, по существу,
заключается в нахождении всех допустимых значений управлений ui
и фазовых переменных xi (т. е. фактически областей определения функ-
1.6. Метод динамического программирования и его основные этапы 27

ций Bi (xi ) или, в более сложных случаях, множеств, содержащих эти


области определения). Иными словами, на данном этапе отбрасываются
все заведомо неподходящие, нереализуемые значения фазовых и управ-
ляющих переменных. Проводится предварительный этап в естественном
порядке от первого шага к последнему: i = 1, 2, . . . , N , а опираются
соответствующие расчеты на уравнение процесса xi = fi (xi−1 , ui ). Дан-
ный этап особенно удобен при табличном способе задания функций,
фигурирующих в условии задачи.
Этап условной оптимизации заключается в непосредственном
вычислении функций Беллмана Bi (xi ) и проводится, как и предписы-
вает принцип оптимальности, в обратном порядке от последнего шага
к первому: i = N, N −1, . . . , 2, 1. Расчет проводится следующим образом.
Для последнего шага при i = N с учетом условия BN (xN ) = 0 принцип
оптимальности Беллмана принимает следующий наиболее простой вид:

BN −1 (xN −1 ) = max{zN (xN −1 , uN )}.


uN

Иначе говоря, при планировании последнего шага нет необходимости


учитывать прогноз на будущее. При этом для каждого допустимого
значения аргумента xN −1 (определенного на предварительном этапе)
максимум достигается при некотором управлении uN = ũN (xN −1 ). Вы-
численная функция BN −1 (xN −1 ) позволяет перейти к предшествую-
щему шагу при i = N −1 и снова применить принцип оптимальности —
он уже не будет иметь столь простую форму записи. Продолжая анало-
гичным образом, завершим данный этап вычислением функций B0 (x0 )
и ũ1 (x0 ) после прохождения первого шага при i = 1.
Этап безусловной оптимизации проводится с целью оконча-
тельного вычисления оптимального значения задачи Z ∗ и построения
оптимального управления (u∗1 , u∗2 , . . . , u∗N ) и оптимальной траектории
x∗0 , x∗1 , . . . , x∗N . Проводится данный этап в естественном порядке от пер-
вого шага к последнему: i = 1, 2, . . . , N . Построение оптимального ре-
шения начинается с определения оптимального значения задачи Z ∗
и оптимального начального состояния x∗0 . Если начальное состояние x0
определено однозначно, то оптимальное значение задачи Z ∗ равно
B0 (x0 ); при этом принимаем x∗0 = x0 . Если же начальное состояние x0
не определено однозначно, а принимает значения из некоторого мно-
жества начальных состояний X0 , то оптимальное значение задачи Z ∗
вычисляется по формуле

Z ∗ = max {B0 (x0 )}.


x0 ∈X0
28 Глава 1. Задачи управления многошаговыми процессами

В этом случае в качестве x∗0 принимаем то значение переменной x0 ,


при котором данный максимум достигается (таких значений может
быть одно или несколько).
При построении оптимального управления и оптимальной траекто-
рии используются функции ũi (xi−1 ), вычисленные на этапе условной
оптимизации. На первом шаге при i = 1, используя уже известное
значение x∗0 , находим:
u∗1 = ũ1 (x∗0 ), x∗1 = f1 (x∗0 , u∗1 ).
На втором шаге при i = 2, используя вычисленное x∗1 , находим:
u∗2 = ũ2 (x∗1 ), x∗2 = f2 (x∗1 , u∗2 ).
Продолжая аналогично, получим на последнем шаге при i = N :
u∗N = ũN (x∗N −1 ), x∗N = fN (x∗N −1 , u∗N ).
Таким образом полностью определяются оптимальное решение
(u∗1 , u∗2 , . . . , u∗N )
и оптимальная траектория x∗0 , x∗1 , . . . , x∗N системы. От-
метим, что и оптимальное решение, и оптимальная траектория могут
быть определены неоднозначно. Важно заметить, что функции Белл-
мана Bi (xi ) не участвуют в построении оптимального решения задачи
и, следовательно, не требуют длительного хранения в памяти при ре-
ализации метода ДП на ЭВМ.
Порядок расчетов в методе ДП может быть проиллюстрирован
следующей схемой, в которой точками обозначены состояния системы.

Номера шагов процесса


Этапы метода ДП
1 2 ... N

Предварительный • → • → • → ... → • → •

Условной оптимизации • ← • ← • ← ... ← • ← •

Безусловной оптимизации • → • → • → ... → • → •

Тем самым, в ходе решения задачи методом ДП весь многошаговый


процесс просчитывается три раза в переменных направлениях.
Отметим следующие основные достоинства метода ДП:
— сравнительная простота и однотипность расчетов, что является
удобным для алгоритмизации и программирования задач при их
решении на ЭВМ;
1.7. Замечания по практическому применению метода ДП 29

— снижение трудоемкости решения задач за счет более полного


использования свойств управляемых систем;
— отсутствие специальных ограничений на природу, характер
и свойства функций f и z. Они, например, могут не являться
линейными, выпуклыми, непрерывными, дифференцируемыми,
и могут быть заданы как таблично, так и аналитически, т. е.
в виде формул.
Обладая несомненными достоинствами, метод ДП не лишен и от-
дельных недостатков, основным из которых является необходимость
хранения большого объема промежуточной информации. Действи-
тельно, на этапе безусловной оптимизации используются условно-
оптимальные управления ũ1 (x0 ), ũ2 (x1 ), . . . , ũN (xN −1 ), вычисляемые
и запоминаемые на предшествующем этапе условной оптимизации.

1.7. Замечания по практическому применению


метода динамического программирования
Принцип оптимальности Беллмана (∗) сформулирован с использова-
нием фазовых и управляющих переменных xi и ui и функций fi (xi−1 , ui )
и zi (xi−1 , ui ). В то же время постановка большинства практических
задач не предполагает явного задания каких-либо математических пе-
ременных и функций. Следовательно, исходя из экономического содер-
жания решаемых задач, необходимо предварительно должным образом
ввести требуемые переменные и функции. Это надлежит сделать в сле-
дующем порядке.

1. Определить число N шагов в рассматриваемом управляемом про-


цессе. В ряде случаев выбор числа шагов может быть неочевиден
и неоднозначен. Например, при введении искусственного разбиения
непрерывного процесса на шаги с целью последующего применения
метода ДП число шагов не задается однозначно, а выбирается с уче-
том требуемой точности и оперативности решения, возможностей
применяемых вычислительных средств (ЭВМ) и иных факторов.
2. Установить, какой параметр определяет состояние системы и мо-
жет быть выбран в качестве фазовой переменной x, и выявить
налагаемые на нее ограничения.
3. Установить, какой параметр может быть выбран в качестве управ-
ляющей переменной u, и выявить налагаемые на нее ограничения.
4. Составить функцию процесса f , определяющую закон изменения
состояния системы.
30 Глава 1. Задачи управления многошаговыми процессами

5. Составить частную целевую функцию z, определяющую экономи-


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

Вспомогательная таблица

xi−1 ... } ⇓ i = 1, 2, . . . , N,
Bi−1 (xi−1 ) ... } ⇑ i = N, N − 1, . . . , 2, 1,

в которой представлены все допустимые значения аргумента xi−1


и функции Bi−1 (xi−1 );

Основная таблица

xi−1 ui xi zi Bi (xi ) zi + Bi (xi ) Bi−1 (xi−1 )


... ... ... ... ... ... ...
   
⇓ ⇑
i = 1, 2, . . . , N i = N, N − 1, . . . , 2, 1
(предварительный этап) (этап условной оптимизации)

с помощью которой и проводится непосредственно расчет функций


Беллмана Bi−1 (xi−1 ). Вспомогательная и основная таблицы строятся
и заполняются для всех i = 1, 2, . . . , N (т. е. всего строится N экзем-
пляров вспомогательных и основных таблиц, отвечающих N шагам
процесса; содержание таблиц, конечно, меняется от шага к шагу).
1.7. Замечания по практическому применению метода ДП 31

Справа от вспомогательной таблицы и снизу под основной таблицей


символами «⇓» и «⇑» указан порядок заполнения соответствующих
фрагментов таблиц, который будет подробно рассмотрен ниже.
Структура основной таблицы строго соответствует структуре функ-
ционального уравнения Беллмана (∗). Вычисления начинаются с вы-
бора значения аргумента xi−1 (столбец 1 таблицы) рассчитываемой
функции
Bi−1 (xi−1 ).
При расчете вычисляется максимум по управляющей переменной ui
(столбец 2). Значения xi−1 и ui в соответствии с формулами
xi = fi (xi−1 , ui ) и zi = zi (xi−1 , ui )
определяют значения xi и zi (столбцы 3 и 4). При вычислении мак-
симума по ui используется вычисленное ранее значение Bi (xi ) (стол-
бец 5), а максимум вычисляется от суммы
zi (xi−1 , ui ) + Bi (xi )
(столбец 6). Заканчиваются вычисления расчетом значения функции
Bi−1 (xi−1 ) (столбец 7). Основная таблица может содержать несколько
строчных фрагментов, соответствующих различным значениям фа-
зовой переменной xi−1 , представленной в первом столбце таблицы.
Особое внимание следует обратить на двойную вертикальную черту,
разделяющую основную таблицу на две части. Это разделение связано
с тем, что заполнение таблиц разнесено по двум этапам: предвари-
тельному этапу и этапу условной оптимизации. На предварительном
этапе проводится заполнение первой строки вспомогательной таблицы
и левой части (четырех столбцов слева от двойной вертикальной
черты) основной таблицы, содержащих значения переменных задачи
и частных целевых функций и не связанных непосредственно с вычис-
лением функций Беллмана Bi (xi ). Заполнение этих фрагментов таблиц
проводится в естественном порядке при i = 1, 2, . . . , N , что и отмечено
символом «⇓». На этапе условной оптимизации проводится заполнение
второй строки вспомогательной таблицы и правой части (трех столб-
цов справа от двойной вертикальной черты) основной таблицы, уже
непосредственно связанных с вычислением функций Bi (xi ). Заполне-
ние этих фрагментов таблиц проводится, как и предписывает принцип
оптимальности Беллмана, в обратном порядке при i = N, N −1, . . . , 2, 1,
что и отмечено символом «⇑». На этом же этапе вычисляются условно-
оптимальные управления ũi (xi−1 ), на которых достигаются промежу-
точные экстремумы. При заполнении основных таблиц соответствую-
щие условно-оптимальные значения управляющей переменной будут
32 Глава 1. Задачи управления многошаговыми процессами

отмечаться знаком «» (в отличие от символа «∗» для оптимальных


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

➲ Контрольные вопросы
1. Поясните роль и значение математических методов в решении
практических задач управления.
2. Дайте понятие многошагового процесса.
3. Для решения какого класса задач применяется метод ДП?
4. Что такое фазовая переменная и в чем состоят ее роль и пред-
назначение?
5. Что такое управляющая переменная и каковы ее роль и пред-
назначение?
6. Что такое функция процесса и в чем заключаются ее предна-
значение и экономическое содержание?
7. Что такое целевая функция и в чем состоят ее предназначение
и экономическое содержание?
8. Сформулируйте понятие допустимого управления и поясните,
в чем состоит его смысл.
9. Сформулируйте понятие оптимального управления и поясните,
в чем состоит его смысл.
10. Дайте понятие траектории и оптимальной траектории.
11. Дайте понятие оптимального значения задачи.
12. Сформулируйте и поясните основные допущения метода ДП.
13. По какой причине оптимизация по нескольким шагам процесса
не сводится к независимой оптимизации по отдельным шагам?
Контрольные вопросы 33

14. Как связаны между собой задачи на поиск максимума и мини-


мума?
15. Почему классические методы поиска экстремальных значений
функций многих переменных, основанные на дифференциальном
исчислении, не всегда практически применимы?
16. Что такое условно-оптимальные значения целевой функции и ка-
ково их экономическое содержание?
17. Поясните принцип оптимальности Беллмана.
18. Запишите основное функциональное уравнение Беллмана.
19. Поясните, что означает рекуррентный характер функциональ-
ного уравнения Беллмана.
20. В чем заключается принцип инвариантного погружения?
21. Поясните, что такое условно-оптимальные управления.
22. Назовите и охарактеризуйте этапы метода ДП.
23. Поясните, для чего, на каких этапах метода ДП и на сколь дол-
гий срок требуется запоминание функций Беллмана и условно-
оптимальных управлений.
24. Укажите основные достоинства и недостатки метода ДП.
25. В чем заключаются сложности, возникающие при практическом
применении метода ДП?
26. Назовите и охарактеризуйте основные шаги математической фор-
мализации задач управления многошаговыми процессами.
27. Опишите структуру и порядок заполнения таблиц, используемых
при проведении метода ДП.
Глава 2

ПРИМЕРЫ РЕШЕНИЯ ТИПОВЫХ ЗАДАЧ


МЕТОДОМ ДИНАМИЧЕСКОГО
ПРОГРАММИРОВАНИЯ

Применение рассмотренных теоретически в гл. 1 принципа оптималь-


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

2.1. Задача о распределении инвестиций


Условие задачи. В производственное объединение входят три
предприятия П1 , П2 , П3 . Руководство объединения решило инвестиро-
вать в свои предприятия 5 условных денежных единиц (усл. ден. ед.)
в общей сумме. Проведенные маркетинговые исследования прогнози-
руют величину ожидаемой прибыли каждого из предприятий в зависи-
мости от объема инвестированных средств. Эти данные представлены
в приведенной ниже таблице. Считается, что при нулевых инвестициях
ожидается нулевая прибыль.
Требуется найти такое распределение инвестиций между предпри-
ятиями, которое обеспечило бы максимум суммарной ожидаемой при-
были.
2.1. Задача о распределении инвестиций 35

Ожидаемая прибыль предприятий


Объем инвестиций
П1 П2 П3
1 2 1 3
2 4 2 6
3 6 6 8
4 8 10 9
5 10 12 10

Решение. В данной задаче управляемой системой является рас-


сматриваемое производственное объединение, многошаговым процес-
сом — процесс выделения средств предприятиям. Отметим, что струк-
тура многошагового процесса в данной задаче определяется не тече-
нием времени, а порядком планирования распределения инвестиций.
Экономический эффект представляет суммарная величина ожидаемой
прибыли, и при этом задача решается на поиск максимума.
Для решения поставленной задачи построим прежде всего ее
экономико-математическую модель в соответствии с пп. 1–5 разд. 1.7
гл. 1.
1. Число шагов N в данной задаче следует принять равным 3,
соответствующим числу входящих в производственное объединение
предприятий: на первом шаге планируется выделение средств пред-
приятию П1 , на втором шаге — предприятию П2 , на третьем шаге —
предприятию П3 .
2. В качестве фазовой переменной x, определяющей состояние си-
стемы в ходе процесса распределения инвестиций, примем суммарный
объем средств, выделенных предприятиям после каждого шага про-
цесса. Именно, переменная x1 представляет объем средств, выделенных
предприятиям после первого шага процесса (т. е. только предприя-
тию П1 ), x2 — объем средств, выделенных после второго шага (пред-
приятиям П1 и П2 ), x3 — объем средств, выделенных после третьего
шага процесса (всем предприятиям П1 , П2 и П3 ). Поскольку в началь-
ный момент общая сумма выделенных средств равна 0, то начальное
состояние системы характеризуется значением x0 = 0. По условию за-
дачи общая сумма инвестируемых средств равна 5 усл. ден. ед., т. е.
обязательно выполняется условие x3 = 5. Поскольку по смыслу задачи
на каждом шаге процесса значения фазовой переменной не убывают,
то выполняется ограничение xi  5. Отметим, что проведенный выбор
фазовой переменной с указанным экономическим смыслом не явля-
ется единственно возможным. Например, в рассматриваемой задаче
36 Глава 2. Примеры решения типовых задач

можно было выбрать в качестве переменной x остаток нераспределен-


ных средств.
3. В качестве управляющей переменной u примем объем средств,
выделяемых предприятиям на каждом из шагов процесса. Именно, пе-
ременная u1 представляет объем средств, выделяемых предприятию П1
(на 1-м шаге процесса), u2 — объем средств, выделяемых предприя-
тию П2 (на 2-м шаге), u3 — объем средств, выделяемых предприятию П3
(на 3-м шаге). Будем считать, что средства предприятиям выделяются
суммами по целому числу усл. ден. ед.; соответственно все управления
принимают только целочисленные значения 0, 1, 2, . . . .
4. Функция процесса xi = fi (xi−1 , ui ), определяющая закон измене-
ния состояния системы, для данной задачи представляется формулой
xi = xi−1 + ui
и имеет следующий простой смысл: суммарный объем средств xi ,
выделенных предприятиям нарастающим итогом после текущего шага
с номером i, равен суммарному объему средств xi−1 , выделенных пред-
приятиям после предшествующего шага с номером i − 1 (или, что то
же самое, до текущего шага), плюс объем средств ui , выделенных
предприятию Пi на текущем шаге.
5. Функция zi , определяющая частный экономический эффект
на шаге с номером i процесса, зависит только от объема ui инвести-
рованных средств в предприятие Пi , т. е. zi = zi (ui ), и определяется
по таблице данных задачи по столбцу, отвечающему этому предприя-
тию. Например, z1 (2) = 4 (из столбца, отвечающего предприятию П1 ),
z2 (3) = 6, z3 (4) = 9.
На этом действия, предписываемые пп. 1-5 разд. 1.7 гл. 1 вы-
полнены, что означает завершение математической формализации
поставленной задачи, т. е. построение соответствующей экономико-
математической модели. Заметим, что после проведенной указанным
образом формализации основные допущения метода ДП выполняются:
отсутствие последействия следует из явных формул для вычисления
xi и zi , а аддитивность целевой функции
Z = z1 (u1 ) + z2 (u2 ) + z3 (u3 )
обусловлена самой постановкой задачи.
Тем самым можно непосредственно приступить к расчетам в соот-
ветствии с методом ДП. Эти расчеты, как указывалось выше в разд. 1.6
гл. 1, проводятся в три этапа: предварительный этап, этап условной оп-
тимизации и этап безусловной оптимизации. На предварительном этапе
и на этапе условной оптимизации результаты расчетов заносятся во
2.1. Задача о распределении инвестиций 37

вспомогательную и основную таблицы той структуры, которая при-


ведена в разд. 1.7 гл. 1. На этапе безусловной оптимизации строится
оптимальное решение задачи с использованием информации, содержа-
щейся в основных таблицах.
Предварительный этап. Данный этап решения задачи прово-
дится в естественном порядке для i = 1, 2, 3 и не связан непосредственно
с вычислением функций Беллмана Bi (xi ). Заполняются только первая
строка вспомогательной таблицы и четыре левых столбца основной
таблицы.
i = 1.
Вспомогательная таблица заполняется соответственно начальному
условию x0 = 0 и имеет вид

x0 0
B0 (x0 )

Заполнение основной таблицы проводится следующим образом. Для


заданного единственного допустимого значения x0 = 0 выбираем все
возможные значения управления u1 (оно может принимать все цело-
численные значения от 0 до 5 включительно) и заносим их во второй
столбец таблицы. По формуле x1 = x0 + u1 (следующей из общей фор-
мулы xi = xi−1 + ui при i = 1) проводим расчет соответствующих
значений переменной x1 и заносим их в третий столбец. Для запол-
нения четвертого столбца значения ожидаемой прибыли z1 берем из
столбца таблицы исходных данных задачи, отвечающего предприя-
тию П1 : для u1 = 1 по этой таблице z1 = 2, для u1 = 2 по таблице
z1 = 4 и т. д. Для u1 = 0 по условию задачи z1 = 0. Получаем следу-
ющую основную таблицу:

x0 u1 x1 z1 B1 (x1 ) z 1 + B1 B0 (x0 )
0 0 0 0
1 1 2
2 2 4
3 3 6
4 4 8
5 5 10

На этом заполнение левой части основной таблицы завершено, при-


чем таблица имеет только один строчный фрагмент. Переходим к сле-
дующему шагу.
38 Глава 2. Примеры решения типовых задач

i = 2.
На втором шаге в первую строку вспомогательной таблицы внесем
все значения переменной x1 , рассчитанные на предшествующем шаге
и фигурирующие в третьем столбце предыдущей основной таблицы.
Получаем следующую вспомогательную таблицу:

x1 0 1 2 3 4 5
B1 (x1 )

Для заполнения основной таблицы на данном шаге будем, анало-


гично предшествующему шагу, последовательно выбирать все допусти-
мые значения x1 , внесенные во вспомогательную таблицу, и проводить
соответствующие расчеты. Каждому значению x1 будет соответство-
вать свой строчный фрагмент основной таблицы; разделяются сосед-
ние строчные фрагменты горизонтальной линией.
Для значения x1 = 0 выбираем все возможные значения управ-
ления u2 (оно может принимать все целочисленные значения от 0
до 5 включительно) и заносим их во второй столбец таблицы. По
формуле x2 = x1 + u2 (следующей из общей формулы xi = xi−1 + ui
при i = 2) проводим расчет соответствующих значений переменной x2
и заносим их в третий столбец. Для заполнения четвертого столбца
значения ожидаемой прибыли z2 берем из столбца таблицы исходных
данных задачи, отвечающего предприятию П2 : для u2 = 1 по этой
таблице z2 = 1, для u2 = 2 по таблице z2 = 2 и т. д. На этом завер-
шается заполнение первого строчного фрагмента основной таблицы,
соответствующего x1 = 0; этот фрагмент имеет следующий вид:

x1 u2 x2 z2 B2 (x2 ) z 2 + B2 B1 (x1 )
0 0 0 0
1 1 1
2 2 2
3 3 6
4 4 10
5 5 12

Для следующего допустимого значения x1 = 1 строим следу-


ющий строчный фрагмент. При этом управление u2 может при-
нимать все целочисленные значения от 0 до 4 включительно (по-
скольку после выделения предприятию П1 средств в объеме x1 = 1
2.1. Задача о распределении инвестиций 39

свободных средств остается 5 − 1 = 4). Проводя расчеты по тем же


формулам, получим второй строчный фрагмент следующего вида:

x1 u2 x2 z2 B2 (x2 ) z 2 + B2 B1 (x1 )
0 0 0 0
1 1 1
2 2 2
3 3 6
4 4 10

Аналогично формируются строчные фрагменты таблицы и для


x1 = 2, 3, 4, 5. Ясно, что с увеличением значения x1 множество до-
пустимых значений управления u2 сужается, и для x1 = 5 допусти-
мым является только одно значение u2 = 0. В результате получаем
следующую основную таблицу:

x1 u2 x2 z2 B2 (x2 ) z 2 + B2 B1 (x1 )
0 0 0 0
1 1 1
2 2 2
3 3 6
4 4 10
5 5 12
1 0 1 0
1 2 1
2 3 2
3 4 6
4 5 10
2 0 2 0
1 3 1
2 4 2
3 5 6
3 0 3 0
1 4 1
2 5 2
4 0 4 0
1 5 1
5 0 5 0

Построенная таблица разделена на 6 строчных фрагментов —


столько же, сколько различных значений может принимать перемен-
ная x1 . Переходим к следующему (последнему) шагу.
40 Глава 2. Примеры решения типовых задач

i = 3.
На третьем шаге в первую строку вспомогательной таблицы внесем
все значения переменной x2 , рассчитанные на предшествующем шаге
и фигурирующие в третьем столбце предыдущей основной таблицы.
Эти значения многократно повторяются, но вносим их только по од-
ному разу (за счет этого, в частности, сокращается объем вычислений).
Получаем следующую вспомогательную таблицу:

x2 0 1 2 3 4 5
B2 (x2 )

Для заполнения основной таблицы поступаем рассмотренным выше


образом. Некоторая особенность данного последнего шага заключа-
ется в том, что поскольку сумма инвестируемых средств должна быть
строго равна 5 усл. ден. ед., то для любого значения x2 управление u3
может принимать только одно значение, дополняющее x2 до 5. При
этом всегда x3 = 5, а значения z3 , как обычно, берутся из столбца
таблицы исходных данных задачи, отвечающего предприятию П3 . Со-
ответственно основная таблица имеет компактный вид:

x2 u3 x3 z3 B3 (x3 ) z 3 + B3 B2 (x2 )
0 5 5 10
1 4 5 9
2 3 5 8
3 2 5 6
4 1 5 3
5 0 5 0

На этом предварительный этап решения задачи завершен. Под-


черкнем, что вторые строки вспомогательных таблиц и три правых
столбца основных таблиц остались незаполненными. Заполнение этих
фрагментов таблиц будет проведено на следующем этапе условной
оптимизации, к проведению которого мы приступаем.
Этап условной оптимизации. Данный этап решения задачи
непосредственно связан с вычислением функций Беллмана Bi (xi ) и про-
водится в обратном порядке для i = 3, 2, 1. На данном этапе заполня-
ются фрагменты таблиц, оставленные незаполненными на предыдущем
предварительном этапе. На этом же этапе расставляются и знаки «»,
2.1. Задача о распределении инвестиций 41

указывающие те условно-оптимальные значения управления, на кото-


рых достигаются промежуточные максимумы — эти значения и состав-
ляют функцию ũi (xi−1 ), введенную в гл. 1.
Для удобства изложения мы еще раз приведем все вспомогатель-
ные и основные таблицы в порядке их окончательного заполнения;
этот прием носит чисто методический характер и призван облегчить
понимание логики решения. Такое повторение таблиц мы проведем
только один раз; в дальнейшем при решении последующих задач ДП
переписывать уже составленные и частично заполненные на предвари-
тельном этапе таблицы не следует — вполне достаточно лишь завершить
их заполнение.
i = 3.
Поскольку в соответствии с общим принципом оптимальности Белл-
мана имеет место соотношение
BN (xN ) = 0,
а в рассматриваемой задаче N = 3, то B3 (x3 ) = 0, и в пятый столбец
основной таблицы, полученной выше для i = 3, записываются нулевые
значения. При этом в шестой столбец записываются суммы двух чисел
из двух предшествующих столбцов, а в последний седьмой столбец
заносится максимум (поскольку задача решается на поиск максимума)
из всех чисел шестого столбца для каждого строчного фрагмента от-
дельно. Но поскольку в данной таблице в каждом строчном фрагменте
имеется только одна строка, то максимум совпадает с единственным
числом, фигурирующим в шестом столбце. Основная таблица прини-
мает следующий окончательно заполненный вид:

x2 u3 x3 z3 B3 (x3 ) z 3 + B3 B2 (x2 )
0 5 5 10 0 10 10
1 4 5 9 0 9 9
2 3 5 8 0 8 8
3 2 5 6 0 6 6
4 1 5 3 0 3 3
5 0 5 0 0 0 0

После заполнения всей основной таблицы при i = 3 оказываются


вычисленными все значения функции B2 (x2 ) (она уже не является
тождественно равной нулю). Эти значения заносятся во вторую строку
вспомогательной таблицы, которая принимает следующий вид:
42 Глава 2. Примеры решения типовых задач

x2 0 1 2 3 4 5
B2 (x2 ) 10 9 8 6 3 0

Переходим к следующему шагу этапа условной оптимизации, идя


по убыванию номеров.
i = 2.
На данном шаге имеющаяся основная таблица содержит 6 строч-
ных фрагментов, по которым и проводится ее заполнение. Рассмот-
рим первый строчный фрагмент, соответствующий x1 = 0. В пятый
столбец основной таблицы записываются значения B2 (x2 ), выбирае-
мые из только что заполненной вспомогательной таблицы. При этом
для первой строки рассматриваемого строчного фрагмента x2 = 0
и, следовательно, B2 (x2 ) = B2 (0) = 10, для второй строки x2 = 1
и B2 (1) = 9, для последней строки x2 = 5 и B2 (5) = 0. В шестой столбец
записываются суммы двух чисел из двух предшествующих столбцов:
в первой строке рассматриваемого строчного фрагмента 0+ 10 = 10, во
второй строке 1 + 9 = 10, в последней строке 12 + 0 = 12. Для заполне-
ния последнего столбца с B1 (x1 ) выберем максимум (поскольку задача
решается на поиск максимума) из всех чисел шестого столбца с z2 +B2
данного строчного фрагмента, т. е. max{10, 10, 10, 12, 13, 12}. Этот мак-
симум равен 13 и достигается при u2 = 4; данное значение управления
(оно и является условно-оптимальным) отметим знаком «». Первый
строчный фрагмент основной таблицы при i = 2 примет следующий
законченный вид:

x1 u2 x2 z2 B2 (x2 ) z 2 + B2 B1 (x1 )
0 0 0 0 10 10 13
1 1 1 9 10
2 2 2 8 10
3 3 6 6 12
4 4 10 3 13
5 5 12 0 12

Отметим, что в предшествующей основной таблице для i = 3 знаки «»


не проставлены, поскольку в каждом ее строчном фрагменте имеется
только одно значение управления, автоматически являющееся условно-
оптимальным и не требующее специальных отметок.
Рассмотрим второй строчный фрагмент таблицы, соответствующий
x1 = 1. Проводя расчеты тем же способом, получим:
2.1. Задача о распределении инвестиций 43

x1 u2 x2 z2 B2 (x2 ) z 2 + B2 B1 (x1 )
1 0 1 0 9 9 10
1 2 1 8 9
2 3 2 6 8
3 4 6 3 9
4 5 10 0 10

Аналогично заполняются строчные фрагменты таблицы и для


остальных значений x1 = 2, 3, 4, 5. В результате получаем следующую
окончательно заполненную основную таблицу:

x1 u2 x2 z2 B2 (x2 ) z 2 + B2 B1 (x1 )
0 0 0 0 10 10 13
1 1 1 9 10
2 2 2 8 10
3 3 6 6 12
4 4 10 3 13
5 5 12 0 12
1 0 1 0 9 9 10
1 2 1 8 9
2 3 2 6 8
3 4 6 3 9
4 5 10 0 10
2 0 2 0 8 8 8
1 3 1 6 7
2 4 2 3 5
3 5 6 0 6
3 0 3 0 6 6 6
1 4 1 3 4
2 5 2 0 2
4 0 4 0 3 3 3
1 5 1 0 1
5 0 5 0 0 0 0

После заполнения всей основной таблицы при i = 2 оказываются


вычисленными все значения функции B1 (x1 ); они заносятся во вторую
строку вспомогательной таблицы, которая принимает вид

x1 0 1 2 3 4 5
B1 (x1 ) 13 10 8 6 3 0
44 Глава 2. Примеры решения типовых задач

Обратим внимание на заполненную основную таблицу. В ней


для каждого значения x1 знаком «» отмечено одно значение управле-
ния u2 , на котором достигается максимум при вычислении B1 (x1 ) (для
x1 = 5 отметки нет, но здесь ситуация однозначна: u2 = 0). Эти зна-
чения и представляют собой функцию ũ2 (x1 ) условно-оптимального
управления, о которой говорилось в гл. 1 при рассмотрении теоре-
тических основ принципа Беллмана. Данные значения можно свести
в таблицу следующего вида:

x1 0 1 2 3 4 5
ũ2 (x1 ) 4 4 0 0 0 0

однако необходимости в ее построении нет, поскольку вся информация


содержится в основной таблице. Переходим к следующему (последнему)
шагу этапа условной оптимизации.
i = 1.
На данном шаге в основной таблице имеется всего лишь один
строчный фрагмент, соответствующий x0 = 0. Заполняем его обычным
образом:

x0 u1 x1 z1 B1 (x1 ) z 1 + B1 B0 (x0 )
0 0 0 0 13 13 13
1 1 2 10 12
2 2 4 8 12
3 3 6 6 12
4 4 8 3 11
5 5 10 0 10

Вспомогательная таблица принимает следующий вид:

x0 0
B0 (x0 ) 13

На этом все построенные таблицы заполнены, и этап условной


оптимизации завершен. Приступаем к этапу безусловной оптимизации.
Этап безусловной оптимизации. На данном этапе решения
задачи определяется оптимальное значение задачи Z ∗ , строится опти-
мальное управление (u∗1 , u∗2 , u∗3 ) и оптимальная траектория x∗0 , x∗1 , x∗2 , x∗3 .
Поскольку начальное состояние x0 = 0 определено однозначно, то
2.1. Задача о распределении инвестиций 45

Z ∗ = B0 (x0 ) = 13; полагаем при этом x∗0 = x0 = 0. Для построе-


ния оптимального управления и оптимальной траектории просмотрим
еще раз все заполненные основные таблицы в естественном порядке
при i = 1, 2, 3, используя отмеченные знаками «» строки, содержа-
щие условно-оптимальные значения управления. Получаем следующую
цепочку шагов.
i = 1.
На данном шаге в первой основной таблице знаком «» отмечено
условно-оптимальное управление u1 = 0, которое и является опти-
мальным: u∗1 = 0; в той же строке таблицы находим соответственно
x∗1 = 0.
i = 2.
На данном шаге соответствующая основная таблица содержит 6
строчных фрагментов. Из них мы выбираем только тот строчный
фрагмент, который соответствует уже найденному на предшествующем
шаге оптимальному значению x∗1 = 0. В этом фрагменте условно-
оптимальным является отмеченное знаком «» значение u2 = 4, которое
и становится оптимальным: u∗2 = 4; в той же строке находим x∗2 = 4.
i = 3.
На данном шаге из соответствующей основной таблицы выби-
раем тот строчный фрагмент, который соответствует уже найденному
на предшествующем шаге оптимальному значению x∗2 = 4. Этот фраг-
мент содержит только одну строку и одно значение управления, которое
и является оптимальным: u∗3 = 1, x∗3 = 5.
Таким образом, оптимальное решение задачи построено, имеет вид
(0; 4; 1) и определено однозначно. Оптимальная траектория имеет вид
x∗0 = 0, x∗1 = 0, x∗2 = 4, x∗3 = 5.
Этап безусловной оптимизации метода ДП завершен.

Тем самым решение поставленной задачи проведено полностью.


Учитывая экономический смысл переменных и функций, введен-
ных при составлении экономико-математической модели, формулируем
окончательный ответ к задаче.

Ответ: максимум суммарной ожидаемой прибыли по всему произ-


водственному объединению равен 13 усл. ден. ед.; для его получения
следует не выделять средств предприятию П1 (поскольку u∗1 = 0),
предприятию П2 следует выделить 4 усл. ден. ед. (u∗2 = 4), пред-
приятию П3 — 1 усл. ден. ед. (u∗3 = 1).
46 Глава 2. Примеры решения типовых задач

К решению данной задачи необходимо сделать ряд следующих за-


мечаний.
Замечание 1. Конечно, данную задачу можно было бы решить
методом перебора всех допустимых значений управления, организовав
его, например, в виде приведенной ниже таблицы. В ней содержатся
все допустимые варианты распределения инвестиций. При этом пере-
менная u1 поочередно принимает значения от 0 до 5, при каждом
фиксированном значении u1 переменная u2 изменяется от 0 до 5 − u1
(чтобы выполнялось условие u1 + u2  5), а переменная u3 дополняет
сумму u1 + u2 до 5. По набору значений u1 , u2 , u3 однозначно опре-
деляются z1 , z2 , z3 и Z = z1 + z2 + z3 . Искомый максимум достигается
на варианте 5 и соответствует значениям u1 = 0, u2 = 4, u3 = 1, как
и получено выше. Всего рассмотрен 21 вариант, и при этом для вы-
числения Z пришлось сделать 21 · 2 = 42 операции сложения. В то же
время при решении задачи методом ДП, как легко подсчитать при рас-
смотрении основных таблиц для i = 1, 2, 3, для вычисления функций

Номер варианта u1 u2 u3 z1 z2 z3 Z
1 0 0 5 0 0 10 10
2 1 4 0 1 9 10
3 2 3 0 2 8 10
4 3 2 0 6 6 12
5 4 1 0 10 3 13
6 5 0 0 12 0 12
7 1 0 4 2 0 9 11
8 1 3 2 1 8 11
9 2 2 2 2 6 10
10 3 1 2 6 3 11
11 4 0 2 10 0 12
12 2 0 3 4 0 8 12
13 1 2 4 1 6 11
14 2 1 4 2 3 9
15 3 0 4 6 0 10
16 3 0 2 6 0 6 12
17 1 1 6 1 3 10
18 2 0 6 2 0 8
19 4 0 1 8 0 3 11
20 1 0 8 1 0 9
21 5 0 0 10 0 0 10
2.1. Задача о распределении инвестиций 47

Беллмана Bi (xi ) достаточно было сделать лишь 33 операции сложения.


Аналогичный эффект достигается и при расчете значений фазовых пе-
ременных. Тем самым, метод ДП является более экономичным в плане
вычислений, чем метод простого перебора. Для более сложных задач,
включающих больший объем исходных данных и содержащих дробные
числа (как обычно бывает на практике), эффективность метода ДП
по сравнению с методом перебора еще более возрастает.
Замечание 2. Последняя таблица позволяет провести полезное
и поучительное сопоставление оптимального значения со средним
и минимальным значениями суммарной ожидаемой прибыли Z. Как
легко рассчитать по таблице, среднее значение Z по всем вари-
антам равно 10,67. . . , а минимальное — 8 усл. ден. ед., что состав-
ляет соответственно около 82 % и 67 % от максимального значения
Z ∗ = 13 усл. ден. ед. Далее, наиболее простые решения, заключаю-
щиеся в выделении всей суммы инвестиций только одному из пред-
приятий П1 , П2 или П3 , принесут прибыль в размере 10, 12 или
10 усл. ден. ед. соответственно, что также ниже оптимального значе-
ния. Не даст высокого эффекта и решение распределить инвестиции
между предприятиями «примерно поровну». Наблюдаемое снижение
экономической эффективности по сравнению с оптимальным вариан-
том подтверждает высокую практическую значимость оптимизацион-
ных задач управления.
Замечание 3. Подчеркнем, что не все условно-оптимальные зна-
чения управления, отмеченные в основных таблицах знаком «», ста-
новятся безусловно оптимальными — для этого необходимо, чтобы соот-
ветствующее значение фазовой переменной оказалось на оптимальной
траектории. Например, при i = 2 оптимальным стало только значе-
ние u2 = 4, вычисленное для x1 = 0; все остальные значения пере-
менной x1 оказались вне оптимальной траектории, и отвечающие им
условно-оптимальные управления востребованы не были.
Замечание 4. Отметим еще раз высокую алгоритмичность ме-
тода ДП и покажем, что при некотором небольшом навыке програм-
мирования нетрудно составить программу, реализующую вычисления
по данному методу (читатель, не знакомый с языками программиро-
вания, может пропустить это замечание без ущерба для понимания).
Приведем соответствующий фрагмент программы на языке програм-
мирования Microsoft Visual Basic. Будем считать, что значение пе-
ременной N программы равно числу предприятий (или числу шагов
процесса), значение переменной M — общей сумме распределяемых ин-
вестиций (конечно, в рассматриваемом примере число шагов N может
48 Глава 2. Примеры решения типовых задач

быть больше 3, а распределяемая сумма M — больше 5). Все данные


задачи считаем для простоты целочисленными, имеющими тип integer;
ключевые слова языка выделяем полужирным шрифтом. Оператором
ReDim Z(1 To N, 0 To M)
определим массив чисел Z, элементы zik которого представляют собой
прибыль предприятия Пi при условии, что ему выделено k усл. ден. ед.
инвестиций; соответствующие значения могут быть введены с клавиа-
туры, считаны из файла или получены каким-либо иным способом. Тем
самым исходные данные задачи полностью заданы. Один из вариантов
вычислительного фрагмента программы имеет следующий вид:
ReDim B(0 To M)
’ Этап условной оптимизации:
B(M) = 0
ReDim Usub(1 To N, 0 To M)
For i = N To 1 Step -1
x1 = M: If i = 1 Then x1 = 0
For x = 0 To x1
u0 = 0: u1 = M − x: If i = N Then u0 = u1
For u = u0 To u1
y=x+u
s = Z(i, u) + B(y)
If u > u0 Then
If s <= sMax Then GoTo Cycle
End If
sMax = s: Usub(i, x) = u
Cycle:
Next
B(x) = sMax
Next
Next
’ Этап безусловной оптимизации:
Zmax = B(0)
ReDim Uoptim(1 To N)
x=0
For i = 1 To N
Uoptim(i) = Usub(i, x)
x = x + Uoptim(i)
Next
Не останавливаясь подробно на комментариях к программе, укажем
смысл ее основных переменных: i — номер шага (изменяющийся, как
2.2. Распределение инвестиций по максимуму нормы прибыли 49

и предписывает метод ДП, на этапе условной оптимизации в обратном


порядке от N до 1, а на этапе безусловной оптимизации от 1 до N ); x —
значение фазовой переменной; u — значение управляющей переменной;
B(x) — массив для хранения значений функций Беллмана; Usub(i, x) —
массив для хранения условно-оптимальных значений управления. По
окончании расчетов оптимальное значение задачи сохраняется в пе-
ременной Zmax, оптимальное решение — в массиве Uoptim(i). Данная
программа находит только одно из, возможно, нескольких оптимальных
решений задачи, а именно то, для которого значения ũi (xi−1 ) мини-
мальны. Для поиска всех оптимальных решений задачи в программу
необходимо внести соответствующие дополнения.
Отметим, что в предлагаемом фрагменте программы предвари-
тельный этап метода ДП не представлен по следующим причинам.
Для данной задачи выполняются условия x0 = 0, x3 = 5, а множе-
ства значений фазовых переменных x1 и x2 (или, иными словами,
области определения функций Беллмана B1 (x1 ) и B2 (x2 )) совпадают
с множеством всех целых чисел от 0 до 5 включительно. Аналогич-
ное свойство справедливо и для произвольных N и M , что неявно
было учтено при составлении программы и позволило не программи-
ровать предварительный этап. Конечно, для других более сложных
задач предварительный этап метода ДП может оказаться не столь
элементарным и потребовать тщательного программирования.

2.2. Задача о распределении инвестиций


по максимуму нормы прибыли
Условие задачи. Сохраняя исходные данные предыдущей за-
дачи, предположим, что руководство производственного объедине-
ния имеет возможность инвестировать в свои предприятия не ровно
5 усл. ден. ед., а некоторую сумму от 3 до 5 усл. ден. ед. включительно.
Требуется найти такое распределение инвестиций между предприяти-
ями, которое обеспечило бы для производственного объединения мак-
симальную норму прибыли, под которой будем понимать отношение
ожидаемой прибыли к объему инвестированных средств.

Замечание 1. Конечно, поставленную задачу можно решить по


образцу предыдущей, проведя отдельно расчеты для сумм в 3, 4
и 5 усл. ден. ед., но это привело бы к громоздким дублирующимся
вычислениям. Гораздо более эффективным решением будет проведение
одного общего расчета по следующей схеме, в которой проведен иной
выбор фазовой переменной.
50 Глава 2. Примеры решения типовых задач

Решение. В данной задаче, как и в предыдущей, управляемой


системой является рассматриваемое производственное объединение,
многошаговым процессом — процесс выделения средств предприятиям.
Экономический эффект представляет норма прибыли, и при этом за-
дача решается на поиск максимума.
Проведем прежде всего математическую формализацию поставлен-
ной задачи, т. е. построим ее экономико-математическую модель в со-
ответствии с пп. 1–5 из разд. 1.7 гл. 1.
1. Число шагов N в данной задаче, как и в предыдущей, следует
принять равным 3: на первом шаге планируется выделение средств
предприятию П1 , на втором шаге — предприятию П2 , на третьем шаге —
предприятию П3 .
2. Поскольку в отличие от предыдущей задачи сумма распределя-
емых средств не является известной заранее, то следует рассмотреть
не одно, а несколько возможных начальных состояний системы. При
этом в качестве фазовой переменной x, определяющей состояние си-
стемы в ходе процесса распределения инвестиций, удобно принять сум-
марный объем средств, оставшихся нераспределенными после каждого
шага процесса. Начальное состояние системы представляет собой весь
объем инвестируемых средств и характеризуется переменной x0 , кото-
рая может принимать значения 3, 4, 5. Переменная x1 представляет
объем нераспределенных средств после первого шага процесса (т. е.
после выделения средств предприятию П1 ), x2 — объем нераспределен-
ных средств после второго шага (после выделения средств предприя-
тиям П1 и П2 ), x3 — объем нераспределенных средств после третьего
шага процесса (после выделения средств всем предприятиям П1 , П2
и П3 ). Поскольку все инвестируемые средства распределяются между
предприятиями без остатка, то должно выполняться условие x3 = 0.
3. В качестве управляющей переменной u примем, как и в преды-
дущей задаче, объем средств, выделяемых предприятиям на каж-
дом из шагов процесса. Именно, переменная ui представляет объем
средств, выделяемых предприятию Пi на шаге с номером i процесса.
Как и выше, будем считать, что средства предприятиям выделяются
суммами по целому числу усл. ден. ед., т. е. все управления прини-
мают только целочисленные значения. По смыслу задачи выполняется
условие
u1 + u2 + u3 = x0 .

4. Функция процесса xi = fi (xi−1 , ui ), определяющая закон измене-


ния состояния системы, для данного выбора фазовой и управляющей
2.2. Распределение инвестиций по максимуму нормы прибыли 51

переменных представляется формулой


xi = xi−1 − ui
и имеет следующий экономический смысл: на каждом шаге объем
нераспределенных средств уменьшается на величину инвестиций в со-
ответствующее предприятие.
5. Составим целевую функцию, определяющую экономический
эффект в данной задаче. Чтобы в наибольшей степени сохранить
сходство с предыдущей задачей и подчеркнуть отличия, обозначим
частные целевые функции, итоговую целевую функцию и оптимальное
значение данной задачи через yi , Y и Y ∗ соответственно. Как и выше,
будем обозначать через zi = zi (ui ) ожидаемую прибыль предприя-
тия Пi при инвестировании в него средств в объеме ui ; эта функция
задается таблицей исходных данных из условия предыдущей задачи.
Суммарная прибыль производственного объединения равна
z1 + z2 + z3
и зависит как от общего объема x0 инвестируемых средств, так и от
распределения этих средств между предприятиями, т. е. от значений
u1 , u2 , u3 . Норма прибыли, которая и является критерием оптималь-
ности Y для рассматриваемой задачи, в соответствии с данным выше
определением вычисляется по формуле
z1 + z2 + z3
Y = ;
x0
при этом, очевидно, частные целевые функции yi следует принять
равными zi /x0 , что приведет к равенству Y = y1 + y2 + y3 .
Задание аддитивного критерия оптимальности позволяет непо-
средственно приступить к решению задачи, но мы проведем сначала
некоторые преобразования, имея в виду следующие обстоятельства.
В выражении для функции Y присутствует деление на переменную x0 ,
имеющую общее значение для всех шагов; возникает желание «выне-
сти» эту переменную «за скобки». Более того, деление, как правило,
приводит к возникновению дробных чисел на промежуточных этапах
и загромождает решение.
Попытаемся упростить вычисления за счет незначительного услож-
нения логики решения задачи следующим образом. Определим функ-
цию P (x0 ) как максимальную суммарную прибыль предприятий
при равном x0 общем объеме инвестиций:
P (x0 ) = max {z1 + z2 + z3 | u1 + u2 + u3 = x0 },
u1 ,u2 ,u3
где максимум берется по всевозможным значениям управляющих
переменных u1 , u2 , u3 , удовлетворяющим условию u1 + u2 + u3 = x0 .
52 Глава 2. Примеры решения типовых задач

Вычисление функции P (x0 ) может быть проведено методом ДП, причем


частными целевыми функциями здесь являются zi , а промежуточные
деления отсутствуют. Отношение
P (x0 )
x0
равно максимальной норме прибыли производственного объединения
при общем объеме x0 инвестиций, а оптимальное значение задачи Y ∗
вычисляется по формуле


P (x0 )
Y ∗ = max ,
x0 x0
где максимум берется по x0 = 3, 4, 5. Проведенные рассуждения можно
представить следующей цепочкой равенств:


∗ z1 + z2 + z3
Y = max u1 + u2 + u3 = x0 =
x0 ,u1 ,u2 ,u3 x0



z1 + z2 + z3
= max max u1 + u2 + u3 = x0 =
x0 u1 ,u2 ,u3 x0



1   P (x0 )
= max max z1 + z2 + z3 |u1 + u2 + u3 = x0 = max ,
x0 x0 u1 ,u2 ,u3 x0 x0
приводящей, естественно, к тому же результату. Таким образом,
решение задачи может быть проведено по следующей схеме:
1) вычисление функции P (x0 ) для каждого допустимого значе-
ния x0 методом ДП;
2) вычисление оптимального значения задачи Y ∗ и построение
оптимального решения.
На этом математическая формализация поставленной задачи за-
вершена. Как нетрудно проверить, основные допущения метода ДП —
отсутствие последействия и аддитивность целевой функции — для нее
выполняются. Тем самым можно непосредственно приступить к расче-
там, включающим предварительный этап, этап условной оптимизации
и этап безусловной оптимизации. Важно подчеркнуть, что вычисля-
емая функция P (x0 ) равна функции Беллмана B0 (x0 ) для решаемой
задачи с целевой функцией z1 + z2 + z3 :
P (x0 ) = B0 (x0 ).
При оформлении решения данной задачи (в отличие от преды-
дущей) во избежание громоздких повторений таблиц все получаемые
при решении таблицы приведены сразу окончательно заполненными.
Предварительный этап. Данный этап решения задачи прово-
дится в естественном порядке для i = 1, 2, 3 и не связан непосредственно
2.2. Распределение инвестиций по максимуму нормы прибыли 53

с вычислением функций Беллмана Bi (xi ). На данном этапе, как обычно,


заполняются только первая строка вспомогательной таблицы и четыре
левых столбца основной таблицы.
i = 1.
В данном случае начальное состояние системы не является опре-
деленным однозначно, а соответствующая переменная x0 принимает
несколько допустимых значений: 3, 4, 5. Соответственно, вспомога-
тельная таблица имеет вид:

x0 3 4 5
B0 (x0 ) 8 10 13

Основная таблица заполняется по аналогии с предшествующей за-


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

x0 u1 x1 z1 B1 (x1 ) z 1 + B1 B0 (x0 )
3 0 3 0 8 8 8
1 2 2 6 8
2 1 4 3 7
3 0 6 0 6
4 0 4 0 10 10 10
1 3 2 8 10
2 2 4 6 10
3 1 6 3 9
4 0 8 0 8
5 0 5 0 13 13 13
1 4 2 10 12
2 3 4 8 12
3 2 6 6 12
4 1 8 3 11
5 0 10 0 10

После заполнения левой части основной таблицы переходим к сле-


дующему шагу.
i = 2.
На втором шаге в первую строку вспомогательной таблицы внесем
по одному разу все значения переменной x1 , рассчитанные на пред-
шествующем шаге и фигурирующие в третьем столбце предыдущей
54 Глава 2. Примеры решения типовых задач

основной таблицы (многие из этих значений неоднократно повторя-


ются). Получаем следующую вспомогательную таблицу:

x1 0 1 2 3 4 5
B1 (x1 ) 0 3 6 8 10 13

Основная таблица заполняется аналогично и имеет следующий вид:

x1 u2 x2 z2 B2 (x2 ) z 2 + B2 B1 (x1 )
0 0 0 0 0 0 0
1 0 1 0 3 3 3
1 0 1 0 1
2 0 2 0 6 6 6
1 1 1 3 4
2 0 2 0 2
3 0 3 0 8 8 8
1 2 1 6 7
2 1 2 3 5
3 0 6 0 6
4 0 4 0 9 9 10
1 3 1 8 9
2 2 2 6 8
3 1 6 3 9
4 0 10 0 10
5 0 5 0 10 10 13
1 4 1 9 10
2 3 2 8 10
3 2 6 6 12
4 1 10 3 13
5 0 12 0 12

Построенная таблица разделена на 6 строчных фрагментов, соот-


ветствующих различным значениям переменной x1 . Переходим к сле-
дующему (последнему) шагу.
i = 3.
На третьем шаге, как обычно, в первую строку вспомогательной
таблицы внесем по одному разу все значения переменной x2 , рассчи-
танные на предшествующем шаге и фигурирующие в третьем столбце
предыдущей основной таблицы. Получаем такую вспомогательную таб-
лицу:
2.2. Распределение инвестиций по максимуму нормы прибыли 55

x2 0 1 2 3 4 5
B2 (x2 ) 0 3 6 8 9 10

Заполнение основной таблицы проводится обычным образом с уче-


том той особенности, что для выполнения условия x3 = 0 необходимо
в соответствии с полученной выше формулой xi = xi−1 − ui при i = 3
выбирать u3 = x2 . Соответственно каждый из 6 строчных фрагментов
включает только одну строку, а основная таблица имеет вид:

x2 u3 x3 z3 B3 (x3 ) z 3 + B3 B2 (x2 )
0 0 0 0 0 0 0
1 1 0 3 0 3 3
2 2 0 6 0 6 6
3 3 0 8 0 8 8
4 4 0 9 0 9 9
5 5 0 10 0 10 10

На этом предварительный этап решения задачи завершен. При-


ступаем к этапу условной оптимизации.

Этап условной оптимизации. Данный этап непосредственно


связан с вычислением функций Bi (xi ) и проводится в обратном порядке
для i = 3, 2, 1. При этом заполняются остальные фрагменты таблиц:
вторая строка вспомогательной таблицы и три правых столбца основной
таблицы. На этом же этапе расставляются и знаки «», указывающие
те условно-оптимальные значения управления, на которых достигаются
промежуточные условные максимумы. (Как было сказано выше, все
получаемые таблицы приведены уже окончательно заполненными.)
i = 3.
Поскольку в силу принципа оптимальности Беллмана имеет место
равенство B3 (x3 ) = 0, то в пятый столбец основной таблицы записываем
нулевые значения. При этом в шестой столбец записываются суммы
соответствующих чисел из двух предшествующих столбцов, а в по-
следний столбец заносится максимум из всех чисел шестого столбца
для каждого строчного фрагмента отдельно. Но поскольку в каждом
строчном фрагменте последней основной таблицы имеется только одна
строка, то соответствующий максимум B2 (x2 ) равен сумме z3 + B3 .
Полученные значения функции B2 (x2 ) заносятся во вторую строку
вспомогательной таблицы.
Аналогично завершается заполнение основных и вспомогательных
таблиц для i = 2 и i = 1. Обратим внимание, что в основной таблице
56 Глава 2. Примеры решения типовых задач

для i = 1 в некоторых строчных фрагментах имеется более одного


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

Этап безусловной оптимизации. На данном этапе находим


оптимальное значение задачи Y ∗ и оптимальное управление (u∗1 , u∗2 , u∗3 ).
Полученные значения функции B0 (x0 ), как уже отмечалось выше,
равны значениям функции P (x0 ) (значение B0 (5) = 13, конечно, сов-
падает с оптимальным значением предшествующей задачи при распре-
делении 5 усл. ден. ед.). В соответствии с принятой схемой решения
задачи необходимо вычислить норму прибыли как отношение
P (x0 ) B (x )
= 0 0
x0 x0
и выбрать максимальное значение. Поскольку
B0 (3) 8 B0 (4) 10 B0 (5) 13
= = 2, 66 . . . , = = 2, 5, = = 2, 6,
3 3 4 4 5 5
то максимум нормы прибыли Y ∗ = 2, 66 . . . достигается при распреде-
лении 3 усл. ден. ед., т. е. оптимальное начальное состояние системы
отвечает значению x∗0 = 3. Соответствующее оптимальное распреде-
ление инвестиций находим по основным таблицам, просматривая их
еще раз в естественном порядке при i = 1, 2, 3 и используя отмечен-
ные знаками «» строки, содержащие условно-оптимальные значения
управления. Получаем такую последовательность шагов.
i = 1.
На данном шаге соответствующая основная таблица имеет три
строчных фрагмента. Из них выбираем тот строчный фрагмент, кото-
рый соответствует уже найденному оптимальному начальному состо-
янию x∗0 = 3. Но в этом фрагменте условно-оптимальными являются
два значения управления u1 = 0 и u1 = 1, отмеченные знаком «».
Это означает, что задача имеет не одно, а несколько оптимальных
решений, по меньшей мере два. Построим сначала первое решение,
соответствующее u∗1 = 0. Для этого определим по той же строке таб-
лицы x∗1 = 3.
i = 2.
На данном шаге из второй основной таблицы выбираем тот строч-
ный фрагмент, который содержит уже найденное на предшествующем
шаге оптимальное значение x∗1 = 3. В этом фрагменте оптимальным
2.2. Распределение инвестиций по максимуму нормы прибыли 57

является единственное управление u∗2 = 0, отмеченное знаком «»;


соответственно в той же строке таблицы находим x∗2 = 3.
i = 3.
На данном шаге из третьей основной таблицы выбираем тот строч-
ный фрагмент, который соответствует уже найденному оптимальному
значению x∗2 = 3. Этот фрагмент содержит только одну строку и одно
значение управления, которое и будет оптимальным: u∗3 = 3; в той же
строке таблицы находим x∗3 = 0.
На этом завершено построение первого оптимального решения за-
дачи, которое имеет вид (0, 0, 3). Проведем построение второго опти-
мального решения, соответствующего u∗1 = 1, проходя все основные
таблицы еще раз уже без детальных пояснений.
i = 1: x∗0 = 3, u∗1 = 1, x∗1 = 2.
i = 2: x∗1 = 2, u∗2 = 0, x∗2 = 2.
i = 3: x∗2 = 2, u∗3 = 2, x∗3 = 0.
Следовательно, второе оптимальное решение имеет вид (1, 0, 2).
Других оптимальных решений задача не имеет. Этап безусловной оп-
тимизации метода ДП завершен.
Тем самым решение поставленной задачи проведено полностью.
Учитывая экономический смысл введенных переменных и функций,
формулируем окончательный ответ к задаче.

Ответ: для получения максимума нормы прибыли по производ-


ственному объединению следует инвестировать 3 усл. ден. ед., при-
чем существуют два варианта оптимального распределения инве-
стиций:
1) выделить все 3 усл. ден. ед. одному предприятию П3 ;
2) выделить 1 усл. ден. ед. предприятию П1 и 2 усл. ден. ед. пред-
приятию П3 .
Замечание 2. Отметим еще раз все те новые обстоятельства, ко-
торые встретились нам при решении данной задачи.
1. Начальное состояние x0 системы не было определено однозначно
заранее, а могло принимать ряд различных значений. Оптимальное
начальное состояние x∗0 определялось в ходе решения задачи.
2. В отдельных строчных фрагментах основных таблиц было более
одного знака «», т. е. не одно, а сразу несколько значений управления
являлись условно-оптимальными.
3. Наличие двух условно-оптимальных значений управления
для x0 = 3 привело к тому, что данная задача имеет несколько опти-
58 Глава 2. Примеры решения типовых задач

мальных решений (именно, два различных решения). В то же время


подчеркнем, что наличие нескольких условно-оптимальных значений
управления не обязательно приводит к существованию различных
оптимальных решений задачи. Например, для x0 = 4 существуют
3 условно-оптимальных управления u1 = 0, 1, 2, ни одно из которых
не стало безусловно оптимальным по той причине, что значение x0 = 4
оказалось вне оптимальной траектории.

2.3. Задача о загрузке транспортного средства


Условие задачи. Транспортное средство грузоподъемностью
M = 50 усл. ед. массы загружается предметами трех типов T1 , T2 , T3 ,
масса m и стоимость p усл. ден. ед. каждого из которых известны
и приведены в таблице.

T1 T2 T3
m 11 17 23
p 20 36 48

Требуется найти такой вариант загрузки, при котором стоимость


перевозимого груза была бы максимальной.
Замечание 1. В иной интерпретации данная задача известна как
задача о рюкзаке или о ранце. При этом грузоподъемность транспорт-
ного средства аналогична вместимости ранца, а масса и стоимость
погружаемых предметов имеют то же самое смысловое значение.
Замечание 2. Интуитивно может показаться, что для достиже-
ния максимума стоимости груза следует загружать транспортное сред-
ство только теми предметами, для которых отношение p/m стоимости
к массе — будем называть данное отношение ценностью предмета —
является максимальным. Это предположение действительно верно
при условии, что грузоподъемность транспортного средства кратна
массе предмета с максимальной ценностью. При отсутствии кратности
данный принцип может нарушаться. В качестве простейшего примера
можно рассмотреть значение грузоподъемности M = 7 при двух типах
предметов T1 и T2 со следующими параметрами:

T1 T2
m 2 3
p 5 9
2.3. Задача о загрузке транспортного средства 59

Для предмета типа T1 ценность p/m = 2, 5, для предмета типа T2


ценность p/m = 3. Использование предметов типа T2 с большей цен-
ностью позволяет погрузить два предмета общей стоимостью 18. В то
же время загрузка одного предмета типа T2 и двух предметов типа T1
дает стоимость, равную 19. Дело в том, что при отсутствии нужной
кратности остается неиспользованной часть грузоподъемности, кото-
рую в некоторых случаях можно использовать более рационально.
Таким образом, для решения данной задачи следует применить более
точные методы, например метод ДП.

Решение. В данной задаче управляемой системой является за-


гружаемое транспортное средство, многошаговым процессом — процесс
планирования погрузки предметов. Экономический эффект представ-
ляет стоимость груза, и при этом задача решается на поиск максимума.
Проведем математическую формализацию поставленной задачи.
1. Число шагов N в данной задаче следует принять равным 3,
соответствующим числу типов погружаемых предметов: на первом шаге
планируется погрузка предметов типа T1 , на втором шаге — предметов
типа T2 , на третьем — типа T3 .
2. В качестве фазовой переменной x, определяющей состояние си-
стемы в ходе процесса, примем суммарную массу предметов, погру-
женных в транспортное средство. Именно, переменная x1 представляет
массу предметов, погруженных в транспортное средство после первого
шага процесса (т. е. только предметов типа T1 ), x2 — массу предметов,
погруженных после второго шага (предметов типов T1 и T2 ), x3 —
массу предметов, погруженных после третьего шага процесса (пред-
метов всех типов T1 , T2 и T3 ). Поскольку в начальный момент общая
масса предметов, погруженных в транспортное средство, равна 0, то
начальное состояние системы характеризуется значением x0 = 0. Чтобы
не допустить перегруза транспортного средства, обязательно должно
выполняться условие
xi  M.
3. В качестве управляющей переменной u примем количество пред-
метов каждого типа, погружаемых в транспортное средство. Именно,
переменная u1 представляет количество предметов типа T1 , погружа-
емых в транспортное средство на первом шаге процесса, u2 — количе-
ство предметов типа T2 , погружаемых на втором шаге, u3 — количество
предметов типа T3 , погружаемых на третьем шаге процесса. Ясно, что
все управления принимают только целочисленные значения
0, 1, 2, . . . .
60 Глава 2. Примеры решения типовых задач

4. Функция процесса xi = fi (xi−1 , ui ), определяющая закон измене-


ния состояния системы, для данной задачи представляется формулой
xi = xi−1 + ui · mi
и имеет следующий смысл: суммарная масса xi предметов, погру-
женных в транспортное средство после шага с номером i, равна сум-
марной массе xi−1 предметов, погруженных после предшествующего
шага, плюс масса погруженных на текущем шаге предметов, равная
ui · mi — числу предметов, умноженному на массу каждого предмета.
5. Функция zi , определяющая частный экономический эффект
на шаге процесса с номером i, для данной задачи представляется
формулой
zi = ui · pi
и равна произведению числа погруженных предметов и стоимости
каждого предмета соответствующего типа. Результирующий экономи-
ческий эффект, или целевая функция Z, определяется по формуле
Z = z1 + z2 + z3 .
На этом завершается математическая формализация поставленной
задачи, т. е. построение ее экономико-математической модели. Подчерк-
нем, что основные допущения метода ДП выполняются: отсутствие
последействия и аддитивность результирующей целевой функции сле-
дуют из явных формул для вычисления xi и zi . Тем самым можно
непосредственно приступить к расчетам в соответствии с методом ДП.
Как и в предшествующей задаче, все получаемые при решении таблицы
приведены сразу окончательно заполненными.
Предварительный этап. Данный этап решения задачи про-
водится в естественном порядке для i = 1, 2, 3, причем заполняются
только первая строка вспомогательной таблицы и четыре левых столбца
основной таблицы.
i = 1.
Вспомогательная таблица соответствует начальному условию x0 = 0
и имеет вид
x0 0
B0 (x0 ) 96

Заполнение основной таблицы проводится обычным образом. Для


заданного единственного допустимого значения x0 = 0 выбираем все
возможные значения управления u1 и заносим их во второй столбец
2.3. Задача о загрузке транспортного средства 61

таблицы. При этом управление u1 может принимать только целочис-


ленные значения от 0 до 4 включительно, иначе возникнет перегруз.
По формулам x1 = x0 + u1 · m1 и z1 = u1 · p1 (вытекающим из общих
формул при i = 1) проводим расчет соответствующих значений пере-
менных x1 и z1 и заносим их в третий и четвертый столбцы. Получаем
основную таблицу:

x0 u1 x1 z1 B1 (x1 ) z 1 + B1 B0 (x0 )
0 0 0 0 96 96 96
1 11 20 72 92
2 22 40 48 88
3 33 60 36 96
4 44 80 0 80

Переходим к следующему шагу.


i = 2.
На втором шаге в первую строку вспомогательной таблицы внесем
все значения переменной x1 , рассчитанные на предшествующем шаге
и фигурирующие в третьем столбце предыдущей основной таблицы:

x1 0 11 22 33 44
B1 (x1 ) 96 72 48 36 0

Для заполнения основной таблицы будем последовательно выбирать


все допустимые значения x1 , внесенные во вспомогательную таблицу,
и проводить соответствующие расчеты. Для значения x1 = 0 находим
все возможные значения управления u2 (оно может принимать только
значения 0, 1 и 2, иначе возникнет перегруз) и заносим их во второй
столбец таблицы. По формулам xi = xi−1 + ui · mi и zi = ui · pi ,
взятым для i = 2, проводим расчет значений x2 и z2 и заносим их
в третий и четвертый столбцы. На этом завершается заполнение первого
строчного фрагмента основной таблицы, соответствующего x1 = 0.
Аналогично заполняются все остальные строчные фрагменты основной
таблицы, которая принимает такой вид:

x1 u2 x2 z2 B2 (x2 ) z2 + B2 B1 (x1 )
0 0 0 0 96 96 96
1 17 36 48 84
2 34 72 0 72
62 Глава 2. Примеры решения типовых задач

x1 u2 x2 z2 B2 (x2 ) z2 + B2 B1 (x1 )
11 0 11 0 48 48 72
1 28 36 0 36
2 45 72 0 72
22 0 22 0 48 48 48
1 39 36 0 36
33 0 33 0 0 0 36
1 50 36 0 36
44 0 44 0 0 0 0

Переходим к следующему шагу.


i = 3.
На третьем шаге в первую строку вспомогательной таблицы внесем
все значения параметра x2 , рассчитанные на предшествующем шаге
и фигурирующие в третьем столбце предыдущей основной таблицы.
Получаем следующую вспомогательную таблицу:

x2 0 11 17 22 28 33 34 39 44 45 50
B2 (x2 ) 96 48 48 48 0 0 0 0 0 0 0

Заполнение основной таблицы проводим обычным образом:

x2 u3 x3 z3 B3 (x3 ) z3 + B3 B2 (x2 )
0 0 0 0 0 0 96
1 23 48 0 48
2 46 96 0 96
11 0 11 0 0 0 48
1 34 48 0 48
17 0 17 0 0 0 48
1 40 48 0 48
22 0 22 0 0 0 48
1 45 48 0 48
28 0 28 0 0 0 0
33 0 33 0 0 0 0
34 0 34 0 0 0 0
39 0 39 0 0 0 0
44 0 44 0 0 0 0
45 0 45 0 0 0 0
50 0 50 0 0 0 0
2.3. Задача о загрузке транспортного средства 63

На этом предварительный этап завершен. Приступаем к проведению


этапа условной оптимизации.
Этап условной оптимизации. Данный этап непосредственно
связан с вычислением функций Bi (xi ) и проводится в обратном по-
рядке для i = 3, 2, 1. Поскольку в соответствии с общим принципом
оптимальности Беллмана имеет место равенство B3 (x3 ) = 0, то в пя-
тый столбец основной таблицы, полученной при i = 3, записываем
нулевые значения. При этом в шестой столбец записываются суммы
соответствующих чисел из двух предшествующих столбцов, а в по-
следний столбец заносится максимум из всех чисел шестого столбца
для каждого строчного фрагмента отдельно. Полученные значения
функции B2 (x2 ) заносятся во вторую строку вспомогательной таблицы.
Заполненные таблицы уже приведены выше. Аналогично завершается
заполнение основных и вспомогательных таблиц для i = 2 и i = 1.
Обратим внимание, что в основной таблице для i = 1 имеется два
знака «», показывающие, что искомый максимум достигается на двух
значениях управления; это может привести к наличию нескольких
оптимальных решений. Приступаем к этапу безусловной оптимизации.
Этап безусловной оптимизации. На данном этапе определя-
ются оптимальное значение задачи Z ∗ и оптимальное управление
(u∗1 , u∗2 , u∗3 ). Поскольку начальное состояние x0 = 0 задано однозначно,
то Z ∗ = B0 (x0 ) = 96, x∗0 = x0 = 0. Для построения оптимального управ-
ления просмотрим все заполненные основные таблицы в естественном
порядке при i = 1, 2, 3, используя отмеченные знаками «» строки,
содержащие условно-оптимальные значения управления. Получаем
такую последовательность шагов.
i = 1.
В соответствующей основной таблице условно-оптимальными явля-
ются два значения управления u1 = 0 и u1 = 3, отмеченные знаком «».
Это означает, что задача имеет не одно, а несколько оптимальных ре-
шений. Построим сначала первое решение, соответствующее u∗1 = 0
и x∗1 = 0.
i = 2.
На данном шаге из второй основной таблицы выбираем тот строч-
ный фрагмент, который соответствует уже найденному на предше-
ствующем шаге оптимальному значению x∗1 = 0. В этом фрагменте
условно-оптимальным является единственное управление u2 = 0, от-
меченное знаком «»; полагаем u∗2 = 0, и в той же строке таблицы
находим x∗2 = 0.
64 Глава 2. Примеры решения типовых задач

i = 3.
Из третьей основной таблицы выбираем тот строчный фрагмент,
который соответствует найденному на предшествующем шаге x∗2 = 0.
В этом фрагменте условно-оптимальным является единственное управ-
ление u3 = 2, отмеченное знаком «»; полагаем u∗3 = 2, и в той же
строке таблицы находим x∗3 = 46.
На этом построение первого оптимального решения задачи, имею-
щего вид (0, 0, 2), завершено. Проведем построение второго оптималь-
ного решения, соответствующего u∗1 = 3, проходя все основные таблицы
еще раз.
i = 1: x∗0 = 0, u∗1 = 3, x∗1 = 33.
i = 2: x∗1 = 33, u∗2 = 1, x∗2 = 50.
i = 3: x∗2 = 50, u∗3 = 0, x∗3 = 50.

Следовательно, второе оптимальное решение имеет вид (3, 1, 0).


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

Ответ: максимум стоимости погружаемых в транспортное средство


предметов равен 96 усл. ден. ед. При этом существуют два варианта
оптимальной загрузки:
1) погрузить 2 предмета типа T3 ;
2) погрузить 3 предмета типа T1 и 1 предмет типа T2 .
К постановке и решению данной задачи необходимо сделать ряд
следующих замечаний.
Замечание 3. Обратим внимание на структуру полученных опти-
мальных решений. Первое решение (0, 0, 2) вообще не содержит пред-
метов типа T2 с максимальной ценностью p2 /m2 = 2, 12 . . .. Второе
решение (3, 1, 0) содержит 3 предмета типа T1 с минимальной цен-
ностью p1 /m1 = 1, 82 . . .. Таким образом, оба оптимальных решения
задачи далеки от того, чтобы использовать только предметы с мак-
симальной ценностью.
Замечание 4. Как легко видеть, целевая функция Z данной
задачи возрастает при условии, что количество предметов одного
типа увеличивается, а количество предметов других типов не изменя-
ется. Поэтому при планировании последнего шага погрузки для i = 3
можно ограничиться рассмотрением лишь тех значений переменной
u3 , которые являются максимально допустимыми при фиксированном
2.3. Задача о загрузке транспортного средства 65

значении x2 . Это подтверждает и вид последней основной таблицы:


в ней знаки «» расположены только у максимальных в своем строч-
ном фрагменте значений u3 . Учитывая сказанное, объем вычислений
можно несколько сократить, а первые четыре строчных фрагмента
основной таблицы для i = 3, соответствующие x2 = 0, 11, 17, 22,
записать в следующем виде:

x2 u3 x3 z3 B3 (x3 ) z 3 + B3 B2 (x2 )
0 2 46 96 0 96 96
11 1 34 48 0 48 48
17 1 40 48 0 48 48
22 1 45 48 0 48 48

Подчеркнем, что сказанное относится только к последнему шагу


и не может быть распространено на случаи i = 1 и i = 2, поскольку
увеличение числа предметов типов T1 или T2 может в силу ограни-
чения по грузоподъемности привести к вынужденному уменьшению
числа предметов типа T3 .
Замечание 5. Аналогично решается задача о загрузке транспорт-
ного средства с дополнительным условием, что число погруженных
предметов типа Ti должно быть не менее ki , где ki — заданные целые
неотрицательные числа. Для решения такой задачи вычисляется масса
m = k1 m1 + k2 m2 + k3 m3
требуемого набора предметов. Если m > M , то задача о загрузке
с дополнительным условием решения не имеет. Если m = M , то ре-
шение u∗1 = k1 , u∗2 = k2 , u∗3 = k3 будет являться оптимальным. Если
же m < M , то решение сводится к рассмотрению обычной задачи
о загрузке с грузоподъемностью M − m > 0.
Замечание 6. Обсудим на примере рассмотренных задач вопрос
о значимости предварительного этапа метода ДП. Как уже отмечалось
выше в гл. 1 и было продемонстрировано в ходе решения, на данном
этапе вычисляются все допустимые значения фазовых и управляющих
переменных (в частности, области определения функций Беллмана или
содержащие их множества). В ряде случаев предварительный этап
оказывается малоинформативным. Например, в рассмотренной выше
задаче о распределении инвестиций на этом этапе помимо элемен-
тарных расчетов лишь подтверждено очевидное умозаключение, что
фазовые переменные x1 и x2 могут принимать все целочисленные зна-
чения от 0 до 5 включительно. Заметим тем не менее, что никакой
66 Глава 2. Примеры решения типовых задач

излишней вычислительной работы на данном этапе проведено не было,


поскольку все результаты предварительного этапа были использованы
на последующем этапе условной оптимизации.
Для рассматриваемой задачи о загрузке ситуация несколько меня-
ется. Проведение предварительного этапа позволило нам при вычис-
лении функции B2 (x2 ) ограничиться рассмотрением одиннадцати зна-
чений переменной x2 = 0, 11, 17, . . . , 50; остальные значения являются
просто нереализуемыми. Этот набор чисел представляет собой область
определения функции B2 (x2 ). Без проведения предварительного этапа
нам пришлось бы начинать расчеты с этапа условной оптимизации
для i = 3, причем сразу бы возник вопрос: для каких значений x2
необходимо вычислять функцию B2 (x2 )? Конечно, по смыслу задачи
0  x2  M = 50, но в этом промежутке содержится бесконечное мно-
жество чисел. Учитывая целочисленность масс предметов всех типов,
мы можем сделать вывод и о целочисленности переменной x2 и ограни-
читься вычислениями B2 (x2 ) только для целых чисел от 0 до 50. Таких
чисел всего 51, что значительно больше 11 допустимых значений, вы-
явленных на предварительном этапе. Таким образом, проведение пред-
варительного этапа позволяет заметно сократить объем вычислений.
Если условие целочисленности масс предметов не выполняется, что
вполне может быть в реальных задачах, то ситуация усложняется. Дей-
ствительно, пусть массы предметов заданы с точностью 0,1 усл. ед.
(например, можно принять m1 =10,8, m2 =17,4, m3 =23,7; оптимальные
решения и оптимальное значение задачи при этом не изменятся). То-
гда переменная x2 как сумма масс предметов типов T1 и T2 тоже
обязана иметь точность представления 0,1; в промежутке от 0 до 50
такая переменная может принимать 501 значение, и число подлежа-
щих рассмотрению вариантов возрастает практически на порядок. В то
же время проведение предварительного этапа позволяет выявить, как
и выше, всего 11 допустимых значений переменной x2 (среди которых
большинство не являются целыми, а представлены с точностью 0,1).
Аналогичная ситуация возникает и в том случае, когда условие цело-
численности масс сохраняется, а грузоподъемность увеличивается в 10
раз до значения M = 500.
Подчеркнем, что за сокращение объемов вычислений, обеспечивае-
мое проведением предварительного этапа, приходится «платить» необ-
ходимостью запоминания промежуточных значений переменных. При
«ручном» счете с использованием таблиц запоминание происходит ав-
томатически, при использовании ЭВМ об этом необходимо заботиться
специально. При этом возникает следующая характерная альтерна-
2.3. Задача о загрузке транспортного средства 67

тива: либо ускорить расчеты при увеличении объема используемой


памяти, либо сократить объем памяти с неизбежным снижением ско-
рости расчетов. Единого рецепта на все случаи здесь не существует,
и при решении данного вопроса нужно руководствоваться конкретными
обстоятельствами.
Подводя итог, можно сказать, что предварительный этап иллюстри-
рует общее положение, когда за счет некоторого усложнения логики
сокращается объем вычислений и время решения задачи. Кроме того,
предварительный этап носит естественный характер и с методологи-
ческой точки зрения, поскольку проводится по ходу многошагового
процесса в отличие от этапа условной оптимизации, проводимого «от
конца к началу».
Замечание 7. Другим подходом к сокращению объема вычисле-
ний является попытка вычисления функций Беллмана в явном виде
сразу для всех значений фазовых переменных. Для данной задачи
при i = 3 с учетом свойства B3 (x3 ) = 0 получаем:
B2 (x2 ) = max{p3 · u3 | x3 = x2 + m3 · u3 },
u3

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


u3 , обеспечивающим выполнение условия x3  M . Из этого условия
следует, что 
M − x2
u3 
m3
(здесь и далее в пределах данного замечания запись [a] обозначает
целую часть числа a, т. е. наибольшее целое число, не превосходящее a).
Поскольку функция p3 · u3 возрастает с увеличением u3 , то искомый
максимум достигается при максимальном значении аргумента:
 
M − x2 M − x2
ũ3 (x2 ) = , B2 (x2 ) = p3 · .
m3 m3
Полученные выражения являются достаточно простыми, но уже
для следующего шага i = 2 ситуация усложняется:
 
B1 (x1 ) = max p2 · u2 + B2 (x2 ) | x2 = x1 + m2 · u2 =
u2


M − x1 − m2 · u2
= max p2 · u2 + p3 · ,
u2 m3
где максимум берется по всем целым неотрицательным значениям u2 ,
для которых выполняется условие

M − x1
u2  .
m2
68 Глава 2. Примеры решения типовых задач

Вычисление последнего максимума уже не является элементарной за-


дачей, поскольку с ростом u2 первое слагаемое в сумме возрастает,
а второе — убывает. Отметим, что усложнение вычислений функций
Беллмана от шага к шагу является характерной чертой метода ДП.
Тем самым и попытка решить задачу в общем виде приводит к су-
щественным трудностям, многие из которых позволяет обойти пред-
варительный этап метода ДП.

Замечание 8. В продолжение обсуждения рассматриваемой за-


дачи о загрузке приведем дополнительные рассуждения, позволяющие
в отдельных случаях уменьшить объем вычислений. Предположим, что
все типы T1 , T2 , . . . погружаемых предметов упорядочены по возраста-
нию их ценности, причем (для простоты) все ценности будем считать
различными:
p1 p
< 2 < ... .
m1 m2

Пусть (u1 , u2 , . . .) — некоторое допустимое решение задачи, т. е.


u1 , u2 , . . . — целые неотрицательные числа, для которых выполняется
ограничение по массе
m1 u1 + m2 u2 + m′  M ;

при этом стоимость погруженных предметов равна


p1 u1 + p2 u2 + p′ ,

где через m′ и p′ обозначены масса и стоимость предметов, номера


типов которых больше 2. Тогда при выполнении условия
 −1
m1 p1
u1  − ,
m2 p2

которое можно назвать условием избыточности малоценных предме-


тов, данное допустимое решение не является оптимальным. Действи-
тельно, из приведенного условия следует соотношение
p1 m
u1 + 1  1 u1 ,
p2 m2
показывающее, что расстояние на числовой оси между числами
p1 m1
u1 и u1
p2 m2

не меньше 1. По этой причине существует такое целое число k2 (в ка-


честве k2 можно взять целую часть числа (m1 /m2 )u1 ), для которого
2.3. Задача о загрузке транспортного средства 69

выполняются неравенства
p1 m
u1 < k2  1 u1 .
p2 m2
Тогда вектор (0, u2 + k2 , . . .) в силу неравенств
m1
m1 · 0 + m2 (u2 + k2 ) + m′  m2 u2 + m2 u1 + m′  M
m2
является допустимым решением и с учетом соотношений
p1
p1 · 0 + p2 (u2 + k2 ) + p′ > p2 u2 + p2 u1 + p′ = p2 u2 + p1 u1 + p′
p2
дает большее значение стоимости, чем исходный вектор (u1 , u2 , . . .).
Иными словами, мы показали, что погрузка слишком большого коли-
чества предметов типа T1 малой ценности не является целесообразной,
что полностью соответствует интуитивным представлениям и конкре-
тизирует их. Для рассматриваемой задачи
 −1
p1 p2 m1 p1
= 1, 82, = 2, 12, − = 10, 93
m1 m2 m2 p2
(здесь получаемые значения округлены до второго знака после за-
пятой). Это означает, что погружать 11 и более предметов типа T1
невыгодно: погрузка надлежащего числа предметов типа T2 в этом
случае даст большее значение стоимости. Например, 12 предметов
типа T1 имеют массу 132 и стоимость 240; в то же время предметы
типа T2 в количестве 
m1
· 12 = 7
m2
имеют массу 119 < 132 и стоимость 252 > 240. Конечно, грузоподъем-
ность M = 50 вообще не позволит погрузить 12 предметов типа T1 , но
если принять, например, M = 250, то таких предметов можно будет
погрузить 
250
= 22,
11
и учет условия избыточности позволит сократить число рассматри-
ваемых вариантов погрузки предметов этого типа примерно вдвое.
Заметим, что условие избыточности малоценных предметов типа T1
можно обобщить и записать в виде

 −1
m1 p1
u1  min − ,
i>1 mi pi
а также сформулировать аналогичные условия для предметов других
типов. Отметим, однако, что проведенные рассмотрения устанавливают
70 Глава 2. Примеры решения типовых задач

общие свойства оптимальных решений задачи и не имеют прямого


отношения к методу ДП.
Замечание 9. В заключение раздела приведем постановку еще
одной задачи, математическая формализация и решение которой про-
водятся в полной аналогии с рассмотренной задачей о загрузке. Од-
нородная заготовка длиной M (деревянный брус, металлический про-
филь, пластиковая труба) должна быть разрезана на несколько от-
дельных деталей, относящихся к одному из N типов. Длины деталей
различных типов равны mi , а их стоимости равны pi , i = 1, 2, . . . , N
(потерями материала при разрезании для упрощения задачи прене-
брегаем). Требуется определить такой способ разреза заготовки, при
котором суммарная стоимость получаемых деталей была бы макси-
мальной. Данный пример показывает, что зачастую различным образом
формулируемые задачи с различным экономическим содержанием мо-
гут быть приведены к одной математический модели и решены одним
методом.

2.4. Задача о замене оборудования


Условие задачи. Руководство предприятия планирует свою де-
ятельность на один год (четыре квартала). Установленное на пред-
приятии оборудование в начале каждого квартала может быть про-
дано по остаточной стоимости и заменено новым, приобретаемым по
рыночной стоимости. Прогнозируемая рыночная стоимость оборудо-
вания M усл. ден. ед. в зависимости от номера квартала (от 1 до 4)
меняется следующим представленным в таблице образом:

Квартал M
1 12
2 12
3 11
4 10

К характеристикам оборудования относятся:


P — производительность (усл. ед. продукции в квартал);
Q — затраты на эксплуатацию (усл. ден. ед. в квартал);
S — остаточная стоимость (усл. ден. ед.).
Характеристики оборудования зависят от его наработки (под на-
работкой оборудования будем понимать число полных кварталов его
эксплуатации). Данные зависимости представлены в следующей таб-
лице:
2.4. Задача о замене оборудования 71

Наработка P Q S
0 350 15 —
1 350 16 8
2 330 18 6
3 300 21 3
4 — — 1

Будем считать, что установленное на предприятии оборудование


является быстроизнашивающимся и при наработке 4 квартала не под-
лежит дальнейшей эксплуатации (например, по требованиям техники
безопасности или по причине низкой эффективности его работы). Дан-
ное обстоятельство отмечено прочерком «—» в графах таблицы для P
и Q. Прочерк «—» в графе таблицы для S означает, что продажа нового
оборудования с равной 0 наработкой по остаточной стоимости является
нецелесообразной операцией. В начале года наработка установленного
на предприятии оборудования равнялась 2 кварталам. Стоимость C
одной усл. ед. продукции предприятия, выпускаемой на данном обо-
рудовании, будем считать постоянной и равной 0,1 усл. ден. ед.
Требуется определить оптимальную стратегию обновления обору-
дования на один год с целью достижения максимального суммарного
экономического эффекта за весь год. Иными словами, необходимо
так выбрать моменты замены оборудования, чтобы суммарный за год
доход от реализации продукции (для простоты будем считать, что
вся производимая продукция реализуется) за вычетом затрат на экс-
плуатацию оборудования и его обновление достигали максимально
возможной величины.

Решение. В данной задаче управляемой системой является рас-


сматриваемое предприятие, многошаговым процессом — процесс пла-
нирования обновления оборудования. Проведем математическую фор-
мализацию поставленной задачи.
1. Число шагов N в данной задаче следует принять равным числу
кварталов в году, т. е. N = 4; при этом номер шага процесса будет
равен номеру квартала.
2. В качестве фазовой переменной x, определяющей состояние
предприятия, следует принять наработку установленного на предпри-
ятии оборудования, исчисленную на конец квартала (поскольку именно
через наработку определяются все характеристики оборудования). Точ-
нее, через xi обозначим наработку оборудования в конце квартала
с номером i. При этом через x0 логично обозначить наработку обору-
72 Глава 2. Примеры решения типовых задач

дования в конце 4-го квартала предшествующего года или, что то же


самое, в начале 1-го квартала планируемого года до момента возмож-
ной замены оборудования. По условию задачи x0 = 2. В соответствии
с условием задачи должно выполняться ограничение xi  4, причем
в случае xi = 4 оборудование не подлежит дальнейшей эксплуатации
и обязательно должно быть заменено в начале следующего квартала.
В частности, если замену изначально установленного на предприятии
оборудования максимально отложить, то в этом случае будет
x1 = 3, x2 = 4,
т. е. в конце 2-го квартала наработка станет равной 4-м кварталам,
и в начале следующего 3-го квартала оборудование будет подлежать
обязательной замене.
3. В качестве управляющей переменной u следует принять пере-
менную, характеризую решение руководства предприятия о замене или
сохранении оборудования в каждом из 4 кварталов. Следовательно,
такая переменная должна принимать только два различных значения.
Ей можно приписать как числовые значения (например, 1 в случае
замены и 0 в случае сохранения оборудования), так и нечисловые,
например, логические («Истина» и «Ложь» или «True» и «False») или
даже мнемонические (например, «З» для замены и «С» для сохра-
нения оборудования). Для определенности будем пользоваться пред-
ложенными мнемоническими обозначениями. Таким образом, область
значений переменной u представляет собой множество {З, С}.
4. Составим функцию процесса xi = fi (xi−1 , ui ), характеризующую
закон изменения состояния предприятия. Если будет принято решение
о замене оборудования в квартале с номером i, т. е. ui = З, то в начале
данного квартала будет установлено новое оборудование с нулевой нара-
боткой, а по прошествии квартала наработка станет равной 1. Если же
будет принято решение о сохранении оборудования, ui = С, то по про-
шествии квартала наработка просто увеличится на 1, т. е. станет равной
xi−1 + 1. Полученные соотношения можно записать в следующем виде:

1, ui = З;
xi =
xi−1 + 1, ui = С.

5. Составим функцию zi , характеризующую частный экономиче-


ский эффект на шаге с номером i процесса. Пусть принято решение
о замене оборудования, ui = З. В этом случае в момент продажи старого
оборудования его наработка составит xi−1 , а остаточная стоимость в со-
ответствии с условием задачи будет равна S(xi−1 ). Новое оборудование
2.4. Задача о замене оборудования 73

приобретается на рынке по цене M (i), и при этом весь текущий квар-


тал будет эксплуатироваться новое оборудование с нулевой наработкой.
Доход от его эксплуатации будет равен произведению цены C одной ед.
продукции и производительности P (0), т. е. C·P (0), а затраты на эксплу-
атацию составят Q(0). Таким образом, в случае замены оборудования
частный экономический эффект за текущий квартал будет равен
S(xi−1 ) − M (i) + C · P (0) − Q(0).
Если же принято решение о сохранении оборудования, ui = С, то
в течение данного квартала будет эксплуатироваться старое обору-
дование с наработкой xi−1 . Доход от его эксплуатации будет равен
произведению цены C одной ед. продукции и производительности
P (xi−1 ), затраты составят Q(xi−1 ), а весь частный экономический
эффект за текущий квартал составит величину
C · P (xi−1 ) − Q(xi−1 ).
Полученные соотношения можно записать в следующем виде:

S(xi−1 ) − M (i) + C · P (0) − Q(0), ui = З;


zi =
C · P (xi−1 ) − Q(xi−1 ), ui = С.
На этом математическая формализация поставленной задачи завер-
шена. Подчеркнем, что основные допущения метода ДП выполняются:
отсутствие последействия следует из явных формул для вычисления
xi и zi , а аддитивность результирующей целевой функции обуслов-
лена самим условием задачи. Тем самым можно непосредственно
приступить к расчетам в соответствии с методом ДП. (Все таблицы
приведены сразу окончательно заполненными.)
Предварительный этап. На данном этапе, как обычно, за-
полняются только первая строка вспомогательной таблицы и четыре
левых столбца основной таблицы.
i = 1.
Вспомогательная таблица соответствует начальному значению
x0 = 2 и имеет вид

x0 2
B0 (x0 ) 67

Заполнение основной таблицы проводится следующим образом. Для


значения x0 = 2 допустимы оба варианта управления: замены u1 = З
и сохранения u1 = С. Для случая замены в соответствии с построен-
74 Глава 2. Примеры решения типовых задач

ными общими формулами при i = 1 получаем:


x1 = 1,
z1 = S(2) − M (1) + C · P (0) − Q(0) = 6 − 12 + 0, 1 · 350 − 15 = 14.
В случае сохранения оборудования
x1 = x0 + 1 = 2 + 1 = 3,
z1 = C · P (x0 ) − Q(x0 ) = 0, 1 · P (2) − Q(2) = 0, 1 · 330 − 18 = 15.
Эти результаты представлены в левой части основной таблицы:

x0 u1 x1 z1 B1 (x1 ) z 1 + B1 B0 (x0 )
2 З 1 14 53 67 67
С 3 15 47 62

Переходим к следующему шагу.


i = 2.
Заполняем первую строку вспомогательной таблицы, занося в нее
все полученные на предшествующем этапе значения переменной x1 :

x1 1 3
B1 (x1 ) 53 47

Левую часть основной таблицы заполняем рассмотренным выше


образом:

x1 u2 x2 z2 B2 (x2 ) z 2 + B2 B1 (x1 )
1 З 1 16 36 52 53
С 2 19 34 53
3 З 1 11 36 47 47
С 4 9 29 38

i = 3.
Заносим в первую строку вспомогательной таблицы все полученные
на предшествующем этапе значения переменной x2 :

x2 1 2 4
B2 (x2 ) 36 34 29
2.4. Задача о замене оборудования 75

Левую часть основной таблицы заполняем обычным образом:

x2 u3 x3 z3 B3 (x3 ) z 3 + B3 B2 (x2 )
1 З 1 17 19 36 36
С 2 19 16 35
2 З 1 15 19 34 34
С 3 15 13 28
4 З 1 10 19 29 29

Отметим, что для x2 = 4 управление u3 = С не является допусти-


мым.

i = 4.
Вспомогательная таблица на данном шаге имеет вид

x3 1 2 3
B3 (x3 ) 19 16 13

Основная таблица выглядит так:

x3 u4 x4 z4 B4 (x4 ) z 4 + B4 B3 (x3 )
1 З 1 18 0 18 19
С 2 19 0 19
2 З 1 16 0 16 16
С 3 15 0 15
3 З 1 13 0 13 13
С 4 9 0 9

На этом предварительный этап решения задачи завершен.

Этап условной оптимизации. На данном этапе обычным обра-


зом заполняются правые части основных и вторые строки вспомогатель-
ных таблиц при i = 4, 3, 2, 1. Соответствующим образом расставляются
знаки «», указывающие строки, на которых достигаются промежу-
точные максимумы. Расчеты начинаются с условия B4 (x4 ) = 0. Полу-
чаемые результаты уже представлены в приведенных выше таблицах.
Этап безусловной оптимизации. На данном этапе определя-
ется максимальное значение целевой функции
Z ∗ = B0 (x0 ) = 67 усл. ден. ед.
76 Глава 2. Примеры решения типовых задач

и строится оптимальное управление (u∗1 , u∗2 , u∗3 , u∗4 ). Полагая


x∗0 = x0 = 2,
по основным таблицам строим следующий ряд значений:
i = 1: x∗0 = 2, u∗1 = З, x∗1 = 1.
i = 2: x∗1 = 1, u∗2 = С, x∗2 = 2.
i = 3: x∗2 = 2, u∗3 = З, x∗3 = 1.
i = 4: x∗3 = 1, u∗4 = С, x∗4 = 2.
На этом построение оптимального решения задачи завершено. Оно
определено однозначно и имеет вид (З; С; З; С).

Ответ: для достижения максимального экономического эффекта,


равного 67 усл. ден. ед., имеющееся на предприятии оборудование
следует заменить в начале 1-го и 3-го кварталов планируемого года.

Замечание 1. Отметим, что оптимальное управление в первом


квартале заключается в замене оборудования и дает экономический
эффект 14 усл. ден. ед. за квартал; в то же время сохранение оборудо-
вания дает больший экономический эффект — 15 усл. ден. ед. за квар-
тал. Это замечание наглядно демонстрирует противоречивость дол-
госрочных и сиюминутных интересов и подчеркивает, что метод ДП
оптимизирует процесс с учетом будущего эффекта.
Замечание 2. Проведем сопоставление полученного оптимального
решения с двумя в определенном смысле противоположными допу-
стимыми решениями, первое из которых реализует стратегию макси-
мально частого ежеквартального обновления оборудования, а второе —
стратегию максимального откладывания обновления. В первом случае
получаются следующие значения:

i ui xi zi
1 З 1 14
2 З 1 16
3 З 1 17
4 З 1 18

При этом
Z = 14 + 16 + 17 + 18 = 65.
Во втором случае получаются значения:
2.5. Задача о распределении ресурсов 77

i ui xi zi
1 С 3 15
2 С 4 9
3 З 1 10
4 С 2 19

При этом
Z = 15 + 9 + 10 + 19 = 53.
Таким образом, рассмотренные простейшие стратегии могут обеспечить
лишь около 97 % и 79 % соответственно от максимального экономи-
ческого эффекта Z ∗ = 67. Первая стратегия дает весьма высокий
результат, однако излишне частое обновление оборудования связано
с известными организационными неудобствами и издержками. Вторая
же стратегия имеет слишком низкую эффективность, что еще раз под-
тверждает высокую важность и актуальность оптимизационных задач.
Замечание 3. Отметим, что отказ от проведения предваритель-
ного этапа приведет к необходимости выполнения излишней вычис-
лительной работы — расчетам функций Беллмана для нереализуемых
значений x1 = 2, 4, x2 = 3 и x3 = 4.

2.5. Задача о распределении ресурсов


Условие задачи. Производственное объединение, в которое вхо-
дят два предприятия П1 и П2 , планирует свою работу на двухлет-
ний период. В ходе работы предприятия получают прибыль, расходуя
при этом некоторые ресурсы. Для обеспечения работы предприятий
в начале каждого года им выделяются необходимые объемы ресурсов,
а в конце года оставшиеся неизрасходованными ресурсы изымаются
и перераспределяются.
Требуется найти оптимальную стратегию распределения ресур-
сов, т. е. определить, сколько ресурсов необходимо выделять каждому
предприятию в начале каждого года для получения максимальной сум-
марной прибыли по всему производственному объединению за два года.
Будем считать, что общий начальный объем ресурсов в производ-
ственном объединении равен V > 0 усл. ед. Все имеющиеся ресурсы
объединения распределяются между двумя предприятиями полностью.
При выделении предприятиям П1 и П2 ресурсов в объеме v усл. ед. они
получают прибыль, равную P1 (v) и P2 (v) усл. ден. ед., расходуя при
этом ресурсы в объеме Q1 (v) и Q2 (v) усл. ед. соответственно. Будем
78 Глава 2. Примеры решения типовых задач

считать выполняющимися естественные условия


Pk (v)  0, 0  Qk (v)  v для k = 1, 2.

Решение. В данной задаче управляемой системой является рас-


сматриваемое производственное объединение, многошаговым процес-
сом — процесс распределения ресурсов между предприятиям. Эконо-
мический эффект представляет суммарная величина прибыли, и при
этом задача решается на поиск максимума. Проведем математическую
формализацию поставленной задачи.
1. Число шагов N в данной задаче следует принять равным 2 по
числу лет в планируемом периоде.
2. В качестве фазовых переменных x1 и x2 примем суммарный
объем ресурсов, остающихся в производственном объединении по про-
шествии первого и второго годов его работы соответственно. Начальное
состояние системы характеризуется значением x0 = V .
3. В качестве управляющей переменной u примем объем ресурсов,
выделяемых предприятию П1 на каждом из шагов процесса. Именно,
переменные u1 и u2 представляют объемы ресурсов, выделяемых пред-
приятию П1 в начале первого и второго годов. Переменная ui , i = 1, 2,
может принимать бесконечное множество различных значений из от-
резка [0, xi−1 ]. Соответственно предприятию П2 остается x0 −u1 усл. ед.
ресурсов в начале первого года и x1 −u2 усл. ед. в начале второго года.
4. Функция процесса xi = fi (xi−1 , ui ), определяющая закон изме-
нения состояния производственного объединения, для данной задачи
представляется формулой
 
xi = xi−1 − Q1 (ui ) + Q2 (xi−1 − ui )
и имеет следующий смысл: за год с номером i суммарный началь-
ный объем ресурсов xi−1 производственного объединения уменьшается
на величину его расхода
Q1 (ui ) + Q2 (xi−1 − ui )
на обоих предприятиях. В силу неотрицательности функций Q1
и Q2 имеет место соотношение xi  xi−1 .
5. Функция zi , определяющая частный экономический эффект
на шаге с номером i, вычисляется по формуле
zi = P1 (ui ) + P2 (xi−1 − ui ).
На этом математическая формализация поставленной задачи за-
вершена. Основные допущения метода ДП при этом выполняются:
2.5. Задача о распределении ресурсов 79

отсутствие последействия следует из явных формул для вычисления


xi и zi , а аддитивность целевой функции
Z = z1 + z2

обусловлена самой постановкой задачи.


Тем самым можно непосредственно приступить к решению задачи
методом ДП. В ходе решения мы будем постепенно конкретизировать
исходные данные задачи; этот подход позволит разумно совместить
рассмотрение общей постановки задачи с получением простых и нагляд-
ных ответов, доведенных до определенных числовых значений. При
этом будут выявляться наиболее сложные моменты в решении задачи.
В данной задаче фазовые и управляющие переменные могут прини-
мать бесконечное множество значений. Следовательно, использование
таблиц, применявшихся ранее при решении задач с конечным числом
различных значений, не представляется возможным. Расчеты будут
проводиться аналитически, и в этом состоит одно из главных отличий
данной задачи от рассмотренных выше.
Предварительный этап в данной задаче является малоинфор-
мативным и сводится, по существу, к установлению соотношений
0  x2  x1  x0 = V,
0  ui  xi−1 .

Вся основная работа по решению задачи сосредоточена на этапе


условной оптимизации, к проведению которого мы приступаем.
Этап условной оптимизации. На данном этапе для i = 2, 1 про-
водится вычисление функций Беллмана Bi (xi ) и условно-оптимальных
управлений ũi (xi−1 ). Расчеты начинаются с условия B2 (x2 ) = 0.

i = 2.
В начале данного шага общий объем ресурсов производственного
объединения равен некоторому пока неизвестному значению x1  0.
Запишем основное функциональное уравнение Беллмана для этого
последнего шага:
 
B1 (x1 ) = max z2 (x1 , u2 ) + B2 (x2 ) | x2 = f2 (x1 , u2 ) ,
u2

причем 0  u2  x1 . Учитывая условие B2 (x2 ) = 0, явный вид функции


z2 (x1 , u2 ) и область изменения переменной u2 , получаем:
 
B1 (x1 ) = max P1 (u2 ) + P2 (x1 − u2 ) .
0u2 x1
80 Глава 2. Примеры решения типовых задач

Конкретизируем вид функций P1 (v) и P2 (v), полагая


P1 (v) = K1 H(v), P2 (v) = K2 H(v),

где H(v) = v, а K1 и K2 — некоторые положительные коэффициенты
производительности, значения которых мы выберем позже. В этом
случае  √ √ 
B1 (x1 ) = max K1 u2 + K2 x1 − u2 .
0u2 x1

Отметим, что функция H(v) = v обладает следующими свой-
ствами, имеющими естественную экономическую интерпретацию и ха-
рактерными для так называемых производственных функций.

Свойство функции Экономическая интерпретация



Функция v Объемы ресурсов не могут принимать
определена при v  0 отрицательных значений

√ Предприятие получает прибыль


Функция v положительна при выделении ему некоторого объема
и обращается в 0 при v = 0 ресурсов и не получает прибыли
при отсутствии ресурсов
√ Прибыль, получаемая предприятием,
Функция v
возрастает при увеличении объема
монотонно возрастает
выделяемых ему ресурсов
Темпы роста прибыли, получаемой пред-
приятием, снижаются при увеличении
√ ′ √
Производная объема выделяемых ему ресурсов
√ ( v) = 1/2 v
функции v монотонно убывает (иначе, чем больше объем

(иначе, функция v является выделяемых предприятию ресурсов,
выпуклой вверх) тем меньший абсолютный прирост
прибыли дает выделение
одной дополнительной единицы ресурса)

Последнее свойство представляет собой важное положение эконо-


мической теории, хорошо подтверждается практикой и называется
законом убывающей эффективности.
Найдем максимум на отрезке [0, x1 ] функции
√ √
G2 (u2 ) = K1 u2 + K2 x1 − u2 ,
применяя для этого известные методы дифференциального исчисления.
Производная
K K
G′2 (u2 ) = √ 1 − √ 2
2 u2 2 x1 − u2
функции G2 (u2 ) является монотонно убывающей на интервале (0, x1 ),
причем ее односторонние пределы на концах интервала имеют следу-
2.5. Задача о распределении ресурсов 81

ющие бесконечные значения:


K1 1 K
lim G′2 (u2 ) = lim √ − √ 2 = +∞,
u2 →0+0 2 u2 →0+0 u2 2 x1
K K 1
lim G′2 (u2 ) = √ 1 − 2 lim √ = −∞.
u2 →x1 −0 2 x1 2 u2 →x1 −0 x1 − u2
Это означает, что функция G2 (u2 ) принимает свое максимальное зна-
чение в единственной точке, лежащей внутри отрезка [0, x1 ]. Для
поиска точки максимума решим уравнение
K1 K2
G′2 (u2 ) = 0, или √ = √ .
2 u2 2 x1 − u2
Решение этого уравнения относительно переменной u2 и представляет
собой условно-оптимальное значение ũ2 (x1 ) управления на данном
шаге:
K2
ũ2 (x1 ) = 2 1 2 x1 .
K1 + K2
В соответствии со сказанным, функция Беллмана B1 (x1 ) имеет вид:
 
B1 (x1 ) = K1 ũ2 (x1 ) + K2 x1 − ũ2 (x1 ) =
 
K12 K2 √
= K1 2 2 x1 + K2 x1 − 2 1 2 x1 = K x1 ,
K1 + K2 K1 + K2

где K = K12 + K22 .
Тем самым расчеты на данном шаге завершены. Обсудим полу-
ченные промежуточные результаты.
1. Функция Беллмана B1 (x1 ) не зависит от функций Q1 (v) и Q2 (v),
определяющих затраты ресурсов на предприятиях; это представля-
ется вполне логичным, поскольку по условию задачи после рассмат-
риваемого последнего шага объемы оставшихся неизрасходованными
ресурсов во внимание не принимаются и не подлежат дальнейшему
перераспределению.
2. Если выделить весь имеющийся объем x1 ресурсов только од-
ному предприятию П1 или П2 , то полученная объединением прибыль
√ √
составит P1 (x1 ) = K1 x1 или P2 (x1 ) = K2 x1 , что в любом случае

меньше значения B1 (x1 ) = K x1 ; это замечание еще раз на кон-
кретном примере подтверждает оптимальность функций Беллмана.
Переходим к следующему шагу.
i = 1.
В начале этого шага общий объем ресурсов производственного объ-
единения равен значению x0 = V , причем 0  u1  x0 . Запишем
82 Глава 2. Примеры решения типовых задач

основное функциональное уравнение Беллмана для данного шага:


 
B0 (x0 ) = max z1 (x0 , u1 ) + B1 (x1 ) | x1 = f1 (x0 , u1 ) .
u1

Учитывая вид функций f1 (x0 , u1 ) и z1 (x0 , u1 ), получаем:


 
B0 (x0 ) = max P1 (u1 ) + P2 (x0 − u1 ) + B1 (x1 ) ,
0u1 x0
x1 = x0 − Q1 (u1 ) − Q2 (x0 − u1 ).

Конкретизируем вид функций Q1 (v) и Q2 (v), полагая


Q1 (v) = a1 v, Q2 (v) = a2 v,
где a1 и a2 — некоторые коэффициенты потребления ресурсов из интер-
вала (0, 1), значения которых мы выберем позже. В результате получим:
B0 (x0 ) = max G1 (u1 ),
0u1 x0
где
√ √ 
G1 (u1 ) = K1 u1 + K2 x0 − u1 + K (1 − a2 )x0 + (a2 − a1 )u1 .
Найдем максимум на отрезке [0, x0 ] функции G1 (u1 ). Производная
K K2 K(a2 − a1 )
G′1 (u1 ) = √ 1 − √ +  ,
2 u1 2 x0 − u1 2 (1 − a2 )x0 + (a2 − a1 )u1
как и производная функции G2 (u2 ), является монотонно убывающей
на интервале (0, x0 ), причем ее односторонние пределы на концах
интервала имеют бесконечные значения:
lim G′1 (u1 ) = +∞, lim G′1 (u1 ) = −∞.
u1 →0+0 u1 →x0 −0

Как и выше, это означает, что функция G1 (u1 ) принимает свое


максимальное значение в единственной точке, лежащей внутри от-
резка [0, x0 ]. Для поиска точки максимума необходимо решить уравне-
ние G′1 (u1 ) = 0, однако это является уже непростой задачей. Решение
этого уравнения можно свести к отысканию корней многочлена чет-
вертой степени и воспользоваться методом Л. Феррари1) , однако этот
способ является весьма громоздким и недостаточно наглядным.
Мы поступим иным образом и подберем значения постоянных
K1 , K2 , a1 , a2 так, чтобы уравнение G′1 (u1 ) = 0 имело корень u1 = x0 /2.
Экономический смысл этого равенства заключается в том, что на пер-
вом шаге все ресурсы производственного объединения в объеме x0
1)
Л. Феррари — итальянский математик XVI в.
2.5. Задача о распределении ресурсов 83

делятся поровну между обоими предприятиями. Полагая u1 = x0 /2


в выражении для G′1 (u1 ), получим условие
K1 − K2 a − a2
= 1 .
K 2 − (a1 + a2 )

Рассмотрим экономический смысл полученного условия. Пусть вы-


полняется соотношение a1 < a2 , т. е. предприятие П1 более экономно
расходует ресурсы, чем П2 . Тогда выражение в правой части по-
следнего равенства является отрицательным; при этом и левая часть
тоже должна быть отрицательной. Следовательно, для существования
искомого корня должно выполняться соотношение K1 < K2 , которое
показывает, что предприятие П1 дает меньшую прибыль при одина-
ковых объемах ресурсов, чем П2 . Это представляется вполне зако-
номерным, поскольку распределять ресурсы поровну в случае, когда
предприятие П1 одновременно и более экономное, и более прибыльное,
совершенно нецелесообразно — этому предприятию следует выделить
большую часть ресурсов.
Легко проверить, что рассматриваемому условию удовлетворяют,
например, следующие значения постоянных:
K1 = 3, K2 = 4, a1 = 0, 4, a2 = 0, 6.

Тем самым расчеты на шаге i = 1 с функциями


√ √
P1 (v) = 3 v, P2 (v) = 4 v,
Q1 (v) = 0, 4v, Q2 (v) = 0, 6v

можно считать законченными. При этом


x0
ũ1 (x0 ) = ,
2

а функция Беллмана имеет вид


  
x0 x0 x
B0 (x0 ) = K1 + K2 x0 − + K (1 − a2 )x0 + (a2 − a1 ) 0 =
2 2 2

 √  x0 √
= K1 + K2 + K 2 − a1 − a2 = 6 2x0 .
2

На этом этап условной оптимизации решения задачи завершен.


Этап безусловной оптимизации. Полагая x∗0 = x0 = V , опре-
деляем максимальное значение целевой функции:

Z ∗ = B0 (x∗0 ) = B0 (V ) = 6 2V усл. ден. ед.
84 Глава 2. Примеры решения типовых задач

Находим оптимальное управление (u∗1 , u∗2 ).


i = 1: x∗0 = V,
V
u∗1 = ũ1 (x∗0 ) = ũ1 (V ) = ,
2
 
  a V V V
x∗1 = x∗0 − Q1 (u∗1 ) + Q2 (x∗0 − u∗1 ) = V − 1 − a2 V − = .
2 2 2
V
i = 2: x∗1 = ,
2
 
V 9 V 9
u∗2 = ũ2 (x∗1 ) = ũ2 = = V,
2 25 2 50
  59
x∗2 = x∗1 − Q1 (u∗2 ) + Q2 (x∗1 − u∗2 ) = V.
250
На этом построение оптимального решения, этап условной опти-
мизации и все решение задачи завершены.

Ответ: для достижения максимальной прибыли производственного


объединения необходимо в первом году выделить предприятиям
П1 и П2 по 50 % ресурсов, а во втором году — соответственно
9/25 = 36 % и 64 % от оставшегося после первого года объема
ресурсов.
Замечание 1. Как видно из решения задачи, на каждом шаге
этапа условной оптимизации расчет функций Беллмана становится
все более сложным: если B2 (x2 ) равняется 0, B1 (x1 ) достаточно про-
сто вычисляется в явном виде, то функцию B0 (x0 ) в общем случае
в явном виде нам вычислить так и не удалось. Такое усложнение яв-
ляется закономерностью метода ДП, подчеркивая важность не только
аналитических вычислений, но и численных расчетов с использова-
нием ЭВМ.
Замечание 2. Выбранный вид производственной функции

H(v) = v гарантировал нам наличие точек максимума исследу-
емых функций внутри отрезка изменения аргумента. Иной выбор
производственной функции может привести к тому, что максимум
будет достигаться на концах отрезка. Соответствующие ситуации воз-
никают при решении отдельных вариантов приведенных ниже задач
для самостоятельного решения.
Задание. Провести сопоставление полученного оптимального ре-
шения со следующими тремя допустимыми решениями, первое из ко-
торых реализует стратегию выделения всех ресурсов на обоих шагах
только предприятию П1 , второе — только предприятию П2 , третье —
Задачи 85

стратегию равного выделения ресурсов обоим предприятиям. Вычис-


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

Задачи для самостоятельного решения


2.1. Решить задачу о распределении инвестиций между предприяти-
ями П1 , П2 и П3 . Инвестируется сумма 6 усл. ден. ед. Сопоставить
полученные оптимальные решения с решениями, предписывающими
выделение всего объема инвестиций только одному из предприятий
либо распределение инвестиций поровну между всеми предприяти-
ями, и вычислить, сколько процентов прибыли теряется в каждом
из этих случаев. Варианты исходных данных задачи приведены ниже
в табл. 2.1.
Т а б л и ц а 2.1

Объем инвестиций
№ вари- 0 1 2 3 4 5 6
анта Ожидаемая прибыль предприятий, П1 / П2 / П3
1 −3/3/−4 16/14/6 21/26/23 32/31/34 47/48/49 52/53/57 64/62/65
2 −1/2/2 9/12/7 24/27/18 35/30/33 46/43/45 60/58/59 63/61/69
3 1/−1/5 11/8/13 27/25/28 31/39/36 44/47/41 53/56/55 67/74/76
4 −2/1/3 18/6/10 26/24/22 29/38/35 43/46/45 54/52/56 73/76/68
5 −3/−5/−6 13/7/8 31/29/28 34/42/37 55/58/54 70/60/71 75/81/84
6 0/−1/6 9/18/19 27/26/31 40/36/43 57/49/56 65/68/66 79/75/83
7 1/1/4 18/8/11 32/23/25 44/35/48 63/62/52 76/73/75 77/82/85
8 3/1/1 17/15/12 24/27/30 38/41/43 54/61/56 71/75/74 86/80/81
9 7/4/5 11/14/15 33/28/36 44/45/46 51/59/64 72/81/69 91/89/84
10 0/−4/−1 10/17/13 29/37/35 51/49/47 60/55/61 77/79/74 83/88/93

2.2. Решить задачу о распределении инвестиций между предприя-


тиями П1 , П2 и П3 по максимуму нормы прибыли. Инвестируется сумма
от 3 до 6 усл. ден. ед. Сопоставить полученные оптимальные решения
с решениями, предписывающими выделение всего объема инвестиций
только одному из предприятий либо распределение 3 или 6 усл. ден. ед.
поровну между всеми предприятиями. Вычислить, на сколько процен-
тов снижается норма прибыли в каждом из этих случаев. Варианты
исходных данных — в табл. 2.1.
Решить задачи 2.1 и 2.2 при дополнительном условии, что каж-
дому предприятию должно быть выделено не менее 1 усл. ден. ед.
инвестиций.
86 Глава 2. Примеры решения типовых задач

2.3. Решить задачу о загрузке транспортного средства с вариантами


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

Т а б л и ц а 2.2

T1 T2 T3
№ варианта M
m r m r m r
1 76 11 19 16 28 25 45
2 77 12 20 17 29 26 46
3 79 12 21 16 30 26 47
4 83 12 22 17 31 27 48
5 84 13 23 18 32 28 49
6 85 13 25 19 33 29 51
7 87 14 25 19 34 30 53
8 89 15 26 20 35 31 55
9 92 15 28 19 36 32 57
10 93 16 29 21 36 33 60

2.4. Решить задачу о замене оборудования в следующей постановке.


Руководство планирует деятельность предприятия на 5 лет. Установ-
ленное на предприятии оборудование в начале каждого года может
быть продано по остаточной стоимости и заменено новым, приобрета-
емым по рыночной стоимости. Прогнозируемая рыночная стоимость
оборудования M и стоимость C одной усл. ед. продукции предприятия
(усл. ден. ед.) в зависимости от номера года (от 1 до 5) известна. Харак-
теристики оборудования, к которым относятся производительность P
(усл. ед. продукции в год) и затраты на эксплуатацию Q (усл. ден. ед.
в год), зависят от его наработки (под наработкой оборудования будем
понимать число полных лет его эксплуатации). Оборудование может
эксплуатироваться только при наработке, не превышающей 3 года.
Остаточная стоимость оборудования равна стоимости, по которой при-
обреталось оборудование, уменьшаемой на 20 % от исходного значения
за каждый год эксплуатации. Замена оборудования связана с наклад-
ными расходами, составляющими 30 % от стоимости приобретаемого
оборудования. В начале планируемого периода установленное на пред-
приятии оборудование имеет наработку x0 лет, а приобреталось оно
по цене M0 .
Задачи 87

Требуется определить оптимальную стратегию обновления обору-


дования на 5 лет с целью достижения максимального суммарного
экономического эффекта за весь планируемый период. Сопоставить
полученное оптимальное решение с двумя допустимыми решениями,
первое из которых реализует стратегию максимально частого обновле-
ния оборудования, а второе — стратегию максимального откладывания
обновления.
Провести решение задачи со следующими вариантами исходных
данных:
— стоимость изначально установленного оборудования M0 = 400;
— изначальная наработка оборудования x0 = 1; 2; 3;
— стоимость оборудования M , стоимость единицы продукции C
и характеристики оборудования P и Q имеют значения, пред-
ставленные в табл. 2.3.
Т а б л и ц а 2.3

Стоимость оборудования Характеристики


№ вари- и единицы продукции оборудования в зависимости
анта в зависимости от номера года, M/C от его наработки, P/Q
1 2 3 4 5 0 1 2 3
1 495/10 545/11 585/12 630/13 680/15 75/100 75/110 70/130 60/150
2 505/11 560/12 615/13 655/14 705/16 76/105 75/110 72/135 64/160
3 520/11 565/12 620/13 670/15 710/16 78/105 77/115 73/140 65/165
4 535/12 580/13 630/14 675/15 730/17 80/110 78/120 75/140 68/170
5 550/12 595/14 640/15 700/16 750/18 82/115 80/120 76/145 70/175

Указание. В данной задаче частный экономический эффект zi опре-


деляется по формуле

S − M (i) + C(i) · P (0) − Q(0) − 0, 30 · M (i), ui = З;


zi =
C(i) · P (xi−1 ) − Q(xi−1 ), ui = С,
в которой остаточная стоимость
S = M · (1 − 0, 20 · xi−1 ),
где M представляет стоимость, по которой приобреталось оборудова-
ние, и вычисляется по формуле

M (i − xi−1 ), xi−1  i − 1;
M=
M0 , xi−1 > i − 1.
Доказать, что неравенство xi > i эквивалентно условию отсутствия
обновления оборудования за период с 1-го по i-й год включительно.
88 Глава 2. Примеры решения типовых задач

2.5. Решить задачу о распределении ресурсов со следующими ва-


риантами исходных данных:
— число шагов N = 2, производственная функция H(v) = ln(1 + v);
число шагов N = 4, производственная функция H(v) = v 2 (по-
следняя производственная функция не подчиняется закону убы-
вающей эффективности, но является весьма простой и допускает
построение явных решений для любого числа шагов N );
— начальный объем ресурсов V = 1; 10; 100 усл. ед.;
— коэффициенты производительности K1 = 20, K2 = 5; 10; 20; 40; 80;
— коэффициенты потребления ресурсов:

a1 a2
0,1 0,3; 0,5; 0,7; 0,9
0,3 0,5; 0,7; 0,9
0,5 0,7; 0,9
0,7 0,9

2.6. Решить задачу о распределении ресурсов с резервированием


в следующей постановке. Руководство планирует работу предприя-
тия на период в N лет. В ходе работы предприятие получает при-
быль, расходуя при этом некоторые ресурсы. В начале каждого года
часть имеющихся на предприятии ресурсов включается в производство,
а остальная часть ресурсов резервируется. Начальный объем ресур-
сов на предприятии равен V усл. ед. При включении в производство
ресурсов в объеме v усл. ед. предприятие получает прибыль, равную
P (v) = KH(v) усл. ден. ед., и при этом расходует Q(v) = av усл. ед.
ресурсов (здесь H(v) — производственная функция, K — коэффициент
производительности, a — коэффициент потребления ресурсов).
Требуется найти оптимальную стратегию распределения ресур-
сов, т. е. определить, сколько ресурсов необходимо включать в произ-
водство в начале каждого года для получения максимальной суммарной
прибыли по всему периоду.
(Заметим, что данная задача легко сводится к рассмотренной выше
задаче о распределении ресурсов, если ввести второе «фиктивное» пред-
приятие П2 , которое не дает прибыли и не потребляет ресурсов, т. е.
характеризуется коэффициентами K2 = 0 и a2 = 0, а резервирование
трактовать как направление ресурсов этому «фиктивному» предприя-
тию. Тем самым данная задача проще рассмотренной выше и, в част-
ности, допускает аналитические решения при большем числе шагов
и в более широком классе производственных функций.)
Задачи 89

Провести решение задачи со следующими вариантами исходных


данных:
— число шагов N = 2; 3; 4;

— производственная функция H(v) = v 2 ; v; ln(1 + v); 1 − e−v ;
v/(1 + v);
— начальный объем ресурсов V = 1; 10; 100 усл. ед.;
— коэффициент производительности K = 5; 10; 20; 40; 80;
— коэффициент потребления ресурсов a = 0, 1; 0, 3; 0, 5; 0, 7; 0, 9.
Глава 3

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
В ТЕОРИИ ГРАФОВ

Рассмотренные выше принцип оптимальности и метод ДП решения


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

3.1. Основные понятия теории графов


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

α
ε ζ
δ

η
β
γ

Рис. 3.1

наличие психологической совместимости между сотрудниками и т. п.


На рис. 3.1 представлен пример графа, изображающего ковш созвез-
дия Большая медведица. Вершинами графа являются наиболее яркие
звезды, входящие в созвездие, ребрами — мысленно проведенные ли-
нии, определяющие рисунок созвездия. Обозначены вершины графа
греческими буквами начиная с α порядке убывания яркости соответ-
ствующих звезд.
Строгое математическое определение графа без привязки к геомет-
рической интерпретации можно сформулировать следующим образом.
Графом называется набор из двух объектов: множества вершин
и связанного с ним множества ребер. В качестве множества вершин
графа принимается некоторое непустое множество V с конечным чис-
лом элементов. Элементы множества V называются вершинами графа.
В качестве множества ребер графа может быть принято некоторое
фиксированное подмножество R множества всех неупорядоченных пар
вершин графа. Элементы множества R называются ребрами графа.
На схемах и чертежах вершины графа изображаются точками или
небольшими окружностями, а ребра — непрерывными линиями, не про-
ходящими через посторонние вершины и не имеющими точек самопе-
ресечения. Вершины графа могут обозначаться с помощью номеров,
букв или слов того или иного алфавита или специальных кодов. Ребро
графа, образованное парой вершин v и w, будем обозначать через vw
(подобно отрезку AB, соединяющему две точки A и B), либо через
v −w (это необходимо, если вершины графа обозначаются несколькими
символами; например, ребро, образованное вершинами с обозначени-
ями 12 и 34, следует записывать в виде 12 — 34, поскольку запись 1234
допускает неоднозначное толкование). В отдельных случаях, когда нет
необходимости конкретно указывать образующие ребро вершины, ребра
графа могут обозначаться одним символом, например r. Обозначается
граф с множеством вершин V и множеством ребер R через G(V, R).
92 Глава 3. Динамическое программирование в теории графов

Например, если множество вершин графа состоит из трех точек


A, B, C, т. е. V = {A, B, C}, то множество всех неупорядоченных пар
вершин имеет вид {AA, AB, AC, BB, BC, CC}; при этом, в частности,
пары AB и BA не различаются и считаются равными, поскольку по-
рядок вершин в паре не важен (как и в случае обычного отрезка
на плоскости, который может быть обозначен как AB, так и BA).
В качестве множества R ребер графа может быть принято, в частно-
сти, подмножество {AB, AC, BC}, элементы которого соответствуют
сторонам треугольника ABC.
Приведем ряд основных понятий теории графов, которые будут
использованы нами при дальнейшем изучении материала.
Две вершины графа называются смежными, если они образуют
ребро. При этом говорят, что вершины являются концами образуемого
ими ребра, а само ребро соединяет образующие его вершины. Два ребра
графа называются смежными, если они имеют одну общую конце-
вую вершину и не совпадают. Если вершина является одним из кон-
цов ребра, то такие вершина и ребро называются инцидентными
(иными словами, ребро примыкает к инцидентной ему вершине). Вер-
шина, не инцидентная ни одному ребру, называется изолированной.
Вершина, инцидентная только одному ребру, называется висячей.
Вершина, инцидентная более чем двум ребрам, называется узлом.
Число ребер, инцидентных некоторой вершине, называется степе-
нью вершины. Ребро называется петлей, если обе образующие его
вершины совпадают.
Проиллюстрируем введенные основные понятия на графе, изобра-
женном на рис. 3.2. В данном примере:
— вершины v2 и v5 , v3 и v4 являются смежными;
— вершины v4 и v5 не являются смежными;
— ребра v1 v2 и v2 v3 являются смежными;
— ребра v2 v5 и v3 v4 не являются смежными;
— вершина v4 и ребро v2 v4 являются инцидентными;
— вершина v1 и ребро v3 v4 не являются инцидентными;
— вершина v6 — изолированная;
— вершина v5 — висячая;
— вершина v2 — узел степени 4;
— ребро p — петля в вершине v1 .
Графы, содержащие петли, иногда называются псевдографами.
В некоторых задачах возникает необходимость рассмотрения муль-
тиграфов, т. е. графов, в которых некоторые пары вершин соединены
более чем одним ребром (имеются кратные ребра). Рассмотрение псев-
3.1. Основные понятия теории графов 93

v3
v1
p

v2
v6
v4

v5

Рис. 3.2

дографов и мультиграфов приводит к формальному усложнению из-


лагаемого материала и в настоящем пособии не приводится.
Рассмотрим дальнейший ряд основных понятий теории графов.
Необходимо отметить, что в этой части теории терминология не яв-
ляется вполне устоявшейся и общепринятой и может отличаться от
используемой в других источниках.
Маршрутом называется последовательность попарно смежных
вершин графа вида
v[0] , v[1] , . . . , v[k] или v[0] − v[1] − . . . − v[k] ,
где индексы в квадратных скобках указывают порядковый номер вер-
шины в маршруте, k — целое положительное число, равное количеству
ребер в маршруте. При этом вершина v[0] называется началом марш-
рута, вершина v[k] — концом маршрута, обе эти вершины называются
крайними, а все остальные вершины — внутренними. Говорят, что
маршрут соединяет свои начальную и конечную вершины. Более
полно и детально маршрут определяется как чередующаяся последо-
вательность вершин и ребер графа вида
v[0] , r[1] , v[1] , r[2] , v[2] , . . . , r[k] , v[k] ,
в которой ребро r[i] образовано смежными вершинами v[i−1] и v[i] .
Наличие квадратных скобок «[ ]» в обозначениях порядковых номе-
ров вершин в маршруте обусловлено следующими обстоятельствами.
Как мы уже видели на примере, в обозначениях вершин графа могут
использоваться индексы. Во избежание возможной путаницы между
индексами в обозначениях вершин и порядковыми номерами вершин
в некотором маршруте эти порядковые номера (зависящие, очевидно,
94 Глава 3. Динамическое программирование в теории графов

от выбора маршрута) мы и условимся заключать в квадратные скобки.


Тем самым, для различных маршрутов символ v[i] может обозначать
разные вершины даже для фиксированных значений i; например, может
меняться вершина, обозначаемая через v[1] , в то время как обозначение
v1 обычно относится к некоторой фиксированной вершине графа.
В общем случае в маршруте отдельные вершины и ребра могут
повторяться, несмотря на формально различные индексы в их обозна-
чениях; соответственно возникает необходимость рассмотреть и сле-
дующие более простые структуры. Маршрут называется цепью, если
в нем ни одно ребро не встречается более одного раза. Маршрут назы-
вается путем, если в нем либо все вершины попарно различны, либо
совпадают только крайние вершины. Из данных определений вытекает
следующее:
1) из любого маршрута можно выделить путь, соединяющий те же
крайние вершины;
2) любой путь является цепью, поскольку отсутствие повторяю-
щихся вершин гарантирует и отсутствие повторяющихся ребер.
Маршрут, цепь или путь называются замкнутыми, или цикли-
ческими, если в них крайние вершины совпадают. Замкнутая цепь
называется циклом. Граф называется связным, если любые две его
вершины можно соединить цепью. Связный граф без циклов называ-
ется деревом.
Возвращаясь к рис. 3.2, отметим:
— последовательность v1 — v2 — v5 — v2 — v4 — v3 образует маршрут,
соединяющий вершины v1 и v3 и дважды содержащий ребро
v2 — v5 . В соответствии с принятым соглашением об обозначениях
для данного маршрута справедливо:
v[0] = v1 , v[1] = v2 , v[2] = v5 , ..., v[5] = v3 ;
— последовательность v5 — v2 — v4 — v3 — v2 — v1 образует цепь, со-
единяющую вершины v5 и v1 ;
— последовательность v4 — v3 — v2 — v5 образует путь, в котором
v[0] = v4 , v[1] = v3 , v[2] = v2 , v[3] = v5 ;
— путь v3 — v4 — v2 — v3 является замкнутым.
Приведенный граф не является связным, поскольку содержит изо-
лированную вершину v6 ; если же данную вершину отбросить, то вновь
полученный граф, очевидно, станет связным. Если при этом отбро-
сить петлю p и одно из ребер v2 — v3 , v2 — v4 , v3 — v4 , то граф станет
деревом.
Графам могут быть поставлены в соответствие матрицы следую-
щих типов. Пусть G(V, R) — некоторый граф, содержащий n вершин
3.1. Основные понятия теории графов 95

v1 , v2 , . . . , vn и m ребер r1 , r2 , . . . , rm . Матрицей смежности графа


G(V, R) называется квадратная матрица S порядка n (по числу вер-
шин), элементы sij которой определяются следующим образом:

1, если вершины vi и vj смежные,


sij =
0, если вершины vi и vj не смежные.
Матрица смежности является симметричной, т. е. ее элементы удо-
влетворяют условию sij = sji , и имеет нули на главной диагонали (если
в графе нет петель). Обратно, любая состоящая из нулей и единиц мат-
рица с указанными свойствами однозначно определяет граф с пронуме-
рованными вершинами. Матрицей инцидентности графа G(V, R)
называется матрица Q размерности n × m, элементы qij которой опре-
деляются следующим образом:

1, если вершина vi и ребро rj инцидентны,


qij =
0, если вершина vi и ребро rj не инцидентны.
Матрица инцидентности в каждом столбце имеет две единицы и не
содержит одинаковых столбцов. Обратно, любая состоящая из нулей
и единиц матрица с указанными свойствами однозначно определяет
граф с пронумерованными вершинами и ребрами. Например, для при-
веденного на рис. 3.2 графа без учета петли p матрицы смежности
и инцидентности имеют вид
⎡ ⎤ ⎡ ⎤
0 1 0 0 0 0 1 0 0 0 0
⎢ 1 0 1 1 1 0 ⎥ ⎢ 1 1 1 1 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 1 0 1 0 0 ⎥ ⎢ 0 1 0 0 1 ⎥
S=⎢ ⎢
⎥, Q = ⎢ 0 0 1 0 1 ⎥,
⎥ ⎢ ⎥
⎢ 0 1 1 0 0 0 ⎥ ⎢ ⎥
⎣ 0 1 0 0 0 0 ⎦ ⎣ 0 0 0 1 0 ⎦
0 0 0 0 0 0 0 0 0 0 0
если ребра графа пронумеровать следующим образом:
r1 = v1 v2 , r2 = v2 v3 , r3 = v2 v4 , r4 = v2 v5 , r5 = v3 v4 ;
при иной нумерации ребер графа может поменяться порядок столбцов
матрицы инцидентности.
Как видно из представленного примера, матрицы смежности и ин-
цидентности являются громоздкими даже для весьма простых графов.
По этой причине графы удобно задавать списками смежности,
которые представляют собой список всех вершин графа с перечнями
смежных с ними вершин; во избежание повторений среди смежных
вершин достаточно указать лишь те, которые имеют больший по зна-
чению индекс. Например, изображенный на рис. 3.2 граф без учета
96 Глава 3. Динамическое программирование в теории графов

петли p может быть задан следующим списком смежности:


v1 — v2 ; v2 — v3 , v4 , v5 ; v3 — v4 ; v4 ; v5 ; v6 .
Допустимы и иные формы списков смежности.

3.2. Перечисление путей на графе


При решении отдельных задач теории графов возникает необходи-
мость строить пути — все или только некоторые, — соединяющие две
заданные вершины графа. Очевидно, что для связных графов всегда
существует хотя бы один такой путь. Построение всех путей данного
вида называется перечислением путей и представляет собой, по су-
ществу, полный последовательный перебор всех возможных вариантов
путей, соединяющих заданные вершины. Рассмотрим соответствующий
алгоритм перечисления путей.
Для реализации алгоритма все вершины графа упорядочиваются
каким-либо образом (по номерам, по алфавиту или иначе). В упо-
рядоченном наборе вершин графа каждая вершина имеет свой един-
ственным образом определенный порядковый номер, который мы бу-
дем обозначать символом «#». Например, если все вершины графа
снабжены индексами от 1 до n, то естественно упорядочить их по
возрастанию индексов; при этом
# v1 = 1, # v2 = 2, . . . , # vn = n.
Две заданные соединяемые начальную и конечную вершины будем
обозначать vнач и vкон . На каждом шаге алгоритма фиксируются два
объекта:
1) некоторый построенный текущий путь
vнач = v[0] — v[1] — · · · — v[k]
из начальной вершины vнач в текущую вершину v[k] графа (от-
метим еще раз, что для вершины v[i] ее порядковый номер i
в текущем пути может не совпадать с ее порядковым номером
# v[i] во множестве вершин графа);
2) индекс p, определяющий минимальный номер подлежащих рас-
смотрению вершин на данном шаге.
На начальном шаге алгоритма (и некоторых последующих ша-
гах) фиксируется «пустой» путь, не содержащий ребер и сводящийся
к единственной вершине vнач = v[0] .
При работе алгоритма перечисления путей с целью достижения
конечной вершины применяются две следующие основные операции:
удлинение и укорачивание текущего пути.
3.2. Перечисление путей на графе 97

Удлинение. Для удлинения текущего пути просматриваются по


порядку все вершины графа, смежные с крайней вершиной v[k] теку-
щего пути и не входящие в уже построенный путь (чтобы избежать
повторения вершин). Просмотр начинается с номера p (это позволит
избежать «зацикливания» в работе алгоритма). Если при просмотре
найдена хотя бы одна вершина, то удлинение является возможным.
Первая по порядку из найденных вершин (чтобы не допустить про-
пуска возможных вариантов удлинения) принимается искомым про-
должением текущего пути и обозначается через v[k+1] . Текущий путь
становится на 1 ребро длиннее и принимает вид

v[0] — v[1] — . . . — v[k+1] .

Индекс p полагается равным 1, параметр k увеличивается на 1. Если же


при просмотре не найдено ни одной подходящей вершины, то удлинение
является невозможным.
Укорачивание. Если число k ребер в текущем пути больше 0, то
укорачивание является возможным. Конечная вершина v[k] текущего
пути отбрасывается, и его новой конечной вершиной становится v[k−1] .
Текущий путь становится на 1 ребро короче и принимает вид

v[0] — v[1] — . . . — v[k−1] .

Индекс p полагается равным # v[k] + 1, параметр k уменьшается на 1.


Если же число ребер в текущем пути равно 0, т. е. путь не содержит
ребер вообще и сводится к одной вершине v[0] = vнач , то укорачивание
является невозможным.
Например, если на графе, изображенном на рис. 3.2, фиксирован
текущий путь v4 — v2 , то операция удлинения при p = 4 приведет к
следующему: вершины v1 , v2 , v3 пропускаются, поскольку имеют но-
мера, меньшие p; вершина v4 игнорируется, поскольку уже входит в
текущий путь; вершина v5 позволяет осуществить требуемое удлинение
и построить новый путь
v4 — v2 — v5 .

После укорачивания этого пути получим исходный путь v4 — v2 , однако


индекс p станет равным (#v5 +1) = 6. Дальнейшее удлинение этого пути
невозможно, поскольку единственная допустимая по номеру вершина
v6 не является смежной с конечной вершиной v2 пути.
Алгоритм перечисления путей включает следующие пункты (шаги).
(Как обычно, мы принимаем, что все пункты алгоритма выполняются
98 Глава 3. Динамическое программирование в теории графов

в порядке возрастания их номеров, если иное не оговорено явно и не


указан другой подлежащий выполнению пункт.)
1. Начало работы алгоритма. Построение путей начинается, есте-
ственно, с начальной вершины. Полагаем
v[0] = vнач , p = 1, k = 0;
в данный момент текущий путь является «пустым».
2. Проверка. Если конечная вершина v[k] текущего пути совпадает
с конечной вершиной vкон , т. е. v[k] = vкон , то очередной из путей,
соединяющих vнач и vкон , построен. Запоминаем построенный путь
и переходим к п. 4 к укорачиванию текущего пути. Если же
v[k] = vкон , то переходим к п. 3 к удлинению пути.
3. Удлинение. Если операция удлинения возможна, то проводим ее
и переходим к п. 2. Если же удлинение невозможно, то переходим
к п. 4.
4. Укорачивание. Если операция укорачивания возможна, то про-
водим ее и переходим к п. 3. Если же укорачивание невозможно
(это означает, что все пути уже построены), то переходим к п. 5.
5. Конец работы алгоритма.
Применим рассмотренный общий алгоритм для построения всех пу-
тей, соединяющих вершину G с вершиной H в графе, представленном
на рис. 3.3. В рассматриваемом примере вершины графа удобно упоря-
дочить в соответствии с их обозначениями по латинскому алфавиту;
при этом
# A = 1, # G = 2, # H = 3, # L = 4, # R = 5.
Выполним подробно несколько первых шагов алгоритма перечисления
путей.
— Полагаем v[0] = G, p = 1, k = 0.

L H

G A

Рис. 3.3
3.2. Перечисление путей на графе 99

— Поскольку вершина G не совпадает с конечной вершиной H,


то переходим к п. 3 алгоритма (далее будем говорить коротко
«переход к п. 3»).
— Для вершины G смежными являются вершины A, L, R, причем
ни одна из них к текущему пути не относится. Поскольку p = 1,
то минимальный допустимый номер 1 имеет вершина A, которая
и является искомым продолжением. Текущий путь принимает вид
G — A, индекс p полагается равным 1, параметр k — равным 1.
Переход к п. 2.
— Поскольку вершина A не совпадает с конечной вершиной H, то
переходим к п. 3.
— Для конечной вершины A текущего пути смежными являются все
остальные вершины графа, причем к текущему пути не относятся
H, L, R. Поскольку p = 1, то минимальный допустимый номер
имеет вершина H, которая и является искомым продолжением.
Текущий путь принимает вид G — A — H, индекс p полагается
равным 1, параметр k — равным 2. Переход к п. 2.
— Вершина H является конечной вершиной. Запоминаем построен-
ный путь. Переход к п. 4.
— Укорачивание является возможным. Вершина H текущего пути
отбрасывается. Текущий путь принимает вид G — A, индекс p
полагается равным # H + 1 = 4, параметр k — равным 1. Переход
к п. 3.
— Для вершины A смежными вершинами, не относящимися к те-
кущему пути, по прежнему являются вершины H, L, R. Однако
в настоящий момент (в отличие от рассмотренной выше ситуа-
ции) p = 4. Поскольку # H = 3, # L = 4, то теперь допустимым
продолжением является вершина L. Текущий путь принимает вид
G — A — L, индекс p полагается равным 1, параметр k — равным 2.
Переход к п. 2 и т. д. по алгоритму.
Результаты проведенных расчетов могут быть представлены в при-
веденной ниже таблице.
При составлении данной таблицы выполненные подряд операции
удлинения записаны в одной строке (как, например, для первой строки
G — A — H). Если последняя вершина текущего пути совпадает с ко-
нечной вершиной H, то очередной из искомых путей найден. После
укорачивания переходим на новую строку таблицы и в ней же записы-
ваем результат последующего удлинения пути (если он возможен, как
для второй строки G — A — L — H). Отметим, что при записи путей
100 Глава 3. Динамическое программирование в теории графов

Текущий путь v[0] — v[1] — v[2] — · · ·


G—A—H
G—A—L—H
G—A—L
G—A—R
G—A
G—L—A—H
G—L—A—R
G—L—A
G—L—H
G—L
G—R—A—H
G—R—A—L—H
G—R—A—L
G—R—A
G—R
G

в колонках букв — если только колонки не прерываются — сами буквы


упорядочены по алфавиту.
Таким образом, в заданном графе существует 6 различных путей,
соединяющих вершины G и H:
G — A — H,
G — A — L — H,
G — L — A — H,
G — L — H,
G — R — A — H,
G — R — A — L — H.
Отметим, что цепей в графе, соединяющих данные вершины, бу-
дет во всяком случае не меньше, чем путей, но тоже конечное число;
примером может служить цепь G — A — R — G — L — A — H, не являю-
щаяся путем. Количество же маршрутов будет бесконечно, поскольку
в них допускается повторение и вершин, и ребер.

3.3. Задача о кратчайшем пути


Задача о кратчайшем пути является одной из важнейших классических
задач теории графов. Иначе она называется задачей о минимальном
3.3. Задача о кратчайшем пути 101

пути или, в устаревшей терминологии, задачей о дилижансе. Значение


данной задачи определяется тем, что она находит разнообразные прак-
тические приложения, входит в состав других более сложных задач
и является моделью для разработки эффективных методов решения
задач теории графов. Рассмотрим постановку и методы решения задачи
о кратчайшем пути.
Пусть G(V, R) — некоторый граф. Будем считать, что каждому
ребру r ∈ R графа поставлено в соответствие некоторое неотрица-
тельное число d(r)  0, называемое длиной или весом ребра. При
этом граф G(V, R) называется взвешенным. Пусть последователь-
ность r1 , r2 , . . . , rk ребер графа образует путь. Длиной пути назы-
вается сумма
d(r1 ) + d(r2 ) + . . . + d(rk )
длин всех ребер, образующих данный путь.
Пусть даны две вершины vнач и vкон графа, принимаемые в качестве
начальной и конечной. Задача о кратчайшем пути состоит в поиске пути
минимальной длины, соединяющего заданные начальную и конечную
вершины.
В различных по своему экономическому содержанию вариантах по-
становки задачи о кратчайшем пути роль длины ребра могут играть
не только сами длины, но и время, стоимость, объем затрачиваемых
ресурсов (материальных, финансовых, топливно-энергетических и т. п.)
или другие характеристики, связанные с прохождением каждого ребра.
Важно, чтобы при движении вдоль пути эти характеристики есте-
ственно было складывать, как и сами длины при расчете общей длины.
(Например, если веса ребер обозначают пропускные способности соот-
ветствующих дорог при моделировании транспортных сетей, то скла-
дывать их при рассмотрении двух последовательно идущих ребер нело-
гично: как известно, пропускная способность последовательности до-
рог определяется не суммой, а минимальной пропускной способностью
самой «узкой» дороги. В данном контексте сложение пропускных спо-
собностей последовательных дорог не имеет экономического смысла.)
С теоретической точки зрения, вполне допустимо исследование гра-
фов и с отрицательными значениями весов ребер, однако соответству-
ющие задачи, как правило, не имеют простого экономического со-
держания, решаются более сложно и в настоящем учебном пособии
не рассматриваются.
Задача о кратчайшем пути имеет решение для любого связного
графа; при этом под решением задачи понимается сам кратчайший
путь и его длина. Конечно, длина кратчайшего пути определяется
однозначно, в то время как самих кратчайших путей может быть
102 Глава 3. Динамическое программирование в теории графов

несколько. Решение задачи о кратчайшем пути может быть проведено


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

Рис. 3.4
3.3. Задача о кратчайшем пути 103

ной является вершина S, конечной — вершина E. В данном примере


вершины графа удобно упорядочить по латинскому алфавиту; при этом
они будут иметь следующие порядковые номера:
# A = 1, # E = 2, # H = 3, # P = 4, # S = 5, # T = 6.
Выполним подробно несколько первых шагов алгоритма.
— Полагаем v[0] = S, p = 1, k = 0.
— Поскольку вершина S не совпадает с конечной вершиной E, то
переходим к п. 3.
— Для вершины S смежными являются вершины A, H, P, T, причем
ни одна из них к текущему пути не относится. Поскольку p = 1,
то минимальный допустимый номер 1 имеет вершина A, которая
и является искомым продолжением. Текущий путь принимает вид
S — A, индекс p полагается равным 1, параметр k — равным 1.
Переход к п. 2.
— Поскольку вершина A не совпадает с конечной вершиной E, то
переходим к п. 3.
— Для вершины A смежными являются все вершины графа, но
в текущий путь не входят только вершины E, H, P, T. Поскольку
p = 1, то минимальный допустимый номер из них имеет вер-
шина E, которая и является искомым продолжением. Текущий
путь принимает вид S — A — E, индекс p полагается равным 1,
параметр k — равным 2. Переход к п. 2.
— Вершина E является конечной вершиной; это означает, что оче-
редной из путей, соединяющих заданные начальную и конеч-
ную вершины, найден. Вычисляем длину пути (она составляет
10 + 7 = 17), запоминаем сам путь и его длину. (Отметим, что
для найденного пути v[0] = S, v[1] = A, v[2] = E.) Переход к п. 4.
— Укорачивание пути является возможным. Вершина E текущего
пути отбрасывается. Текущий путь принимает вид S — A, индекс p
полагается равным # E + 1 = 3, параметр k — равным 1. Переход
к п. 3.
— Для вершины A в настоящий момент в отличие от рассмотренной
выше ситуации индекс p = 3. Поскольку # E = 2, # H = 3,
то выбирать продолжением вершину E нельзя (это уже было
сделано ранее), и допустимым продолжением является вершина H.
Текущий путь принимает вид S — A — H, индекс p полагается
равным 1, параметр k — равным 2. Переход к п. 2 и т. д. по
алгоритму.
104 Глава 3. Динамическое программирование в теории графов

Результаты проводимых расчетов частично (по причине их гро-


моздкости и элементарности многократно повторяемых ситуаций) пред-
ставлены в следующей таблице:

Текущий путь Длина пути


S—A—E 17
S—A—H—T—P—E 28
S—A—H—T—P —
S—A—H—T —
S—A—H —
S—A—P—E 15
S—A—P—T—H —
S—A—P—T —
S—A—P —
S—A—T—H —
S—A—T—P—E 28
S—A—T—P —
S—A—T —
S—A —
S—H—A—E 14
S—H—A—P—E 12
S—H—A—P—T —
S—H—A—P —
S—H—A—T—P—E 25
... ...

Если последняя вершина текущего пути совпадает с конечной вер-


шиной, то очередной из искомых путей найден; его длина вычисляется
и заносится во второй столбец таблицы. Прочерк «—» в этом столбце
означает, что построенный путь не доходит до конечной вершины.
В отдельных ситуациях, например, на пути S — A — P — T — H, мы по-
падаем в «тупик», не дойдя до конечной вершины; в данном случае все
вершины, смежные с конечной вершиной пути H, уже входят в текущий
путь, и провести удлинение без повторения вершин невозможно.
Проведенное до конца построение всех путей показывает, что
кратчайшим путем от вершины S к вершине E является путь
S — H — A — P — E, а его длина равна 12.
Рассмотренный алгоритм, несмотря на всю громоздкость обеспе-
чиваемого им решения, играет важную роль в решении различных
3.4. Задача о кратчайшем пути 105

связанных с графами задач. Некоторые из его приложений будут рас-


смотрены далее.
Замечание 1. Рассмотренный метод позволяет решить задачу
о кратчайшем пути и при наличии отрицательных длин ребер.
Замечание 2. На основе алгоритма перечисления путей можно
решить и задачу о максимальном пути: найти путь максимальной
длины, соединяющий две заданные вершины графа. Подчеркнем, что
в задаче о максимальном пути существенно, рассматривается макси-
мальный путь или цепь. Например, для изображенного на рис. 3.5
графа с равными единице длинами всех ребер, начальной вершиной 1
и конечной вершиной 5, справедливо следующее:
— максимальный путь 1 — 2 — 5 имеет длину 2;
— максимальная цепь 1 — 2 — 3 — 4 — 2 — 5 имеет длину 5;
— маршрут из 1 в 5 может быть выбран сколь угодно длинным
за счет многократного обхода цикла 2 — 3 — 4 — 2.

Рис. 3.5

Задание. Решить задачу о максимальном пути для изображенного


на рис. 3.4 графа с начальной вершиной A и конечной вершиной H
методом перечисления путей.

3.4. Решение задачи о кратчайшем пути


методом динамического программирования
Представленный метод перечисления путей для сложных графов явля-
ется исключительно громоздким и трудоемким. Гораздо более эффек-
тивным методом решения рассматриваемой задачи является метод ДП,
к изложению которого мы приступаем.
Пусть v ∈ V — некоторая вершина графа. Определим функцию L(v)
как длину кратчайшего пути, соединяющего вершину v с конечной
106 Глава 3. Динамическое программирование в теории графов

вершиной vкон ; если такого пути не существует, то функция L считается


неопределенной для вершины v. В соответствии с этим определением
имеет место равенство L(vкон ) = 0, а L(vнач ) равно длине искомого
кратчайшего пути и подлежит определению.
На каждом шаге решения задачи методом ДП множество вершин
графа подразделяется на следующие три непересекающиеся группы:
1) занятые вершины, для которых значения функции L(v) уже
вычислены;
2) пробные вершины, для которых значения функции L(v) еще
не вычислены, но имеются оценки E(v) длины кратчайшего пути
от v к vкон (оценки сверху);
3) свободные вершины, для которых не вычислены ни сами длины
L(v), ни их оценки E(v).
В начальный момент решения задачи к занятым вершинам отно-
сится только конечная вершина vкон , а все остальные — к свободным;
по ходу решения группа занятых вершин расширяется, а группа сво-
бодных — сужается.
Для каждой занятой вершины (за исключением vкон ) исходящей
стрелкой указывается ребро (одно или несколько), в направлении ко-
торого следует строить кратчайший путь. Включение в данную группу
вершины vнач означает, что основная расчетная часть алгоритма за-
вершена.
Алгоритм решения задачи о кратчайшем пути методом ДП вклю-
чает следующие пункты.
1. Начало работы алгоритма. Полагаем L(vкон ) = 0, вершину vкон
объявляем занятой, а все остальные вершины — свободными.
2. Проверка. Если начальная вершина vнач является занятой (т. е.
для нее известно значение функции L(v)), то переходим к п. 5.
3. Вычисление или корректировка оценок незанятых вершин (ме-
тодика расчетов детально рассмотрена ниже).
4. Пополнение группы занятых вершин. Из пробных вершин вы-
бираем те, для которых оценки имеют минимальное значение
(таких вершин может быть одна или несколько). Эти вершины
объявляем занятыми и полагаем для них
L(v) = E(v).
Переход к п. 2.
5. Расчет длины кратчайшего пути завершен. Строим кратчайшие
пути (один или несколько). Конец работы алгоритма.
3.4. Задача о кратчайшем пути 107

Вычисление оценок E(u) для незанятых вершин u в п. 3 алго-


ритма проводится следующим образом. Рассмотрим множество всех
незанятых вершин графа, каждая из которых является смежной хотя
бы с одной занятой вершиной. В это множество могут входить как
свободные, так и пробные вершины.
Для свободных вершин оценка вычисляется по формуле
E(u) = min {d(uv) + L(v)},
где минимум выбирается по ребрам вида uv с занятыми вершинами v.
Ребро, на котором достигается минимум (таких ребер может быть одно
или несколько), отмечается стрелкой, идущей от u к v (от незанятой
вершины к занятой).
Для пробных вершин проводится корректировка имеющихся оценок.
Если с момента вычисления оценки E(u) не появилось новых занятых
вершин v, смежных с вершиной u, то оценка не меняется. Если же
такие вершины появились, то по всем таким вершинам v вычисляется
вспомогательный минимум
 
m = min d(uv) + L(v) ,
аналогичный записанной выше формуле для вычисления оценки. От-
метим, что ребер вида uv, для которых вычисленный минимум до-
стигается, может быть одно или несколько. При этом:
— если m > E(u), то оценка не меняется;
— если m = E(u), то оценка не меняется, но к установленным
ранее стрелкам добавляются стрелки на тех ребрах вида uv,
для которых вычисленный минимум достигается;
— если m < E(u), то уменьшаем оценку, полагая E(u) = m, уста-
новленные ранее стрелки убираем и ставим новые стрелки на тех
ребрах вида uv, для которых вычисленный минимум достигается.
Таким образом, в ходе корректировки оценка уменьшается или
не изменяется: если обозначить через Ẽ(u) уже имеющуюся оценку,
то новая оценка вычисляется по формуле
 
E(u) = min Ẽ(u), m  Ẽ(u).
Для удобства контроля ребра, уже учтенные при вычислении оце-
нок, можно отмечать «засечками». При вычислении оценок важно
учесть все вершины, смежные с занятыми. Если же незанятых вер-
шин, смежных с занятыми, нет, а начальная вершина все еще не явля-
ется занятой, то путей, соединяющих заданные начальную и конечную
вершины, не существует. В этом случае задача о кратчайшем пути
решений не имеет.
108 Глава 3. Динамическое программирование в теории графов

u1

v1 L(v1 )
vкон

L(v2 )
u2
v2

L(v3 )

u3 v3

Рис. 3.6

Способ вычисления оценок может быть проиллюстрирован схемой


на рис. 3.6. В ней принято, что вершины v1 , v2 , v3 (и, конечно, vкон )
являются занятыми, причем v1 и v2 стали занятыми на последнем шаге
алгоритма, а v3 стала занятой ранее. Сплошными линиями обозначены
ребра графа, пунктирными — кратчайшие пути от занятых вершин
к конечной. Среди вершин u1 , u2 , u3 , смежных с занятыми, первые
две являются свободными, а u3 является пробной и имеет оценку
Ẽ(u3 ) = d(u3 v3 ) + L(v3 ),

вычисленную с использованием ребра u3 v3 . В этом случае справедливы


формулы
E(u1 ) = d(u1 v1 ) + L(v1 ),
 
E(u2 ) = min d(u2 v1 ) + L(v1 ), d(u2 v2 ) + L(v2 ) ,
 
E(u3 ) = min Ẽ(u3 ), m , m = d(u3 v2 ) + L(v2 ).

Приведенные формулы для вычисления оценок E(u) и длин крат-


чайших путей L(u) выражают своеобразный аналог классического
принципа оптимальности. Эти формулы носят рекуррентный харак-
тер, и в них также выделяется первый шаг от текущей вершины u
к конечной вершине vкон , проводимый по ребру uv; при этом длины
кратчайших путей от занятых вершин v являются уже известными.
Функция L(v) является аналогом семейства функций Беллмана Bi (xi ).
Расчеты начинаются с конечной вершины и условия L(vкон ) = 0, со-
ответствующего условию BN (xN ) = 0. Роль управления играет выбор
ребра, по которому следует начинать движение из рассматриваемой
3.4. Задача о кратчайшем пути 109

вершины. Расчет функций L(v) представляет собой аналог этапа услов-


ной оптимизации классического метода ДП.
Построение кратчайшего пути в п. 5 алгоритма представляет собой
аналог этапа безусловной оптимизации метода ДП и проводится сле-
дующим образом. Начинается построение с начальной вершины vнач .
Из этой вершины выходит по меньшей мере одна стрелка, установлен-
ная при вычислении оценок для данной вершины. Переходим по этой
стрелке (или по одной из них) в следующую вершину. Аналогично,
из этой вершины также выходит по меньшей мере одна стрелка, по
которой переходим далее. Так продолжаем до тех пор, пока не придем
в конечную вершину vкон . При наличии нескольких кратчайших путей
все они могут быть построены с помощью алгоритма перечисления
путей (см. ниже замечание 4 данного раздела).
Применим рассмотренный метод ДП к решению задачи о крат-
чайшем пути для заданного на рис. 3.4 графа и выполним подробно
все шаги алгоритма, сопровождая решение задачи записью на самом
графе (соответствующие расчеты уже представлены на исходном графе
рядом с его вершинами).
— Полагаем L(E) = 0, ставим 0 около вершины E и объявляем
данную вершину занятой, а все остальные — свободными.
— Поскольку начальная вершина S не является занятой, то пере-
ходим к п. 3 алгоритма.
— Для занятой вершины E смежными являются вершины A и P,
причем все они являются свободными, т. е. ни для одной из них
оценок еще не рассчитано. Вычисляем оценки впервые для этих
вершин:
E(A) = d(AE) + L(E) = 7 + 0 = 7,
E(P) = d(PE) + L(E) = 4 + 0 = 4.
Полученные значения записываем на графе около соответству-
ющих вершин, которые переходят в группу пробных вершин.
Отмечаем стрелками ребра AE и PE.
— Из двух пробных вершин A и P значение оценки для вершины P
минимально. Полагаем L(P) = E(P) = 4, отмечаем жирным
шрифтом данное значение на графе, объявляем вершину P за-
нятой. Переход к п. 2.
— Поскольку начальная вершина S не входит в группу занятых
вершин {E, P}, то переходим к п. 3.
— Для занятых вершин E и P смежными являются вершины A, S, T,
причем вершины S и T являются свободными. Вычисляем оценки
110 Глава 3. Динамическое программирование в теории графов

для этих вершин:


E(S) = d(SP) + L(P) = 9 + 4 = 13,
E(T) = d(TP) + L(P) = 6 + 4 = 10.
Полученные значения записываем на графе около соответству-
ющих вершин, которые переходят в группу пробных вершин.
Отмечаем стрелками ребра SP и TP. Отметим, что в настоящий
момент впервые рассчитана оценка для начальной вершины S.
Для вершины A уже известна оценка E(A) = 7, рассчитанная
ранее, причем после ее вычисления стала занятой только вер-
шина P, смежная с A. Проводим соответствующую корректировку
оценки:
m = d(AP) + L(P) = 1 + 4 = 5.
Поскольку m < E(A), то полагаем E(A) = m = 5, и ранее установ-
ленную на ребре AE стрелку переносим на ребро AP. Полученное
значение оценки записываем на графе около вершины A.
— Из трех пробных вершин A, S, T минимальное значение 5 оценка
принимает для вершины A. Полагаем L(A) = E(A) = 5, отме-
чаем жирным шрифтом данное значение на графе и объявляем
вершину A занятой. Переход к п. 2.
— Поскольку начальная вершина S не входит в группу занятых
вершин {A, E, P}, то переходим к п. 3.
— В настоящий момент для занятых вершин A, E, P смежными яв-
ляются вершины H, S, T, причем вершина H является свободной.
Вычисляем оценку для этой вершины:
E(H) = d(HA) + L(A) = 5 + 5 = 10,
записываем полученное значение на графе и переводим ее
в группу пробных вершин. Отмечаем стрелкой ребро HA. Для
вершин S и T уже известны оценки E(S) = 13 и E(T) = 10,
причем только вершина A стала занятой после их вычисления.
Корректируем значения оценок:
m(S) = d(SA) + L(A) = 10 + 5 = 15,
m(T) = d(TA) + L(A) = 8 + 5 = 13.
Поскольку m(S) > E(S) и m(T) > E(T), то оценки не меняются,
и ранее установленные стрелки SP и TP не переносятся.
— Из трех пробных вершин H, S, T минимальное значение 10
оценка принимает сразу для двух вершин H и T. Полагаем
3.4. Задача о кратчайшем пути 111

L(H) = E(H) = 10, L(T) = E(T) = 10, отмечаем жирным шриф-


том данные значения на графе, объявляем вершины H и T за-
нятыми. Переход к п. 2.
— В настоящий момент занятыми являются все вершины графа,
кроме начальной вершины S. Переход к п. 3.
— Корректируем оценку для вершины S, учитывая, что после ее
вычисления стали занятыми две вершины H и T:
 
m = min d(SH) + L(H); d(ST) + L(T) = min {2 + 10; 4 + 10} = 12.
Поскольку m < E(S) = 13, то полагаем E(S) = m = 12, ра-
нее установленную на ребре SP стрелку снимаем и переносим
на ребро SH, на котором достигается минимум. Полученное зна-
чение оценки записывается на графе около вершины S.
— Единственной пробной вершиной является вершина S. Полагаем
L(S) = E(S) = 12, отмечаем жирным шрифтом данное значение
на графе, объявляем вершину S занятой. Переход к п. 2.
— Начальная вершина S является занятой. Переход к п. 5.
— Основная расчетная часть алгоритма завершена, длина кратчай-
шего пути равна L(S) = 12. Кратчайший путь строится начиная
с вершины S с использованием установленных на графе стрелок
SH, HA, AP, PE. Таким образом, кратчайший путь имеет вид
S — H — A — P — E.
Конец работы алгоритма.
Полученный результат, конечно, совпадает с результатом, получен-
ным ранее методом перечисления путей.
К решению данной задачи необходимо сделать ряд следующих за-
мечаний.
Замечание 1. В рассмотренном примере значения функции L(v)
стали известны одновременно для двух вершин H и T; группа занятых
вершин пополнилась сразу на две вершины (в отдельных примерах
может добавиться и большее число вершин). При этом выпало из рас-
смотрения ребро HT, длина 3 которого в расчетах не использована.
Замечание 2. В рассмотренном примере существует только один
кратчайший путь. В иных ситуациях может существовать и большее
число кратчайших путей. Например, если длину ребра PS изменить
с 9 на 8, то возникнет второй кратчайший путь S — P — E той же
длины 12. Если и длину ребра AS изменить с 10 на 7, то возникнет
и третий кратчайший путь S — A — P — E. При этом после завершения
алгоритма из вершины S будет выходить 3 стрелки SA, SH, SP.
112 Глава 3. Динамическое программирование в теории графов

Замечание 3. В отдельных случаях значение длины кратчайшего


пути может быть получено до того, как будут рассчитаны оценки всех
вершин. Например, если длину ребра PS изменить с 9 на 1, то сразу
после вычисления L(P) = 4 две вершины A и S получат одинаковые
минимальные оценки, равные 5. Это будет означать, что кратчайший
путь длины 5 имеет вид S — P — E. При этом для вершины T будет
известна только оценка, а вершина H вообще останется свободной.
Замечание 4. Отметим здесь одно из возможных приложений
рассмотренного выше алгоритма перечисления путей. Пусть задача
о кратчайшем пути решается для изображенного на рис. 3.7 графа
с равными единице длинами всех ребер, начальной вершиной 1 и ко-
нечной вершиной 9, причем требуется найти не какой-либо один, а все
кратчайшие пути.

Рис. 3.7

Очевидно, что длина кратчайших путей в данном случае равна 4


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

1—2—5—7—9 1—3—5—8—9
1—2—5—8—9 1—3—6—8—9
1—3—5—7—9 1—4—6—8—9

Здесь представлены все 6 кратчайших путей, являющиеся реше-


ниями данной задачи.
3.4. Задача о кратчайшем пути 113

Замечание 5. Важно подчеркнуть, что рассмотренный метод


неприемлем для решения задачи о кратчайшем пути на графах, со-
держащих ребра с отрицательными весами. Для примера рассмотрим
граф, изображенный на рисунке 3.8, с начальной вершиной 1 и ко-
нечной вершиной 3. В нем имеются 2 пути: 1 — 3 длиной 1 и 1 — 2 — 3
длиной −1, так что кратчайшим является путь 1 — 2 — 3. Формально
проводимые расчеты в этом случае дадут:
L(3) = 0, E(1) = 1, E(2) = 2,
после чего мы должны принять L(1) = 1, что не является верным.

Рис. 3.8 Рис. 3.9

Замечание 6. Подчеркнем, что решить задачу о максимальном


пути для графов общего вида с помощью аналогичного алгоритма,
заменив в нем формально минимум на максимум, не представляется
возможным.
Например, для графа на рис. 3.9 с начальной вершиной 1 и конечной
вершиной 3 длина максимального пути 1 — 2 — 3 равна 101. Формально
проводимые расчеты дадут:
L(3) = 0, E(1) = 10, E(2) = 1,
после чего, следуя желаемой логике, мы должны принять значение L(1)
равным 10, что не является верным (здесь функция L есть длина
максимального пути к вершине 3).
Замечание 7. Рассмотренный алгоритм предписывает начинать
расчеты с конечной вершины и заканчивать начальной вершиной, т. е.
вести их в обратном порядке, что соответствует этапу условной опти-
мизации классического метода ДП; при этом построение кратчайшего
пути поводится от начальной вершины к конечной. Важно подчеркнуть,
что в теории графов можно изменить порядок расчетов и начинать их
с начальной вершины, заканчивать конечной вершиной, а сам крат-
чайший путь строить начиная с конечной вершины. Соответствующий
114 Глава 3. Динамическое программирование в теории графов

алгоритм был разработан в 1959 г. и называется алгоритмом Дийкс-


тры по имени выдающегося голландского теоретика и практика про-
граммирования второй половины XX в. Эдсгера В. Дийкстры (Edsger
W. Dijkstra). В алгоритме Дийкстры занятые вершины называются
обычно вершинами с постоянными метками, а пробные вершины —
вершинами с временными метками.

3.5. Задача о проектировании дороги


Условие задачи. Пункт Б (город, завод, порт, электростан-
ция и т. п.) расположен на 30 км севернее и на 40 км восточнее
пункта А. Между этими пунктами требуется проложить дорогу так,
чтобы стоимость ее строительства была минимальной.
Стоимость строительства дороги зависит от ряда факторов: ре-
льефа местности и характера грунта, удаленности места строительства
от карьера, асфальтового завода и т. п. Для расчета стоимости стро-
ительства были проведены специальные исследования на местности,
в результате которых на карте на север и на восток от пункта А была
построена условная сетка шагом 10 км, и была оценена стоимость
строительства 1 км дороги между каждыми двумя смежными узлами
сетки. Полученные данные приведены на рис. 3.10. Например, в со-
ответствии с приведенными данными стоимость строительства 1 км
дороги от точки, находящейся в 10 км восточнее и 20 км севернее
пункта А, составляет в северном направлении 23, а в восточном —
16 усл. ден. ед.
Для некоторого упрощения задачи и сокращения объема вычисле-
ний будем считать, что от каждого узла сетки направление строитель-
ства дороги может быть выбрано только по горизонтали и по вертикали,
что соответствует на местности направлениям сторон света (север, юг,
восток, запад). Будем также предполагать, что дорога не может прохо-
дить севернее или восточнее пункта Б и южнее или западнее пункта А.
Иными словами, дорога на карте должна располагаться в прямоуголь-
нике, для которого точки А и Б являются соответственно левой ниж-
ней и правой верхней вершинами. Такого типа ограничения могут
быть обусловлены прохождением административно-территориальных
границ, расположением закрытых военных полигонов, наличием рек,
озер, морей и других препятствующих строительству объектов.

Решение. Данная задача является примером общей задачи о крат-


чайшем пути, в которой роль длины пути играет стоимость строитель-
ства соответствующего участка дороги. Представленная на рис. 3.10
3.5. Задача о проектировании дороги 115

Рис. 3.10

схема является взвешенным графом специального вида. Каждая вер-


шина графа однозначно определяется парой координат, равных числу
шагов от начальной вершины, соответствующей пункту А, на восток
и на север к рассматриваемой вершине. Один шаг по схеме соответ-
ствует отрезку в 10 км на местности. Например, вершины, соответ-
ствующие пунктам А и Б, имеют координаты (0;0) и (4;3) (далее будем
коротко говорить «вершина (0;0)» и т. д.).
Решим задачу методом ДП, проводя запись на самом графе. В соот-
ветствии с этим определим функцию L(v) как длину кратчайшего пути
от вершины v до конечной вершины Б. Выполним детально первые
шаги алгоритма.

— Полагаем L(Б) = L(4; 3) = 0, записываем 0 на место вершины (4;3)


(см. рис. 3.11) и объявляем данную вершину занятой, а все осталь-
ные — свободными.
— Поскольку начальная вершина (0;0) не является занятой, то при-
ступаем к расчету оценок незанятых вершин. Для занятой вер-
шины (4;3) с уже известным значением функции L(v) смежными
116 Глава 3. Динамическое программирование в теории графов

Рис. 3.11

и незанятыми являются вершины (3;3) и (4;2), причем обе они


являются свободными, т. е. ни для одной из них оценки еще не рас-
считаны. Для вершины (3;3) имеется лишь одно ребро, идущее
в восточном направлении и инцидентное вершине (4;3). Стоимость
строительства всего участка дороги между этими смежными вер-
шинами равна произведению стоимости строительства 1 км до-
роги (23 усл. ден. ед.) на длину участка (10 км). По надлежащей
формуле вычисляем оценку

E(3; 3) = 23 · 10 + L(4; 3) = 230 + 0 = 230.

Ставим стрелку, идущую от (3;3) к (4;3). Аналогично, для вер-


шины (4;2) получаем:

E(4; 2) = 24 · 10 + L(4; 3) = 240 + 0 = 240.

— Из двух найденных оценок значение 230 является минимальным;


соответствующую вершину (3;3) объявляем занятой, полагаем

L(3; 3) = E(3; 3) = 230

и записываем это число на место вершины (3;3). (Проводя анало-


гию с классическим методом ДП, можно сказать, что для вер-
шины (3;3) восточное направление представляет собой значение
условно-оптимального управления.) Таким образом, значение функ-
ции L(v) вычислено уже для двух вершин.
— Начальная вершина (0;0) не стала занятой, поэтому продолжаем рас-
чет оценок. Занятыми являются вершины (3;3) и (4;3), а смежными
с ними — вершины (2;3), (3;2) и (4;2), причем первые две — свобод-
3.5. Задача о проектировании дороги 117

ные, а третья — пробная. Вычисляем оценки свободных вершин:


E(2; 3) = 29 · 10 + L(3; 3) = 290 + 230 = 520,
E(3; 2) = 15 · 10 + L(3; 3) = 150 + 230 = 380.
Ставим стрелки, идущие от этих вершин к (3;3). Для вершины (4;2)
имеющаяся оценка 240 не нуждается в корректировке, поскольку
с момента ее вычисления не появилось новых занятых вершин,
смежных с (4;2). Из трех имеющихся оценок значение 240 является
минимальным; соответствующую вершину (4;2) объявляем занятой,
полагаем L(4; 2) = E(4; 2) = 240 и записываем это число на место
вершины (4;2).
— Начальная вершина (0;0) еще не стала занятой, поэтому расчет оце-
нок продолжается. Занятыми являются вершины (3;3), (4;2) и (4;3),
а смежными с ними и незанятыми — вершины (2;3), (3;2) и (4;1), при-
чем первые две пробные, а третья — свободная. Вычисляем оценку
свободной вершины:
E(4; 1) = 22 · 10 + L(4; 2) = 220 + 240 = 460,
и ставим стрелку, идущую от (4;1) к (4;2). Рассмотрим пробные
вершины (2;3) и (3;3). Для вершины (2;3) имеющаяся оценка 520
не нуждается в корректировке, поскольку с момента ее вычисле-
ния не появилось новых занятых вершин, смежных с (2;3). Для
вершины (3;2) имеющаяся оценка 380 должна быть откорректиро-
вана, поскольку с момента ее вычисления появилась новая смежная
с (3;2) занятая вершина (4;2). Проводим корректировку, полагая
Ẽ(3; 2) = E(3; 2) = 380:
 
E(3; 2) = min Ẽ(3; 2), 19 · 10 + L(4; 2) = min {380, 430} = 380.
Значение оценки при корректировке не изменилось, так что установ-
ленная ранее стрелка у вершины (3;2) остается на прежнем месте.
Из трех имеющихся оценок значение 380 является минимальным;
соответствующую вершину (3;2) объявляем занятой, полагаем
L(3; 2) = E(3; 2) = 380
и записываем это число на место вершины (3;2).
— Начальная вершина (0;0) по-прежнему осталась незанятой, поэтому
расчеты продолжаем далее. Действуя по алгоритму, мы последова-
тельно вычислим значения функции L(v) во всех вершинах графа,
кроме вершины (0;3), на месте которой оставлена точка. Для этой
вершины оценка имеет значение 1230, что больше значения 1220
для начальной вершины А = (0; 0) (вершина (0;3) «не успела» стать
118 Глава 3. Динамическое программирование в теории графов

занятой — конечная вершина А стала занятой раньше). Расчет значе-


ния L(A) означает завершение этапа условной оптимизации реше-
ния задачи. Результаты расчетов полностью приведены на рис. 3.11.
Приступаем к этапу безусловной оптимизации, на котором и стро-
ится искомый кратчайший путь. Как видно из расчетов, оптимальное
значение задачи, равное минимальной стоимости строительства дороги,
составляет
L(A) = L(0; 0) = 1220 усл. ден. ед.
Конфигурация дороги минимальной стоимости строится начиная
с пункта А с учетом стрелок, расставленных в ходе расчетов. При
этом получается следующая цепочка вершин:
(0; 0)— (0; 1)— (1; 1)— (1; 2)— (2; 2)— (2; 1)— (3; 1)— (3; 2)— (3; 3)— (4; 3).
На этом решение задачи завершено. В формулировке ответа полу-
ченному результату надлежит дать содержательную трактовку в тер-
минах решаемой задачи.
Ответ: минимальная стоимость строительства дороги из пункта А
в пункт Б равна 1220 усл. ден. ед. Дорога минимальной стои-
мости должна состоять из прямолинейных отрезков, последова-
тельно соединяющих на местности точки с координатами (0;0)
(пункт А), (0;10), (10;10), (10;20), (20;20), (20;10), (30;10), (30;20),
(30;30), (40;30) км (пункт Б).
К постановке и решению данной задачи необходимо сделать ряд
следующих замечаний.
Замечание 1. Задачи, подобные рассмотренной, могут возникать
и в несколько ином контексте, например, при проектировании железно-
дорожных линий, линий электропередачи, газо-, нефте-, водопроводов
и других коммуникаций.
Замечание 2. Проанализируем полученное оптимальное решение.
Прежде всего отметим, что из вершины (3;0) выходят две стрелки; это
означает, что из данной вершины имеется два различных кратчайших
пути в конечную вершину Б:
(3; 0) — (4; 0) — (4; 1) — (4; 2) — (4; 3),
(3; 0) — (3; 1) — (3; 2) — (3; 3) — (4; 3)
стоимостью 590 усл. ден. ед. Если бы строящийся от вершины А крат-
чайший путь прошел через вершину (3;0), то существовало бы два
различных оптимальных решения задачи. Но кратчайший путь про-
шел мимо данной вершины, так что неоднозначности оптимального
решения в данной задаче не возникло.
3.5. Задача о проектировании дороги 119

Замечание 3. Рассмотрим некоторые числовые характеристики


полученного оптимального решения. Спроектированная дорога содер-
жит участок (2; 2) — (2; 1), имеющий «обратное» направление по отно-
шению к общему направлению строительства от А к Б. Вследствие
этого общая длина дороги составила 90 км вместо возможных 70 км
при проектировании без допущения обратных направлений. Однако
стоимость строительства этих более коротких дорог является более
высокой (за счет неравномерности распределения стоимостей стро-
ительства отдельных участков), что подтверждает известный факт:
короткая дорога не всегда является самой оптимальной.
Подчеркнем, что в спроектированной дороге минимальная стои-
мость строительства отрезка в 1 км равна 4 усл. ден. ед., а средняя
стоимость равна
1220 : 90 ≈ 13, 56 усл. ден. ед.,
в то время как в исходных данных задачи имеются участки стоимостью
1, 11, 12 и 13 усл. ден. ед., не вошедшие в проект. Тем самым еще раз
подтверждается, что метод ДП оптимизирует не отдельные участки,
а всю траекторию в целом.
Далее, средняя по всем ребрам графа стоимость строительства 1 км
дороги составляет около 21,16 усл. ден. ед. (это нетрудно установить
прямым подсчетом); поэтому оценка средней стоимости дороги длиной
70 км, проложенной без предварительной оптимизации, составит
21, 16 · 70 = 1481, 2 усл. ден. ед.,
что более чем на 20 % превышает полученную минимальную стои-
мость дороги длиной 90 км. (Конечно, при построении всевозможных
путей ребра, инцидентные вершинам А и Б, встречаются чаще, чем
ребра «внутри графа»; соответственно при строгом вычислении сред-
него значения стоимости дороги эти ребра необходимо учитывать с
большим весом. Точный расчет здесь достаточно сложен и не обязате-
лен, а приведенное значение 1481,2 является допустимым именно как
оценка среднего значения.)
Замечание 4. Естественным и логичным обобщением рассматри-
ваемой задачи является допущение строительства дороги не только
в направлении сторон света, но и в северо-восточном направлении.
Будем считать, что стоимость строительства 1 км дороги на северо-
восток равна полусумме стоимостей 1 км на север и на восток в том
же месте. Например, в соответствии с приведенными выше данными
стоимость строительства 1 км дороги от точки, находящейся в 10 км
восточнее и 20 км севернее пункта А, в северо-восточном направлении
120 Глава 3. Динамическое программирование в теории графов

составляет
16 + 23
= 19,5 усл. ден. ед.
2
При этом отрезок дороги между двумя √ соседними расположенными
по диагонали точками имеет длину 2 √ · 10 км; будем считать его
приближенно равным 14 км (поскольку 2 ≈ 1, 4142). Отметим, что
в новой постановке задачи множество допустимых вариантов строи-
тельства шире, чем в исходной постановке; в силу этого новая ми-
нимальная стоимость дороги должна получиться не выше значения
1220 усл. ден. ед., полученного для исходной задачи.
Задание. Провести решение рассматриваемой задачи в новой по-
становке методом ДП.

Рис. 3.12

Замечание 5. В более сложных ситуациях могут возникать и бо-


лее замысловатые конфигурации дорог минимальной стоимости. На-
пример, на рис. 3.12 показан минимальный путь из пункта А в пункт Б
длиной 11. Длины ребер, отмеченных стрелками, равны 1, длины
остальных ребер равны 8. На практике реализация такого типа опти-
мальных решений приводит к дорожному «серпантину», часто встре-
чающемуся в гористой местности.

3.6. Ориентированные графы и сети


Широкий класс задач из различных областей деятельности человека
приводит к изучению ориентированных графов. Граф называется ори-
ентированным графом (сокращенно орграфом), если на каждом
из его ребер введена ориентация, т. е. указано, какая из двух инцидент-
ных ребру вершин является началом, а какая — концом ребра. Ори-
ентированные ребра называются дугами. Обозначать дугу с началом
3.6. Ориентированные графы и сети 121

в вершине v и концом в вершине w будем через v → w или vw (подобно

вектору AB, имеющему начальную точку A и конечную точку B).
В отдельных случаях, когда нет необходимости конкретно указывать
образующие дугу вершины, дуги орграфа могут обозначаться одним
символом, например r. На схемах и чертежах дуги изображаются

прямыми или кривыми линиями со стрелками. Относительно дуги vw
говорят, что она исходит из вершины v и заходит в вершину w;
при этом вершина v предшествует вершине w, а вершина w следует
за вершиной v. Например, рис. 1.1 гл. 1, иллюстрирующий многоша-
говый процесс, представляет, по существу, ориентированный граф.
Как и для неориентированных графов, для орграфов в полной ана-
логии вводятся понятия маршрута, цепи и пути, называемых в данном
случае ориентированными, причем маршрут в орграфе проводится по
направлениям дуг. Точнее, маршрутом в орграфе называется после-
довательность вершин вида
v[0] → v[1] → . . . → v[k] ,
в которой каждая пара соседних вершин образует дугу, исходящую
из вершины с меньшим порядковым номером; образуемые дуги также
входят в маршрут. Как и выше, индексы в квадратных скобках
указывают порядковый номер вершины в маршруте. Аналог цикла
в орграфе называется контуром, аналог замкнутого пути — про-
стым контуром.
Проиллюстрируем введенные понятия на орграфе, изображенном
на рис. 3.13. В данном примере:
— дуга 4 → 2 исходит из вершины 4 и заходит в вершину 2;
— вершина 3 предшествует вершинам 4 и 5;
— вершина 2 следует за вершинами 1 и 4;

1 2 5

Рис. 3.13
122 Глава 3. Динамическое программирование в теории графов

— последовательность вершин 1 → 2 → 3 → 5 → 4 образует марш-


рут с началом в вершине 1 и концом в вершине 4; в соответствии
с принятым соглашением об обозначениях для данного маршрута
v[0] = 1, v[1] = 2, ..., v[4] = 4.
Данный маршрут является также путем, поскольку не содержит
повторяющихся вершин;
— маршрут 2 → 3 → 5 → 4 → 2 является простым контуром.
Как и неориентированным графам, орграфам могут быть постав-
лены в соответствие матрицы. Пусть G(V, R) — некоторый орграф, со-
держащий n вершин v1 , v2 , . . . , vn и m дуг r1 , r2 , . . . , rm . Матрицей
смежности орграфа G(V, R) называется квадратная матрица S по-
рядка n (по числу вершин), элементы sij которой определяются сле-
дующим образом:

1, если вершина vi предшествует вершине vj ;


sij =
0, если вершина vi не предшествует вершине vj .
Матрицей инцидентности орграфа G(V, R) называется мат-
рица Q размерности n × m, элементы qij которой определяются сле-
дующим образом:

⎨ 1, если вершина vi является началом дуги rj ;

qij = −1, если вершина vi является концом дуги rj ;


0, если вершина vi и дуга rj не инцидентны.
Например, для приведенного на рис. 3.13 орграфа, для которого
принято
v1 = 1, v2 = 2, ..., v5 = 5,
r1 = 1 → 2, r2 = 2 → 3, r3 = 3 → 4,
r4 = 3 → 5, r5 = 4 → 2, r6 = 5 → 4,
матрицы смежности и инцидентности имеют вид
⎡ ⎤ ⎡ ⎤
0 1 0 0 0 1 0 0 0 0 0
⎢ 0 0 1 0 0 ⎥ ⎢−1 1 0 0 −1 0 ⎥
⎢ ⎥ ⎢ ⎥
S=⎢ ⎢ 0 0 0 ⎥, Q = ⎢ 0 −1 1 1 0 0
1 1 ⎥ ⎢ ⎥.

⎣ 0 1 0 0 0 ⎦ ⎣ 0 0 −1 0 1 −1 ⎦
0 0 0 1 0 0 0 0 −1 0 1
Кроме того, орграфы могут быть заданы и списками смежности.
Отметим, что отдельные задачи приводят к рассмотрению ча-
стично ориентированных , или смешанных графов, у которых
3.6. Ориентированные графы и сети 123

ориентация введена не на всех ребрах, а на некотором их подмно-


жестве. Такого типа графы могут применяться, например, для изоб-
ражения схем движения транспорта по городу. При этом вершины
графа обозначают перекрестки улиц, неориентированные ребра пред-
ставляют кварталы с двусторонним движением, ориентированные —
кварталы с односторонним движением в указанном направлении.
Важным частным случаем орграфа является сеть, под которой
понимается связный ориентированный граф, не содержащий контуров.
(Подчеркнем, что связность графа определяется без учета возможной
ориентации ребер.) В каждой сети существуют вершины, не имеющие
предшествующих, и вершины, не имеющие последующих (в противном
случае в сети существовали бы контуры или должно было быть беско-
нечно много вершин, что невозможно). Вершины, не имеющие предше-
ствующих вершин, называются истоками, или входами сети. Вер-
шины, не имеющие последующих вершин, называются стоками, или
выходами сети. Например, на рис. 3.14 орграф G1 является сетью с ис-
током в вершине 1 и стоком в вершине 3, а орграф G2 сетью не является.

2 2

1 3 1 3

G1 G2
Рис. 3.14

Для выяснения, является ли связный орграф сетью (для орграфов,


имеющих сложную структуру или заданных в виде матриц, данный
вопрос не является очевидным), применяется алгоритм Фалкерсона.
С помощью этого алгоритма проводится разбиение множества всех
вершин орграфа на группы J1 , J2 , . . . , Jk , для которых выполняются
свойства:
— вершины из первой группы J1 не имеют предшествующих вер-
шин, а вершины из последней группы Jk — последующих;
— вершины из любой группы не имеют предшествующих вершин
в последующих группах;
— вершины из одной группы не являются смежными.
Разбиение вершин на группы с такими свойствами позволяет пред-
ставить орграф в более простой и удобной для работы форме.
124 Глава 3. Динамическое программирование в теории графов

Алгоритм Фалкерсона включает следующие пункты.


1. Начало работы алгоритма. Считаем все вершины орграфа неот-
меченными и полагаем номер формируемой группы равным 1.
2. Среди неотмеченных вершин выбираем все те, которые не имеют
предшествующих среди неотмеченных (для орграфов, являю-
щихся сетями, такие вершины обязательно существуют).
3. Выбранные вершины относим в формируемую группу и отмечаем.
4. Если в орграфе имеются неотмеченные вершины, то номер фор-
мируемой группы увеличиваем на 1 и переходим к п. 2 алго-
ритма. Если же все вершины орграфа уже отмечены, то разбиение
на группы завершено. Конец работы алгоритма.
Если орграф не является сетью, то на одном из шагов алгоритма
сформировать очередную группу не удастся. Работа алгоритма завер-
шается «досрочно» до окончания разбиения всех вершин на группы.
Рассмотрим алгоритм Фалкерсона на примере графа, изображен-
ного на рис. 3.15. Результат работы алгоритма зависит от ориентации
ребра 3 — 5. Если это ребро ориентировано в направлении 3 → 5, то
применение алгоритма позволит сформировать следующие группы:
J1 = {1, 2}, J2 = {3}, J3 = {4}, J4 = {5, 6}, J5 = {7};
отметим, что входы сети 1 и 2 вошли в одну группу J1 , а выходы
сети 6 и 7 — в разные группы.
Если же изменить ориентацию ребра 3 — 5 на противоположную, т. е.
рассмотреть дугу 5 → 3, то алгоритм завершит работу «досрочно»:
после формирования первой группы J1 = {1, 2} окажется невозмож-
ным сформировать следующую группу, поскольку у всех неотмеченных
на данный момент вершин 3, 4, 5, 6, 7 имеются неотмеченные пред-
шествующие. Орграф не является сетью, так как содержит контур
3 → 4 → 5 → 3.

Рис. 3.15
3.7. Задача о кратчайшем пути на ориентированных графах 125

3.7. Задача о кратчайшем пути


на ориентированных графах
Постановка и методы решения задачи о кратчайшем пути на оргра-
фах полностью аналогичны ситуации для неориентированных графов.
Пусть G(V, R) — ориентированный граф. Будем считать, что каждой
дуге r орграфа поставлено в соответствие некоторое неотрицательное
число d( r)  0, называемое длиной или весом дуги. Пусть последова-
тельность дуг r1 , r2 , . . . , rk образует путь. Длиной пути r1 , r2 , . . . , rk
называется сумма
d( r1 ) + d( r2 ) + . . . + d( rk )
длин всех дуг, образующих данный путь. Задача о кратчайшем пути
состоит в поиске пути минимальной длины, соединяющего заданные
начальную и конечную вершины орграфа.
Задача о кратчайшем пути на орграфах может иметь единствен-
ное решение, несколько различных решений или не иметь решений
вообще; при этом под решением задачи понимается сам кратчайший
путь и его длина. Конечно, длина кратчайшего пути при условии
его существования определяется однозначно. Отметим, что наличие
ориентации очевидным образом уменьшает число рассматриваемых
вариантов путей и снижает трудоемкость решения задачи.
Решение задачи о кратчайшем пути на орграфах может быть про-
ведено следующими методами, аналогичными рассмотренным выше
методам решения задачи для неориентированных графов:
1) методом перечисления путей;
2) методом ДП на графе;
3) с помощью алгоритма Дийкстры, упоминавшегося выше по тек-
сту и представляющего, по существу, один из вариантов ме-
тода ДП.
Рассмотрим указанные методы решения на примере орграфа, изоб-
раженного на рис. 3.16, в котором начальной является вершина 5, ко-
нечной — вершина 3. (На данном рисунке уже приведены результаты
расчетов по методу ДП.)
1. Рассмотрим метод перечисления путей. В рассматриваемом при-
мере вершины орграфа естественно упорядочить по их номерам. Как
и для неориентированных графов, на каждом шаге алгоритма решения
задачи имеется некоторый построенный текущий путь
vнач = v[0] → v[1] → . . . → v[k]
из начальной вершины vнач в текущую вершину v[k] орграфа и ин-
декс p, определяющий минимальный номер подлежащих рассмотрению
126 Глава 3. Динамическое программирование в теории графов

Рис. 3.16

вершин на данном шаге алгоритма. Отличие от случая неориентирован-


ных графов заключается лишь в операции удлинения: для удлинения
текущего пути просматриваются не просто все вершины графа, смеж-
ные с конечной вершиной v[k] текущего пути, а только следующие за
ней вершины с учетом ориентации дуг. Проведение решения задачи
данным методом не представляет сложностей. Результаты расчетов
могут быть представлены в виде следующей таблицы:

Текущий путь Длина пути


5→2 –
5→3 20
5→4→1→3 17
5→4→1 –
5→4 –
5→7→4→1→3 16
5→7→4→1 –
5→7→4 –
5→7→6→4→1→3 15
5→7→6→4→1 –
5→7→6→4 –
5→7→6 –
5→7 –
5 –
3.7. Задача о кратчайшем пути на ориентированных графах 127

Данная таблица составлена по тем же правилам, что и соответ-


ствующая таблица для неориентированных графов. Из нее видно, что
кратчайшим путем от вершины 5 к вершине 3 является путь
5 → 7 → 6 → 4 → 1 → 3,
а его длина равна 15.
2. Рассмотрим метод ДП решения поставленной задачи. Отличие
его от метода решения задачи для неориентированных графов заклю-
чается лишь в том, что при расчете оценок рассматриваются неза-
нятые вершины, не просто смежные с занятыми, а предшествующие
им с учетом ориентации дуг. Проведем решение задачи о кратчайшем
пути для заданного на рис. 3.16 орграфа методом ДП, ведя запись
на самом графе. Напомним, что через L(v) обозначается длина крат-
чайшего пути из вершины v в конечную вершину, а через E(v) —
оценка длины кратчайшего пути (см. разд. 3.4).
— Полагаем L(3) = 0, ставим 0 около вершины 3 и объявляем
данную вершину занятой, а все остальные — свободными.
— Поскольку начальная вершина 5 не является занятой, то при-
ступаем к расчету оценок незанятых вершин. Для занятой вер-
шины 3 предшествующими являются вершины 1 и 5, причем обе
они свободны. Вычисляем оценки для этих вершин:
E(1) = d(1 → 3) + L(3) = 5 + 0 = 5,
E(5) = d(5 → 3) + L(3) = 20 + 0 = 20.
Полученные значения записываем на графе около вершин 1
и 5, которые переходят в группу пробных вершин. Отмечаем
(например, короткими стрелками) дуги 1 → 3 и 5 → 3. Из
двух пробных вершин 1 и 5 значение оценки для вершины 1
минимально и равно 5. Полагаем
L(1) = E(1) = 5,
отмечаем жирным шрифтом данное значение на графе и объ-
являем вершину 1 занятой.
— Начальная вершина 5 не является занятой, поэтому продол-
жаем расчет оценок. Занятыми в настоящий момент являются
вершины 1 и 3, а предшествующими им незанятыми служат
вершины 4 и 5. При этом вершина 5 имеет оценку, исходящая
дуга 5 → 3 уже учтена выше и не требует повторного рас-
смотрения. Вершина 4 является свободной, а дуга 4 → 1 еще
128 Глава 3. Динамическое программирование в теории графов

не рассматривалась. Вычисляем оценку для этой вершины:


E(4) = d(4 → 1) + L(1) = 4 + 5 = 9.
Полученное значение записываем на графе около вершины 4.
Из двух пробных вершин 4 и 5 минимальное значение 9 оценка
принимает для вершины 4. Полагаем
L(4) = E(4) = 9,
отмечаем жирным шрифтом данное значение на графе и объ-
являем вершину 4 занятой. Отмечать стрелкой дугу 4 → 1 нет
необходимости, поскольку из вершины 4 исходит только одна
эта дуга, и неоднозначности возникнуть не может.
— Начальная вершина 5 еще не стала занятой, поэтому продол-
жаем расчет оценок. Занятыми в настоящий момент являются
вершины 1, 3, 4, предшествующими им незанятыми служат вер-
шины 5, 6, 7, причем вершины 6 и 7 свободны. Вычисляем оценки
для этих вершин:
E(6) = d(6 → 4) + L(4) = 1 + 9 = 10,
E(7) = d(7 → 4) + L(4) = 4 + 9 = 13,
записываем полученные значения на графе и переводим их
в число пробных вершин. Отмечаем стрелкой дугу 7 → 4 (от-
мечать дугу 6 → 4 нет необходимости, поскольку из вершины 6
исходит только одна эта дуга). Для вершины 5 уже известна
оценка E(5) = 20, рассчитанная ранее; сейчас эту оценку необ-
ходимо откорректировать, поскольку с момента ее вычисления
появилась новая занятая вершина 4, следующая за 5. Вычисляем
m = d(5 → 4) + L(4) = 8 + 9 = 17.
Поскольку m < E(5), то полагаем E(5) = 17, и ранее установлен-
ную на дуге 5 → 3 стрелку переносим на дугу 5 → 4. Полученные
значения оценок записываем на графе около соответствующих
вершин. Из пробных вершин 5, 6, 7 минимальное значение 10
оценка принимает для вершины 6. Полагаем
L(6) = E(6) = 10,
отмечаем жирным шрифтом данное значение на графе и объ-
являем вершину 6 занятой.
— Начальная вершина 5 по прежнему не стала занятой. Занятыми
являются вершины 1, 3, 4, 6, предшествующими им незаня-
тыми — вершины 5 и 7. Исходящие из 5 дуги уже учтены ранее.
3.7. Задача о кратчайшем пути на ориентированных графах 129

Вершина 7 имеет оценку E(7) = 13, причем дуга 7 → 6 еще


не рассматривалась. Корректируем оценку, вычисляя
m = d(7 → 6) + L(6) = 12.
В ходе корректировки оценка уменьшается, поэтому полагаем
E(7) = 12, ранее установленная на дуге 7 → 4 стрелка перено-
сится на дугу 7 → 6. Полученные значения оценки записываем
на графе. Из пробных вершин 5 и 7 минимальное значение 12
оценка принимает для вершины 7. Полагаем
L(7) = E(7) = 12,
отмечаем жирным шрифтом данное значение на графе и объ-
являем вершину 7 занятой.
— Начальная вершина 5 все еще не стала занятой, но имеет новую
последующую занятую вершину 7. Корректируем оценку:
m = d(5 → 7) + L(7) = 15.
Поскольку m < E(5) = 17, то полагаем E(5) = 15, и ранее
установленную на дуге 5 → 4 стрелку переносим на дугу 5 → 7.
Полученное значение оценки записываем на графе. В настоящий
момент имеет оценку только вершина 5, а вершина 2 является
свободной. Полагаем
L(5) = E(5) = 15,
отмечаем жирным шрифтом данное значение на графе и объ-
являем вершину 5 занятой.
— Начальная вершина 5 стала занятой, причем L(5) = 15; следова-
тельно, длина кратчайшего пути из 5 в 3 равна 15. Отметим, что
в ходе расчетов вершина 2 осталась свободной, поскольку она
не имеет последующих вершин и не может «получить оценки»;
очевидно, что в силу отсутствия исходящих из 2 дуг не суще-
ствует ни одного пути из 5 в 3, проходящего через вершину 2.
Все проведенные выше расчеты составили этап, аналогичный
этапу условной оптимизации классического метода ДП.
Построение кратчайшего пути представляет собой аналог этапа
безусловной оптимизации. Кратчайший путь строится начиная с вер-
шины 5 с использованием установленных на дугах стрелок, оконча-
тельное распределение которых представлено на рис. 3.16. На дугах
6 → 4 и 4 → 1 стрелок не установлено, но у вершин 6 и 4 имеется
только по одной исходящей дуге, и направление движения в данном
130 Глава 3. Динамическое программирование в теории графов

случае определяется однозначно. Таким образом, кратчайший путь


составляется из дуг 5 → 7, 7 → 6, 6 → 4, 4 → 1, 1 → 3, т. е. имеет вид
5 → 7 → 6 → 4 → 1 → 3.
Полученный результат, конечно, совпадает с результатом, полученным
выше методом перечисления путей.
3. Алгоритм Дийкстры, как уже отмечалось выше для случая
неориентированных графов, представляет собой один из вариантов
метода ДП, предписывающий начинать расчет длин кратчайших пу-
тейс начальной вершины, а построение самого кратчайшего пути на-
чинать с конечной вершины. Таким образом, порядок расчетов в ал-
горитме Дийкстры «симметричен» по отношению к рассмотренному
нами методу ДП. Детальное рассмотрение алгоритма Дийкстры пред-
лагается читателям провести самостоятельно.
Замечание. В отдельных случаях решение рассматриваемой за-
дачи методом ДП удобно проводить с использованием таблицы сле-
дующей структуры.

Вершина Последующая Длина дуги Оценка Значение


орграфа v вершина w d(v → w) d(v → w) + L(w) L(v)
... ... ... ... ...

В первом столбце v таблицы записываются все вершины орграфа;


порядок записи может быть произвольный, но лучше упорядочивать
вершины в соответствии с их обозначениями по номерам или по алфа-
виту. Для каждой вершины организуется свой строчный фрагмент. Во
втором столбце w для каждой из вершин записываются все последую-
щие вершины. Если таких нет, то это отмечается прочерком «— ». По
существу, первые два столбца полностью задают структуру орграфа.
В третьем столбце d(v → w) записываются длины дуг от вершин, ука-
занных в первом столбце, к последующим вершинам, указанным во
втором столбце. Таким образом, первые три столбца содержат все ис-
ходные данные задачи. Заполнение первых трех столбцов представляет
собой аналог предварительного этапа классического метода ДП.
Последующие два столбца отделяются от первых трех двойной вер-
тикальной линией и уже непосредственно связаны с решением задачи.
В четвертый столбец заносятся оценки E(v) = d(v → w)+ L(w), вычис-
ляемые при условии, что значение функции L(w) уже известно для вер-
шины w. В последний пятый столбец заносятся значения функции L(v),
равные минимальному значению из соответствующих оценок. Строки,
3.7. Задача о кратчайшем пути на ориентированных графах 131

на которых достигается минимальное значение, отмечаются знаком «»


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

v w d(v → w) d(v → w) + L(w) L(v)


1 3 5 5+0=5 [1] 5 [2]
5 6
2 — — — —
3 2 9 0 [1]
4 1 4 4+5=9 [3] 9 [3]
5 2 10 15 [6]
3 20 20 + 0 = 20 [2]
4 8 8 + 9 = 17 [4]
7 3 3 + 12 = 15 [8]
6 4 1 1 + 9 = 10 [5] 10 [4]
7 2 7 12 [5]
4 4 4 + 9 = 13 [6]
6 2 2 + 10 = 12 [7]

Первые три столбца заполняются в соответствии с заданной струк-


турой орграфа. Заполнение правой части таблицы начинается с за-
писи 0 в пятый столбец для конечной вершины 3. Далее расчет и за-
полнение таблицы проводятся по описанным выше правилам, причем
вычисления могут идти не по порядку строк, а вразброс. Для контроля
логики решения и последовательности расчетов в приведенной таблице
в квадратных скобках «[ ]» указаны порядковые номера вычисления
оценок и значений функции L(v).
После завершения заполнения таблицы строится решение задачи
с использованием установленных отметок. Длина кратчайшего пути
является значением функции L для начальной вершины 5 и равна 15.
Кратчайший путь строится следующим образом. Рассматриваем строч-
ный фрагмент, отвечающий начальной вершине 5. В этом фрагменте
знак «» указывает на вершину 7. Следовательно, искомый путь со-
держит дугу 5 → 7. Далее, рассматриваем строчный фрагмент, отвеча-
ющий вершине 7. В этом фрагменте знак «» указывает на вершину 6.
132 Глава 3. Динамическое программирование в теории графов

Следовательно, искомый путь содержит дугу 7 → 6. Продолжая ана-


логично, получим весь кратчайший путь
5 → 7 → 6 → 4 → 1 → 3.
Построение кратчайшего пути, как уже отмечалось выше, представляет
собой аналог этапа безусловной оптимизации классического метода ДП.
Отметим, что алгоритм Дийкстры также может быть реализован
с помощью таблицы надлежащей структуры.

3.8. Динамическое программирование


на ориентированных графах
Как было показано в предыдущем разделе, общий метод ДП решения
задачи о кратчайшем пути для неориентированных графов с незна-
чительными видоизменениями может быть применен и для решения
данной задачи на орграфах, причем наличие ориентации ребер со-
кращает число рассматриваемых вариантов при расчете оценок E(v).
В настоящем разделе мы покажем, что наличие ориентации графа
позволяет в ряде случаев упростить общий метод ДП и при расче-
тах обойтись вообще без использования промежуточных оценок E(v).
Кроме того, как мы увидим ниже в разд. 3.10, ориентация позволяет
распространить метод ДП и на задачу о максимальном пути, чем до-
стичь более полного согласия с классическим методом ДП оптимизации
многошаговых процессов, рассмотренным в гл. 1.
Изложим метод ДП решения задачи о кратчайшем пути для ориен-
тированных графов. Для этого введем следующие обозначения. Пусть
v ∈ V — некоторая вершина орграфа G(V, R). Обозначим через V+ (v)
множество вершин, следующих за вершиной v, а через V− (v) — мно-
жество вершин, предшествующих вершине v:
V+ (v) = {w ∈ V | существует дуга v → w},
V− (v) = {u ∈ V | существует дуга u → v}.

Структура множеств V+ (v) и V− (v) может быть проиллюстриро-


вана рис. 3.17. В соответствии с принятыми обозначениями все исхо-
дящие из вершины v дуги заходят в вершины множества V+ (v), а все
заходящие в вершину v дуги исходят из вершин множества V− (v).
На данном рисунке для упрощения все дуги направлены слева на-
право; при этом множество V− (v) располагается слева, а множество
V+ (v) — справа от вершины v. Конечно, в реальных орграфах такое
упрощенное расположение вершин может нарушаться, но общие опре-
деления остаются справедливыми.
3.8. Динамическое программирование на ориентированных графах 133

u1 w1

w2
u2
w3
v
u3
w4

V− (v) V+ (v)

Рис. 3.17

Как и выше, будем обозначать через L(v) длину кратчайшего пути


из вершины v в конечную вершину vкон . Значение функции L(v), не
известное еще для некоторой вершины v ∈ V , может быть непосред-
ственно вычислено в том случае, когда значения L(w) уже определены
для всех w ∈ V+ (v). При этом имеет место следующая основная рас-
четная формула:
 
L(v) = min d(v → w) + L(w) . (1)
w∈V+ (v)

В данной формуле — как и диктует логика метода ДП — выделя-


ется первый шаг от текущей вершины v к конечной вершине vкон ,
проводимый по дуге v → w; при этом длины L(w) кратчайших пу-
тей от последующих вершин w ∈ V+ (v) являются уже известными.
Расчеты начинаются с конечной вершины и соответствующего усло-
вия L(vкон ) = 0, а L(vнач ) равно длине искомого кратчайшего пути
и подлежит определению.
Приведенная формула выражает полный аналог классического
принципа оптимальности, а ее структура близка к структуре основного
функционального уравнения (∗) Р. Беллмана. Функция L(v) является
аналогом семейства функций Bi (xi ) в принципе оптимальности Р. Белл-
мана, а роль управления играет выбор дуги, исходящей из вершины v.
На данной формуле и основывается метод ДП решения задачи о крат-
чайшем пути на орграфах.
Необходимо особо отметить, что приведенная основная расчетная
формула (1) может быть непосредственно применена для решения по-
ставленной задачи только в весьма частных случаях, например, когда
орграф является сетью с единственным стоком, совпадающим с ко-
134 Глава 3. Динамическое программирование в теории графов

1 2

Рис. 3.18

нечной вершиной пути (соответствующий пример представляет собой


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

Очевидно, что данный орграф является сетью с одним истоком и двумя


стоками — вершинами 2 и 3. Искомый кратчайший путь в данной за-
даче определяется однозначно и имеет вид 1 → 2 независимо от длин
дуг орграфа. При этом для вычисления L(1) в соответствии с пред-
лагаемой формулой необходимо знать не только значение L(2) = 0, но
и значение L(3), вычислить которое мы никак не можем, поскольку
вершина 3, принадлежащая V+ (1), не содержит последующих.
Следовательно, для рассмотрения более общих ситуаций в пред-
лагаемый метод расчета необходимо внести определенные уточнения.
Именно, в ходе вычисления функции L(v) следует исключать из рас-
смотрения те «лишние» дуги, через которые заведомо не может
проходить кратчайший путь из начальной вершины в конечную. Эти
дуги можно отмечать знаком «×» на самом графе или в таблице.
С учетом данного замечания в рассматриваемом орграфе дугу 1 → 3
можно исключить из рассмотрения по той причине, что ее конечная
вершина 3 не имеет последующих вершин и, следовательно, ни один
путь из 1 в 2 не может проходить через 3. Соответственно, по основной
формуле (1) получаем
L(1) = d(1 → 2) + L(2) = d(1 → 2),

т. е. длина кратчайшего пути равна длине дуги 1 → 2, что уже уста-


новлено выше.
3.8. Динамическое программирование на ориентированных графах 135

Как видно из рассмотренного примера, исключение из рассмот-


рения отдельных дуг приводит к «сужению» множества V+ (v), по
которому вычисляется минимум в общей формуле (1). В отдельных
случаях может оказаться, что для начальной вершины vнач исклю-
чены из рассмотрения все исходящие дуги, т. е. множество V+ (vнач )
«сужено» до пустого множества. Это означает, что задача решения
не имеет. Так будет, например, если из рассмотренного только что
орграфа удалить дугу 1 → 2.
Таким образом, решение задачи о кратчайшем пути на орграфах
методом ДП сводится к двум основным действиям:
1) исключению «лишних» дуг;
2) применению основной расчетной формулы (1).
Подобный метод применим к решению задачи на произвольных
сетях и для некоторых орграфов, не являющихся сетями.
Для примера обратимся еще раз к решению задачи о кратчайшем
пути для орграфа, представленного на рис. 3.16, где
vнач = 5, vкон = 3.
Очевидно, что этот орграф не является сетью, поскольку содержит
контур
1 → 5 → 4 → 1.
Решение проведем по только что изложенному варианту метода ДП
для орграфов. Полагая
L(3) = 0,
немедленно получим, что непосредственное применение основной рас-
четной формулы не позволяет вычислить значение функции L(v) ни
для одной вершины орграфа. Следовательно, необходимо по возмож-
ности исключить «лишние» дуги. Действительно, из графа можно
удалить все входящие в вершину 2 дуги 3 → 2, 5 → 2, 7 → 2, по-
скольку 2 не имеет исходящих дуг и не может лежать на пути, идущем
к конечной вершине 3. Более того, дугу 1 → 5, входящую в началь-
ную вершину 5, также можно исключить из рассмотрения, поскольку
маршрут вида
vнач = 5 → . . . → 1 → 5 → . . .
содержит повторяющуюся вершину 5 и путем не является. После
исключения указанных дуг можно провести следующую цепочку рас-
четов:
L(1) = d(1 → 3) + L(3) = 5 + 0 = 5,
L(4) = d(4 → 1) + L(1) = 4 + 5 = 9,
L(6) = d(6 → 4) + L(4) = 1 + 9 = 10,
136 Глава 3. Динамическое программирование в теории графов

отмечая соответственно дуги 1 → 3, 4 → 1 и 6 → 4. Далее приходится


выбирать из нескольких вариантов:
 
L(7) = min d(7 → 4) + L(4); d(7 → 6) + L(6) =
= min {4 + 9; 2 + 10} = min {13; 12} = 12,
 
L(5) = min d(5 → 3) + L(3); d(5 → 4) + L(4); d(5 → 7) + L(7) =
= min {20 + 0; 8 + 9; 3 + 12} = min {20; 17; 15} = 15;

отмечаем при этом дуги 7 → 6 и 5 → 7, на которых достигаются


минимумы. Таким образом, длина кратчайшего пути из 5 в 3 равна 15.
Сам кратчайший путь имеет вид
5→7→6→4→1→3

и строится с использованием установленных отметок в полной анало-


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

Замечание 1. Решение данной задачи может быть оформлено


и без проведения записи на графе с использованием соответствую-
щей таблицы из разд. 3.7.

Замечание 2. Важно отметить, что существуют орграфы весьма


простой структуры, не являющиеся сетями, для которых рассмот-
ренный метод не приводит к решению задачи. В качестве примера
рассмотрим орграф, представленный на рис. 3.19, в котором vнач = A,

4
8 3
7
A D E

1
2 10

Рис. 3.19
3.9. Задача об управлении самолетом 137

vкон = E. Искомый кратчайший путь имеет вид


A → C → D → B → E,
а длина его равна 10. Применяя рассмотренный вариант метода ДП и
полагая L(E) = 0, получим, что каждая из оставшихся вершин имеет
хотя бы одну последующую вершину, для которой значение функции L
еще не известно. При этом анализ структуры орграфа не позволяет
исключить ни одной дуги: через каждую из них может проходить путь
из A в E. В данной ситуации можно поступить следующим образом:
1) применить общий метод ДП решения задачи с расчетом вспомо-
гательных оценок (подобный случай детально рассмотрен выше
в разд. 3.7);
2) провести более детальный анализ орграфа, учитывая не только
его структуру, но и значения длин дуг (пример подобного ана-
лиза будет приведен далее в разд. 3.10 при рассмотрении задачи
о максимальном пути).
Замечание 3. В рассмотренном варианте метода ДП расчеты
функции L(v) ведутся, как и в классическом случае, в обратном по-
рядке от конечной вершины к начальной. В то же время данный ме-
тод легко переформулировать таким образом, чтобы расчеты велись
от начальной вершины к конечной; для некоторых задач такой способ
представляется более естественным. В этом случае соответствующая
расчетная формула может быть записана в виде
 
L′ (v) = min L′ (u) + d(u → v) ,
u∈V− (v)

где через L′ (v) обозначена длина кратчайшего пути из начальной


вершины vнач в вершину v, а значения L′ (u) считаются известными
для всех u ∈ V− (v). При этом L′ (vнач ) = 0, а L′ (vкон ) равно длине
искомого кратчайшего пути и подлежит определению. Конечно, воз-
можность применения данной формулы для произвольных сетей может
быть сопряжена с необходимостью исключения «лишних» дуг, как и в
рассмотренных выше примерах.

3.9. Задача об управлении самолетом


Условие задачи. Самолет, имеющий скорость V0 и находящийся
на высоте H0 , должен увеличить скорость и высоту полета до значений
V1 > V0 и H1 > H0 . Требуется найти такое оптимальное управление
самолетом, позволяющее выполнить заданный маневр с минимальными
затратами топлива.
138 Глава 3. Динамическое программирование в теории графов

H1

H0

V0 V1

Рис. 3.20

Данные о затратах топлива на выполнение самолетом элементар-


ных операций по увеличению скорости на постоянной высоте и по
набору высоты при постоянной скорости получены при проведении
летных испытаний и представлены в виде схемы на рис. 3.20, в кото-
рой для определенности интервал изменения скорости (V0 , V1 ) разбит
на три равных шага, а интервал изменения высоты (H0 , H1 ) — на пять
равных шагов.
На данной схеме точками представлены характерные значения ско-
рости и высоты, для которых проведены замеры на испытаниях; эти
точки являются вершинами графа, интерпретирующего поставленную
задачу. Числа между вершинами графа указывают затраты топлива
в усл. ед. на выполнение операций по увеличению скорости или набору
высоты. Считается, что при выполнении заданного маневра самолету
не разрешается снижать скорость и высоту полета (иными словами, из-
3.9. Задача об управлении самолетом 139

менение параметров полета должно проводиться на схеме по стрелкам,


направленным вправо при ускорении или вверх при подъеме); данное
предположение естественным образом вводит ориентацию на графе.

Решение. Данная задача является примером общей задачи о крат-


чайшем пути на орграфе, в которой роль длины пути играют затраты
топлива на выполнение соответствующего маневра. Представленная
в условии задачи схема является взвешенным орграфом специаль-
ного вида. Каждая вершина данного орграфа однозначно определя-
ется парой координат, равных числу шагов от вершины, отвечающей
начальным значениям (V0 , H0 ), по осям скорости V и высоты H к рас-
сматриваемой вершине. Например, вершина, отвечающая начальным
значениям (V0 , H0 ), имеет координаты (0;0), а вершина, отвечающая
конечным значениям (V1 , H1 ), имеет координаты (3;5). Шаг по скорости
составляет V − V0
∆V = 1 ,
3
шаг по высоте H1 − H0
∆H = .
5
Решим задачу, проводя запись на самом графе. В соответствии
с методом ДП определим функцию L(v) как длину кратчайшего пути
от вершины v до конечной вершины с координатами (3;5); при этом
L(3; 5) = 0. Установим, для каких вершин может быть вычислено зна-
чение функции L(v) в настоящий момент; у этих вершин все исходящие
дуги должны заходить в вершину (3;5). Очевидно, что такими вер-
шинами являются две вершины орграфа, имеющие координаты (2;5)
и (3;4). Для вершины с координатами (2;5) единственная исходящая
дуга соответствует увеличению скорости и заходит в конечную вер-
шину. По основной расчетной формуле (1) метода ДП получаем:
L(2; 5) = 29 + L(3; 5) = 29 + 0 = 29.
Аналогичным образом, для вершины с координатами (3;4) един-
ственная исходящая дуга соответствует набору высоты и заходит в ко-
нечную вершину; соответственно
L(3; 4) = 48 + L(3; 5) = 48 + 0 = 48.
Таким образом, значение функции L(v) вычислено уже для трех вер-
шин.
Продолжим расчеты далее и установим, для каких вершин мо-
гут быть вычислены значения функции L(v) в настоящий момент.
Этими вершинами являются три вершины орграфа, имеющие коор-
динаты (1;5), (2;4) и (3;3), лежащие на одной «диагонали». При этом
140 Глава 3. Динамическое программирование в теории графов

для вершин (1;5) и (3;3) имеется лишь по одной исходящей дуге, за-
ходящей в вершину с уже известным значением функции L(v). По
основной формуле метода ДП для этих вершин
L(1; 5) = 28 + L(2; 5) = 28 + 29 = 57,
L(3; 3) = 46 + L(3; 4) = 46 + 48 = 94.
Для вершины (2;4) имеются две дуги, соответствующие увеличению
скорости и набору высоты и заходящие в вершины с уже известными
значениями функции L(v); соответственно
 
L(2; 4) = min 27 + L(3; 4); 47 + L(2; 5) = min {27 + 48; 47 + 29} = 75.
Найденный минимум достигается при управлении, отвечающем уве-
личению скорости самолета; данный факт будем отмечать двойной
дугой на орграфе, см. рис. 3.21. Проводя аналогию с классическим
методом ДП, можно сказать, что для вершины (2;4) увеличение ско-
рости представляет собой условно-оптимальное управление, т. е. первый
шаг условно-оптимальной траектории, начинающейся из вершины (2;4),
имеет вид (2; 4) → (3; 4).
Поступая аналогичным образом, мы последовательно вычислим зна-
чения функции L(v) во всех вершинах орграфа; при этом расчеты
ведутся, переходя от указанной выше «диагонали» к следующим ни-
жестоящим. Последней вершиной, в которой будет вычислено значе-
ние функции L(v), является начальная вершина с координатами (0;0).
Для нее
 
L(0; 0) = min 16 + L(1; 0); 31 + L(0; 1) =
= min {16 + 245; 31 + 229} = 260,
причем минимум достигается при управлении, отвечающем набору
высоты. Как обычно, данный факт отмечаем двойной дугой на ор-
графе. Таким образом, для начальной вершины (0;0) набор высоты
представляет собой условно-оптимальное управление, а первый шаг
оптимальной траектории имеет вид (0; 0) → (0; 1).
Вычисление значения функции L(v) для начальной вершины озна-
чает завершение этапа условной оптимизации решения задачи. Ре-
зультаты расчетов приведены на рис. 3.21 жирным шрифтом на месте
соответствующих вершин. Отметим, что для вершины (0;3) имеется
две двойные дуги, что означает наличие двух различных условно-
оптимальных траекторий из этой вершины в конечную.
Приступаем к этапу безусловной оптимизации. Как видно из расче-
тов, оптимальное значение задачи, т. е. минимальные затраты топлива
на выполнение маневра, составляют 260 усл. ед. Оптимальное управ-
3.9. Задача об управлении самолетом 141

H0

H1

V0 V1
Рис. 3.21

ление строится начиная с вершины (0;0) с использованием двойных


дуг орграфа. При этом получаем последовательность вершин:
(0; 0) → (0; 1) → (1; 1) → (1; 2) → (1; 3) → (2; 3) → (2; 4) → (3; 4) → (3; 5).
Решение задачи завершено. Полученный кратчайший путь, без-
условно, имеет содержательную трактовку в терминах рассматривае-
мой задачи.
Ответ: минимальные затраты топлива на выполнение заданного
маневра составляют 260 усл. ед. Оптимальное управление самолетом
состоит в следующем:
— подъем до высоты H0 + ∆H;
— увеличение скорости до величины V0 + ∆V ;
— подъем до высоты H0 + 3∆H;
— увеличение скорости до величины V0 + 2∆V ;
— подъем до высоты H0 + 4∆H;
— увеличение скорости до величины V0 + 3∆V = V1 ;
— подъем до высоты H0 + 5∆H = H1 .
К постановке и решению данной задачи необходимо сделать ряд
следующих замечаний.
Замечание 1. Иная подобная постановка задачи об управлении
самолетом требует увеличить скорость и высоту полета таким обра-
зом, чтобы минимизировать не затраты топлива, а время выполнения
заданного маневра. Решается такая задача полностью аналогично рас-
смотренной.
142 Глава 3. Динамическое программирование в теории графов

Замечание 2. Отметим, что по завершению решения задачи функ-


ция L(v) оказывается вычислена для всех вершин орграфа. Иными
словами, минимальные затраты топлива на ускорение до скорости V1
и подъем до высоты H1 найдены не только для начальных значе-
ний V0 и H0 , но и для всех промежуточных значений, соответству-
ющих вершинам орграфа. Тем самым мы решили не одну, а целый
класс подобных задач, в котором исходная задача имеет самую высо-
кую размерность. Такая особенность решения является характерным
свойством метода ДП.
Замечание 3. Теоретически данную задачу можно было решить
и методом перечисления путей. Проведем сопоставление трудоемко-
сти расчетов данным методом и методом ДП. Сделаем это в общем
виде, считая, что схема содержит m шагов по горизонтали и n шагов
по вертикали. Обозначим через P (m, n) и P ∗ (m, n) число операций
сложения, которые необходимо выполнить для решения задачи соот-
ветственно методом перечисления путей и методом ДП, и вычислим
эти функции.
Начнем с функции P ∗ (m, n). Как показывает проведенное решение,
для вычисления значений функции L(v) в «самых правых» и «самых
верхних» вершинах за исключением конечной (таких вершин всего
m+n) пришлось выполнить по одной операции сложения, а в остальных
вершинах (таких вершин всего m·n) — по две операции. Таким образом,
справедливо равенство
P ∗ (m, n) = m + n + 2mn.
Обратимся к функции P (m, n) и обозначим через W (m, n) число
всех путей от начальной вершины к конечной. Каждый такой путь
состоит из m+n дуг, и для расчета длины пути необходимо выполнить
m+n−1 операцию сложения; следовательно, имеет место соотношение
P (m, n) = (m + n − 1) · W (m, n).
Каждый путь однозначно определяется набором номеров (от 1 до
m + n) тех шагов, на которых выбирается увеличение скорости полета.
Поскольку увеличение скорости должно выбираться ровно m раз, то
число всех путей вычисляется по формуле
m
W (m, n) = Cm+n ,
m
где Cm+n — число сочетаний из m + n элементов по m. Как известно
из элементарной математики,
m (m + n)!
Cm+n = .
m! · n!
3.9. Задача об управлении самолетом 143

Таким образом,
(m + n)!
P (m, n) = (m + n − 1) .
m! · n!
Сопоставим вычисленные функции в наиболее простом случае, ко-
гда число шагов по обоим направлениям совпадает, т. е. m = n = k.
Тогда
(2k)!
P (k, k) = (2k − 1) 2, P ∗ (k, k) = 2k(k + 1).
(k!)
Отношение P (k, k) (2k − 1)(2k − 1)!
=
P ∗ (k, k) (k + 1)(k!)2
является показателем того, насколько метод ДП более экономичен
в плане вычислений для задач данного типа, чем метод перечисле-
ния путей. Обозначим целую часть рассматриваемого отношения че-
рез R(k). Некоторые значения функции R(k) приведены в следующей
таблице.

k 2 3 5 10 15 20
R(k) 1 4 37 15 956 9 371 683 6 400 017 409

Как видно из таблицы, значения R(k) очень быстро растут с увели-


чением k. Степень роста можно проиллюстрировать следующим при-
мером. Предположим, что задача рассматриваемого типа с m = 20
и n = 20 решается на ЭВМ (отметим, что для реальных задач раз-
мерность 20× 20 вовсе не является высокой). Для упрощения ситуации
будем считать, что в ходе решения задач на ЭВМ затрачивается время
только на выполнение операций сложения (затратами времени на до-
ступ к памяти, выполнение логических операций, другими неизбеж-
ными «накладными» расходами мы пренебрегаем). Пусть решение за-
дачи на ЭВМ по программе, составленной на основе метода ДП, заняло
0,001 с, т. е. с точки зрения человека прошло мгновенно. Тогда решение
той же задачи на той же ЭВМ по программе, составленной на основе
метода перечисления путей, займет около 2,5 месяцев. Понятно, что ис-
комое оптимальное решение может полностью потерять свою актуаль-
ность задолго до окончания столь длительного срока. Для задач более
высоких размерностей возникают еще более разительные соотношения.
Безусловно, столь контрастные результаты получаются при сопостав-
лении двух «полярных» вариантов расчетов: близкого к наилучшему
(метод ДП) и заведомо нерационального, «неразумного» варианта (пе-
речисление, т. е. полный перебор). Тем не менее, данный пример еще раз
показывает важность применения передовых математических методов
для решения выдвигаемых экономической практикой задач.
144 Глава 3. Динамическое программирование в теории графов

Замечание 4. Данную задачу можно решить и классическим ме-


тодом ДП. Рассмотрим, как в этом случае надлежит провести мате-
матическую формализацию задачи.
1. Число шагов N в данной задаче принимаем равным
m + n = 3 + 5 = 8.
2. В качестве фазовой переменной xi можно выбрать координаты
(m′ ; n′ ) вершин орграфа, где m′ , n′ — целые числа,
0  m′  m = 3, 0  n′  n = 5,
номер i состояния равен m′ + n′ , x0 = (0; 0). В данном случае мы
встречаемся с новой для нас ситуацией, когда фазовая переменная
является не числом, а вектором размерности 2.
3. В качестве управляющей переменной ui следует выбрать перемен-
ную, принимающую два значения, отвечающих увеличению скорости
и набору высоты (коротко — ускорение или подъем). Это можно за-
писать, например, в виде ui ∈{«Ускорение», «Подъем»}. Конечно,
для «самых правых» и «самых верхних» вершин допустимым будет
только одно из двух значений управления.
4. Функция процесса xi = fi (xi−1 , ui ) для данной задачи может быть
представлена следующим образом. Если xi−1 = (m′ ; n′ ), то


(m + 1; n′ ), если ui =«Ускорение»;
xi =
(m′ ; n′ + 1), если ui =«Подъем».
5. Функция zi = zi (xi−1 , ui ) равна затратам топлива на выполнение
элементарной операции по управлению самолетом и полностью опре-
деляется числовыми данными задачи, приведенными на схеме: если
ui =«Ускорение», то zi равна числу, расположенному справа от вер-
шины xi−1 = (m′ ; n′ ); если же ui =«Подъем», то zi равна числу,
расположенному сверху от той же вершины.
Замечание 5. Естественным и логичным обобщением рассматри-
ваемой задачи, приближающим ее к реальной ситуации, является до-
пущение одновременного увеличения скорости и набора высоты само-
летом. Одновременное ускорение и подъем соответствует перемещению
на схеме по восходящей диагонали от некоторой вершины (i; j) к вер-
шине (i+ 1; j + 1), где i = 0, 1, 2, j = 0, 1, 2, 3, 4. Затраты топлива на вы-
полнение данного элемента пилотажа будем рассчитывать следующим
образом. Обозначим через QV (i; j) затраты топлива на увеличение
скорости от значения V0 + i∆V до V0 + (i + 1)∆V на постоянной высоте
H0 + j∆H (иными словами, при переходе на схеме от (i; j) к (i + 1; j)).
3.10. Построение максимального пути 145

Аналогично, обозначим через QH (i; j) затраты топлива на набор вы-


соты от значения H0 +j∆H до H0 +(j +1)∆H при постоянной скорости
V0 + i∆V (при переходе на схеме от (i; j) к (i; j + 1)). Примем, что
затраты топлива на одновременное ускорение и подъем от значений
скорости и высоты, отвечающих вершине с координатами (i; j), до зна-
чений, отвечающих вершине с координатами (i + 1; j + 1), равны
 
0, 4 · QV (i; j) + QV (i; j + 1) + QH (i; j) + QH (i + 1; j) .
Например, в соответствии с приведенными выше данными
QV (0; 2) = 20, QH (1; 4) = 45,
а затраты топлива на одновременное ускорение и подъем от точки (1;3)
до точки (2;4) равны
0, 4 · (23 + 42 + 25 + 41) = 52, 4 усл. ед.
Отметим, что в новой постановке задачи множество допустимых
вариантов управления шире, чем в исходной постановке; в силу этого
новые минимальные затраты топлива на выполнение заданного ма-
невра должны получиться заведомо не большими значения 260 усл. ед.,
полученного для исходной постановки.
Задание. Провести решение задачи об управлении самолетом в но-
вой постановке методом ДП.

3.10. Построение максимального пути


Задача о максимальном пути уже упоминалась нами выше для неориен-
тированных графов и заключается в поиске пути максимальной длины,
соединяющего две заданные вершины взвешенного графа. Наличие
сходства в постановках задач о максимальном и о кратчайшем пути еще
не обусловливает полной аналогии в методах их решения. Как указано
в разд. 3.3, задача о максимальном пути может быть решена методом
перечисления путей, однако этот метод является исключительно гро-
моздким и неэффективным. Представляется естественным применить
для решения поставленной задачи метод ДП, детально разработанный
для задачи о кратчайшем пути. Однако, как показано в разд. 3.4,
не всякое формальное, механическое видоизменение метода ДП позво-
ляет получить корректный алгоритм решения задачи о максимальном
пути. В то же время классический принцип оптимальности Р. Беллмана
и соответствующий метод ДП позволяет решать задачи управления
многошаговыми процессами в равной мере как на максимум, так и на
минимум; этот факт является дополнительным аргументом в пользу
разработки надлежащего метода.
146 Глава 3. Динамическое программирование в теории графов

Оказывается, что введение ориентации на графах позволяет до-


биться более полной аналогии в методах решения рассматриваемых
задач и разработать соответствующий метод ДП для задачи о мак-
симальном пути.
При изложении данного метода рассмотрим прежде всего наиболее
общий и содержательный случай vкон = vнач . Обозначим через M (v)
длину максимального пути из вершины v в конечную вершину vкон ; если
такого пути не существует, то функция M считается неопределенной
для вершины v. При этом M (vнач ) равно длине искомого максимального
пути и по условию задачи подлежит вычислению.
Пусть для некоторой вершины v ∈ V значение M (v) еще не вы-
числено в ходе решения задачи методом ДП, но известны значения
M (w) для всех последующих вершин w ∈ V+ (v). В этом случае имеет
место следующая основная расчетная формула:
 
M (v) = max d(v → w) + M (w) . (2)
w∈V+ (v)

Расчеты начинаются с условия


M (vкон ) = 0, (3)
которое по форме является аналогичным соответствующему условию
для задачи о кратчайшем пути, но не столь очевидно и требует
пояснения. Данное условие можно трактовать как требование не до-
пускать зацикливания на начальном этапе построения максимального
пути. Действительно, в общем случае при v = vкон ни один путь из v
в vкон не содержит контуров, проходящих через вершину vкон (иначе
вершина vкон повторялась бы более одного раза, что противоречило
бы самому понятию пути). В то же время в орграфе может суще-
ствовать непустой замкнутый путь из v = vкон в vкон , что приводит
к соотношению M (vкон ) > 0. Данная возможность вступает в проти-
воречие с общим случаем, и для его устранения надлежит принять
обсуждаемое условие (3).
Например, в орграфе, представленном на рис. 3.22, в котором длины
всех дуг равны 1 и принято vнач = A, vкон = B, существует кон-

Рис. 3.22
3.10. Построение максимального пути 147

тур B → C → D → B. Этот контур представляет собой максимальный


путь (конечно, замкнутый), проходящий через вершину B и по длине
равный 3. Но при решении задачи о максимальном пути необходимо
исключать возможность составления таких контуров, поскольку пред-
положение M (B) = 3 привело бы к ошибке: расчет по формуле (2)
дает M (A) = 4, а соответствующий маршрут A → B → C → D → B
путем не является.
Как показывает уже рассмотренный выше пример орграфа
на рис. 3.18, вычислить значение M (1), действуя исключительно по
формулам (2) и (3), невозможно, хотя, очевидно, путь 1 → 2 из на-
чальной вершины 1 в конечную вершину 2 является единственным
и максимальным. Тем самым и при решении задачи о максималь-
ном пути необходимо исключать из рассмотрения те «лишние» дуги,
через которые заведомо не может проходить максимальный путь из на-
чальной вершины в конечную. Для рассматриваемого орграфа такой
дугой является дуга 1 → 3, исключение которой предельно упрощает
ситуацию и позволяет вычислить M (1) = d(1 → 2).
Таким образом, решение задачи о максимальном пути на орграфах
методом ДП, подобно задаче о кратчайшем пути, сводится к двум
основным действиям:
1) исключению «лишних» дуг;
2) применению расчетной формулы (2).
Данный метод применим к решению задачи для любых сетей и для
некоторых орграфов, не являющихся сетями.
Разберем ряд примеров, иллюстрирующих предложенный метод.

1. Рассмотрим орграф, изображенный на рис. 3.23, в котором на-


чальной вершиной является B, а конечной — E. Как легко проверить

Рис. 3.23
148 Глава 3. Динамическое программирование в теории графов

с помощью алгоритма Фалкерсона, данный орграф является сетью


с входом в вершине A и выходом в вершине G.
Полагая M (E) = 0, немедленно приходим к невозможности непо-
средственного применения основной расчетной формулы (2); для про-
должения решения задачи попытаемся исключить некоторые дуги ор-
графа. Дуги C → G и F → G могут быть исключены, поскольку
вершина G не имеет последующих вершин. После их исключения вер-
шина F «теряет» последующую вершину G, и из рассмотрения можно
исключить дугу D → F. При этом у вершины D остается только одна
последующая вершина E, что позволяет вычислить
M (D) = d(D → E) + M (E) = 3 + 0 = 3,
M (C) = d(C → D) + M (D) = 2 + 3 = 5,
 
M (B) = max d(B→C) + M (C); d(B→D) + M (D); d(B→E) + M (E) =
= max {1 + 5; 5 + 3; 7 + 0} = 8,
причем максимум в последнем равенстве достигается на дуге B → D.
Таким образом, длина максимального пути из B в E равна 8, а сам
максимальный путь имеет вид B → D → E. Очевидно, что вычислять
M (A) нет необходимости (хотя, конечно, это можно сделать).
2. Рассмотрим задачу о максимальном пути для орграфа, пред-
ставленного на рис. 3.16 и не являющегося сетью. Полагая M (3) = 0,
немедленно приходим к необходимости исключения «лишних» дуг, по-
скольку непосредственно основная формула (2) неприменима. Исклю-
чив, как и для задачи о кратчайшем пути из разд. 3.8, дуги 3 → 2,
5 → 2, 7 → 2 и 1 → 5, можем провести следующую цепочку расчетов:
M (1) = d(1 → 3) + M (3) = 5,
M (4) = d(4 → 1) + M (1) = 9,
M (6) = d(6 → 4) + M (3) = 10,
 
M (7) = max d(7 → 4) + M (4); d(7 → 6) + M (6) =
= max {13; 12} = 13,
 
M (5) = max d(5 → 3) + M (3); d(5 → 4) + M (4); d(5 → 7) + M (7) =
= max {20; 17; 16} = 20.
Соответствующим образом устанавливаются и отметки на дугах,
используемые при построении искомого максимального пути. Оконча-
тельно получаем, что максимальный путь из 5 в 3 состоит из одной
дуги 5 → 3 и имеет длину 20.
3. Рассмотрим еще один пример и обратимся к решению задачи
о максимальном пути для орграфа, представленного на рис. 3.24. Длины
3.10. Построение максимального пути 149

Рис. 3.24

всех дуг будем считать равными единице (они на графе явно не ука-
заны). В качестве начальной вершины возьмем вершину 2, в качестве
конечной — вершину 6.
Решение задачи зависит от наличия дуги 9 → 6, показанной на ри-
сунке штриховой линией; рассмотрим оба случая. Расчет начинается
с условия M (6) = 0. Изучая структуру орграфа, устанавливаем:
— дугу 1 → 2 можно исключить, поскольку вершина 2 является
начальной, и любой маршрут, содержащий 1 → 2, имеет вид

2 → . . . → 1 → 2 → . . . → 6,

т. е. проходит через вершину 2 по меньшей мере два раза и путем


не является;
— дугу 3 → 1 можно исключить, поскольку после исключения дуги
1 → 2 вершина 1 не имеет последующих (образуется «тупик»);
— по аналогичной причине можно исключить и дуги 2 → 3 и 4 → 3,
поскольку вершина 3 больше не имеет последующих.
Таким образом, у вершины 4 остается лишь одна не исключенная
исходящая дуга 4 → 6. В соответствии с основной расчетной форму-
лой (2) получаем:

M (4) = d(4 → 6) + M (6) = 1 + 0 = 1;

при этом отмечается дуга 4 → 6.


После определения M (4) можно пытаться вычислить значение
функции M для начальной вершины 2, предшествующей вершине 4.
Но у вершины 2 имеется еще одна последующая вершина 5, значение
функции M в которой пока неизвестно. Соответственно необходимо
или вычислить M (5), или исключить дугу 2 → 5. Здесь начинает
проявляться наличие дуги 9 → 6.
150 Глава 3. Динамическое программирование в теории графов

Рассмотрим случай, когда дуга 9 → 6 отсутствует. Изучая структуру


графа, получаем:
— дугу 7 → 8 можно исключить, поскольку любой маршрут,
содержащий 7 → 8, обязательно проходит и по дугам 8 → 9
и 9 → 7, т. е. проходит через вершину 7 по меньшей мере
два раза и путем не является;
— по аналогичной причине можно исключить и дуги 8 → 9
и 9 → 7, хотя это и не обязательно;
— дуги 5 → 7 и 6 → 7 можно исключить, поскольку после ис-
ключения 7 → 8 вершина 7 не имеет последующих (образуется
«тупик»);
— дугу 2 → 5 также можно исключить, поскольку после ис-
ключения дуги 5 → 7 вершина 5 не имеет последующих.
Тем самым у вершины 2 остается лишь одна не исключенная ис-
ходящая дуга 2 → 4. В соответствии с основной формулой
M (2) = d(2 → 4) + M (4) = 1 + 1 = 2;
при этом отмечается дуга 2 → 4. Для данного случая решение завер-
шено; максимальный путь строится с использованием установленных
отметок и имеет вид 2 → 4 → 6, а длина его равна 2.
Рассмотрим случай, когда дуга 9 → 6 присутствует в орграфе.
В этом случае исключить дуги 7 → 8 и 8 → 9 не удается. Однако
дугу 9 → 7 можно исключить, поскольку любой маршрут, содержащий
9 → 7, обязательно проходит и по дугам 7 → 8 и 8 → 9, т. е. проходит
через вершину 9 по меньшей мере два раза и путем не является. Тем
самым у вершины 9 остается лишь одна не исключенная исходящая
дуга 9 → 6. По формуле (2) последовательно получаем:
M (9) = d(9 → 6) + M (6) = 1 + 0 = 1,
M (8) = d(8 → 9) + M (9) = 1 + 1 = 2,
M (7) = d(7 → 8) + M (8) = 1 + 2 = 3,
M (5) = d(5 → 7) + M (7) = 1 + 3 = 4;
указанные дуги отмечаем. В настоящий момент у начальной вершины 2
имеются две последующие вершины 4 и 5 с известными значениями
максимальных путей; в соответствии с основной формулой получаем:
 
M (2) = max d(2 → 4) + M (4); d(2 → 5) + M (5) = 5;
отмечаем дугу 2 → 5, на которой достигается максимум. Для
данного случая решение завершено; максимальный путь имеет вид
2 → 5 → 7 → 8 → 9 → 6, а длина его равна 5.
3.10. Построение максимального пути 151

4. Для полноты изложения разберем пример задачи о максималь-


ном пути, для которого простой анализ структуры орграфа без учета
длин дуг не позволяет получить решения. Рассмотрим орграф, пред-
ставленный на рис. 3.19, в котором принято vнач = A, vкон = E; оче-
видно, что данный орграф сетью не является. Полагая в соответствии
с методом ДП M (E) = 0, немедленно приходим к невозможности даль-
нейшего применения основной формулы (2) ни для одной из остав-
шихся вершин, поскольку у каждой из них есть последующая вершина
с неизвестным еще значением функции M . Более того, ни одной дуги
орграфа исключить из рассмотрения невозможно, поскольку через каж-
дую из них проходит некоторый путь из A в E, из которых любой —
если, конечно, не принимать во внимание длины дуг — может быть
максимальным. Таким образом, в данном случае структурный анализ
оказывается слишком «грубым» и недостаточным для продолжения
решения.
Для получения решения задачи проведем более глубокое иссле-
дование орграфа с учетом длин дуг. Сделать это можно, например,
следующим образом.
Множество всех путей из A в E разобьем на следующие два непе-
ресекающиеся подмножества:
1) пути, проходящие по дуге B → C;
2) пути, не проходящие по дуге B → C.
Найдем максимальные пути в каждом из подмножеств методом ДП.
Пути из первого подмножества проходят по дуге B → C и, тем
самым, не могут проходить по дугам C → D и D → B (иначе путь со-
держал бы контур, что невозможно по определению). Следовательно,
при расчете максимального пути эти две дуги можно исключить из рас-
смотрения. Соответственно становится применимой и расчетная фор-
мула (2), по которой получаем:

M (C) = d(C → E) + M (E) = 10,


 
M (B) = max d(B → C) + M (C); d(B → E) + M (E) = max {17; 4} = 17,
 
M (A) = max d(A→B) + M (B); d(A→C) + M (C) = max {25; 11} = 25.

Таким образом, среди всех проходящих через B → C путей максималь-


ный путь имеет вид A → B → C → E и по длине равен 25 (очевидно,
что для данного простого орграфа этот путь является единственным
в первом подмножестве).
Для путей из второго подмножества, не проходящих по дуге B → C,
при расчете максимального пути эту дугу можно исключить; при этом
152 Глава 3. Динамическое программирование в теории графов

становится непосредственно применимой формула (2):


M (B) = d(B → E) + M (E) = 4,
M (D) = d(D → B) + M (B) = 7,
 
M (C) = max d(C → D) + M (D); d(C → E) + M (E) =
= max {9; 10} = 10,
 
M (A) = max d(A → B) + M (B); d(A → C) + M (C) =
= max {12; 11} = 12.
Таким образом, среди путей, не проходящих через B → C, максималь-
ный путь имеет длину, равную 12.
Сопоставляя два рассмотренных случая, получаем, что максималь-
ным путем из A в E в заданном орграфе является путь A → B → C → E
длиной 25. Этот же результат можно получить и методом перечисле-
ния путей — для данного простого орграфа перечисление не является
излишне громоздким.
Остановимся на методике решения задачи о максимальном пути
в специальном случае vкон = vнач ; фактически задача состоит в по-
иске замкнутого пути, или простого контура максимальной длины,
проходящего через указанную вершину. Данная задача может быть
решена с использованием следующего приема. В соответствии с ме-
тодом ДП принимаем M (vкон ) = 0. Как только в ходе расчетов зна-
чения функции M станут известны для всех вершин, предшеству-
ющих вершине vкон , условие M (vкон ) = 0 устраняется, и значение
M (vкон ) = M (vнач ) полагается неизвестным. Далее вычисление функ-
ции M (v) проводится по обычной схеме.
5. В качестве примера рассмотрим задачу о максимальном замкну-
том пути, проходящем через вершину A, для орграфа, представленного
на рис. 3.25. Полагая M (A) = 0, проводим следующие расчеты по фор-
муле (2):
M (C) = d(C → A) + M (A) = 9,
M (E) = d(E → A) + M (A) = 8,

M (F) = max d(F → A) + M (A); d(F → C) + M (C);

d(F → E) + M (E) = max {10; 12; 13} = 13;
в последнем случае максимум достигается на дуге F → E. Дугу H → A,
очевидно, можно исключить из рассмотрения. В настоящий момент
впервые становятся известны значения функции M для всех вер-
шин, предшествующих вершине A; условие M (A) = 0 отбрасывается,
а функция M полагается неизвестной для вершины A, играющей роль
3.10. Построение максимального пути 153

Рис. 3.25

не только конечной, но и начальной вершины. Далее вычисления про-


должаются обычным образом:
 
M (B) = max d(B → C) + M (C); d(B → F) + M (F) = 15,
M (D) = d(D → F) + M (F) = 14.
После этого значения функции M становятся известны для всех
вершин, следующих за A, за исключением вершины G. Но дугу A → G
можно исключить, поскольку у вершины G нет последующих. Следо-
вательно,
 
M (A) = max d(A → B) + M (B); d(A → D) + M (D) = 21.
Таким образом, максимальный путь, начинающийся и заканчиваю-
щийся в вершине A, имеет вид
A→D→F→E→A
и по длине равен 21.
Задание. Провести проверку полученного решения данной задачи
методом перечисления путей.
В заключение раздела сделаем ряд замечаний.
Замечание 1. Подобно решению задачи о кратчайшем пути, реше-
ние задачи о максимальном пути методом ДП может быть оформлено
как с проведением записи на самом графе (этот способ удобен, если
структура графа представлена непосредственно в виде схемы), так и с
заполнением таблицы, по структуре полностью аналогичной таблице
из разд. 3.7. Для орграфа, изображенного на рис. 3.24 и рассмотрен-
ного в п. 3 настоящего раздела, при наличии дуги 9 → 6 решение
задачи представлено в приведенной ниже таблице.
154 Глава 3. Динамическое программирование в теории графов

v w d(v → w) d(v → w) + M (w) M (v)


1 2 1 ×
2 3 1 × 5
4 1 1+1 = 2
5 1 1+4 = 5
3 1 1 ×
4 3 1 × 1
6 1 1+0 = 1
5 7 1 1+3 = 4 4
6 7 1 — 0
7 8 1 1+2 = 3 3
8 9 1 1+1 = 2 2
9 6 1 1+0 = 1 1
7 1 ×

Максимальный путь строится обычным образом начиная с вер-


шины 2 с использованием отметок «».

Замечание 2. Укажем здесь на еще одно из возможных прило-


жений алгоритма перечисления путей. Предположим, что в представ-
ленном на рис. 3.24 орграфе дуга 8 → 9 в рассматриваемом орграфе
заменена сложной сетью с входом в вершине 8 и выходом в вершине 9,
дуга 9 → 6 отсутствует. В этом случае определить, можно ли исклю-
чить дугу 7 → 8, не столь просто. Для этого достаточно установить,
что все пути, начинающиеся в вершине 8, приводят в вершину 7.
Сделать это можно посредством перечисления путей, начинающихся
в вершине 8.

Замечание 3. Отметим одно из различий в свойствах решений


задач о максимальном и кратчайшем пути. Рассмотрим кратчайший
путь, соединяющий некоторые начальную и конечную вершины про-
извольного взвешенного орграфа. В этом случае участок кратчайшего
пути от любой внутренней (промежуточной) вершины этого пути до ко-
нечной вершины также является кратчайшим. Если орграф представ-
ляет собой сеть, то аналогичное свойство справедливо и для задачи
о максимальном пути: любой участок максимального пути является
максимальным. Для орграфов, не являющихся сетями, это свойство
может не выполняться. В качестве примера рассмотрим орграф, пред-
ставленный на рис. 3.26, длины всех дуг которого равны единице, на-
чальной является вершина A, конечной — вершина E. Максимальный
3.11. Задачи сетевого планирования 155

Рис. 3.26

путь из A в E имеет вид


A→B→D→E
и по длине равен 3. При этом для внутренней вершины D этого пути
максимальным путем к вершине E является не дуга D → E длиной 1,
а путь D → C → B → E длиной 3.
Данное свойство выражает некоторую «неустойчивость» максималь-
ного пути на орграфах произвольной структуры.
Замечание 4. В рассмотренном варианте метода ДП решения за-
дачи о максимальном пути расчеты функции M (v) ведутся от ко-
нечной вершины к начальной. В то же время данный метод легко
переформулировать так, чтобы расчеты велись от начальной вершины
к конечной. В этом случае соответствующая расчетная формула может
быть записана в виде
 
M ′ (v) = max M ′ (u) + d(u → v) , (4)
u∈V− (v)

где через M ′ (v)


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

3.11. Динамическое программирование


в задачах сетевого планирования
Сетевое планирование — раздел математики, изучающий методы
решения задач управления сложными комплексами взаимосвязанных
работ в различных отраслях экономики. Например, строительство про-
мышленного объекта может включать следующие этапы:
— разработку технико-экономического обоснования;
— разработку проектно-сметной документации;
156 Глава 3. Динамическое программирование в теории графов

— согласование проекта с различными контролирующими органи-


зациями;
— получение участка земли в органах муниципальной или феде-
ральной власти;
— выбор подрядчиков на выполнение отдельных работ;
— получение кредитов в банке;
— строительство производственных корпусов;
— проведение отделочных и монтажных работ;
— подведение и подключение коммуникаций;
— прием в опытную и промышленную эксплуатацию.
Каждый из представленных этапов, в свою очередь, может состоять
из ряда шагов, операций или работ. Таким образом, возникают сложные
комплексы работ, управление которыми является важной и актуальной
задачей. Такого типа задачи и рассматриваются в сетевом планирова-
нии. Применение методов сетевого планирования позволяет повысить
качество планирования и управления комплексами работ, в частности:
— формировать обоснованный календарный план выполнения ра-
бот, заблаговременно заключать договоры и контракты со смеж-
ными организациями;
— осуществлять координацию действий работников, исполнителей,
подрядчиков или иных сторон, участвующих в выполнении работ;
— рационально распоряжаться финансовыми, материальными, тру-
довыми и иными ресурсами;
— выявлять наиболее ответственные и напряженные участки работ
и концентрировать внимание руководства на их состоянии;
— оперативно принимать оптимальные решения при возникновении
нештатных ситуаций;
— использовать ЭВМ для контроля и оптимизации порядка вы-
полнения комплекса работ.
В настоящем разделе будут рассмотрены лишь основные понятия
и простейшие задачи сетевого планирования, при решении которых
непосредственно используются методы ДП на графах. Другие харак-
терные задачи, в частности, построение сетевых графиков и их оп-
тимизация, в настоящем учебном пособии не рассматриваются. Для
более полного ознакомления с методами сетевого планирования следует
обратиться, например, к источникам [7, 8, 11, 13, 15, 18].
При решении задач сетевого планирования широко используются
сетевые графики. Сетевой график — это графическое представле-
ние комплекса работ, отображающее естественный порядок выполне-
ния этих работ во времени. С математической точки зрения сетевой
график — это связный ориентированный граф без контуров, т. е. сеть.
3.11. Задачи сетевого планирования 157

Наличие контуров в сетевом графике означало бы, что отдельные ра-


боты косвенно опираются на результаты выполнения этих же работ, что
не представляется логичным. Сетевой график может содержать неко-
торые дополнительные числовые характеристики, например, время вы-
полнения работ, их стоимость, затраты иных ресурсов на выполнение.
В сетевом планировании используется ряд специальных терминов,
отражающих экономическое содержание данной предметной области.
Первичными понятиями сетевого планирования являются события и ра-
боты. Событие представляет собой некоторый момент времени, харак-
теризующий состояние комплекса работ. События не имеют временной
протяженности. Обозначаются события, как правило, натуральными
числами 1, 2, . . . или каким-либо иным образом. На сетевом графике
события изображаются вершинами сети. Работа представляет собой
некоторый процесс, требующий затрат времени и некоторых ресурсов
на выполнение. Работа всегда связывает два события: начальное и ко-
нечное по отношению к данной работе. Обозначаются работы парой
чисел (i, j) по номерам начального и конечного событий. На сетевом
графике работы изображаются дугами. Время выполнения работы (i, j)
будем называть длительностью работы и обозначать через T (i, j);
это число можно трактовать как вес дуги (i, j), представляющей со-
ответствующую работу.
Отдельные элементы сетевого графика могут быть связаны отно-
шениями предшествования. Если (i, j) — некоторая работа, то:
— событие i предшествует событию j, или событие j следует за
событием i;
— событие i предшествует работе (i, j), или работа (i, j) следует
за событием i;
— работа (i, j) предшествует событию j, или событие j следует за
работой (i, j).
Если при этом (j, k) также является работой, то говорят, что ра-
бота (i, j) предшествует работе (j, k), или работа (j, k) следует за
работой (i, j). Предшествующая работа для некоторой другой работы
называется опорной работой.
В сетевом планировании считается, что событие не может наступить
до завершения всех предшествующих ему работ, а работа не может на-
чаться до наступления предшествующего ей события и, следовательно,
до завершения всех опорных для нее работ.
Событие, не имеющее предшествующих работ и представляющее
начало всего комплекса работ, называется исходным и обозначается
через I (что соответствует истоку сети). Событие, не имеющее по-
следующих работ и представляющее конец всего комплекса работ, на-
158 Глава 3. Динамическое программирование в теории графов

зывается завершающим и обозначается через F (что соответствует


стоку сети). Будем полагать, что в рассматриваемых нами сетевых
графиках имеется только одно исходное и одно завершающее событие.
Путь на сетевом графике определяется естественным образом как
последовательность работ, соединяющая два события. Путь от собы-
тия i к событию j будем обозначать через L(i, j); таких путей может
быть несколько, один или ни одного. Суммарное время выполнения
всех работ пути называется длиной, или протяженностью пути.
Длину пути L(i, j) будем обозначать через T (L(i, j)).
Среди всех путей наибольшую значимость представляют полные
пути, соединяющие исходное и завершающее события. Наибольший по
протяженности полный путь называется критическим путем. Кри-
тических путей на сетевом графике может быть один или несколько.
Протяженность критического пути называется критическим сроком
и обозначается через Tкр . Таким образом, можно записать, что
  
Tкр = max T L(I, F ) ,
L(I,F )
где максимум длин путей T (L(I, F )) берется по всем полным путям
L(I, F ). События и работы, располагающиеся на критическом пути,
называются критическими. Критический путь на сетевом графике
зачастую обозначается двойными дугами вида «⇒».
Одной из наиболее простых и в то же время важных задач сетевого
планирования является задача поиска критического пути и вычисления
критического срока. Очевидно, что поиск критического пути эквива-
лентен задаче поиска максимального пути из I в F и может быть
проведен, как известно, двумя основными способами:
1) методом перечисления путей;
2) методом ДП на орграфах.
При этом специфика задачи, состоящая в том, что начальная вершина
искомого критического пути совпадает со входом сети, а конечная —
с выходом, позволяет упростить решение. Исключение дуг в данной
задаче не проводится, поскольку через любую дугу сети проходит хотя
бы один полный путь, который может оказаться критическим.
С задачей поиска критического пути тесно связана задача расчета
временных параметров событий и работ. К временным параметрам
событий относятся:
1) ранний срок свершения события;
2) поздний срок свершения события;
3) резерв времени события.
Именно при расчете ранних и поздних сроков свершения событий
эффективно используются методы ДП на графах. Расчет же временных
3.11. Задачи сетевого планирования 159

параметров работ проводится элементарно на основе вычисленных


ранее временных параметров событий без обращения к методу ДП
и в настоящем учебном пособии не рассматривается.
Ранний срок свершения события i (будем обозначать его че-
рез tр (i)) — наиболее ранний момент времени, к которому могут за-
вершиться все последовательности работ, начинающиеся с исходного
события I и заканчивающиеся событием i. При этом начало всего
комплекса работ (т. е. наступление события I) принимается соответ-
ствующим нулевому значению времени. Ранний срок свершения со-
бытия равен максимальной протяженности всех путей, соединяющих
исходное событие I с событием i:
  
tр (i) = max T L(I, i) ,
L(I,i)

где максимум берется по всем путям L(I, i) от исходного события I


до события i. Данная формула имеет прямое отношение к методу
перечисления путей, и ее практическое применение приводит, как уже
отмечалось ранее, к громоздким повторяющимся вычислениям. Суще-
ственно более эффективным способом расчета является вычисление
ранних сроков по формуле
 
tр (i) = max tр (h) + T (h, i) ,
h∈V− (i)

в которой максимум берется по всем событиям h, предшествующим со-


бытию i. Данная формула отвечает методу ДП и полностью аналогична
рассмотренной выше формуле (4) предыдущего раздела, применяемой
при расчете максимального пути «с начала». Расчет начинается с ис-
ходного события I и условия tр (I) = 0, а заканчивается вычислением
tр (F ) для завершающего события F , причем Tкр = tр (F ). В ходе вы-
числений необходимо каким-либо образом запоминать предшествующие
событию i работы, на которых достигается вычисляемый максимум;
эти работы играют роль аналогов условно-оптимальных управлений
в классическом методе ДП и используются далее при построении кри-
тического пути.
Расчет ранних сроков свершения событий, критического срока и по-
иск критического пути можно сопровождать проведением записи на са-
мом сетевом графике или заполнением таблицы следующей структуры:

Предшествующее Длительность
Событие Сумма Ранний срок
событие работы
i tр (h) + T (h, i) tр (i)
h T (h, i)
... ... ... ... ...
160 Глава 3. Динамическое программирование в теории графов

Данная таблица аналогична таблицам, используемым при решении


задачи о кратчайшем или максимальном пути с проведением расче-
тов в направлении «от начала к концу». Запоминать работы можно,
например, расставляя пометки (в виде стрелок или засечек на соот-
ветствующих дугах сети) либо отмечая в таблице знаками «» пред-
шествующие события. После завершения расчетов критический путь
определяется как и в задаче о кратчайшем или максимальном пути,
начиная с завершающего события.
Поздний срок свершения события i (будем обозначать его
через tп (i)) — наиболее поздний момент времени, с которого все после-
довательности работ, начинающиеся с события i и заканчивающиеся
завершающим событием F , могут завершиться в пределах критического
срока. Таким образом, поздний срок свершения события определяется
из соотношения
  
tп (i) + max T L(i, F ) = Tкр ,
L(i,F )

где максимум берется по всем путям L(i, F ) от события i до заверша-


ющего события F . Данная формула имеет отношение к трудоемкому
методу перечисления путей. В то же время идеи, лежащие в основе ме-
тода ДП, позволяют получить иную существенно более эффективную
методику вычисления поздних сроков, основанную на формуле
 
tп (i) = min tп (j) − T (i, j) ,
j∈V+ (i)

в которой минимум берется по всем событиям j, следующим за со-


бытием i. Расчет начинается с завершающего события F и условия
tп (F ) = Tкр (критический срок уже известен после расчета ранних
сроков), а заканчивается исходным событием I; при этом должно по-
лучиться tП (I) = 0. Заметим, что критический путь уже построен
при расчете ранних сроков; следовательно, в ходе расчета поздних
сроков нет необходимости запоминать последующие за событием i ра-
боты, на которых достигается вычисляемый минимум.
Как и для ранних сроков, расчет поздних сроков свершения событий
можно сопровождать проведением записи на самом сетевом графике
или заполнением таблицы следующей структуры:

Последующее Длительность
Событие Разность Поздний срок
событие работы
i tп (j) − T (i, j) tп (i)
j T (i, j)
... ... ... ... ...

Данная таблица аналогична рассмотренным выше таблицам.


3.11. Задачи сетевого планирования 161

Резерв времени события i (будем обозначать его через r(i)) —


наибольший срок задержки события, не приводящий к нарушению кри-
тического срока. После вычисления ранних и поздних сроков резервы
времени событий рассчитываются по формуле
r(i) = tп (i) − tр (i).

При этом r(i)  0, а критические события имеют нулевой резерв


времени.
Отметим, что в отдельных случаях события на сетевых графи-
ках обозначаются следующим образом, представленном на рис. 3.27.
В таком обозначении указаны все временные параметры события.

tр (i) tп (i)

r(i)

Рис. 3.27

В заключение раздела покажем, каким образом может быть уста-


новлена приведенная выше формула для расчета поздних сроков (в ней
впервые среди формул подобного типа встречается знак «минус»). Для
этого учтем, что любой путь L(i, F ) от текущего события i к заверша-
ющему событию F обязательно проходит через одно из последующих
к i событий j ∈ V+ (i); следовательно,
T (L(i, F )) = T (i, j) + T (L(j, F )) .

Максимумы обеих частей последнего равенства также равны:


 
max {T (L(i, F ))} = max T (i, j) + T (L(j, F )) .
L(i,F ) L(i,F )

Выделяя первую работу (i, j) на пути L(i, F ), преобразуем правую


часть полученного равенства:
   
max T (i, j) + T (L(j, F )) = max max {T (i, j) + T (L(j, F ))} .
L(i,F ) j∈V+ (i) L(j,F )

Слагаемое T (i, j) в правой части последнего равенства можно вынести


за знак внутреннего максимума, поскольку оно не зависит от после-
162 Глава 3. Динамическое программирование в теории графов

дующего пути L(j, F ):


  
max max T (i, j) + T (L(j, F )) =
j∈V+ (i) L(j,F )
 
= max {T (i, j) + max T (L(j, F )) }.
j∈V+ (i) L(j,F )

Таким образом, получаем соотношение


    
max T (L(i, F )) = max T (i, j) + max T (L(j, F )) .
L(i,F ) j∈V+ (i) L(j,F )

По определению позднего срока свершения события имеем:


 
tп (i) = Tкр − max T (L(i, F )) .
L(i,F )

С учетом полученного выше соотношения можно записать:


  
tп (i) = Tкр − max T (i, j) + max T (L(j, F )) .
j∈V+ (i) L(j,F )

Используя общую формулу


−max{F (x)} = min{−F (x)},
x x
уже упоминавшуюся в гл. 1, получаем:
  
tп (i) = Tкр + min −T (i, j) − max T (L(j, F )) .
j∈V+ (i) L(j,F )

Критический срок Tкр не зависит от выбора промежуточного состояния


j ∈ V+ (i), так что его можно внести под знак минимума:
   
tп (i) = min Tкр − max T (L(j, F )) − T (i, j) .
j∈V+ (i) L(j,F )

Поскольку  
Tкр − max T (L(j, F )) = tп (j),
L(j,F )

то окончательно получаем требуемую формулу для вычисления позд-


них сроков.

3.12. Пример расчета параметров сетевого графика


Рассмотрим конкретный пример расчета параметров сетевого графика,
представленного на рис. 3.28. Будем обозначать вершины графа не чис-
лами, а буквами латинского алфавита. С помощью алгоритма Фалкер-
сона нетрудно проверить, что приведенный на рисунке орграф является
сетью, в которой исходным и завершающим являются события N и K.
На данном рисунке уже приведены результаты расчетов. В каждой
записи сверху над разделительной горизонтальной чертой приведены
расчеты, относящиеся к ранним срокам, а под горизонтальной чертой —
3.12. Пример расчета параметров сетевого графика 163

Рис. 3.28

к поздним срокам свершения событий. Жирным шрифтом выделены


значения ранних и поздних сроков для каждого события.
Вычислим ранние сроки свершения событий. Расчет начинается со
значения 0 для исходного события N, т. е. tр (N) = 0, что отмечено
на рисунке около данной вершины над горизонтальной чертой. Далее
в соответствии с общей методикой расчета необходимо рассмотреть
все те события, для которых известны ранние сроки свершения всех
предшествующих событий. Такими событиями являются S и W, и для
этих событий получаем:

tр (S) = tр (N) + T (N, S) = 0 + 7 = 7,


tр (W) = tр (N) + T (N, W) = 0 + 2 = 2,

что и отмечено на рис. 3.28 (максимум, стоящий в общей формуле,


в данном случае вычислять не требуется, поскольку для рассматри-
ваемых событий имеется только по одному предшествующему). После
этих вычислений становятся известными ранние сроки всех предше-
ствующих событий для события E; по общей формуле
 
tр (E) = max tр (N) + T (N, E); tр (S) + T (S, E) =
= max{0 + 6; 7 + 1} = max{6; 8} = 8.
164 Глава 3. Динамическое программирование в теории графов

Максимум достигается при движении от события S; отметим это стрел-


кой на соответствующей дуге SE. Далее рассматриваем событие Q:
 
tр (Q) = max tр (E) + T (E, Q); tр (W) + T (W, Q) =
= max{8 + 3; 2 + 8} = max{11; 10} = 11.
Отмечаем стрелкой дугу EQ, на которой достигается максимум. Рас-
сматриваем событие R:
 
tр (R) = max tр (E) + T (E, R); tр (S) + T (S, R); tр (Q) + T (Q, R) =
= max{8 + 5; 7 + 3; 11 + 4} = max{13; 10; 15} = 15.
Отмечаем стрелкой дугу QR. Наконец, для завершающего события K
получаем:
 
tр (K) = max tр (Q) + T (Q, K); tр (R) + T (R, K); tр (W) + T (W, K) =
= max{11 + 7; 15 + 2; 2 + 9} = max{18; 17; 11} = 18.
Отмечаем дугу QK. Расчет ранних сроков закончен, все они представ-
лены на рисунке. Тем самым, критический срок для данного сетевого
графика равен 18. Заметим, что последовательность вычисления ран-
них сроков свершения событий совпадает с порядком разбиения вершин
сети на группы в алгоритме Фалкерсона.
Критический путь строится в обратном направлении от завершаю-
щего события K к исходному событию N с использованием отмеченных
стрелками дуг, что дает цепочку K — Q — E — S — N. Для события S ни
одной предшествующей дуги стрелкой не отмечено, но тут вариант дви-
жения определен однозначно: других кроме NS входящих в вершину S
дуг нет. Записывая полученную последовательность в естественном по-
рядке, получаем следующий критический путь:
N → S → E → Q → K.
(Отмеченная стрелкой дуга QR при построении критического пути не
использована.)
Тот же самый расчет можно было провести без записи на самом
графе с использованием таблицы рассмотренной выше структуры, ко-
торая для данного примера имеет вид, приведенный на следующей
странице.
Обратимся к расчету поздних сроков свершения событий. Расчет
начинается с уже известного критического срока 18 для завершающего
события K, tп (K) = 18, что отмечено на рис. 3.28 около данного события
под горизонтальной чертой. Далее в соответствии с общей методикой
расчета необходимо рассмотреть все те события, для которых известны
поздние сроки свершения всех последующих событий. Таким событием
3.12. Пример расчета параметров сетевого графика 165

Предшествующее Длительность
Событие Сумма Ранний срок
событие работы
i tр (h) + T (h, i) tр (i)
h T (h, i)
E N 6 0+6 = 6 8
S 1 7+1 = 8
K Q 7 11 + 7 = 18 18
R 2 15 + 2 = 17
W 9 2 + 9 = 11
N — — — 0
Q E 3 8 + 3 = 11 11
W 8 2 + 8 = 10
R E 5 8 + 5 = 13 15
Q 4 11 + 4 = 15
S 3 7 + 3 = 10
S N 7 0+7 = 7 7
W N 2 0+2 = 2 2

является R, и для него по формуле получаем:


tп (R) = tп (K) − T (R, K) = 18 − 2 = 16,
что и отмечено на рис. 3.28 (минимум, стоящий в общей формуле,
в данном случае вычислять не требуется, поскольку для события R
имеется только одно последующее). После этих вычислений становятся
известными поздние сроки всех событий, последующих за событием Q;
по общей формуле
 
tп (Q) = min tп (K) − T (Q, K); tп (R) − T (Q, R) =
= min{18 − 7; 16 − 4} = min{11; 12} = 11.
Минимум достигается при движении по дуге QK; этот факт можно
отметить на дуге графа, однако в этом нет необходимости, поскольку
критический путь, для построения которого служат отметки, уже най-
ден. Далее рассматриваем события E и W:
 
tп (E) = min tп (Q) − T (E, Q); tп (R) − T (E, R) = min{8; 11} = 8,
 
tп (W) = min tп (K) − T (W, K); tп (Q) − T (W, Q) = min{9; 3} = 3.
Рассматриваем событие S:
 
tп (S) = min tп (E) − T (S, E); tп (R) − T (S, R) = min{7; 13} = 7.
Наконец, для исходного события N получаем:
 
tп (N) = min tп (E) − T (N, E); tп (S) − T (N, S); tп (W) − T (N, W) =
= min{2; 0; 1} = 0.
166 Глава 3. Динамическое программирование в теории графов

Расчет поздних сроков закончен, все они представлены на рисунке.


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

Последующее Длительность
Событие Разность Поздний срок
событие работы
i tп (j) − T (i, j) tп (i)
j T (i, j)
E Q 3 11 − 3 = 8 8
R 5 16 − 5 = 11
K — — — 18
N E 6 8−6=2 0
S 7 7−7=0
W 2 3−2=1
Q K 7 18 − 7 = 11 11
R 4 16 − 4 = 12
R K 2 18 − 2 = 16 16
S E 1 8−1=7 7
R 3 16 − 3 = 13
W K 9 18 − 9 = 9 3
Q 8 11 − 8 = 3

Вычислим, наконец, резервы времени событий. Рассчитываются они


элементарно и могут быть представлены в следующей таблице:

Событие Поздний срок Ранний срок Резервы времени


i tп (i) tр (i) r(i) = tп (i) − tр (i)
E 8 8 0
K 18 18 0
N 0 0 0
Q 11 11 0
R 16 15 1
S 7 7 0
W 3 2 1

Как и должно быть, у всех критических событий резервы времени


равны 0. У некритических событий R и W резервы времени равны 1.
На этом расчет временных параметров заданного сетевого графика
полностью завершен.
Контрольные вопросы 167

➲ Контрольные вопросы
1. Сформулируйте понятие графа и приведите примеры графов.
2. Сформулируйте основные понятия теории графов.
3. Каким образом можно применить метод перечисления путей к ре-
шению вопроса о связности заданного графа?
4. Структура графа задана с помощью матриц смежности и инци-
дентности. Сформулируйте в терминах данных матриц алгоритм
перечисления путей.
5. В чем заключается сходство и в чем состоит различие между
методом ДП решения задачи о кратчайшем пути на неориенти-
рованных графах и классическим методом ДП? Что является
аналогом функций Беллмана?
6. В каком случае задача о кратчайшем пути на неориентированном
графе не имеет решения?
7. Какие объекты в задаче о кратчайшем пути является аналогами
фазовой и управляющей переменных, целевой функции, траек-
тории системы, оптимальной траектории, оптимального значе-
ния задачи, допустимого и оптимального управлений для задачи
управления многошаговыми процессами?
8. Поясните, как проводится расчет оценок длины пути при решении
задачи о кратчайшем пути методом ДП?
9. Поясните, какие свойства задачи о кратчайшем пути на гра-
фах являются аналогами основных допущений классического
метода ДП.
10. С какой целью расставляются метки на ребрах графа в ходе
расчетов по методу ДП?
11. Почему метод ДП решения задачи о кратчайшем пути на неори-
ентированных графах не применим в случае отрицательных весов
ребер?
12. Дайте детальное описание алгоритма Дийкстры решения задачи
о кратчайшем пути.
13. Структура графа задана с помощью матриц смежности и ин-
цидентности. Сформулируйте в терминах данных матриц
1) метод ДП решения задачи о кратчайшем пути;
2) алгоритм Дийкстры решения задачи о кратчайшем пути.
14. Сформулируйте понятие ориентированного графа и приведите
примеры.
168 Глава 3. Динамическое программирование в теории графов

15. Сформулируйте основные понятия, относящиеся к теории ори-


ентированных графов.
16. Для чего применяется алгоритм Фалкерсона и что является
результатом его выполнения?
17. Структура орграфа задана с помощью матриц смежности и ин-
цидентности. Сформулируйте в терминах данных матриц
1) алгоритм Фалкерсона;
2) метод ДП решения задачи о кратчайшем пути.
18. В чем заключается сходство и в чем состоит различие между
задачами о кратчайшем пути на графах и орграфах?
19. Сформулируйте метод ДП решения задачи о кратчайшем пути
для смешанных (частично ориентированных) графов.
20. Задан орграф, каждой дуге которого поставлены в соответствие
два положительных числа: первое указывает длину дуги в на-
правлении ее ориентации, второе — длину дуги против ее ори-
ентации. Движение по дуге допускается в любом направлении.
Сформулируйте метод ДП решения задачи о кратчайшем пути
для графов подобного типа. (Данная задача моделирует сеть до-
рог с двусторонним движением и с различным числом полос или
различными условиями проезда на встречных направлениях).
21. Запишите основные расчетные формулы, применяемые при ре-
шении задач о кратчайшем и о максимальном пути на орграфах
методом ДП.
22. На основании каких принципов проводится исключение дуг ор-
графа при решении задач о кратчайшем и о максимальном пути
методом ДП?
23. Опишите структуру и порядок заполнения таблиц, используе-
мых при решении задачи о кратчайшем пути на орграфах ме-
тодом ДП.
24. В чем состоят особенности задачи о максимальном пути на ор-
графах?
25. Что такое сетевое планирование и для решения каких задач оно
применяется?
26. Сформулируйте основные понятия сетевого планирования.
27. В чем заключается аналогия и в чем состоит различие между
задачей о максимальном пути и задачей построения критического
пути на сетевом графике?
28. Дайте определения временным параметрам событий сетевых гра-
фиков и опишите методы их вычисления.
Задачи 169

Задачи для самостоятельного решения

3.1. Для орграфов, изображенных на рис. 3.29–3.36, выполнить сле-


дующие задания:
1) составить матрицу смежности и матрицу инцидентности (при
составлении матрицы инцидентности указать нумерацию дуг);
2) составить список смежности;
3) найти кратчайший путь из вершины 2 в вершину 8 двумя
методами — методом перечисления путей и методом ДП;
4) найти максимальный путь из вершины 9 в вершину 1 двумя ме-
тодами — методом перечисления путей и методом ДП на орграфе;
5) упорядочить вершины орграфа с помощью алгоритма Фалкер-
сона и выяснить, является ли орграф сетью;
6) если орграф является сетью, то найти исток и сток сети и пере-
рисовать граф так, чтобы исток находился слева, сток — справа,
а все дуги имели направление слева направо;
7) считая, если это возможно, орграф сетевым графиком, вычис-
лить временные параметры событий и найти критический путь.
3.2. Считая приведенные на рис. 3.29–3.36 графы неориентирован-
ными (т. е. игнорируя указанную стрелками ориентацию ребер), вы-
полнить следующие задания:
1) составить матрицу смежности и матрицу инцидентности графа;
2) построить все пути из вершины 3 в вершину 7;
3) найти кратчайший путь из вершины 2 в вершину 9 методом ДП;
4) найти кратчайший маршрут из вершины 1 в вершину 8 с про-
хождением через промежуточную вершину 5 методом ДП.

4
6
1 8
7 9
5
3
2 7
5
1 6 4
1
5 9
8 3
4
3 8

9 6
2

Рис. 3.29 Рис. 3.30


170 Глава 3. Динамическое программирование в теории графов

Рис. 3.31 Рис. 3.32

Рис. 3.33 Рис. 3.34

Рис. 3.35 Рис. 3.36


Задачи 171

3.3. Решить задачу об управлении порядком работ в следующей


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

Рис. 3.37 Рис. 3.38

Рис. 3.39 Рис. 3.40


172 Глава 3. Динамическое программирование в теории графов

зано число выполненных творческих операций, а по вертикали — число


выполненных рутинных операций. Точки на схемах, приведенных на
рис. 3.37–3.40, отвечают промежуточным положениям в ходе выполне-
ния операций, а числа между точками указывают время выполнения
соответствующих операций.
Требуется определить такой порядок выполнения операций, кото-
рый бы позволил выполнить четыре творческих и пять рутинных
операций за минимальное время.
3.4. Доказать, что в любом графе число вершин нечетной степени
четно.
3.5. Доказать, что если связный граф имеет n вершин, то он
является деревом в том и только в том случае, когда в нем имеется
n − 1 ребро.
3.6. Доказать, что если число ребер графа порядка n > 2 больше
2 , то граф является связным.
Cn−1
3.7. Доказать, что не существует графа, степени всех вершин ко-
торого попарно различны.
Указание. Применить метод математической индукции по порядку
графа, учесть, что в графе порядка n максимальная степень вершин
не превосходит n − 1, и рассмотреть изолированные вершины.
ЗАКЛЮЧЕНИЕ

В представленном учебном пособии рассмотрены теоретические основы клас-


сического метода ДП решения задач управления многошаговыми процессами,
детально разобран ряд примеров экономических задач данного типа, рассмот-
рены отдельные задачи теории графов, решение которых базируется на тех
же идеях, что и основной принцип оптимальности.
Рассмотренные в пособии задачи иллюстрируют логику метода ДП,
не представляют вычислительных сложностей и допускают «ручной» счет.
В то же время большинство реальных производственных задач являются
столь объемными, что не могут быть решены в разумные сроки без приме-
нения мощных вычислительных средств типа ЭВМ. Обозначенный «разрыв»
между уровнями требуемых средств не должен создавать впечатление недо-
статочной «приспособленности» изученного метода для решения реальных
задач; напротив, именно на объемных трудоемких задачах достоинства и пре-
имущества передовых математических методов — в том числе и метода ДП —
проявляются наиболее отчетливо.
В этой связи представляется целесообразным обучение студентов про-
граммным средствам, позволяющим решать подобные объемные задачи и
в то же время не требующим глубокого знания программирования и ню-
ансов математических методов. Среди таких программных средств можно
отметить табличный процессор Excel пакета Microsoft Office с надстройкой
«Поиск решения», специализированную систему QSB (Quantitative Systems
for Business) для решения типовых задач математического программирова-
ния, а также математические пакеты MathCAD, Matlab, Maple. Такой подход
в полной мере отвечает современным тенденциям математизации наук через
посредство компьютерных технологий и позволяет эффективно сочетать усто-
явшиеся традиционные методы преподавания математики «с мелом у доски»
с использованием современных программно-технических средств. Рассмотре-
ние данного вопроса в силу его компьютерной специфики оставлено за преде-
лами настоящего учебного пособия.
Остановимся коротко на некоторых направлениях развития и обобщения
метода ДП, определяемых как потребностями практики, так и теоретическими
интересами.

1. В рассмотренных задачах фазовые и управляющие переменные были


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

допустимых вариантов. Данное обстоятельство охарактеризовано известным


выражением Р. Беллмана как «проклятие многомерности».
2. В настоящем пособии рассматривались дискретные процессы, четко
подразделяющиеся на некоторое конечное число шагов. Некоторые задачи при-
водят к изучению непрерывных процессов, в которых роль номера шага иг-
рает время или иной непрерывный параметр, изменяющийся на конечном или
бесконечном числовом промежутке. При этом, в частности, суммы переходят
в интегральные соотношения, фигурирующие в классическом методе ДП.
3. В настоящем учебном пособии исходные данные всех задач были четко
определены, или, как говорят, детерминированы. На практике часто возни-
кают стохастические процессы, в которых и исходные данные, и получаемые
оптимальные решения являются случайными величинами, что значительно
усложняет исследование таких задач.
Изучение упомянутых вопросов осталось за рамками данного учебного по-
собия, главным образом, по причине их повышенной сложности, но может быть
предложено факультативно наиболее подготовленным и хорошо успевающим
студентам.
Высокая потенциальная эффективность математизации не реализуется са-
мопроизвольно, а требует подготовки математически грамотных специалистов.
Подчас даже неглубокой математической подготовки достаточно, чтобы по-
нять, на каком направлении деятельности предприятия или организации мо-
гут быть полезны математические оценки, прогнозы и оптимизация. Напро-
тив, недостаточный уровень подготовки и понимания возможностей матема-
тики может служить причиной отказа от применения математических методов
даже в тех случаях, когда они заведомо позволят выявить скрытые резервы
и дать значительный дополнительный экономический эффект.
Не подлежит сомнению, что изучение математики формирует си-
стемность и аналитичность мышления, исключительно важные для спе-
циалистов любых направлений. При этом важно показать, что мате-
матика не есть «абстрактное искусство», демонстрирующее излишнее
усложнение действительности, — ее изучение позволяет овладеть мощными
методами количественного анализа, имеющими широкие практические при-
ложения. Данное положение во многом определяет отношение студентов-
экономистов ко всему циклу математических дисциплин, одним из изящных
разделов которого и является динамическое программирование.
ЛИТЕРАТУРА

Основная литература
1. Беллман Р. Динамическое программирование. — М.: ИЛ, 1960. — 400 с.
2. Вагнер Г. Основы исследования операций, т. 2. — М.: Мир, 1973. — 488 с.
3. Вентцель Е. С. Исследование операций. Задачи, принципы, методология. — М.:
Высш. шк., 2001. — 208 с.
4. Вентцель Е. С. Элементы динамического программирования. — М.: Наука, 1964.
– 175 с.
5. Кузнецов А. В., Сакович В. А., Холод Н. И. и др. Сборник задач и упражнений
по высшей математике. Математическое программирование: Учеб. пособие. —
Минск: Выш. школа, 1995. — 382 с.
6. Кузнецов Ю. Н., Кузубов В. И., Волощенко А. Б. Математическое программи-
рование: Учеб. пособие. — М.: Высш. школа, 1980. — 300 с.
7. Руководство к решению задач по математическому программированию: Учеб.
пособие / А. В. Кузнецов, Н. И. Холод, Л. С. Костевич; Под общ. ред. А. В. Куз-
нецова. — 2-е изд., перераб. и доп. — Мн.: Выш. шк., 2001. — 448 с.
8. Кузнецов Б. Т. Математика: учебник для студентов вузов, обучающихся по
специальностям экономики и управления. — М.: ЮНИТИ-ДАНА, 2004. — 719 с.

Дополнительная литература
9. Арис Р. Дискретное динамическое программирование. Введение в оптимизацию
многошаговых процессов. М.: Мир, 1969. — 171 с.
10. Беллман Р., Дрейфус С. Прикладные задачи динамического программирова-
ния. — М.: Наука, 1965. — 458 с.
11. Бурков В. Н. и др. Сетевые модели и задачи управления. — М.: Сов. радио,
1967. — 144 с.
12. Габасов Р. Ф., Кириллова Ф. М. Основы динамического программирования. —
Мн.: Изд-во БГУ, 1975. — 264 c.
13. Голенко Д. И. Статистические методы сетевого планирования и управления. —
М.: Наука, 1968. — 400 с.
14. Калихман И. Л., Войтенко М. А. Динамическое программирование в примерах
и задачах: Учеб. пособие. — М.: Высш. школа, 1979. — 125 с.
15. Кузнецова В. Я., Резник И. Г., Качалина Л. М. Сетевое планирование и управ-
ление системами работ. — М.: МГРИ, 1984. — 44 с.
16. Мину М. Математическое программирование: Теория и алгоритмы. — М.: Наука,
1990. — 485 с.
17. Наумова Е. А. Методы динамического программирования в задачах управления
производством: Учеб. пособие. — СПб: Изд. центр. Мор. техн. ун-та, 1996. —
56 с.
18. Основные положения по разработке и применению систем сетевого планиро-
вания и управления. — М.: Экономика, 1974. — 216 с.
19. Хедли Дж. Нелинейное и динамическое программирование. М.: Мир, 1967. —
506 с.
Оглавление

Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Глава 1. Задачи управления многошаговыми процессами и метод
динамического программирования . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1. Основные понятия и постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2. Допущения метода динамического программирования . . . . . . . . . . . . 16
1.3. Замечания по оптимизации многошаговых процессов . . . . . . . . . . . . 17
1.4. Методика вычисления оптимального значения задачи . . . . . . . . . . . . 20
1.5. Принцип оптимальности Беллмана . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.6. Метод динамического программирования и его основные этапы . . . 26
1.7. Замечания по практическому применению метода динамического
программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Глава 2. Примеры решения типовых задач методом динамического
программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1. Задача о распределении инвестиций . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2. Задача о распределении инвестиций по максимуму нормы
прибыли . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.3. Задача о загрузке транспортного средства. . . . . . . . . . . . . . . . . . . . . . 58
2.4. Задача о замене оборудования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
2.5. Задача о распределении ресурсов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Задачи для самостоятельного решения . . . . . . . . . . . . . . . . . . . . . . . . . 85
Глава 3. Динамическое программирование в теории графов . . . . . . . . 90
3.1. Основные понятия теории графов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.2. Перечисление путей на графе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.3. Задача о кратчайшем пути . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.4. Решение задачи о кратчайшем пути методом динамического
программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.5. Задача о проектировании дороги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
3.6. Ориентированные графы и сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.7. Задача о кратчайшем пути на ориентированных графах . . . . . . . . . 125
3.8. Динамическое программирование на ориентированных графах . . . . 132
3.9. Задача об управлении самолетом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
3.10. Построение максимального пути. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
3.11. Динамическое программирование в задачах сетевого
планирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.12. Пример расчета параметров сетевого графика . . . . . . . . . . . . . . . . . . 162
Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Задачи для самостоятельного решения . . . . . . . . . . . . . . . . . . . . . . . . . 169
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Минимальные системные требования определяются соответствующими требова-
ниями программ Adobe Reader версии не ниже 11-й либо Adobe Digital Editions версии
не ниже 4.5 для платформ Windows, Mac OS, Android и iOS; экран 10"

Учебное электронное издание

Лежнёв Алексей Викторович

ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ В ЭКОНОМИЧЕСКИХ


ЗАДАЧАХ
Учебное пособие
Ведущий редактор М. Стригунова
Художник Н. Зотова
Технический редактор Е. Денюкова
Оригинал-макет подготовлен М. Копаницкой
в пакете LATEX 2ε с использованием кириллических шрифтов LH
семейства Computer Modern
Подписано к использованию 23.09.19.
Формат 145×225 мм
Издательство «Лаборатория знаний»
125167, Москва, проезд Аэропорта, д. 3
Телефон: (499) 157-5272
e-mail: info@pilotLZ.ru, http://www.pilotLZ.ru
В учебном пособии рассмотрены теоретические
основы классического метода динамического
программирования для решения задач управления
многошаговыми процессами. Детально разобран
ряд экономических задач данного типа,
рассмотрены отдельные задачи теории графов,
решение которых базируется на тех же идеях, что и
основной принцип оптимальности.

Изложение ведется на очень доступном уровне,


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

Пособие рассчитано на студентов экономических


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

Вам также может понравиться