Хакасский государственный университет им. Н.Ф. Катанова

     Структуры и алгоритмы обработки данных

   Лекция: Графы: кратчайшие пути и
            максимальные потоки.

       Николай Гребенщиков, www.grebenshikov.ru
Задача поиска кратчайшего пути




                                 1
Задача поиска кратчайшего пути

Дан граф G = (V, E) с весовой функцией w : E → R.

Вес пути p = v0, v1, . . . , vk равен суммарному весу входящих
                        k
в него ребер. w(p) =         w(vi−1, vi)
                       i=1

Вес кратчайшего пути из вершины u в вершину v опреде-
ляется соотношением:
                        p
          
          min w(p) : u → v ,       если имеется путь отu к v
δ(u, v) =
          ∞,                       в противном случае

Кратчайший путь из вершины u в вершину v - это любой
путь p, что w(p) = δ(u, v)
                                                           2
Задача поиска кратчайшего пути


 • из заданной вершины во все остальные


 • между всеми парами вершин




                                          3
Свойство кратчайщего пути

Пусть p = v1, v2, . . . , vk - кратчайший путь из вершины
v1 к вершине vk в заданном взвешенном ориентированном
графе G = (V, E) с весовой функцией w : E → R, а pij =
 vi, vi+1, . . . , vj - частичный путь пути p, который проходит
из вершины vi к вершине vj для произвольных i и j (1 ≤ i ≤
j ≤ k). Тогда pij - кратчайший путь из вершины vi к
вершине vi.




                                                         4
Отрицательные ребра и циклы




                              5
Релаксация (ослабление)




                          6
Поиск путей из заданной вершины: Алгоритм Дейкстры
(Dijkstra)




                                              7
Алгоритм Дейкстры




                    8
Анализ алгоритма Дейкстры для очереди с прорететами
в виде кучи

T (G) = Θ(V ) + Θ(V logV ) + Θ(V (logV + deg()logV )) = Θ((V +
E)logV )




                                                         9
На семинар


 • Алгоритм Беллмана-Форда


 • Поиск кратчайших путей из одной вершины в ориентиро-
   ванных ациклических графах


 • Разностные ограничения и кратчайшие пути




                                                  10
Поиск путей из всех пар вершин: Алгоритм Флойда-
Вашалла

(k)
dij - кратчайший путь из вершины i в j, в котором все внут-
ренние точки пути выбраны из множества {1, 2, . . . , k}




                                                      11
Алгоритм Флойда-Вашалла

 (0)
dij = wij

 (k)        (k)   (k−1)      (k−1)
dij = min(dij , dik       + dkj      ), k ≥ 1


Результирующая матрица: d(n)




                                                12
Алгоритм Флойда-Варшалла




                           13
Анализ: алгоритма Флойда-Варшалла

T (G) =?




                                    14
На семинар


 • Алгоритм Джонсона для разреженных графов




                                              15
Транспортная сеть - ориентированный граф, в котором
каждое ребро имеет неотрицательную пропускную спо-
собность c(u, v) > 0 Транспортная сеть имеет две специаль-
ных вершины источник s и сток t. Если (u, v) ∈ E ⇒ c(u, v) =
                                             /
0.

Поток в графе - есть функция f : V × V → R, обладающая
следующими свойствами


 • Ограничение пропускной способности: f (u, v) ≤ c(u, v)


 • Антисимметричность: f (u, v) = −f (v, u)


 • Сохранение потока: для всех u ∈ V − s, t ⇒         f (u, v) = 0
                                                v∈V

                                                            16
Потоки




         17
Величина потока f опеределяется как |f | = sumv∈V f (s, v)

Задача о максимальном потоке: дана некоторая транс-
портная сеть, и необходимо найти поток максимальной ве-
личины.




                                                       18
Метод Форда-Фалкерсона


FordFulkersonMethod(G, s, t)
1   Задаем значение потока f равным 0
2   while существует увеличивающи путь p
3        do увеличиваем поток f вдоль пути p
4   return f




                                               19
Остаточные сети

