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

Лабораторная работа № 3

Сетевые транспортные задачи (4 часа)

Цель работы.
Изучить и применить на практике численные методы линейного
программирования для сетевых транспортных задач.

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

вершин I и множество дуг U. Причем каждый элемент есть

упорядоченная пара элементов множества I. Если оба


множества I и U конечны, то граф конечен. Геометрически
множество I задается точками, а множество U – отрезками (дугами),
соединяющими эти точки.

Путем (цепью) в графе называется последовательность


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

Минимизация сети
Задача минимизации сети состоит в нахождении дуг, соединяющих
вершины сети (т.е. каждая пара вершин соединена цепью) и имеющих
минимальную суммарную длину. Очевидно, что решение задачи не должно
содержать циклов. Например, дан полный граф из трех вершин (рисунок 4.3).
На дугах, соединяющих вершины 1, 2, 3, указаны их длины. Необходимо
получить сеть, объединяющую все вершины с минимальной суммарной
длиной последовательности дуг.

Ясно, что в минимальную сеть войдут дуги (1, 3) и (3, 2) с общей


длиной, равной 10 (рисунок 4.4). Если соединить вершины 1 и 2, возникнет
цикл, и получающаяся сеть уже не будет минимальной.

В целом, задача минимизации сети состоит в том, чтобы из исходного

графа получить новый граф без циклов (так называемое дерево-

остов [1]) такой, что

Одним из самых простых алгоритмов построения требуемого графа


является метод, предложенный польским математиком Г. Штейнгаузом.
Выбрав любую вершину, ее следует соединить с ближайшим соседом, а
затем то же самое сделать со всеми остальными вершинами. Если
образовалась сеть, охватывающая все вершины, то задача решена. Если
вместо единого дерева получился лес не связанных друг с другом деревьев,
то необходимо связать эти деревья через ближайшие вершины.
Формально алгоритм можно представить в виде следующих шагов:
1) множество связных вершин Множество несвязных

вершин Выбираем

2) Если то решение найдено. Иначе на


шаг 3;

3) ищем вершину такую, что


4) и на шаг 2.
Пример 4.4. Проложить сеть дорог наименьшей протяженностью
(рисунок 4.5). Отсутствие дуги между двумя вершинами означает, что
соединение соответствующих пунктов связано с очень большими затратами
либо физически невозможно.

Решение:

1)

2)

3)

4)

5)

6)

7)

8)
9)

10)

11)
Получили два варианта минимальной дорожной сети (рисунок 4.6) с

общей протяженностью

Рисунок 4.6 - Варианты минимальной сети

Следует отметить, что при любом выборе начальной вершины


получается одно и то же оптимальное решение.

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


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

Алгоритм для сетей без циклов.


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

– расстояние на сети по дуге (i,j);

– кратчайшее расстояние от вершины 1 до вершины j, .

Расстояние от вершины 1 до вершины j определяется по формуле

т.е. кратчайшее расстояние до вершины j определяется после оценки

кратчайшего расстояния непосредственной до предыдущей вершины В

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


найдем кратчайший путь.

Этап 1.

Этап 2.

Этап 3.

Этап 4.

Этап 5.
Минимальное расстояние между вершинами 1 и 7 равно 13, а
соответствующий маршрут определяется дугами (1, 2), (2, 5), (5, 7), который
находится обратным ходом от вершины 7 послойно по дугам, для которых

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

означают расстояние между вершинами i и j, вторая цифра –

обратное расстояние

Алгоритм определения кратчайшего пути на сети с циклами до


вершины j заключается вначале в рекурсивном итеративном вычислении
кратчайших расстояний от исходной вершины «1» через различные соседние
вершины i по формуле:

где – кратчайшее расстояние до вершины j;

– кратчайшее расстояние до вершины i;

– длина дуги (i, j).


Итеративный процесс вычисления оценок и будет прекращен,

если будут выполнены условия для всех вершин j и i. В

противном случае корректируются оценки


Затем определяются сами пути обратным ходом от конечной вершины

до исходной по дугам, для которых выполняются условия


Блок-схема алгоритма представлена на рисунке 4.9.
Занесем исходные данные рассматриваемой сети в таблицу 4.14 и

рассчитаем начальные оценки и через надначальные элементы .


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

для каждого маршрута (i, j) величину которая должна

быть в случае оптимальности решения неположительной, Занесем


их также в таблицу в правый угол соответствующей клетки.

