Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3533 / 125 | Оценка: 4.44 / 4.11 | Длительность: 13:45:00
Специальности: Программист, Математик
Лекция 16:

Потоки

< Лекция 15 || Лекция 16: 1234
Аннотация: В этой лекции будем рассматривать ориентированные графы без петель и кратных ребер: задачу о максимальном потоке и метод увеличивающих путей.

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

В этой лекции будем рассматривать ориентированные графы без петель и кратных ребер. Для вершины x множество всех входящих в нее ребер обозначается через E^{+}(x), а множество выходящих - через E^{-}(x). Сетью называется орграф, в котором:

  1. каждому ребру e приписано положительное число c(e), называемое пропускной способностью ребра ;
  2. выделены две вершины s и t, называемые соответственно источником и стоком, при этом E^{+} (s)=E^{-}(t)=\varnothing.

Вершины сети, отличные от источника и стока, будем называть внутренними.

Пусть задана сеть N с множеством вершин V и множеством ребер E. Функция f с вещественными значениями, определенная на E, называется потоком в сети N, если она удовлетворяет следующим условиям:

  • (1) 0\le f(e)\le c(e) для каждого ребра e ;
  • (2) \suml_{e\in E^{+}_{} (x)}f(e) =\suml_{e\in E^{-}_{}
(x)}f(e) для каждой внутренней вершины x.

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


Рис. 16.1.

Условие (2), называемое условием сохранения потока, иногда удобно представлять в несколько иной форме. Пусть f - любая числовая функция, определенная на ребрах сети. Дивергенцией функции f в вершине x называется величина

\mathop{\rm div}\nolimits_{f} (x)=\sum_{e\in E^{-} (x)}f(e) -\sum _{e\in E^{+}
(x)}f(e).

Заметим, что для любой такой функции f имеет место равенство

\suml_{x\in V}\mathop{\rm div}\nolimits_{f} (x) =0, ( 1)

так как каждое ребро является входящим для одной вершины и выходящим для другой, и, следовательно, каждое ребро e в этой сумме представлено двумя слагаемыми: f(e) и -f(e).

Условие сохранения означает, что дивергенция потока в каждой внутренней вершине должна быть равна 0. Поэтому из равенства (1) следует, что для потока f

\mathop{\rm div}\nolimits_{f} (s)+ \mathop{\rm
div}\nolimits_{f}(t)=\suml_{e\in E^{-} (s)}f(e)-\suml_{e\in E^{+}
(t)}f(e)  =0.

Величина

M(f)=\mathop{\rm div}\nolimits_{f} (s)=\suml_{e\in E^{-}(s)}f(e)

называется величиной потока. В примере на рис. 16.1 M(f)=4. Задача о максимальном потоке состоит в том, чтобы для данной сети найти поток наибольшей величины.

< Лекция 15 || Лекция 16: 1234
Петр Петров
Петр Петров

произведение графов К(2)*О(4) фактически 4 отдельных графа К(2)?

Александр Лаврентьев
Александр Лаврентьев

много инструкций вида if - then - else

Например Procedure DFS(a) опишите каким образом следует понимать вложенность инструкций. Как в языке С ? 

т.е. следующее 

if (...) then (...)

if (...) then (...)

else(...)

 

раскрывается как 

if (...) then (...)

if (...) then (...)

         else(...)

или так :

if (...) then

 {  (...)

     if (...) then (...)

              else(...)

}

обьясните пожалуйста.

 

 

Дмитрий Крюков
Дмитрий Крюков
Россия, Москва
Андрей Посохов
Андрей Посохов
Россия, Санкт-Петербург