Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями — различия между версиями
(→Определения) |
|||
| Строка 4: | Строка 4: | ||
Пусть <tex>N = (V,E,s,t,c)</tex> - [[Определение сети, потока|сеть]] с целочисленными пропускными способностями. | Пусть <tex>N = (V,E,s,t,c)</tex> - [[Определение сети, потока|сеть]] с целочисленными пропускными способностями. | ||
| − | Обозначим <tex>C</tex> и <tex>F</tex>, как максимальная пропускная способность ребра и максимальный поток | + | Обозначим <tex>C</tex> и <tex>F</tex>, как максимальная пропускная способность ребра и максимальный поток соответственно. |
<tex>c^{+}(v) = \sum\limits_{uv \in E} c_{uv}</tex>. | <tex>c^{+}(v) = \sum\limits_{uv \in E} c_{uv}</tex>. | ||
| Строка 18: | Строка 18: | ||
Обозначим длину [[Схема алгоритма Диница|слоистой сети]] <tex>l</tex> - как длину кратчайшего <tex>s-t</tex> пути в <tex>N(f)</tex>. | Обозначим длину [[Схема алгоритма Диница|слоистой сети]] <tex>l</tex> - как длину кратчайшего <tex>s-t</tex> пути в <tex>N(f)</tex>. | ||
}} | }} | ||
| + | |||
==Теоремы== | ==Теоремы== | ||
{{Лемма | {{Лемма | ||
Версия 22:28, 14 января 2012
Определения
| Определение: |
| Пусть - сеть с целочисленными пропускными способностями.
Обозначим и , как максимальная пропускная способность ребра и максимальный поток соответственно. . . - потенциал вершины . Тогда общий потенциал выражается формулой: . Остаточную сеть обозначим . Обозначим длину слоистой сети - как длину кратчайшего пути в . |
Теоремы
| Лемма (1): |
Пусть - расстояние между и в сети с текущим потоком, равным 0, и максимальным потоком, равным .
Тогда |
| Доказательство: |
|
Пусть - расстояние между и , а - набор вершин, удаленных от на . - разъединяющее множество узлов: при его удалении исчезают все пути из в . Следуя правилу сохранения потока, если обозначить как любой допустимый поток, то единиц потока должно проходить через . Но суммарное количество потока, которое может проходить через любую вершину не превосходит ее потенциала. Отсюда, если обозначить как общий потенциал вершин из , то мы имеем:
для любого допустимого потока . В частности, , таким образом получаем: и лемма доказана. |
| Лемма (2): |
Пусть - сеть, а - допустимый поток в этой сети. Тогда общий потенциал в остаточной сети равен общему потенциалу . |
| Доказательство: |
|
Пусть - функция пропускных способностей в , а - потенциал, множество входящих ребер и множество выходящих ребер вершины из . Достаточно доказать, что . Ребру из соответствуют ребро из с пропускной способностью , и ребро из с пропускной способностью . Аналогично, ребру из соответствуют ребра из с пропускной способностью и с пропускной способностью . Используя правило сохранения потока, нетрудно проверить, что
и что и требовалось доказать. |
| Теорема (Первая теорема Карзанова): |
Число итераций алгоритма Диница в сети ( — исток, — сток) с целочисленными пропускными способностями — . |
| Доказательство: |
|
Пусть - максимальный поток в сети . Теорема верна для , так как после каждой фазы поток увеличивается хотя бы на 1. Если , рассмотрим последнюю фазу, на момент начала выполнения которой поток в сети был меньше, чем . После этого потребуется не больше фаз, чтобы найти максимальный поток. На предыдущей фазе поток () в был не больше , таким образом . - сеть с максимальным потоком и потенциалом (по Лемме(2)). Поэтому мы можем использовать Лемму(1) чтобы оценить расстояние между и в , и получить оценку длины слоистой сети: Так как каждая фаза увеличивает длину слоистой сети минимум на один, то осуществляется не больше фаз. Таким образом происходит не более фаз. |
| Лемма (3): |
Пусть в сети нет параллельных ребер. - поток в , а - максимальный поток в . Тогда расстояние между и в таково: . |
| Доказательство: |
|
Как и раньше, обозначим как набор вершин на расстоянии от . Множества и определяют разрез . Пропускная способность этого разреза не больше , так как все ребра между и также являются ребрами между и и не более чем двумя параллельными ребрами, исходящими из какой-то вершины в остаточной сети. По теореме о максимальном потоке/минимальном разрезе, . Таким образом ограничен наименьшим из . Но этот минимум максимизируется, когда для , таким образом . Выражая получаем нужное. |
| Теорема (Вторая теорема Карзанова): |
Число итераций алгоритма Диница с целочисленными пропускными способностями - . |
| Доказательство: |
|
Если , то теорема очевидна. Положим, что , и рассотрим последнюю фазу, в которой поток не превышает . В этот момент осталось не более фаз, и - сеть с максимальным потоком . Мы можем применить Лемму(2), чтобы оценить длину слоистой сети, и, соответственно, количество выполненных фаз:
. Таким образом, прошло фаз, и фаз осталось. Теорема доказана. |