Условие оптимальности нарушается для при

Величина корректируется Далее


в последующих вычислениях, т.е. для используются измененные

значения. Других клеток с положительными значениями нет.

Исходные данные и новые оценки и показаны в таблице


4.15. Вычислим по ним величины и занесем в таблицу. Как видно, среди
них нет положительных.
Таблица 4.14 – Исходные данные рассматриваемой сети

Таблица 4.15 – Исходные данные и новые оценки и

Кратчайшее расстояние от вершины 1 до вершины 6 равно 8 единицам.


Определяем этот маршрут, начиная с шестого столбца и двигаясь к первой

строке через элементы, у которых Таковыми маршрутами будут: (1,


5), (5, 6) и (1, 5), (5,4), (4, 6).

Задача о максимальном потоке


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

при ограничениях:
1) поток по дуге в противоположных направлениях отличается по

знаку
2) поток по любой дуге не может быть больше ее пропускной

способности
3) для любой вершины, не являющейся ни источником, ни стоком,
величина суммарного входного потока должна быть равна величине

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


4) мощность исходящего потока для источника z должна совпадать с

мощностью входящего потока для стока s

Поток будем задавать матрицей Очевидно,

на главной диагонали этой матрицы стоят нули а ниже главной


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

неравенства называются ненасыщенными, а ребра, для которых

выполняются равенства – насыщенными.

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


сток s используются следующие шаги.

Шаг 1. Построить начальный допустимый поток (К –


номер итерации). Решение можно начать с нулевого потока. Однако с целью
ускорения решения следует начать с возможно большего начального потока.
Шаг 2. Определяем ненасыщенные дуги по матрице
Шаг 3. Выделяем путь состоящий из ненасыщенных дуг, ведущий
из z в 1. Если его нет, то – оптимальное решение и на шаг 5.

Шаг 4. Увеличиваем поток по этому пути на

величину получаем новый поток и на шаг 2.


Шаг 5. Определяем максимальный поток в сети из z в s.

Пример 4.7. Рассмотрим сеть на рисунке 4.10 с данными пропускными


способностями. Соответствующая матрица R пропускных способностей
приведена в таблице 4.16.

Таблица 4.16 - Матрица пропускных способностей R


z 1 2 3 s
z 0 6 3
1 7 0 5 1
2 2 3 0 5 2
3 2 4 0 4
s 2 5 0

Построим начальный допустимый план По

пути можно пустить

поток по пути можно

пустить поток
Тогда матрица будет равна
z 1 2 3 s
0 1 2 0 0
z
1 – 0 1
1
2 – 0 2
2
3 – 0 1
1
s – – 0
2 1
Матрица будет равна
z 1 2 3 s
0 5 1

z
1 8 0 5 0
2 4 3 0 5 0
3 3 4 0 3
s 4 6 0
Находим путь по ненасыщенным дугам

Величина Увеличиваем поток по найденному


пути, получаем затем
z 1 2 3 s
z 0 4 2
1 – 0 3 1
4
2 – – 0 3 2
2 3
3 – – 0 4
1 3
s – – 0
2 4
В матрице нет пути от z до 1 по ненасыщенным дугам. Тогда
матрица является матрицей максимальных потоков дуг. Максимальный

поток в сети будет равен Его величина может


быть определена через величину пропускной способности наименьшего
разреза сети [8, 14].
Разрезом сети называется множество дуг, соединяющих два
подмножества вершин сети Z и S, в одно из которых входит поток а в

другое сток При этом объединение а


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

разрез: Поскольку для любой дуги то поток по


разрезу не превосходит пропускной способности этого разреза,

т.е.

Следовательно, разрез с минимальной пропускной способностью будет


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

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

Метод Форда и Фалкерсона для решения задачи о максимальном


потоке z
Величина максимального потока из источника в сток равна величине
минимального разреза.
Предположим, что уже найден какой-либо допустимый поток
(например, нулевой поток является допустимым). Зададимся двумя
вопросами: 1) как, имея допустимый поток, определить, является ли он
оптимальным? 2) как в случае, если допустимый поток не является
оптимальным, получить другой допустимый поток больше по величине
данного?
Первоначально ответим на второй вопрос. Для этого для каждой дуги
выясним, каким из двух приведенных свойств обладает каждая из дуг сети: 1)
поток по дуге (i, j) меньше, чем пропускная способность дуги (i, j), что,
естественно, означает, что поток по дуге может быть увеличен. Множество
таких дуг сети обозначим I; 2) поток по дуге (i, j) положителен, что означает,
что он может быть уменьшен. Множество таких дуг сети обозначим R.
В качестве иллюстрации множеств I и R рассмотрим сеть,
изображенную на рисунке 4.11.