Остаточная пропускная способность:

cf (u, v) = c(u, v) − f (u, v)

Остаточная сеть есть граф

Gf (V, Ef ), Ef = (u, v) ∈ V × V : cf (u, v) > 0




                                                   20
Остаточные сети




                  21
Для заданных транспортной сети G = (V, E) и потока f уве-
личивающим путем p является путь из s в t в остаточной
сети Gf


Пропускная способность пути: cf (p) = min cf (u, v) : (u, v) ∈ p

Увеличивающий поток:
             
             cf (p),
             
                           если(u, v) ∈ p,
fp(u, v) =
             
                 −cf (p),   если(v, u) ∈ p,
             
             
                 0,         в противном случае



                                                        22
Разрез транспортной сети - разбиение множества V = S       T,
что s ∈ S, а t ∈ T

Пропускная способность разреза - c(S, T ) = 12 + 14 = 26

Чистый поток - f (S, T ) = 12 + (−4) + 11 = 19




                                                      23
Минимальный разрез - разрез с минимальной пропускной
способностью.

Торема о максимальном потоке и минимальном разрезе

Следующие утверждения эквивалентны:


 • f - максимальный поток в G


 • Остаточная сеть Gf не содержит увеличивающих путей.


 • |f | = c(S, T ) для некоторого разреза (S, T ) сети G.

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




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




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




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

T (G) = Θ(E) + O(Ef ∗) = O(Ef ∗)




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

T (G) = Θ(E) + Θ(E|f ∗|) = Θ(E|f ∗|)

Плохой случай:




                                       29
На семинар


 • Алгоритм Эдмондса-Карпа


 • Поиск максимального паросочетаня в двудольном графе


 • Алгоритм проталкивания предпотока


 • Алгоритм “поднять и в начало”



                                                 30
