Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Лекции по ТПР - файл Лекция№09.doc


Загрузка...
Лекции по ТПР
скачать (681.7 kb.)

Доступные файлы (18):

Лекция№01-тпр.doc38kb.12.11.2008 13:15скачать
Лекция№02-тпр.doc97kb.12.11.2008 13:25скачать
Лекция№03-тпр.doc179kb.12.09.2004 22:30скачать
Лекция№04-тпр.doc146kb.12.09.2004 22:31скачать
Лекция№05-тпр.doc131kb.12.09.2004 22:32скачать
Лекция№06-тпр.doc248kb.12.09.2004 22:33скачать
Лекция№09.doc177kb.03.10.2006 21:09скачать
Лекция№10-тпр.doc179kb.12.09.2004 22:49скачать
Лекция№11-тпр.doc353kb.25.11.2005 11:46скачать
Лекция№12-тпр.doc205kb.12.09.2004 22:53скачать
Лекция№13-тпр.doc191kb.12.09.2004 22:54скачать
Лекция№14-тпр.doc83kb.14.12.2004 14:25скачать
Лекция№15-тпр.doc301kb.12.09.2004 23:02скачать
Лекция№16-тпр.doc131kb.12.09.2004 23:04скачать
Лекция№17-тпр.doc542kb.12.09.2004 23:03скачать
Лекция№7-тпр.doc142kb.12.09.2004 22:38скачать
Лекция№8-тпр.doc93kb.12.09.2004 22:44скачать
Лекция№9-тпр.doc142kb.12.09.2004 22:47скачать

Лекция№09.doc

Реклама MarketGid:
Загрузка...
Лекция №9.

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


Пусть задана транспортная сеть, состоящая из множества узлов J с номерами и множества дуг D, соединяющие некоторые из этих узлов между собой.

Предполагается, что сеть является симметрическим графом, т.е. если дуга (i,j) входит в сеть, то в неё входит и симметрическая дуга (j,i), хотя реально такой дуги может и не быть. Каждой дуге поставлено в соответствие число dij , называемое пропускной способностью дуги. Величина dij определяет максимальное количество продукции, которое может быть переведено по дуге (i,j) в единицу времени. Узел с номером Ø имеет неограниченный запас продукции и называется источником, а узел с номером n имеет неограниченную потребность в эой продукции и называется стоком. В остальных узлах, которые называются промежуточными, запас продукции или потребность в ней равны нулю.

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

Данная постановка справедлива для смешанных и неориентированных графов, т.е. множество D может содержать дуги и рёбра, только дуги или только рёбра.

Для математической постановки задачи введём переменные xij - количество продукции, перевозимое по дуге (i,j). Эта велчина называется потоком по дуге (i,j). Тогда математическая модель задачи будет иметь вид:


(1)

(2)

(3)


Целевая функция (1) отражает величину потока по сети, которая должна быть максимизирована. Очевидно, поток на сети равен количеству продукции, вывозимой из источника или ввозимой в сток. Равенство (2) для промежуточных узлов записано из условия баланса: количество продукции, привозимого в узел, должно равняться количеству продукции, вывозимого из узла. Ограничения (3) очевидны. Модель (1)- (3) относиться к классу ЗЛП. Однако существует более эффективеый алгоритм решения этой модели. Это алгоритм Форда.

Важную роль в обосновании алгоритма Форда решения задачи о максимальном потоке играет понятие разреза сети.

Множество всех узлов сети разбивается на два непересекающихся подмножества R и так, чтобы источник а сток . Если выделить все дуги, начальные узлы которых принадлежат подмножеству R, а конечные - , то эти дуги будут образовывать разрез сети (R,), отделяющий источник от стока n.

Таким образом , разрезом сети называется совокупность всех дуг (i,j) , которые исходят из узлов и заканчиваются в узлах . Каждый разрез сети характеризуется пропускной способностью d (R,), которая численно равна сумме пропускных способностей дуг, образующих разрез, т.е.

d (R,)=