Рисунок 4.11 – Сеть


Дуга (1, 2) принадлежит множеству I, дуга (1, 3) принадлежит
множествам I и R, дуга (3, 4) принадлежит множеству R, дуга (2, 4)
принадлежит множеству I.
Теперь можем описать процедуру метода Форда и Фалкерсона
расстановки меток для построения потока большей величины, чем данный.
Шаг 1. Присвоим метку источнику (вершине 1).
Шаг 2. Присвоим остальные метки вершинам и дугам (кроме дуги (4,
1)), исходя из следующих правил: 1) если вершина х имеет метку, а
вершина y не помечена и дуга (х, у) I, то пометим дугу (х, у) и вершину у. В
этом случае дуга (х, у) называется дугой прямого направления; 2) если
вершина х имеет метку, а вершина у не помечена и дуга (у, х) R, то
пометим дугу (х, у) и вершину у. В этом случае дуга (у, х) называется дугой
обратного направления.
Шаг З. Продолжаем процедуру расстановки пометок до тех пор, пока
либо не будет помечен сток, либо не останется непомеченных вершин.
Если в ходе реализации данной процедуры сток оказывается
помеченным, то можно показать, что существует последовательность
помеченных дуг (назовем ее С) из источника в сток. Изменяя потоки дуг,
входящих в С, можно построить поток большей величины, чем исходный. Для
того чтобы убедиться в этом, рассмотрим два случая: 1)
последовательность С содержит только дуги прямого направления; 2)
последовательность С содержит дуги как прямого, так и обратного
направления.
В каждом из этих случаев мы покажем, как получить поток большей
величины, чем данный.
Рассмотрим случай 1. Пусть i (х, у) — максимальная величина, на
которую может быть увеличен поток по дуге без нарушения ограничения
на пропускную способность. Положим k = min i (x, y).
(х, у) С
Тогда k > 0. Для того чтобы модифицировать поток в сторону
увеличения, увеличим значения величин потоков на всех дугах из С на
величину k. В этом случае ни одно из ограничений на пропускные способно-
сти нарушено не будет. Легко видеть, что условия сохранения потока для
всех вершин также будут удовлетворяться. Следовательно, новый поток, с
одной стороны, является допустимым, а с другой стороны, имеет величину
на к большую, чем исходный.
Рассмотрим случай 2. В этом случае в последовательность С входят
как дуги прямого направления так и обратного. Пусть r (х, у) – максимальная
величина, на которую поток может быть уменьшен по дуге (х, у).
Положим также k1 = min r(x, y) и k2 = min i(x, y).
(х,у) С R
(х,у) С I
Обе величины k1 и k2, а следовательно, и min (k1, k2) > 0. Для того
чтобы модифицировать поток в сторону увеличения, увеличим значения
величин потоков на всех дугах из С прямого направления на величину min
(k1, k2), а на всех дугах из С обратного направления уменьшим величину
потока на эту же величину min (k1, k2). В этом случае ни одно из ограничений
на пропускные способности нарушено не будет. Легко видеть, что условия
сохранения потока для всех вершин также будут удовлетворяться.
Следовательно, новый поток, с одной стороны, является допустимым, а с
другой стороны, он имеет величину на min (k1, k2) большую, чем исходный.
Если сток не может быть помечен, то это означает, что поток является
максимальным. Для обоснования этого рассуждения рассмотрим понятие
разреза.
Определение 1. Выберем любое множество V, содержащее сток, но не
содержащее источник. Тогда множество дуг (х, у) для которых х V, а у
V называется разрезом сети.
Определение 2. Величиной разреза называется сумма пропускных
способностей дуг, входящих в разрез.
Разрез – это множество дуг, удаление которых из сети приводит к тому,
что невозможно пройти из источника в сток по оставшимся дугам. В сети
существует несколько разрезов. Например, для сети, изображенной на
рисунке 4.11 существуют следующие разрезы:
1) для множества V = {2, 4} разрез состоит из множества дуг {(1, 2), (3,
4)}.
Величина разреза равна 2 + 1 = 3;
2) для множества V = {1, 2, 4} разрез состоит из множества дуг {(1, 2),
(1, 3)}.
Величина разреза равна 2 + 8 = 10.
Лемма 1 и лемма 2 устанавливают связь между разрезами и
максимальным потоком.
Лемма 1. Величина любого допустимого потока из источника в сток не
больше, чем величина любого разреза.
Доказательство. Рассмотрим произвольный разрез, определяемый
множеством V. Пусть W – все остальные вершины сети, не входящие в
множество V. Пусть xij – величина потока для дуги (i, j), a z – общая величина
потока из источника в сток. Если просуммировать условия сохранения потока
для всех вершин из множества W, то поскольку значения потоков для дуг (i, j),
для которых вершина i и вершина j принадлежат множеству W, сократятся, то
в результате останется

