книги / Математические методы принятия решений
..pdf(максимальным) остовом графа {сети) называют дерево с мини мальным (максимальным) весом среди всех связующих деревьев этого графа. Вес дерева определяют как сумму весов (длин) его дуг. Весом (длиной) дуги называют число, соответствующее некоторой характеристике дуги (расстоянию, стоимости и т. п.). Каждой ду ге Ац (или (г, j)) ставят в соответствие положительное число 6^ , называемое пропускной способностью дуги (ребра).
В сети выделяют два специальных узла: один из них называют
источником N$, а другой — стоком Nt-
Сеть можно рассматривать как водопроводную систему, в ко торой трубы соответствуют дугам, источник воды — источнику Na, сток воды —стоку Nt, а соединения между трубами — остальным узлам сети. В качестве пропускной способности дуги выступает по перечное сечение трубы.
Потоком из источника Ns (или s) в сток Nt (или t) сети назы вают множество неотрицательных чисел хц, поставленных в соот ветствие некоторой дуге сети, если эти числа удовлетворяют следу
ющим линейным условиям-ограничениям: |
|
|
|
||
—v, |
если |
j |
= s, |
|
|
|
О, |
если |
j |
Ф s ,j Ф t, |
(3.1) |
|
v, |
если |
j |
= t, |
|
v ^ O , 0 ^ Xij' I J |
< |
u l j l |
6 |
N. |
(3.2) |
|
^ |
b^, г, j |
|
|
|
Здесь первая сумма берется по дугам, ведущим в узел N j, а вторая сумма —по дугам, ведущим из узла N j. Неотрицательное число v называют величиной потока. Число называют потоком по ду ге Aij, или дуговым потоком. Ограничения (3.1) выражают тот факт, что в каждый узел (кроме источника и стока) приходит столь ко потока, сколько из него уходит (условие сохранения потока). Ограничение (3.2) означает, что поток Zÿ по дуге ограничен про
пускной СП О СО бнО СТЬЮ ДУГИ bij.
Очевидно, что задача нахождения величины максимального по тока в любой сети является задачей ЛП: максимизировать функцию
г> = 2 x Sj при условиях-ограничениях (3.1), (3.2). Однако в силу j
специфики задачи сетевые методы решения здесь оказываются бо лее эффективными, чем симплекс-метод, применяемый для реше ния общей задачи линейного программирования.
Если сеть является цепью N \, А2, N 2, . . . , |
Nk с источником Ni |
и стоком Nk, максимальная величина потока, |
который может быть |
пропущен через сеть, ограничивается минимальной пропускной способностью дуг этой сети. Дуга с минимальной пропускной спо собностью является узким местом в сети. В произвольной сети узкое место определяют разрезом. Пусть X —некоторое подмноже ство узлов сети, X — дополнение подмножества X (объединение X и X определяет множество узлов сети). Разрезом {X, X ) называют множество всех дуг Aij, для которых Ni е X , Nj е X . Таким обра зом, разрез представляет собой множество дуг, удаление которых из сети превращает сеть в несвязанную. Разрез (X , X ) называют
разделяющим узлы N s и Nt (или отделяющим узел N s от узла iVt),
если N s е Х , Nt е X . Пропускной способностью |
с(Х , X ) разре |
за, или величиной разреза, называют сумму 2 h j, |
которую берут |
|
_ |
по всем ориентированным дугам, соединяющим Nie X и Nj е X. При определении разреза учитывают все дуги между узлами под множества X и подмножества X , а при определении пропускной способности разреза —только пропускные способности дуг, соеди няющих узлы N ie X с узлами Nj е X, ориентированные дуги, соединяющие узлы N ie X с узлами Nj е X , не учитывают. По этому в общем случае с(Х , X ) ф с(Х , X).
Ясно, что в силу ограничений (3.1), (3.2) максимальный поток меньше или равен пропускной способности любого разреза, разде
ляющего Ns и Nt'. |
|
v ^ |
XV ~ 2 xji' |
NteX |
NieX |
NjeX |
NjeX |
Влюбой сети величина максимального потока из источника Ns
всток Nt всегда равна минимальной пропускной способности всех
разрезов, разделяющих Ns и Nt. Разрез, разделяющий Ns и Nt и обладающий минимальной пропускной способностью, называют минимальным разрезом. Эти утверждения объединены в теореме о максимальном потоке и минимальном разрезе.
Обозначим через Fst множество неотрицательных чисел х ^ , удовлетворяющих ограничениям (3.1), (3.2). Будем называть путь из N s в Nt увеличивающим поток Fst, если Xij < bij на всех пря мых дугах и х ^ > 0 на всех обратных дугах этого пути. Поток Fst максимален тогда и только тогда, когда не существует пути, увели чивающего поток Fst■
Величина максимального потока в любой сети принимает, безусловно, единственное значение. Однако могут существовать несколько различных максимальных потоков Fst, имеющих оди наковые значения. Могут существовать и несколько минимальных разрезов в сети.
Итак, всякая задача о потоке в сети может быть сформулиро вана как задача ЛП, но общая задача линейного программирования не всегда имеет целочисленное решение. Здесь нас будет интересо вать подкласс тех задач ЛП, которые обладают целочисленным оп тимальным решением. Задача линейного программирования с огра ничениями
71
O i j X j ^ Ь{, î — 1 , 2 , . . . , 771, X j ^ 0 , j = 1 , 2 , . . . , п ,
j = 1
всегда имеет целочисленное оптимальное решение при любом це лочисленном векторе ограничений b = {b\,bz,..., Ьт)Т, если матрица (прямоугольная таблица чисел)
|
( а\\ |
ап |
&\п ^ |
А = |
а>2\ |
Ü22 |
&2п |
|
|
|
|
|
\&т1 |
0>т2 |
Qтп) |
является абсолютно унимодулярной.
Матрицу А называют абсолютно унимодулярной, если все ее
миноры равны либо |
0, либо ± 1. Минором k-го порядка, k ^ m , |
k ^ n , для матрицы А |
является определитель матрицы к-го поряд |
ка, построенной из элементов, стоящих на пересечении произволь ных к столбцов и к строк матрицы А.
Целочисленность оптимального решения означает, что выпук лый многогранник, определяемый ограничениями
П
имеет целочисленные крайние точки при любом целочисленном векторе Ь, если матрица А абсолютно унимодулярна. Оказывает ся, что условие абсолютной унимодулярности матрицы А является не только необходимым, но и достаточным для целочисленного оп тимального решения.
Проверить унимодулярность матрицы А, вычислив всевозмож ные миноры, достаточно сложно. Существуют достаточные, но не необходимые условия абсолютной унимодулярности матрицы А, которые проверить гораздо легче. Матрица А абсолютно унимоду лярна, если:
1)каждый ее элемент равен 0, + 1, —1;
2)каждый ее столбец содержит не более двух ненулевых эле ментов;
3)строки матрицы А можно разбить на два непересекающихся множества R\ и Яг таким образом, что:
а) если столбец из А содержит два ненулевых элемента одного
знака, то один из них входит в R \, другой — в Яг;
б) если столбец из А содержит два ненулевых элемента с про тивоположными знаками, то оба они входят либо в Л ь либо в Яг-
Приложение потоковых моделей
На практике часто встречаются задачи, которые могут быть сформулированы в виде задач о кратчайшей цепи, о потоке ми нимальной стоимости, о максимальном потоке и т. п. Например, задача о кратчайшей цепи заключается в следующем. Заданы мно жества дуг и узлов. Каждой дуге А ^ поставлена в соответствие величина су, равная стоимости единицы потока по этой дуге. Тре буется найти цепь из источника N 3 в сток N t, минимизирующую стоимость единицы потока из N s в Nt. Примером подобной задачи может быть задача о замене устаревшего оборудования на новое.
Здесь минимизируются общие затраты на закупку и обслужива ние оборудования, если ликвидационная стоимость при различных сроках службы оборудования, а также эксплуатационные расходы
ирасходы на техническое обслуживание и текущий ремонт в каж дый промежуток времени считаются известными. Обычно задают
ивеличину периода планирования.
Значительное место в приложениях занимают сетевые задачи, связанные с планированием и составлением расписания выполне ния работ по осуществлению больших проектов, по проведению научных исследований и опытных, конструкторских разработок. Сетевые задачи решают также при составлении расписаний движе ния транспорта, календарного планирования, распределения ресур сов и т. д.
Вболее общей интерпретации дугу сети представляют как звено
вмеханизме, предназначенном для транспортировки потока, кото рый может протекать по дуге в единицу времени, что определяет пропускную способность дуги.
Многие обобщения задачи о максимальном потоке по существу сводят к поиску максимального потока в сети, к легко осуществи мому поиску некоторых цепей сети. Примером одной из таких задач является задача о потоке в сети с несколькими источниками и сто ками, когда заданы мощности источников и возможности (спрос) стоков. В данной задаче множество всех узлов разбивается на под множества источников S, промежуточных узлов R и стоков Т. Каж дому узлу N {e S ставится в соответствие неотрицательное число щ (возможности), а каждому узлу Nj е Т — неотрицательное число bj (спрос).
Возникает система ограничений
У , xij ~ |
xki = |
Nie S, |
|
3 |
|
к |
|
У |
xij ~ |
%ki = 0? |
Nie R, |
3 |
|
к |
|
У |
xij ~ У xkj = bj, |
Nj e T, |
|
i |
|
к |
|
О ^ Xij ^ bij.
Если потоку разрешается течь из любого источника в любой сток, то эта задача легко сводится к задаче с одним источником и од ним стоком путем добавления одного дополнительного источника и одного дополнительного стока (рис. 3.1). Помимо этого добавляют
Рис. 3.1. Сведение сетевой задачи к задаче с одним источником и одним стоком
новые ориентированные дуги, ведущие из дополнительного источ ника S во все стоки Ni и имеющие пропускные способности а*, a также ориентированные дуги с пропускными способностями bj, ведущие из каждого источника N j в дополнительный сток Т. Те перь задача об удовлетворении требуемого спроса заданным пред ложениям (возможностям) сводится к нахождению максимального потока в расширенной сети.
сток |
, |
источник |
|
о |
|
Рис. 3.2. Исходная (а) и расширенная (б) сети
Если в сети с несколькими источниками и стоками поток должен идти из определенных источников в заданные стоки, возникает так называемая задача о многопродуктовых потоках в сети.
Получим еще одно обобщение задачи о потоке, если для каж дой дуги введем ограничение на пропускную способность и сверху, и снизу (рис. 3.2), т. е.
О ^ lij ^ ^ij ^ bij •
Требуется определить, существует ли поток из источника N s в сток Nt, удовлетворяющий на дугах ограничениям сверху и снизу.
Пусть в сети имеется только одна ориентированная дуга
с ограниченным снизу дуговым потоком Uj. Расширим сеть, доба вив два новых узла — искусственный источник N j с предложени ем kj и искусственный сток N с таким же спросом 1ц. Пропускную способность дуги Aij при этом изменим: если она была равна bij, то в новой сети она станет равной — 1^. Добавим, кроме того, ориентированную дугу из Nt в N s с бесконечной пропускной спо собностью. Будем искать в расширенной сети максимальный поток из источника Nj в сток N . Если величина этого потока в расши
ренной сети больше или равна 1^ , а поток по дуге А и |
равен x ta, |
то в исходной сети существует такой поток из N s в |
N величи |
ны v = xts, что Uj ^ Xij. Исходная и расширенная сети приведены на рис. 3.2, а, б. Если в сети имеется несколько дуг, обладающих нижними границами для дуговых потоков, то следует:
1) ввести несколько искусственных источников и стоков (см. рис. 3.2, б);
2)задачу с несколькими источниками и стоками свести к задаче
содним источником и одним стоком введением дополнительного источника и дополнительного стока, как это было сделано в преды дущей задаче (см. рис. 3.1).
§ 3.2. Задача о покупке автомобиля
Одним из примеров задачи о наикратчайшей сети, или о сети наименьшей стоимости, является задача об оптимизации расходов на приобретение и эксплуатацию автомобиля.
Со временем эксплуатационные расходы на содержание авто мобиля заметно возрастают, да и сам автомобиль устаревает мо рально и технически. Возникают вопросы: когда следует заменить автомобиль и что принять за критерий, определяющий необходи мость его замены? Выберем в качестве критерия общие затраты на покупку и содержание автомобиля за некоторый период време ни t. Для определенности будем полагать следующее: t = 8 лет; в начальный момент автомобиля нет; решение о покупке автомо биля может приниматься в начале каждого года исходя из затрат
на его приобретение, эксплуатационных расходов за период, в тече ние которого автомобиль будет использоваться, и ликвидационной стоимости автомобиля в момент его замены на новый. Предполо жим, что замена автомобиля должна совершаться по крайней мере каждые 4 года. На рис. 3.3 изображена сеть для рассматриваемой задачи.
Рис. 3.3. Сеть для задачи о покупке автомобиля
Началу каждого года соответствует узел. Если автомобиль куп лен в начале г-го года, а заменен в начале j-ro года, то такому варианту соответствует дуга (г, j). Общие затраты в течение этого периода (на дуге (г, j )) выразятся формулой
з- 1
су = Pi + Yimk~S3’
k=1
где Pi — стоимость автомобиля в начале г-го года, тп^ — эксплуата ционные расходы в течение к -го года, Sj —ликвидационная стои мость автомобиля в начале j-ro года. Значения су для рассматри ваемого случая приведены в табл. 3.1.
Таблица 3.1
Общие затраты по дугам
Шаг |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1 |
1450 |
2750 |
3850 |
4750 |
|
|
|
|
2 |
|
1700 |
3200 |
4450 |
5450 |
|
|
|
3 |
|
|
1850 |
3425 |
4750 |
5800 |
|
|
4 |
|
|
|
1950 |
3650 |
5050 |
6150 |
|
5 |
|
|
|
|
2075 |
3875 |
5350 |
6500 |
6 |
|
|
|
|
|
2200 |
4100 |
5650 |
7 |
|
|
|
|
|
|
2325 |
4325 |
8 |
|
|
|
|
|
|
|
2450 |
Вследствие инфляции и модернизации автомобилей возрастает стоимость автомобиля и увеличиваются расходы на его содержание. Оптимальному решению данной задачи соответствует кратчайшая цепь из источника s = 1 в сток t = 9. Поэтому цепь можно рас сматривать как цепь, минимизирующую стоимость единицы потока из узла 1 в узел 9 при условии, что стоимость единицы потока по дуге (г, j) равна с^, г = 1,..., 8, j = 2 , ... , 9. Для решения этой задачи воспользуемся алгоритмом Дейкстры (Дикстры).
В алгоритме Дейкстры минимизируется либо стоимость, либо время прохождения единицы потока по данной цепи. Каждой дуге ориентированной сети ставится в соответствие обобщенная стои мость дуги Cij. Фиктивным («бесплатным») дугам приписывается
стоимость Cij = 0, а каждой паре узлов г, j, |
для которых не суще |
|||||
ствует дуги, соединяющей их, — стоимость |
= оо. |
|||||
Математическая постановка этой задачи следующая: |
||||||
|
S |
I Cj'jX'ij |
^ min |
|
||
при условиях |
|
1 |
3 |
|
|
|
|
^ |
|
x sj ~ |
Xjs = |
|
|
|
3 |
|
|
3 |
|
|
|
^ \ 3C{j |
^ ] 3Cji = 0, |
|
i^ t , |
||
|
3 |
3 |
|
|
|
|
|
x tj ~~ |
xjt = |
~ |
fij ^ O» |
Cij ^ 0 . |
|
3 |
3 |
|
|
|
|
|
Получили задачу ЛП с неизвестными Xij —величинами потока между г-м и j - м узлами. Согласно первому равенству единица пото ка вытекает из источника s, а согласно третьему — единица потока втекает в сток t. Второе равенство гарантирует сохранение потока при протекании по сети (естественно, не рассматриваются источ ник s и сток t). В качестве кратчайшей цепи может быть взята последовательность смежных дуг (г, j ), для которых Xij = 1.
В алгоритме Дейкстры узлам приписывают либо временные, либо постоянные пометки. Первоначально каждому узлу, исключая источник, приписывают пометку, соответствующую длине крат чайшей дуги, ведущей из источника в данный узел. Источнику приписывают постоянную пометку, значение которой равно нулю.
Каждому узлу, в который нельзя попасть непосредственно из ис точника, приписывают временную пометку оо, а остальным уз лам — временные пометки cSJ, j ф s. Если определено, что узел принадлежит кратчайшей цепи, его пометка становится постоян ной. Алгоритм Дейкстры основан на следующем простом факте: если известна кратчайшая цепь из узла s (источника) в узел j и узел к принадлежит этой цепи, то кратчайшая цепь из s в к является частью первоначальной цепи, оканчивающейся в узле к. Алгоритм начинает работать при j = s. Затем величина j увели чивается на единицу; при j — t алгоритм завершает свою работу. Итерационная процедура алгоритма состоит в следующем. Для заданного узла j обозначим «длину» кратчайшей цепи cSj из ис точника s в узел j. Если эта «длина» не может быть «улучше на», то соответствующее значение называют постоянной пометкой. В противном случае «длину» называют временной пометкой. Сна чала постоянную пометку присваивают только источнику. Каждая другая пометка является временной и ее величина равна длине дуги, ведущей из источника в соответствующий узел. Для опреде ления «ближайшего» к источнику узла выберем временную пометку с минимальным значением и объявим ее постоянной пометкой. Для получения этой постоянной пометки необходимо следующее.
1.Рассмотреть оставшиеся узлы с временной пометкой. Срав нить величину каждой временной пометки с суммой величины по следней из постоянных пометок и «длины» дуги, ведущей из со ответствующего постоянно помеченного узла в рассматриваемый узел. Минимальная из двух сравниваемых величин определяется как новая временная пометка рассматриваемого узла. Если вели чина старой временной пометки меньше второй из сравниваемых величин, то пометка остается прежней.
2.Среди временных пометок выбрать ту, значение которой ми нимально, и объявить ее постоянной пометкой. Если при этом по стоянную пометку приписывают узлу t (стоку), то завершаем рабо ту, в противном случае переходим к п. 1.
Для решения примера рассмотрим следующий алгоритм.
Ш аг 0. Припишем источнику (узлу 1) постоянную пометку 0, а узлам 2 ,..., 9 —временные пометки cSj —оо. Постоянные пометки заключены в квадратные скобки.