Теоремы Карзанова о числе итераций алгоритма Диница в сети с целочисленными пропускными способностями — различия между версиями
Nikitaevg (обсуждение | вклад) (→Обозначения) |
м (rollbackEdits.php mass rollback) |
||
(не показано 6 промежуточных версий 5 участников) | |||
Строка 5: | Строка 5: | ||
*<tex>c^{+}(v) = \sum\limits_{uv \in E} c_{uv}</tex>, | *<tex>c^{+}(v) = \sum\limits_{uv \in E} c_{uv}</tex>, | ||
*<tex>c^{-}(v) = \sum\limits_{vu \in E} c_{vu}</tex>, | *<tex>c^{-}(v) = \sum\limits_{vu \in E} c_{vu}</tex>, | ||
− | *<tex>p(v) = \min | + | *<tex>p(v) = \min(c^{+}(v), c^{-}(v))</tex> {{---}} потенциал вершины <tex>v</tex>, |
*<tex>P = \sum\limits_{v \in V, v \neq s,t}p(v)</tex> {{---}} общий потенциал, | *<tex>P = \sum\limits_{v \in V, v \neq s,t}p(v)</tex> {{---}} общий потенциал, | ||
*<tex>G_f</tex> {{---}} [[Дополняющая сеть, дополняющий путь|остаточная сеть]]. | *<tex>G_f</tex> {{---}} [[Дополняющая сеть, дополняющий путь|остаточная сеть]]. | ||
Строка 15: | Строка 15: | ||
Пусть <tex>l</tex> {{---}} расстояние между <tex>s</tex> и <tex>t</tex> в исходной сети, максимальный поток в этой сети равен <tex>F</tex>. | Пусть <tex>l</tex> {{---}} расстояние между <tex>s</tex> и <tex>t</tex> в исходной сети, максимальный поток в этой сети равен <tex>F</tex>. | ||
− | Тогда <tex>l \leqslant \dfrac{P}{F} + 1</tex> | + | Тогда <tex>l \leqslant \dfrac{P}{F} + 1</tex>. |
|proof= | |proof= | ||
Строка 21: | Строка 21: | ||
<tex>V_i</tex> {{---}} разъединяющее множество узлов: при его удалении исчезают все пути из <tex>s</tex> в <tex>t</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>. | ||
− | Но суммарное количество потока, которое может проходить через любую вершину не превосходит | + | Но суммарное количество потока, которое может проходить через любую вершину не превосходит её потенциала. |
Отсюда, если обозначить <tex>P_i</tex> как общий потенциал вершин из <tex>V_i</tex>, то мы имеем: | Отсюда, если обозначить <tex>P_i</tex> как общий потенциал вершин из <tex>V_i</tex>, то мы имеем: | ||
Строка 36: | Строка 36: | ||
Пусть <tex> N </tex> {{---}} сеть, а <tex>f</tex> {{---}} допустимый поток в этой сети. Тогда общий потенциал в остаточной сети <tex>G_f</tex> равен общему потенциалу <tex>N</tex>. | Пусть <tex> N </tex> {{---}} сеть, а <tex>f</tex> {{---}} допустимый поток в этой сети. Тогда общий потенциал в остаточной сети <tex>G_f</tex> равен общему потенциалу <tex>N</tex>. | ||
|proof= | |proof= | ||
− | По [[Теорема_о_декомпозиции | теореме о декомпозиции]] поток можно разбить на множество простых путей из <tex>s</tex> в <tex>t</tex> и циклов. Рассмотрим каждый путь (цикл) и убедимся, что, пуская по нему поток <tex>f_i</tex>, потенциал вершины не изменится. Действительно, рассмотрим вершину <tex>v</tex>, поток <tex>f_i</tex> в | + | По [[Теорема_о_декомпозиции | теореме о декомпозиции]] поток можно разбить на множество простых путей из <tex>s</tex> в <tex>t</tex> и циклов. Рассмотрим каждый путь (цикл) и убедимся, что, пуская по нему поток <tex>f_i</tex>, потенциал вершины не изменится. Действительно, рассмотрим вершину <tex>v</tex>, поток <tex>f_i</tex> в неё течёт по ребру <tex>uv</tex>, а из неё по ребру <tex>vw</tex>. Пусть <tex>c_{f_i}</tex> {{---}} функция пропускных способностей в остаточной сети после пропускания потока по <tex>i</tex>-ому пути (циклу). Рассмотрим <tex>c^+_{f_1}(v) = c_{f_1}(uv) + c_{f_1}(wv)</tex>. <tex>c_{f_1}(uv) = c(uv) - f_i</tex>, а <tex>c_{f_1}(wv) = c(wv) + f_i</tex>, сложив эти два значения, получим, что <tex>c^+(v)</tex> остаётся неизменной. Применив такое же рассуждение для <tex>c^-(v)</tex>, получим, что потенциал каждой вершины остаётся неизменным. |
}} | }} | ||
{{Теорема | {{Теорема | ||
Строка 55: | Строка 55: | ||
|about = 3 | |about = 3 | ||
|statement= | |statement= | ||
− | Пусть в сети <tex>N</tex> нет [[Основные определения теории графов#def1|параллельных | + | Пусть в сети <tex>N</tex> нет [[Основные определения теории графов#def1|параллельных рёбер]]. Пусть <tex>F</tex> {{---}} максимальный поток в <tex>N</tex>. Тогда расстояние <tex>l</tex> между <tex>s</tex> и <tex>t</tex> в <tex>N</tex> таково: <tex>l \leqslant |V|\sqrt{\dfrac{2C}{F}} - 1</tex>. |
|proof= | |proof= | ||
− | Обозначим <tex>V_i</tex> как набор вершин на расстоянии <tex>i</tex> от <tex>s</tex>. Множества <tex>X = \ | + | Обозначим <tex>V_i</tex> как набор вершин на расстоянии <tex>i</tex> от <tex>s</tex>. Множества <tex>X = \bigcup\limits_{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 \leqslant 2C|V_k||V_{k+1}|</tex>. |
− | Таким образом <tex>F</tex> ограничен наименьшим из <tex>|V_k||V_{k+1}|</tex>. Но эта величина максимальна, когда <tex>|V_i| = \dfrac{|V|}{(l+1)}</tex> для <tex>0 \leqslant i \leqslant n</tex>, таким образом <tex>F \leqslant 2C\dfrac{|V|^2 }{ (l+1)^2} | + | Таким образом <tex>F</tex> ограничен наименьшим из <tex>|V_k||V_{k+1}|</tex>. Но эта величина максимальна, когда <tex>|V_i| = \dfrac{|V|}{(l+1)}</tex> для <tex>0 \leqslant i \leqslant n</tex>, таким образом <tex>F \leqslant 2C\dfrac{|V|^2 }{ (l+1)^2}</tex>, из чего следует необходимое неравенство. |
}} | }} | ||
Строка 69: | Строка 69: | ||
Положим, что <tex>F > C^{\frac{1}{3}}|V|^{\frac{2}{3}}</tex>, и рассмотрим последнюю фазу, в которой поток <tex>f</tex> не превышает <tex>F - C^{\frac{1}{3}}|V|^{\frac{2}{3}}</tex>. В этот момент осталось не более <tex>C^{\frac{1}{3}}|V|^{\frac{2}{3}} + 1</tex> фаз, и <tex>G_f</tex> {{---}} сеть с максимальным потоком <tex>F - |f| \geqslant C^{\frac{1}{3}}|V|^{\frac{2}{3}}</tex>. Мы можем применить Лемму(3), чтобы оценить длину <tex>l</tex> слоистой сети, и, соответственно, количество выполненных фаз: | Положим, что <tex>F > C^{\frac{1}{3}}|V|^{\frac{2}{3}}</tex>, и рассмотрим последнюю фазу, в которой поток <tex>f</tex> не превышает <tex>F - C^{\frac{1}{3}}|V|^{\frac{2}{3}}</tex>. В этот момент осталось не более <tex>C^{\frac{1}{3}}|V|^{\frac{2}{3}} + 1</tex> фаз, и <tex>G_f</tex> {{---}} сеть с максимальным потоком <tex>F - |f| \geqslant C^{\frac{1}{3}}|V|^{\frac{2}{3}}</tex>. Мы можем применить Лемму(3), чтобы оценить длину <tex>l</tex> слоистой сети, и, соответственно, количество выполненных фаз: | ||
− | <tex>l \leqslant |V|{(\dfrac{2C}{F-|f|})}^{\frac{1}{2}} - 1 \leqslant 2^{\frac{1}{2}}C^{\frac{1}{3}}|V|^{\frac{2}{3}} - 1</tex>. | + | <tex>l \leqslant |V|{\left(\dfrac{2C}{F-|f|}\right)}^{\frac{1}{2}} - 1 \leqslant 2^{\frac{1}{2}}C^{\frac{1}{3}}|V|^{\frac{2}{3}} - 1</tex>. |
Таким образом, прошло <tex>O(C^{\frac{1}{3}}|V|^{\frac{2}{3}})</tex> фаз, и <tex>O(C^{\frac{1}{3}}|V|^{\frac{2}{3}})</tex> фаз осталось. | Таким образом, прошло <tex>O(C^{\frac{1}{3}}|V|^{\frac{2}{3}})</tex> фаз, и <tex>O(C^{\frac{1}{3}}|V|^{\frac{2}{3}})</tex> фаз осталось. |
Текущая версия на 19:12, 4 сентября 2022
Обозначения
Введём следующие обозначения:
- сеть с целочисленными пропускными способностями, —
- обозначим и как максимальный поток,
- ,
- ,
- — потенциал вершины ,
- — общий потенциал,
- остаточная сеть. —
Теоремы
Лемма (1): |
Пусть — расстояние между и в исходной сети, максимальный поток в этой сети равен .
Тогда . |
Доказательство: |
Пусть сохранения потока, если обозначить как любой допустимый поток, то единиц потока должно проходить через . Но суммарное количество потока, которое может проходить через любую вершину не превосходит её потенциала. Отсюда, если обозначить как общий потенциал вершин из , то мы имеем: — расстояние между и , а — набор вершин, удаленных от на . — разъединяющее множество узлов: при его удалении исчезают все пути из в . Следуя закону
для любого допустимого потока . В частности, , таким образом получаем: |
Лемма (2): |
Пусть — сеть, а — допустимый поток в этой сети. Тогда общий потенциал в остаточной сети равен общему потенциалу . |
Доказательство: |
По теореме о декомпозиции поток можно разбить на множество простых путей из в и циклов. Рассмотрим каждый путь (цикл) и убедимся, что, пуская по нему поток , потенциал вершины не изменится. Действительно, рассмотрим вершину , поток в неё течёт по ребру , а из неё по ребру . Пусть — функция пропускных способностей в остаточной сети после пропускания потока по -ому пути (циклу). Рассмотрим . , а , сложив эти два значения, получим, что остаётся неизменной. Применив такое же рассуждение для , получим, что потенциал каждой вершины остаётся неизменным. |
Теорема (Первая теорема Карзанова): |
Число итераций алгоритма Диница в сети ( — исток, — сток) с целочисленными пропускными способностями — . |
Доказательство: |
Пусть — максимальный поток в сети . Теорема верна для , так как после каждой фазы поток увеличивается хотя бы на . Если , рассмотрим последнюю фазу, на момент начала выполнения которой поток в сети был меньше, чем . После этого потребуется не больше фаз, чтобы найти максимальный поток. На предыдущей фазе поток ( ) в был не больше , таким образом .— сеть с максимальным потоком и потенциалом (по Лемме(2)). Поэтому можно воспользоваться Леммой(1), чтобы оценить расстояние между и в , и получить оценку длины слоистой сети: Так как каждая фаза увеличивает длину слоистой сети минимум на один, то осуществляется не больше фаз. Таким образом происходит не более фаз. |
Лемма (3): |
Пусть в сети параллельных рёбер. Пусть — максимальный поток в . Тогда расстояние между и в таково: . нет |
Доказательство: |
Обозначим Таким образом как набор вершин на расстоянии от . Множества и определяют разрез . Пропускная способность этого разреза не больше , так как все рёбра между и также являются рёбрами между и и не более чем двумя параллельными рёбрами, исходящими из какой-то вершины в остаточной сети. По теореме о максимальном потоке/минимальном разрезе, . ограничен наименьшим из . Но эта величина максимальна, когда для , таким образом , из чего следует необходимое неравенство. |
Теорема (Вторая теорема Карзанова): |
Число итераций алгоритма Диница с целочисленными пропускными способностями — . |
Доказательство: |
Если , то теорема очевидна. Положим, что , и рассмотрим последнюю фазу, в которой поток не превышает . В этот момент осталось не более фаз, и — сеть с максимальным потоком . Мы можем применить Лемму(3), чтобы оценить длину слоистой сети, и, соответственно, количество выполненных фаз:Таким образом, прошло . фаз, и фаз осталось. |