. (4.1)

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


величины разреза, можно сделать вывод о справедливости леммы 1.
Лемма 2. Если сток не может быть помечен, то величина некоторого
разреза сети равна величине потока.
Доказательство. Пусть V – множество непомеченных вершин, а W –
множество помеченных вершин. Рассмотрим дуги (i, j), для которых i W,
a j V, тогда для них справедливо xij = cij. Это следует из того, что в
противном случае мы смогли бы пометить вершину j из множества V (так как
дуга (i, j) является дугой прямого направления), что противоречило бы
определению множества V. Рассмотрим дуги (i, j), для которых i V, a j W,
тогда для них справедливо xij = 0. Это следует из того, что в противном
случае мы смогли бы пометить вершину i из множества V (так как дуга (i, j)
является дугой обратного направления), что противоречило бы определению
множества V.
Тогда из соотношения (4.1) видно, что величина разреза равна
величине потока.

Задача о минимальном остове


Пусть дан связный неориентированный граф Г = (V, R), где как
обычно V= {1, ..., n}. Каждому ребру (i, j) R приписано некоторое число cij >
0. Назовем остовом графа Г любое такое подмножество R' множества
ребер R, что Г` = (V, R`) есть связный (неориентированный) граф. Длиной
остова R' называется величина

,
т.е. сумма длин ребер, входящих в R'.
Требуется найти остов графа Г, имеющий наименьшую длину.
Задачи такого вида часто возникают на практике.
Пример 4.8. В городе имеются шесть вычислительных центров, между
каждыми двумя из которых необходимо установить связь, возможно, через
другие центры. На рисунке 4.12 показано, между какими центрами можно
установить непосредственную связь и какими при этом будут затраты на
прокладку кабеля с учетом городских условий.

Рисунок 4.12 – Шесть вычислительных центров и связи между ними

Возникает вопрос, при каком способе соединения центров затраты


будут наименьшими? Мы пришли к задаче указанного вида.
Описываемый далее алгоритм решения задачи о минимальном остове
состоит из n шагов.
На нулевом (вспомогательном) шаге выбирается произвольная
вершина, например вершина 1, и полагается V1 = {l}, R1 = .
К началу к-го шага (к = 1, ..., n – 1) даны множества Vk V и Rk R,
образующие связный граф Гk = (Vk , Rk). Выберем такое ребро (ik, jk) , у
которого начало ik лежит в множестве Vk , конец jk – в его дополнении V \ Vk и
которое имеет наименьшую длину среди всех таких дуг, т.е.

(ik, jk) R, ik Vk, jk Vk

и =
= min cij : (ik, jk) R, i Vk, j Vk

После этого полагаем Vk+1 = Vk { jk }, Rk+1 = Rk {(ik , jk)}.


