Transcript
Page 1: Транспортные сети

Транспортные сетиТранспортные сети

ХНУРЭ, кафедра ПО ЭВМ, Тел. 7021-446, e-mail: [email protected]

Лекция 15Лекция 15

Н.В. БелоусН.В. Белоус

Факультет компьютерных наук

Кафедра ПО ЭВМ, ХНУРЭ

Компьютерная дискретная математикаКомпьютерная дискретная математика

Page 2: Транспортные сети

Основные определенияОсновные определения

Сеть – это связный ориентированный граф без петель, в котором:

1. Имеется только одна вершина (узел), в которую не заходит ни одна дуга, называемая входом (истоком) x0

2. Имеется только одна, вершина (узел), из которой не выходит ни одна дуга, называемая выходом (стоком) z

3. Каждой дуге u присвоена числовая характеристика C(u)0, которая называется пропускной способностью дуги u

2

Page 3: Транспортные сети

Пример транспортной сетиПример транспортной сети

x0 – вход сетиz – выход сетиxi (i0) – промежуточные вершины.

3

x0

x1 x2

x4 x3

z

2

5

7

3 914

6

4

12

3

11

Page 4: Транспортные сети

Поток сетиПоток сети

Потоком на транспортной сети называется функция (u), заданная на множестве дуг сети, которое удовлетворяет свойствам:

1)

2) .