Очевидно, что любой путь из источника в сток содержит хотя бы одну дугу разреза (R,). Поэтому если удалить все дуги какого-либо разреза, то все пути из источника в сток будут блокированы. Поскольку пропускная способность пути равна наименьшей из пропускных способностей дуг, входящих в этот путь, то величина потока V перемещаемого по всем возможным путям, соединяющим исток со стоком, не может превышать пропускной способности любого разреза сети, т.е. V≤ d(R,). Следовательно, если удастся постоить такой поток, что его величина V * окажется равной пропускной способности некоторого разреза (R*,*) , т.е. V *= d(R*,*), этот поток и будет максимальным, а (R*,*) - разрезом с минимальной пропускной способностью.

Теорема Форда – Фалкерсона.



Алгоритм решения задачи о максимальном потоке основан на теореме Форда – Фалкерсона о максимальном потоке и минимальном разрезе. Для рассмотрения этой теоремы вводятся понятияо прямой и обратной дуги цепи. Под цепью в данном случае понимается последовательность сцепленных дуг сети без учёта их ориетации. Дугу, принажлежащую некоторй цепи, называют прямой, если её направление совпадает с направлением обхода узлов этой цели, и обратной - в противном случае например, цепь µ=(3,5,4,7,6,8) на рис.1, связывающая узел 3 с вершиной 8, содержит три прямые дуги (3,5), (4,7), (6,8) и две обратные (4,5), (6,7).






Теорема. В любой сети максимальная величина потока из источника в сток равна пропускной способности минимального разреза сети.

Доказательство. Пусть имеем максимальный поток в сети. Если xij=dij, то говорят, что дуга (i,j) насыщена потоком. Предполагается, что V* величина максимального потока в сети. Необходимо доказать, что найдется такой разрез (R*,*) на этой сети, пропускная способность которого равна V* , т.е. V *= d(R*,*).

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

Узлы , составляющие подмножество ^ R , определяются последовательно , начиная с источника Ø , по следующему правилу : Ø = R ; если и xij < dij

то ; если и xji >0, то . (4)

Применение правила (4) приводит к построению разреза. Очевидно, разрез будет построен в том случае , если сток .

Пусть сток . Тогда из правила (4) следует , что существует цепь из истока Ø в сток n с пропускной способностью больше нуля µ=(i1,i2,…,in), где i1= Ø, in=n. Это следует из того , что все прямые дуги , входящие в цепь, ненасыщенные (xisis+1< disis+1 ), а для всех обратных дуг ( is+1,is ) величина потока xis+1is>0.

Пусть δ1 наименьшая разность между пропускной способностью и величиной потока, взята по всем прямым дугам цепи µ , а δ2 - наименьшая величина потока, взятая по всем обратным дугам этой цепи. Далее определяется величина δ= min(δ1, δ2) > 0 и увеличивается поток по всем прямым дугам цепи на δ ,а на ту же величину уменьшается поток по всем обратным дугам цепи. Таким образом, величина нового потока равна V+ δ , что противоречит предположению о максимальности V . Следовательно предположение неверно, и , а множество дуг (R,) есть разрез, отделяющий исток от стока.

Пропускная способность построенного разреза равна максимальному потоку на сети. Действительно, из правила (4) нахождения подмножества R следует , что если

, , то xij = dij ; в противном случае узел j входил бы в R.

Таким образом,



Теорема доказана.


Алгоритм Форда нахождения максимального потока на сети.


Исходные данные заносятся в таблицу размерности (n+1) × (n+1) . Если дуга , то в соответствующей клетке таблицы записывается значение dij.

Если обратная дуга , то в соответствующей клетке записывается значение dji, если дуга , то в клетке (j,i) записывается Ø.

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

*

j

i

Ll00000 0







n

0






d0j



d0n



















i

di0



dij



din



















n

dn0



dnj








Каждый шаг алгоритма Форда состоит из трёх действий.

1.Находится путь по таблице из узла- истока Ø в узел-сток n с пропускной способностью больше 0. Для этого столбец, соответствующий узлу-истоку, отмечается знаком *. Далее отыскиваются в строке с номером 0 элементы dij > 0 и столбцы, в которых они находятся, отмечаются сверху номером просматриваемой строки (цифрой 0). В результате окажутся выделенными все дуги (0, j) c положительными пропускными способностями. Эти дуги могут служить первыми дугами пути из истока в сток.