Ясно, что Гk+1 =(Vk+1, Rk+1) есть связный граф, так как новая вер-
шина jk связана с любой вершиной из множества Vk через вершину ik.
Поскольку на каждом шаге к множеству Vk добавляется ровно одна
вершина, то на шаге к = n – 1 мы получим, что Vn = V. При этом, согласно
сказанному, Гn =(V, Rn) есть связный граф, т.е. по определению Rn является
остовом исходного графа, Г = (V, R ).
Теорема. Множество Rn есть остов минимальной длины. Перед тем как
доказать эту теорему, продемонстрируем работу алгоритма на примере
графа, указанного на рисунке 4.12.
Решение. Шаг 0. Полагаем V1 = {1}, R1 = .
Шаг 1. Минимальным среди чисел c12 = 4, c13 = 6, c14 = 5 является c12.
Поэтому полагаем V2 = {1, 2}, R2 = {(1, 2)}.
Шаг 2. Минимальным среди чисел c13 = 6, c14 = 5, c23 = 1, c25 = 7
является c23. Поэтому полагаем V3 = {l, 2, 3}, R3 = {(1, 2), (2, 3)}.
Шаг З. Минимальным среди чисел c14 = 5, c25 = 7, c34 = 2, c35 = 5, c36 = 4
является c34. Поэтому полагаем V4 = {1, 2, 3, 4}, R4 = {(1, 2), (2, 3), (3, 4)}.
Шаг 4. Минимальным среди чисел c35 = 5, c25 = 7, c36 = 4, c46 = 5
является c36.
Поэтому полагаем
V5 ={1,2,3,4,6}, R5 ={(1, 2), (2,3), (3, 4), (3, 6)}.
Шаг 5. Минимальным среди чисел c35 = 5, c25 = 7, c65 = 1 является c65.
Поэтому полагаем
V6 ={1, 2, 3, 4, 6, 5}, R6 ={(1, 2), (2, 3), (3, 4), (3, 6), (6, 5)}.
Таким образом, минимальные затраты на прокладку кабеля дос-

тигаются при соединении пар центров из вершины R6 и равны (R6) = 4 + 1 +


2 + 4 + 1 = 12. Минимальный остов изображен на рисунке 4.13.
Рисунок 4.13 – Минимальный остов

Теперь докажем приведенную теорему, для простоты ограничившись


случаем, когда все числа cij ((i, j) R) различны.
Доказательство. Пусть R* – остов наименьшей длины и Rn ≠ R*. Ясно,

что Rn не может лежать целиком в R*, так как иначе (Rn) < (R*) и,
значит, R* не есть решение задачи. Тогда найдется такая дуга (i, j) Rn, что
(i, j) R*. Согласно построению множества Rn существует такой индекс к
{1, ..., n}, что (i, j) = (ik, jk). Поскольку Г* = (V, R*) – связный граф, то
вершины ik и jk могут быть соединены некоторым маршрутом, все дуги
которого лежат в R*. Начало ik этого маршрута лежит в Vk, а конец jk не
лежит. Следовательно, найдется такая дуга (r, s) этого маршрута, что r
Vk и s Vk. Тогда по определению дуги (ik, jk) (и с учетом различности
чисел cij) имеем

< crs. (4.2)

Введем множество ребер R' = R* {(ik, jk)\ {(r, s)}}, образованное


из R* путем замены ребра (r, s) на ребро (ik, jk). Граф Г' = (V, R') является
связным, поскольку вершины r и s соединены маршрутом, проходящим через

дугу (ik, jk). В то же время из (4.2) имеем (R') < (R*), но


· это противоречит тому, что R* – остов наименьшей длины. Таким
образом, Rn = R*.

Варианты заданий
Сформулировать и реализовать одним из рассмотренных методов
математические модели для следующих задач:
1. минимизации сети
2. нахождения кратчайшего маршрута
3. определения максимального потока.

Порядок выполнения работы


Лабораторная работа рассчитана на 4 часа аудиторных занятий,
включающих в себя следующее:

1. Изучить теоретический материал по теме.


2. Разобрать примеры реализации.
3. Разработать алгоритм одного из методов реализации задания в
соответствии с вариантом.
4. Составить программу.
5. Получить и проанализировать результаты работы программы.
6. Оформить отчет о проделанной работе в соответствии с
требованиями.

Требования к отчету
Отчет по лабораторной работе распечатывается в виде твердой
копии и состоит из следующих пунктов:
- Вариант индивидуального задания;
- Краткое описание метода реализации;
- Текст программы;
- Результаты работы программы;
- Анализ полученных результатов;
- Выводы о проделанной работе.

Контрольные вопросы
1. Укажите способы решения ТЗЛП с промежуточными
пунктами.
2. Можно ли решить задачу о назначениях методом,
используемым для решения ТЗЛП?
3. Дайте содержательные постановки задач
- минимизации сети,
- нахождения кратчайшего маршрута,
- максимального потока.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ


1. Таха Х. Введение в исследование операций: Кн.1, 2. – М.:
Мир, 1985.
2. Акоф Р., Сасиени М. Основы исследования операций. – М.:
Мир, 1971.
3. Сакович В.А. Исследование операций.– Минск: Высшая
школа, 1985.

Вам также может понравиться