4

)u(C)u(0

xx UuUu

)u()u(

xUxU

множество дуг, входящих в вершину х

множество дуг, выходящих из вершины х

поток в транспортной сети

zUuUu z0x

)U()U(

z

Page 5: Транспортные сети

Основные определенияОсновные определения

Дуга u называется насыщенной, если поток (u)=C(u)

Дуга u называется свободной если (u)=0

Дуга u называется занятой, если (u)>0

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

5

Page 6: Транспортные сети

Какая дуга?Какая дуга?

6

x0

x1 x2

x4 x3

z

2/2

5/2

7/0

3/0 9/114/1

6/1

4/3

12/0

1/1

11/1

Page 7: Транспортные сети

Разрез транспортной сетиРазрез транспортной сети

Разрезом называется множество дуг, соединяющих вершины множества и .

7

zUuUu AA

)U()U(

AUu

)U(C)A(C

AUAU

совокупность вершин сети такая, что а .

совокупность вершин сети такая, что а .

множества дуг, входящих в вершины множества А

множества дуг, выходящих из вершин множества А

A

A Ax0 Az

Ax0 Az

AA AAA UUU

Page 8: Транспортные сети

ПримерПример

8

A

x0

x1 x2

x4 x3

z

}z,x{ 3

A

AU

AU

}x,x,x,x{ 4210

{(x0,x3), (x1,x3), (x1,z), (x2,z)}

{(x3,x4)}

Page 9: Транспортные сети

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

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

9

Page 10: Транспортные сети

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

Если в транспортной сети для некоторого разреза V и величины потока z имеет место C(A)=z , то V обладает минимальной пропускной способностью в сети, а z является максимальным для данной сети.

10

Page 11: Транспортные сети

ПримерПример

11

3

12

4

x0

x1 x2

x4 x3

z

1/1

6/3

2/11/1

3/0

2/2

5/2

3/3

1/1

zxxxxx 23410

zxxx 210

zxxxx 2410

zxxx 2405

z

6

zxxxx 3410 4

zxxxx 2340

7 zxxx 340

Page 12: Транспортные сети

Алгоритм Форда-ФалкерсонаАлгоритм Форда-Фалкерсона

Алгоритм в основном включает 2 этапа:

1.Нахождение полного потока.

2.Нахождение максимального потока, с помощью передачи меток.

12

Page 13: Транспортные сети

1.Нахождение полного потока1.Нахождение полного потока

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

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

Для каждой дуги выбранного пути прибавляем к числителю минимальную полученную разность ∆.

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

13

Page 14: Транспортные сети

2.Нахождение максимального потока, с 2.Нахождение максимального потока, с помощью передачи метокпомощью передачи меток

Увеличение потока z сети состоит в разметке вершин индексами, указывающими путь, по которому возможно изменение потока. Если разметка достигает вершины z, то поток можно увеличить по пути, соответствующему полученной разметке.

Увеличение потока возможно до тех пор, пока в результате разметки вершина z получает метки.

14

Page 15: Транспортные сети

2.Нахождение максимального потока, с 2.Нахождение максимального потока, с помощью передачи метокпомощью передачи меток

Шаг 1. Помечаем вершину х0 индексом

Шаг 2. Если xi уже имеет пометку, то:

Метка приписывается всем непомеченным вершинам, которые связаны с xi ненасыщенной

дугой, ведущей из xi к данной вершине. Метку получают все вершины y, удовлетворяющие

условиям:

y – непомеченная

Метку получают все непомеченные вершины, связанные занятой дугой, идущей из данной вершины в вершину xi . Метку получают все вершины y, удовлетворяющие условиям:

15

0

+i

)y,x(C)y,x(,U)y,x( iii

0)y,x(,U)x,y( ii

-i

у – непомеченная

Page 16: Транспортные сети

2.Нахождение максимального потока, с 2.Нахождение максимального потока, с помощью передачи метокпомощью передачи меток ( (продолжениепродолжение))

Шаг 3. Если в результате такой разметки окажется помеченная вершина z, то переходим к пункту 4. В противном случае, поток, полученный на предыдущем цикле, был максимальным.

Шаг 4. Строим путь от х0 к z, все вершины которого

соответствуют номерам меток предыдущих вершин с точностью до знака. Построение пути начинается от вершины z. Поток во всех дугах пути изменяется по следующим правилам:

16

если если направление дуги u и направление потока в сети совпадаютесли дуга u и направление потока противоположны

,1)u(

,1)u(

),u(

)u(

u

1zz

Page 17: Транспортные сети

Пример нахождения максимального Пример нахождения максимального потока и минимального разреза сетипотока и минимального разреза сети

z,x,x,x 4101

17

x0 x2 x4

x1

z7/6

3/0

10/7 7/6

1/02/1

11/93/2

5/2

x3

16/11

Для заданной транспортной сети найдем максимальный поток и минимальный разрез при помощи алгоритма Форда-Фалкерсона

12z

x0 x2 x4

x1

z7/6

3/0

10/7 7/6

1/02/1

11/93/2

5/2

x3

16/11

11z

Находим путь, по которому возможно увеличение потока

Величина начального потока в сети:

10/8 7/7

1/1Вычисляем ∆

∆=1

Увеличиваем поток

Величина потока в сети:

Page 18: Транспортные сети

Продолжение примераПродолжение примера

18

12z x0 x2 x4

x1

z7/6

3/0

2/1

11/93/2

5/2

x3

16/11

10/8 7/7

1/1Величина потока в сети:

13z

x0 x2 x4

x1

z7/6

3/0

10/8 7/7

1/12/1

11/93/2

5/2

x3

16/11

Находим путь, по которому возможно увеличение потока z,x,x,x,x 32102

10/9

11/1016/12

Вычисляем ∆

∆=1

Увеличиваем поток

Величина потока в сети:

2/2

Page 19: Транспортные сети

Продолжение примераПродолжение примера

19

14z

x0 x2 x4

x1

z7/6

3/0

10/9 7/7

1/12/2

11/103/2

5/2

x3

16/12

Находим путь, по которому возможно увеличение потока z,x,x,x 3203

Вычисляем ∆

∆=1

Увеличиваем поток

Величина потока в сети:

13z x0 x2 x4

x1

z7/6

3/0

10/9 7/7

1/12/2

11/103/2

5/2

x3

16/12

Величина потока в сети:

11/11

5/3

16/13

Page 20: Транспортные сети

Продолжение примераПродолжение примера

20

15z

x0 x2 x4

x1

z7/6

3/0

10/9 7/7

1/12/2

11/113/2

5/3

x3

16/13

Находим путь, по которому возможно увеличение потока z,x,x 304

Вычисляем ∆

∆=1

Увеличиваем поток

Величина потока в сети:

14z x0 x2 x4

x1

z7/6

3/0

10/9 7/7

1/12/2

11/113/2

5/3

x3

16/13

Величина потока в сети:

3/316/14

Page 21: Транспортные сети

Продолжение примераПродолжение примера

Расставляем метки

z,x,x,x,x 34205

21

x0 x2 x4

x1

z

+4

0

+0

-2 +3+07/6

3/0

10/9 7/7

1/12/2

5/3

11/11

16/143/3

Строим путь от х0 к zПолученный путь:

Изменяем поток во всех дугах пути

7/5

3/1

5/4

16/15

x3

15z

16z

Вычисляем ∆∆=1

Page 22: Транспортные сети

Продолжение примераПродолжение примера

Расставляем метки

z,x,x,x,x 34206

22

x0 x2 x4

x1

z

+4

0

+0

-2 +3+07/5

3/1

10/9 7/7

1/12/2

5/4

11/11

16/153/3

Строим путь от х0 к zПолученный путь:

Изменяем поток во всех дугах пути

7/4

3/2

5/5

16/16

x3

16z

17z

Вычисляем ∆∆=1

Page 23: Транспортные сети

Продолжение примераПродолжение примера

23

x0 x2 x4

x1

z

+4

0

+0

-2 +3+07/6

3/2

10/9 7/7

1/12/2

11/11

16/163/3

5/5

x3

x0 x2 x4

x1

z

0

+0

7/6

3/2

10/9 7/7

1/12/2

11/1116/16

3/3

5/5

x3

Повторяем процесс расстановки меток до тех пор, пока вершина z получает метку. Если она не получила метку, то поток, который получили на предыдущем шаге, максимальный.

z,x,x,xA 432

10 x,xA

Множество вершин разреза:

Множество : A

173527)A(

Разрез образуют дуги: (x1,x4),(x1,x2),(x0,x2),(x0,x3)

Пропускная способность разреза

Величина максимального потока сети равна величине минимального разреза

17 )A(MAX