Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями — различия между версиями
(→Теоремы) |
|||
Строка 19: | Строка 19: | ||
}} | }} | ||
==Теоремы== | ==Теоремы== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{{Лемма | {{Лемма | ||
|about = 1 | |about = 1 | ||
Строка 38: | Строка 28: | ||
|proof= | |proof= | ||
Пусть <tex>l</tex> - расстояние между <tex>s</tex> и <tex>t</tex>, а <tex>V_i</tex> - набор вершин, удаленных от <tex>s</tex> на <tex>i</tex> <tex>(i \leq l)</tex>. | Пусть <tex>l</tex> - расстояние между <tex>s</tex> и <tex>t</tex>, а <tex>V_i</tex> - набор вершин, удаленных от <tex>s</tex> на <tex>i</tex> <tex>(i \leq l)</tex>. | ||
− | <tex>V_i</tex> - разъединяющее множество узлов: при его удалении исчезают все | + | <tex>V_i</tex> - разъединяющее множество узлов: при его удалении исчезают все пути из <tex>s</tex> в <tex>t</tex>. |
Следуя правилу сохранения потока, если <tex>f</tex> обозначить как любой допустимый поток, то <tex>|f|</tex> единиц потока должно проходить через <tex>V_i</tex>. | Следуя правилу сохранения потока, если <tex>f</tex> обозначить как любой допустимый поток, то <tex>|f|</tex> единиц потока должно проходить через <tex>V_i</tex>. | ||
Но суммарное количество потока, которое может проходить через любую вершину не превосходит ее потенциала. | Но суммарное количество потока, которое может проходить через любую вершину не превосходит ее потенциала. | ||
Строка 69: | Строка 59: | ||
что и требовалось доказать. | что и требовалось доказать. | ||
}} | }} | ||
− | |||
{{Теорема | {{Теорема | ||
|id=th1. | |id=th1. | ||
Строка 77: | Строка 66: | ||
Пусть <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>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>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>l \leq \frac{P}{F-|f|} + 1</tex> | ||
Строка 87: | Строка 76: | ||
|about = 3 | |about = 3 | ||
|statement= | |statement= | ||
− | Пусть в сети <tex>N</tex> нет параллельных ребер. <tex>f</tex> - поток в <tex>N</tex>, а <tex>F</tex> - максимальный поток в <tex>N(f)</tex>. Тогда расстояние <tex>l</tex> между <tex>s</tex> и <tex>t</tex> в <tex>N(f)</tex> таково: <tex>l \leq |V|\sqrt{\frac{2C}{F}} - 1</tex>. | + | Пусть в сети <tex>N</tex> нет [[Основные определения теории графов|параллельных ребер]]. <tex>f</tex> - поток в <tex>N</tex>, а <tex>F</tex> - максимальный поток в <tex>N(f)</tex>. Тогда расстояние <tex>l</tex> между <tex>s</tex> и <tex>t</tex> в <tex>N(f)</tex> таково: <tex>l \leq |V|\sqrt{\frac{2C}{F}} - 1</tex>. |
|proof= | |proof= | ||
Как и раньше, обозначим <tex>V_i</tex> как набор вершин на расстоянии <tex>i</tex> от <tex>s</tex>. Множество <tex>X = \bigcup_{i = 0}^k V_i</tex> и <tex>Y = V - X</tex> определяют разрез <tex>(X, Y)</tex>. Пропускная способность этого разреза не больше <tex>2C|V_k||V_{k + 1}|</tex>, так как все ребра между <tex>X</tex> и <tex>Y</tex> также являются ребрами между <tex>V_k</tex> и <tex>V_{k+1}</tex> и не более чем двумя параллельными ребрами, исходящими из какой-то вершины в остаточной сети. По теореме о максимальном потоке/минимальном разрезе, <tex>F \leq 2C|V_k||V_{k+1}|</tex>. | Как и раньше, обозначим <tex>V_i</tex> как набор вершин на расстоянии <tex>i</tex> от <tex>s</tex>. Множество <tex>X = \bigcup_{i = 0}^k V_i</tex> и <tex>Y = V - X</tex> определяют разрез <tex>(X, Y)</tex>. Пропускная способность этого разреза не больше <tex>2C|V_k||V_{k + 1}|</tex>, так как все ребра между <tex>X</tex> и <tex>Y</tex> также являются ребрами между <tex>V_k</tex> и <tex>V_{k+1}</tex> и не более чем двумя параллельными ребрами, исходящими из какой-то вершины в остаточной сети. По теореме о максимальном потоке/минимальном разрезе, <tex>F \leq 2C|V_k||V_{k+1}|</tex>. | ||
Строка 99: | Строка 88: | ||
|proof= | |proof= | ||
Если <tex>F \leq C^{1/3}|V|^{2/3}</tex>, то теорема очевидна. | Если <tex>F \leq C^{1/3}|V|^{2/3}</tex>, то теорема очевидна. | ||
− | Положим, что <tex>F > C^{1/3}|V|^{2/3}</tex>, и рассотрим | + | Положим, что <tex>F > C^{1/3}|V|^{2/3}</tex>, и рассотрим последнюю фазу, в которой поток <tex>f</tex> не превышает <tex>F - C^{1/3}|V|^{2/3}</tex>. В этот момент осталось не более <tex>C^{1/3}|V|^{2/3} + 1</tex> фаз, и <tex>N(f)</tex> - сеть с максимальным потоком <tex>F - |f| \ge C^{1/3}|V|^{2/3}</tex>. Мы можем применить Лемму(2), чтобы оценить длину <tex>l</tex> слоистой сети, и, соответственно, количество выполненных фаз: |
<tex>l \leq |V|{(\frac{2C}{F-|f|})}^{1/2} - 1 </tex> | <tex>l \leq |V|{(\frac{2C}{F-|f|})}^{1/2} - 1 </tex> | ||
Строка 109: | Строка 98: | ||
== Литература == | == Литература == | ||
− | * On the efficiency of Maximum-Flow Algorithms on Networks with Small Integer Capacities. David Fernandez-Baca and Charles U.Martel | + | * [http://www.springerlink.com/content/w0q006u3631gg124/fulltext.pdf On the efficiency of Maximum-Flow Algorithms on Networks with Small Integer Capacities. David Fernandez-Baca and Charles U.Martel] |
Версия 20:29, 30 декабря 2011
Определения
Определение: |
Пусть Обозначим и , как максимальная пропускная способность ребра и максимальный поток соответсвенно.. . - потенциал вершины . Тогда общий потенциал выражается формулой: .Остаточную сеть обозначим Обозначим длину слоистой сети . - как длину кратчайшего пути в . | - сеть с целочисленными пропускными способностями.
Теоремы
Лемма (1): |
Пусть - расстояние между и в сети с текущим потоком, равным 0, и максимальным потоком, равным .
Тогда |
Доказательство: |
Пусть - расстояние между и , а - набор вершин, удаленных от на . - разъединяющее множество узлов: при его удалении исчезают все пути из в . Следуя правилу сохранения потока, если обозначить как любой допустимый поток, то единиц потока должно проходить через . Но суммарное количество потока, которое может проходить через любую вершину не превосходит ее потенциала. Отсюда, если обозначить как общий потенциал вершин из , то мы имеем:
для любого допустимого потока . В частности, , таким образом получаем:и лемма доказана. |
Лемма (2): |
Пусть - сеть, а - допустимый поток в этой сети. Тогда общий потенциал в остаточной сети равен общему потенциалу . |
Доказательство: |
Пусть - функция пропускных способностей в , а - потенциал, множество входящих ребер и множество выходящих ребер вершины из .Достаточно доказать, что . Ребру из соответствуют ребро из с пропускной способностью , и ребро из с пропускной способностью . Аналогично, ребру из соответствуют ребра из с пропускной способностью и с пропускной способностью . Используя правило сохранения потока, нетрудно проверить, что
и что и требовалось доказать. |
Теорема (Первая теорема Карзанова): |
Число итераций алгоритма Диница в сети ( — исток, — сток) с целочисленными пропускными способностями — . |
Доказательство: |
Пусть - максимальный поток в сети . Теорема верна для , так как после каждой фазы поток увеличивается хотя бы на 1. Если , рассмотрим последнюю фазу, на момент начала выполнения которой поток в сети был меньше, чем . После этого потребуется не больше фаз, чтобы найти максимальный поток. На предыдущей фазе поток ( ) в был не больше , таким образом .- сеть с максимальным потоком и потенциалом (по Лемме(2)). Поэтому мы можем использовать Лемму(1) чтобы оценить расстояние между и в , и получить оценку длины слоистой сети: Так как каждая фаза увеличивает длину слоистой сети минимум на один, то осуществляется не больше фаз. Таким образом происходит не более фаз. |
Лемма (3): |
Пусть в сети параллельных ребер. - поток в , а - максимальный поток в . Тогда расстояние между и в таково: . нет |
Доказательство: |
Как и раньше, обозначим Таким образом как набор вершин на расстоянии от . Множество и определяют разрез . Пропускная способность этого разреза не больше , так как все ребра между и также являются ребрами между и и не более чем двумя параллельными ребрами, исходящими из какой-то вершины в остаточной сети. По теореме о максимальном потоке/минимальном разрезе, . ограничен наименьшим из . Но этот минимум максимизируется, когда для , таким образом . Выражая получаем нужное. |
Теорема (Вторая теорема Карзанова): |
Число итераций алгоритма Диница с целочисленными пропускными способностями - . |
Доказательство: |
Если , то теорема очевидна. Положим, что , и рассотрим последнюю фазу, в которой поток не превышает . В этот момент осталось не более фаз, и - сеть с максимальным потоком . Мы можем применить Лемму(2), чтобы оценить длину слоистой сети, и, соответственно, количество выполненных фаз:
Таким образом, прошло . фаз, и фаз осталось. Теорема доказана. |