Теорема Форда-Фалкерсона о потоке минимальной стоимости — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 5: Строка 5:
 
Пусть <tex> f </tex> и <tex> g </tex> - потоки в сети <tex> G </tex>. Тогда <tex> g </tex> можно представить как сумму <tex> f + f'</tex>, где <tex>f'</tex> {{---}} поток в остаточной сети <tex>G_f</tex>.
 
Пусть <tex> f </tex> и <tex> g </tex> - потоки в сети <tex> G </tex>. Тогда <tex> g </tex> можно представить как сумму <tex> f + f'</tex>, где <tex>f'</tex> {{---}} поток в остаточной сети <tex>G_f</tex>.
 
|proof=  
 
|proof=  
Рассмотрим произвольное ребро<tex> (u, v) </tex> из <tex> f' = g - f </tex>. Если <tex> g(u, v) \geq f(u, v) </tex>, то <tex> f'(u, v) = g(u, v) - f(u, v) \leq c(u, v) - f(u, v) = C_f(u, v) </tex>. Если <tex> g(u, v) \le f(u, v) </tex>, то <tex> g(v, u) - f(v, u) = f(u, v) - g(u, v) \leq f(u, v) = C_f(v, u). </tex>. Таким образом поток через каждое ребро не превосходит пропускной способности остаточной сети.  
+
Рассмотрим произвольное ребро <tex> (u, v) </tex> из <tex> f' = g - f </tex>. Если <tex> g(u, v) \geq f(u, v) </tex>, то <tex> f'(u, v) = g(u, v) - f(u, v) \leq c(u, v) - f(u, v) = C_f(u, v) </tex>. Если <tex> g(u, v) \le f(u, v) </tex>, то <tex> f'(v, u) = g(v, u) - f(v, u) = f(u, v) - g(u, v) \leq f(u, v) = C_f(v, u). </tex>. Таким образом поток через каждое ребро не превосходит пропускной способности остаточной сети.  
 
Антисимметричность и закон сохранения потока проверяются аналогично [[Лемма о сложении потоков|лемме о сложении потоков]].
 
Антисимметричность и закон сохранения потока проверяются аналогично [[Лемма о сложении потоков|лемме о сложении потоков]].
 
}}
 
}}

Версия 06:43, 5 января 2012

Лемма (о представлении потоков):
Пусть [math] f [/math] и [math] g [/math] - потоки в сети [math] G [/math]. Тогда [math] g [/math] можно представить как сумму [math] f + f'[/math], где [math]f'[/math] — поток в остаточной сети [math]G_f[/math].
Доказательство:
[math]\triangleright[/math]

Рассмотрим произвольное ребро [math] (u, v) [/math] из [math] f' = g - f [/math]. Если [math] g(u, v) \geq f(u, v) [/math], то [math] f'(u, v) = g(u, v) - f(u, v) \leq c(u, v) - f(u, v) = C_f(u, v) [/math]. Если [math] g(u, v) \le f(u, v) [/math], то [math] f'(v, u) = g(v, u) - f(v, u) = f(u, v) - g(u, v) \leq f(u, v) = C_f(v, u). [/math]. Таким образом поток через каждое ребро не превосходит пропускной способности остаточной сети.

Антисимметричность и закон сохранения потока проверяются аналогично лемме о сложении потоков.
[math]\triangleleft[/math]
Теорема:
Пусть [math] G [/math] — сеть с истоком [math] s [/math] и стоком [math] t [/math].

[math] f [/math] — поток минимальной стоимости в сети [math] G [/math] среди потоков величины [math] a [/math]. [math] P [/math] — путь минимальной стоимости [math] s \leadsto t[/math] в остаточной сети.

Тогда для [math]\forall \delta : 0 \leq \delta \leq c_f(P)[/math] поток [math]f + \delta \cdot f_P[/math] — поток минимальной стоимости среди потоков величины [math]a + \delta[/math], где [math]\delta \cdot f_P[/math] - поток величины [math]\delta[/math], проходящий по пути [math]P[/math].
Доказательство:
[math]\triangleright[/math]

Пусть [math] g [/math] — поток минимальной стоимости величины [math]a + \delta[/math] в [math]G[/math]. Представим [math] g = f + f'[/math], где [math] f' [/math] - поток в остаточной сети [math]G_f[/math]. Тогда разность [math] g - f[/math] будет потоком в сети [math]G_f[/math] и по лемме о сложении потоков его величина будет равна [math]\delta[/math].

По теореме о декомпозиции [math] g - f[/math] можно представить как сумму элементарных потоков вдоль путей [math]P_i : s \leadsto t[/math] и циклов [math]C_i[/math]. В этом представлении нет отрицательных циклов, иначе прибавление его к [math] f [/math] даст поток меньшей стоимости. Если есть положительный цикл, то вычтем его из [math] g [/math] и получим поток меньшей стоимости. Таким образом [math]p(C_i) = 0[/math] для всех циклов.

Тогда [math]p(g - f) = \sum\limits_{P_i} p(P_i)\cdot c_f(P_i) \geq p(P) \cdot \sum\limits_{P_i}c_f(P_i) = p(P) \cdot \delta[/math].

Отсюда [math] p(g) \ge p(f) + p(P) \cdot \delta \ge p(g) [/math] и поток [math]f + \delta \cdot f_P[/math] — минимальный.
[math]\triangleleft[/math]

Литература

  • Ravindra Ahuja, Thomas Magnanti, James Orlin. Network flows (1993)