Список литературы


 • David M. Mount, The Lecture notes: Design and Analysis
   of Computer Algorithms. [Электронный ресурс] / Dept. of
   Computer Science, University of Maryland, 2004. - Режим
   доступа: http://www.cs.umd.edu/ mount/451/Lects/451lects.pdf
   . - сс.49-55, 118-125


 • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-
   мы: построение и анализ, 2-е издание. - М. : Издатель-
   ский дом “Вильямс”, 2007. сс.663-794.


                                                    31

Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры и алгоритмы обработки данных"

  • 1.
    Хакасский государственный университетим. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Графы: кратчайшие пути и максимальные потоки. Николай Гребенщиков, www.grebenshikov.ru
  • 2.
  • 3.
    Задача поиска кратчайшегопути Дан граф G = (V, E) с весовой функцией w : E → R. Вес пути p = v0, v1, . . . , vk равен суммарному весу входящих k в него ребер. w(p) = w(vi−1, vi) i=1 Вес кратчайшего пути из вершины u в вершину v опреде- ляется соотношением: p  min w(p) : u → v , если имеется путь отu к v δ(u, v) = ∞, в противном случае Кратчайший путь из вершины u в вершину v - это любой путь p, что w(p) = δ(u, v) 2
  • 4.
    Задача поиска кратчайшегопути • из заданной вершины во все остальные • между всеми парами вершин 3
  • 5.
    Свойство кратчайщего пути Пустьp = v1, v2, . . . , vk - кратчайший путь из вершины v1 к вершине vk в заданном взвешенном ориентированном графе G = (V, E) с весовой функцией w : E → R, а pij = vi, vi+1, . . . , vj - частичный путь пути p, который проходит из вершины vi к вершине vj для произвольных i и j (1 ≤ i ≤ j ≤ k). Тогда pij - кратчайший путь из вершины vi к вершине vi. 4
  • 6.
  • 7.
  • 8.
    Поиск путей иззаданной вершины: Алгоритм Дейкстры (Dijkstra) 7
  • 9.
  • 10.
    Анализ алгоритма Дейкстрыдля очереди с прорететами в виде кучи T (G) = Θ(V ) + Θ(V logV ) + Θ(V (logV + deg()logV )) = Θ((V + E)logV ) 9
  • 11.
    На семинар •Алгоритм Беллмана-Форда • Поиск кратчайших путей из одной вершины в ориентиро- ванных ациклических графах • Разностные ограничения и кратчайшие пути 10
  • 12.
    Поиск путей извсех пар вершин: Алгоритм Флойда- Вашалла (k) dij - кратчайший путь из вершины i в j, в котором все внут- ренние точки пути выбраны из множества {1, 2, . . . , k} 11
  • 13.
    Алгоритм Флойда-Вашалла (0) dij= wij (k) (k) (k−1) (k−1) dij = min(dij , dik + dkj ), k ≥ 1 Результирующая матрица: d(n) 12
  • 14.
  • 15.
  • 16.
    На семинар •Алгоритм Джонсона для разреженных графов 15
  • 17.
    Транспортная сеть -ориентированный граф, в котором каждое ребро имеет неотрицательную пропускную спо- собность c(u, v) > 0 Транспортная сеть имеет две специаль- ных вершины источник s и сток t. Если (u, v) ∈ E ⇒ c(u, v) = / 0. Поток в графе - есть функция f : V × V → R, обладающая следующими свойствами • Ограничение пропускной способности: f (u, v) ≤ c(u, v) • Антисимметричность: f (u, v) = −f (v, u) • Сохранение потока: для всех u ∈ V − s, t ⇒ f (u, v) = 0 v∈V 16
  • 18.
  • 19.
    Величина потока fопеределяется как |f | = sumv∈V f (s, v) Задача о максимальном потоке: дана некоторая транс- портная сеть, и необходимо найти поток максимальной ве- личины. 18
  • 20.
    Метод Форда-Фалкерсона FordFulkersonMethod(G, s,t) 1 Задаем значение потока f равным 0 2 while существует увеличивающи путь p 3 do увеличиваем поток f вдоль пути p 4 return f 19
  • 21.
    Остаточные сети Остаточная пропускнаяспособность: cf (u, v) = c(u, v) − f (u, v) Остаточная сеть есть граф Gf (V, Ef ), Ef = (u, v) ∈ V × V : cf (u, v) > 0 20
  • 22.
  • 23.
    Для заданных транспортнойсети G = (V, E) и потока f уве- личивающим путем p является путь из s в t в остаточной сети Gf Пропускная способность пути: cf (p) = min cf (u, v) : (u, v) ∈ p Увеличивающий поток:  cf (p),   если(u, v) ∈ p, fp(u, v) =  −cf (p), если(v, u) ∈ p,   0, в противном случае 22
  • 24.
    Разрез транспортной сети- разбиение множества V = S T, что s ∈ S, а t ∈ T Пропускная способность разреза - c(S, T ) = 12 + 14 = 26 Чистый поток - f (S, T ) = 12 + (−4) + 11 = 19 23
  • 25.
    Минимальный разрез -разрез с минимальной пропускной способностью. Торема о максимальном потоке и минимальном разрезе Следующие утверждения эквивалентны: • f - максимальный поток в G • Остаточная сеть Gf не содержит увеличивающих путей. • |f | = c(S, T ) для некоторого разреза (S, T ) сети G. 24
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
    Анализ алгоритма Форда-Фалкерсона T(G) = Θ(E) + Θ(E|f ∗|) = Θ(E|f ∗|) Плохой случай: 29
  • 31.
    На семинар •Алгоритм Эдмондса-Карпа • Поиск максимального паросочетаня в двудольном графе • Алгоритм проталкивания предпотока • Алгоритм “поднять и в начало” 30
  • 32.
    Список литературы •David M. Mount, The Lecture notes: Design and Analysis of Computer Algorithms. [Электронный ресурс] / Dept. of Computer Science, University of Maryland, 2004. - Режим доступа: http://www.cs.umd.edu/ mount/451/Lects/451lects.pdf . - сс.49-55, 118-125 • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит- мы: построение и анализ, 2-е издание. - М. : Издатель- ский дом “Вильямс”, 2007. сс.663-794. 31