Далее просматриваются те строки, номера которых совпадают с номерами отмеченных столбцов. В каждой такой строке i отыскиваются элементы dij > 0, находящиеся в непомеченных столбцах, и эти столбцы отмечаются номером просматриваемой строки. Таким образом, окажутся выделенными дуги, которые могут служить вторыми дугами путей из истока в сток.

Аналогичный просмотр строк продолжается до тех пор, пока: а) либо не будет помечен столбец с номером n (сток) что означает выделение пути с пропускной способностью больше нуля из истока в сток; б) либо нельзя помечать новые столбцы (в просматриваемых строках не окажется положительных элементов ) , при этом столбец с номером n также останется не отмеченным.

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

В случае ”а” искомый путь µ из источника в сток находится используя пометки столбцов. Пусть последний столбец n помечен номером k , тогда дуга (k,n) последнее звено искомого пути. Далее просматривается столбец с номером k, пусть отметка этого столбца l. Тогда дуга (l,k) предпоследнее звено искомого пути и т.д.Этот процесс продолжается до тех пор, пока не найдётся отметка *, т.е. отметка истока Ø. Пусть эта отметка будет цифра m. Таким образом путь от истока к стоку будет состоять из дуг µ=(( Ø,m),…, (l,k), (k,n)). (5)

2.Клетки , соответствующие дугам этого пути, отмечаются знаком (–), а симметричные им клетки, т.е. соответствующие обратным дугам – знаком (+). По найденному пути (5) можно пропустить максимально возможный поток, величина которого равна Θ =min { dij- }.Эта величина Θ отнимается от всех пропускных способностей клеток, отмеченных знаком (–) и прибавляется к пропускным способностям клеток, отмеченных знаком (+). В результате получается новая таблица, в которой записаны неиспользованные пропускные способности дуг после пропускания максимального потока по пути (5).

По новой таблице опять отыскивается, уже другой , путь от истока к стоку, состоящий из дуг с неиспользованными пропускными способностями. Если такой путь существует, то по этому пути пропускается максимально возможный поток из истока в сток. После этого корректируется таблица аналогично как на этапе 1.

Это процесс продолжается до тех пор, пока не будет иметь место случай б).

3.Пусть имеется случай б), т.е. когда не существует пути из истока в сток, состоящий из дуг с неиспользованными пропускными способностями. Это означает, что найдены все возможные пути перевозки продукции и задача решена. Для определения максимального потока на сети V* в последней таблице выделяются отмеченные столбцы, номера которых образуют множество R*, причём исток *. В результате получается минимальный разрез (R*,*) и по теореме Форда- Фалкерсона




Для нахождения значений потоков по дугам xij*, образующих поток V* из элементов первой таблицы вычитаются соответствующие элементы последней таблицы. Если в клетке получается неотрицательная величина , то она оставляется; если – отрицательная, то в клетке записывается . Значения заполненных клеток будут соответствовать потокам по дугам xij*. Причём




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




1. * 0 0 1 2

i j


0


1


2


3


4

0

1

2

3

4



0

0+


17


4

0

19-

4


6

0+


12

8


0



9-

24

24



Θ1= min (19,9)=9.


2. * 0 0 1 3

i j


0


1


2


3


4

0

1

2

3

4



0+

9


17-


4

0+

10

4


6

9


12-

8


0+



24-

24


Θ2= min (17,12,24)=12.

3. * 0 0 2 3

i j


0


1


2


3


4

0

1

2

3

4



12

9+


5


4

12

10-

4


6+

9



8-


12



12-

24



Θ3= min (10,8,12)=8.


4. * 0 0 1 2

i j


0


1


2


3


4

0

1

2

3

4



12

17


5


4

12

2

4


14

9



12



4

24


Пути из 0 в 4 нет! Определяются множества: R*={0,1,2}, ={3,4}.


(R*,*)=((1,3),(2,3),(2,4))

d(R*,*)=V*=12+8+9=29


5. В заключительной таблице положительные элементы определяют потоки по дугам xij*.



i j


0


1


2


3


4

0

1

2

3

4



-12

-17


12


0

0

17

0


-8

-9


12

8


-12



9

20

24









Скачать файл (681.7 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru