Upload
nikolay-grebenshikov
View
6.612
Download
2
Embed Size (px)
Citation preview
Хакасский государственный университет им. Н.Ф. Катанова
Структуры и алгоритмы обработки данных
Лекция: Графы: кратчайшие пути и
максимальные потоки.
Николай Гребенщиков, www.grebenshikov.ru
Задача поиска кратчайшего пути
1
Задача поиска кратчайшего пути
Дан граф G = (V,E) с весовой функцией w : E → R.
Вес пути p = 〈v0, v1, . . . , vk〉 равен суммарному весу входящих
в него ребер. w(p) =k∑i=1
w(vi−1, vi)
Вес кратчайшего пути из вершины u в вершину v опреде-ляется соотношением:
δ(u, v) =
min{w(p) : u
p→ 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
Поиск путей из всех пар вершин: Алгоритм Флойда-Вашалла
d(k)ij - кратчайший путь из вершины i в j, в котором все внут-ренние точки пути выбраны из множества {1,2, . . . , k}
11
Алгоритм Флойда-Вашалла
d(0)ij = wij
d(k)ij = min(d(k)
ij , d(k−1)ik + d
(k−1)kj ), 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⇒∑v∈V
f(u, v) = 0
16
Потоки
17
Величина потока f опеределяется как |f | = sumv∈V f(s, v)
Задача о максимальном потоке: дана некоторая транс-портная сеть, и необходимо найти поток максимальной ве-личины.
18
Метод Форда-Фалкерсона
FordFulkersonMethod(G, s, t)
1 Задаем значение потока f равным 0
2 while существует увеличивающи путь p3 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
}Увеличивающий поток:
fp(u, v) =
cf(p), если(u, v) ∈ p,−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 Analysisof Computer Algorithms. [Электронный ресурс] / Dept. ofComputer Science, University of Maryland, 2004. - Режимдоступа: http://www.cs.umd.edu/ mount/451/Lects/451lects.pdf. - сс.49-55, 118-125
• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007. сс.663-794.
31