Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями — различия между версиями
Строка 18: | Строка 18: | ||
|about = 1 | |about = 1 | ||
|statement= | |statement= | ||
− | Пусть <tex>l</tex> - расстояние между <tex>s</tex> и <tex>t</tex> в сети с текущим потоком, равным 0, и максимальным потоком, равным <tex>F</tex>. | + | Пусть <tex>l</tex> - расстояние между <tex>s</tex> и <tex>t</tex> в слоистой сети с текущим потоком, равным 0, и максимальным потоком, равным <tex>F</tex>. |
Тогда <tex>l \leq \frac{P}{F} + 1</tex> | Тогда <tex>l \leq \frac{P}{F} + 1</tex> | ||
Строка 41: | Строка 41: | ||
|about = 2 | |about = 2 | ||
|statement= | |statement= | ||
− | Пусть <tex>N</tex> - сеть, а <tex>f</tex> - допустимый поток в этой сети. Тогда общий потенциал в остаточной сети <tex>N(f)</tex> равен общему потенциалу <tex>N</tex>. | + | Пусть <tex> N </tex> - сеть, а <tex>f</tex> - допустимый поток в этой сети. Тогда общий потенциал в остаточной сети <tex>N(f)</tex> равен общему потенциалу <tex>N</tex>. |
|proof= | |proof= | ||
− | Пусть <tex> | + | Пусть <tex>c_f</tex> - функция пропускных способностей в <tex>N(f)</tex>, а <tex>p_f(v), in_f(v), out_f(v)</tex> - потенциал, множество входящих ребер и множество выходящих ребер вершины <tex>v</tex> из <tex>N(f)</tex>. |
+ | Достаточно доказать, что <tex>p_f(v) = p(v)</tex>. Ребру <tex>e</tex> из <tex>in(v)</tex> соответствуют ребро <tex>e_1</tex> из <tex>in_f(v)</tex> с пропускной способностью <tex>c(e) - f(e)</tex>, и ребро <tex>e_2</tex> из <tex>out_f(v)</tex> с пропускной способностью <tex>f(e)</tex>. Аналогично, ребру <tex>e</tex> из <tex>out(v)</tex> соответствуют ребра из <tex>out_f(v)</tex> с пропускной способностью <tex>c(v) - f (v)</tex> и <tex>in_f(v)</tex> с пропускной способностью <tex>f(e)</tex>. Используя правило сохранения потока, нетрудно проверить, что | ||
+ | |||
+ | <tex>\displaystyle\sum_{e\in in_f(v)} c_f(e) = \sum_{e\in in(v)}c(e)</tex> | ||
+ | |||
+ | и | ||
+ | |||
+ | <tex>\displaystyle\sum_{e\in out_f(v)} c_f(e) = \sum_{e\in out(v)}c(e)</tex> | ||
+ | |||
+ | что и требовалось доказать. | ||
}} | }} | ||
− | |||
{{Теорема | {{Теорема | ||
|id=th1. | |id=th1. | ||
|about=Первая теорема Карзанова | |about=Первая теорема Карзанова | ||
− | |statement=Число итераций алгоритма Диница в сети <tex> | + | |statement=Число итераций алгоритма Диница в сети <tex>N</tex> (<tex>s</tex>, <tex>t</tex> - исток и сток, соответственно.) с целочисленными пропускными способностями - <tex>O(\sqrt{P})</tex>. |
− | |proof= | + | |proof= |
− | + | Пусть <tex>F</tex> - максимальный поток в сети <tex>N</tex>. Теорема верна для <tex>F \leq \sqrt{P}</tex>, так как после каждой фазы поток увеличивается хотя бы на 1. Если <tex>F > \sqrt{P}</tex>, рассмотрим последнюю фазу, на момент выполнения которой поток в сети меньше, чем <tex>F - \sqrt{P}</tex>. После этого потребуется не больше <tex>\sqrt{P}</tex> фаз, чтобы найти максимальынй поток. На предыдущей фазе поток (<tex>f</tex>) в <tex>N</tex> был не больше <tex>F-\sqrt{P}</tex>, таким образом <tex>F-|f| \leq \sqrt{P}</tex>. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <tex>N(f)</tex> - сеть с максимальным потоком <tex>F-|f|</tex> и потенциалом <tex>P</tex> (по Лемме(2)). Поэтому мы можем использовать Лемму(1) чтобы оценить расстояние между <tex>s</tex> и <tex>t</tex> в <tex>N(f)</tex>. Отсюда получаем оценку длины (<tex>l</tex>) слоистой сети: | |
− | + | <tex>l \leq \frac{P}{F-|f|} + 1</tex> | |
− | + | Так как каждая фаза увеличивает длину слоистой сети минимум на один,то осуществляется не больше <tex>\sqrt{P}</tex> фаз. Таким образом происходит не более <tex>2\sqrt{P}</tex> фаз. | |
}} | }} | ||
Версия 03:41, 25 декабря 2011
Определение: |
Пусть Обозначим и , как максимальная пропускная способность ребра и максимальный поток соответсвенно.. . - потенциал вершины . Тогда общий потенциал выражается формулой: . | - сеть с целочисленными пропускными способностями.
Лемма (1): |
Пусть - расстояние между и в слоистой сети с текущим потоком, равным 0, и максимальным потоком, равным .
Тогда |
Доказательство: |
Пусть - расстояние между и , а - набор вершин, удаленных от на . - разъединяющее множество узлов: при его удалении исчезают все направлнные пути из в . Следуя правилу сохранения потока, если обозначить как любой допустимый поток, то единиц потока должно проходить через . Но суммарное количество потока, которое может проходить через любую вершину не превосходит ее потенциала. Отсюда, если обозначить как общий потенциал вершин из , то мы имеем:
для любого допустимого потока . В частности, , таким образом получаем:и лемма доказана. |
Лемма (2): |
Пусть - сеть, а - допустимый поток в этой сети. Тогда общий потенциал в остаточной сети равен общему потенциалу . |
Доказательство: |
Пусть - функция пропускных способностей в , а - потенциал, множество входящих ребер и множество выходящих ребер вершины из .Достаточно доказать, что . Ребру из соответствуют ребро из с пропускной способностью , и ребро из с пропускной способностью . Аналогично, ребру из соответствуют ребра из с пропускной способностью и с пропускной способностью . Используя правило сохранения потока, нетрудно проверить, что
и что и требовалось доказать. |
Теорема (Первая теорема Карзанова): |
Число итераций алгоритма Диница в сети ( , - исток и сток, соответственно.) с целочисленными пропускными способностями - . |
Доказательство: |
Пусть - максимальный поток в сети . Теорема верна для , так как после каждой фазы поток увеличивается хотя бы на 1. Если , рассмотрим последнюю фазу, на момент выполнения которой поток в сети меньше, чем . После этого потребуется не больше фаз, чтобы найти максимальынй поток. На предыдущей фазе поток ( ) в был не больше , таким образом .- сеть с максимальным потоком и потенциалом (по Лемме(2)). Поэтому мы можем использовать Лемму(1) чтобы оценить расстояние между и в . Отсюда получаем оценку длины ( ) слоистой сети: Так как каждая фаза увеличивает длину слоистой сети минимум на один,то осуществляется не больше фаз. Таким образом происходит не более фаз. |
Теорема (Вторая теорема Карзанова): |
Число итераций алгоритма Диница в сети ( , - исток и сток, соответственно.) с целочисленными пропускными способностями меньше - . |