Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Знания.doc
Скачиваний:
30
Добавлен:
30.07.2019
Размер:
7.94 Mб
Скачать

27. Транспортные задачи в сетевой постановке (транспортные сети)

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

И сходный граф транспортной задачи легко сводится к сети с одним стоком и одним истоком путем введения фиктивных пунктов t (исток) и s (сток). Фиктивным дугам приписываются значения параметров: dti=ai, djs=bj, Cti=Cjs=0. Пример сети транспортной задачи без промежуточных пунктов приведен на рис. 5.6.

Модель Тd-задачи в сетевой постановке имеет вид:

Cijxijmin; (5.29)

kt, ks; (5.30)

(5.31)

В сбалансированной транспортной задаче

Z=ai=bj; (5.32) 0xijdij. (5.33)

Равенства (5.30) отражают условия баланса для всех пунктов кроме источника и стока. Баланс для последних представлен уравнением (5.31). В модели использованы обозначения: множество дуг, входящих в вершину k и выходящих из нее, Z – новая величина, называемая потоком сети.

Наибольший интерес представляет постановка задачи, в которой критерием является поток сети:

Z max; (5.34)

kt, ks; (5.35) (5.36)

0xijdij. (5.37)

Задача (5.34) – (5.37) называется задачей о максимальном потоке. Она имеет большое практическое значение. Для нее разработаны алгоритмы, которые эффективнее методов решения транспортных задач. Они работают непосредственно с сетью как разновидностью графов.

В связи с этим напомним понятие разреза графа (сети), которое используется в основополагающей теореме Форда-Фалкерсона.

Пусть дан ориентированный граф G=(V,U), где V и U - множества вершин и дуг соответственно. Разрезом сети на подмножестве вершин AV, A, AV, tA, sV\A называется множество дуг ijU таких, что iA jV\A. Обозначим его P(A). Сумма пропускных способностей дуг разреза называется величиной (пропускной способностью) разреза:

Пример 5.5. Построим один из разрезов сети, приведенной на рис.5.7.

Е сли A={t,1,2,3}, то разрезом будет множество дуг P(A)={1,4; 1,6; 2,5; 3,6}, а его величина определяется как d(A)=d14+d16+d25+d36. Дуги, составляющие этот разрез, выделены жирными линиями.▲

Разрез сети, имеющий минимальную пропускную способность, называется минимальным разрезом.

Можно показать, что задачи максимизации потока и минимизации величины разреза являются двойственной парой. Из этого факта следует Теорема Форда и Фалкерсона:

Величина потока сети (от истока к стоку) не превосходит пропускной способности минимального разреза и существует максимальный поток, величина которого равна пропускной способности минимального разреза.

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

Аналогом цикла пересчета является увеличивающая цепь. Это цепь, соединяющая исток и сток, все дуги которой допустимые. Дуга является допустимой увеличивающей, если ее направление совпадает с направлением потока и поток на ней меньше пропускной способности, то есть xij<dij. Дуга считается допустимой уменьшающей, если направление дуги противоположно потоку и xij >0.

На увеличивающей дуге поток может возрасти на величину ij=dij-xij, а на уменьшающей дуге возможно снижение потока, равное ij=xij. Следовательно, максимальное допустимое изменение величины потока по увеличивающей цепи определяется как минимальное из возможных:

0= (5.38)

Таким образом, максимальный поток сети может быть определен по следующему алгоритму.

  1. Задать начальную величину потока, обеспечиваемую потоками дуг при выполнении условий (5.35)-(5.37).

Примечание. Очевидно, что в качестве начального всегда можно взять нулевой поток.

  1. Построить увеличивающую цепь. Если построить невозможно, то решение завершено.

  2. По формуле (5.38) вычислить 0.

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