Декомпозиция Эдмондса-Галлаи — различия между версиями
Dogzik (обсуждение | вклад) (→Структурная теорема Эдмондса-Галлаи) |
м (rollbackEdits.php mass rollback) |
||
(не показано 12 промежуточных версий 6 участников) | |||
Строка 1: | Строка 1: | ||
− | В этом направлении много усилий приложили Вильям Томас '''Татт''' (''William Thomas Tutte''), | + | В этом направлении много усилий приложили Вильям Томас '''Татт''' (''William Thomas Tutte''), Клод '''Берж''' (''Claude Berge''), Джек '''Эдмондс''' (''Jack Edmonds'') и Тибор '''Галлаи''' (''Tibor Gallai''). |
{{Определение | {{Определение | ||
+ | |id = deficit | ||
|definition= | |definition= | ||
'''Дефицитом''' (англ. ''deficit'') графа <tex>G</tex> мы будем называть величину: <br> | '''Дефицитом''' (англ. ''deficit'') графа <tex>G</tex> мы будем называть величину: <br> | ||
Строка 6: | Строка 7: | ||
где <tex>\alpha (G)</tex> {{---}} размер [[Теорема о максимальном паросочетании и дополняющих цепях#theorem1|максимального паросочетания]] в <tex>G</tex>, а <br> | где <tex>\alpha (G)</tex> {{---}} размер [[Теорема о максимальном паросочетании и дополняющих цепях#theorem1|максимального паросочетания]] в <tex>G</tex>, а <br> | ||
<tex>V(G)</tex> {{---}} множество вершин графа <tex>G. </tex> | <tex>V(G)</tex> {{---}} множество вершин графа <tex>G. </tex> | ||
+ | }} | ||
+ | {{Определение | ||
+ | |definition =<tex>\mathrm{odd}({G})</tex> {{---}} число нечетных компонент связности в графе <tex>{G}</tex>, где '''нечетная компонента''' (англ. ''odd component'') {{---}} это [[Отношение связности, компоненты связности#def2|компонента связности]], содержащая нечетное число вершин. | ||
+ | }} | ||
+ | |||
+ | {{Лемма | ||
+ | |statement= <tex>(n + |S| + odd(G \setminus S)) \; \equiv \; 0 \; ( mod \; 2) \; </tex>, где <tex>G</tex> {{---}} граф с <tex>n</tex> вершинами, <tex>S \subset {V}_{G}</tex> | ||
+ | |proof= | ||
+ | Удалим из графа <tex>G</tex> множество <tex>S</tex>, получим <tex>t</tex> компонент связности, содержащих <tex>k_1, k_2 ... k_t</tex> вершин соответственно. | ||
+ | <tex>|S|\; + \; \sum_{i=1}^{k}k_i \; = \; n \; </tex>, так как в сумме это все вершины исходного графа <tex>G</tex>. | ||
+ | Возьмем данное равенство по модулю два: <tex>(|S|\; + \; \sum_{i=1}^{k}k_i) \; \equiv \; n \; (mod \; 2)</tex> | ||
+ | В сумме <tex>\sum_{i=1}^{k}(k_i \; mod \; 2)</tex> число единиц равно числу нечетных компонент <tex>odd(G \setminus S)</tex>. Таким образом, <tex> \forall S \in V : \; (odd(G \setminus S) + |S|) \; \equiv \; n \; (mod \; 2) \;</tex>. | ||
}} | }} | ||
Строка 14: | Строка 27: | ||
Для любого графа <tex>G</tex> выполняется:<br> | Для любого графа <tex>G</tex> выполняется:<br> | ||
<tex>\mathrm{def}(G) = \max\limits_{S \subset V(G)} \{\mathrm{odd}(G - S) - |S|\}. </tex> | <tex>\mathrm{def}(G) = \max\limits_{S \subset V(G)} \{\mathrm{odd}(G - S) - |S|\}. </tex> | ||
+ | |proof= | ||
+ | <tex> \forall S \in V : \; (odd(G \setminus S) + |S|) \; \equiv \; n ( mod \; 2) \;</tex> | ||
+ | |||
+ | |||
+ | Рассмотрим несколько случаев: | ||
+ | |||
+ | |||
+ | 1. Если <tex> \max\limits_{S \in V}(odd(G \setminus S) \; - \; |S|) \; = 0 \; </tex>, тогда для любых <tex>S \in V: \; odd(G \setminus S) \leq |S| \; </tex>, следовательно выполнено условие [[Теорема Татта о существовании полного паросочетания|теоремы Татта]], значит, в графе есть совершенное паросочетание, то есть его дефицит равен нулю. | ||
+ | |||
+ | 2. Если <tex> \max\limits_{S \in V}(odd(G \setminus S) - |S|) = k \; </tex>, тогда рассмотрим исходный граф <tex>G</tex> и полный граф <tex>K_k</tex> с <tex>k</tex> вершинами, <tex>W</tex> - вершины <tex>K_k</tex>. Каждую вершину <tex>K_k</tex> соединим с каждой вершиной <tex>G</tex>. Получим граф <tex>H \; = \; K_k + G \;</tex>, докажем, что для него выполнено условие теоремы Татта. Докажем, что для любых <tex>S \in V_{H}: odd(H \setminus S) \; \leq \; |S| \; </tex>. | ||
+ | Рассмотрим <tex>S \; \subset \; V_H\;</tex>: | ||
+ | |||
+ | * Если <tex>W \not\subset S</tex>, тогда поскольку граф <tex>K_k</tex> полный и все его вершины связаны с каждой вершиной графа <tex>G</tex>, то граф <tex>H</tex> связный и <tex>odd(H \setminus S) \; = \; 0 \;</tex> или <tex>odd(G \setminus S) \; = \; 1 \;</tex>. | ||
+ | ** В случае <tex>odd(H \setminus S) \; = \; 0 \; </tex> условие очевидно выполняется, так как для любых <tex>S \in G : 0 \; \leq \; |S| \;</tex>. | ||
+ | ** Рассмотрим случай <tex>odd(H \setminus S) \; = \; 1 \;</tex>, <tex>|V_H| \; = \; n \; + \; k \; = \; n \; + \; odd(G \setminus A) \; - \; |A| \; </tex>, где <tex>A \; = \; arg \max\limits_{S \in V}(odd(G \setminus S) \; - \; |S|) \; </tex>. Разность <tex>odd(G \setminus A) \; - \; |A| \; </tex> имеет ту же четность, что и <tex>n</tex>, и <tex>odd(H \setminus S) \; = \; 1 \;</tex>, поэтому <tex>|V_H|</tex> четно, значит, по лемме, мощность <tex>S</tex> нечетна, следовательно она не равна нулю, значит, <tex> 1 \leq |S| </tex>. | ||
+ | |||
+ | |||
+ | * Если <tex>W \subset S \;</tex>, то <tex>odd(H \setminus S) \; = \; odd(G \setminus (S \cap V)) \; = odd(G \setminus (S \cap V)) \; - \; |S \cap V| \; + \; |S \cap V| \; \leq \; |S \cap V| \; + \; k \leq |S| \; </tex>, так как <tex> \max\limits_{S \in V}(odd(G \setminus S) - |S|) = k \; </tex>. Таким образом, для графа <tex>H</tex> выполнено условие теоремы Татта, следовательно в нём есть полное паросочетание. Рассмотрим полное паросочетание в графе <tex>H</tex>, удалим вершины <tex>W</tex> из графа <tex>H</tex>. Количество непокрытых вершин после удаления не больше, чем количество удаленных вершин <tex>k</tex>, значит, <tex>def(G) \; \leq \; k</tex>. Удалим множество вершин <tex>A \; = \; arg \max\limits_{S \in V}(odd(H \setminus S) \; - \; |S|) \; </tex> из графа <tex>G\;</tex>. Заметим, что после удаления в графе осталось <tex>odd(G \setminus A)\; </tex> нечетных компонент и образовались новые непокрытые вершины, но при этом число нечетных компонент больше числа удаленных на <tex>k</tex>. Значит, хотя бы <tex>k</tex> нечетных компонент содержали исходно непокрытую вершину, следовательно <tex>def(G) \; \geq \; k \; </tex>. Из <tex>def(G) \; \leq \; k</tex> и <tex>def(G) \; \geq \; k \; </tex> следует <tex>def(G) \; = \; k \; </tex>. | ||
}} | }} | ||
{{Теорема | {{Теорема | ||
+ | |id = theorem_Tatt_Berge | ||
|about=Татта-Бержа | |about=Татта-Бержа | ||
|statement= | |statement= | ||
Строка 70: | Строка 102: | ||
{{Теорема | {{Теорема | ||
+ | |id = theorem_Gallai | ||
|about=Галлаи | |about=Галлаи | ||
|statement= | |statement= | ||
Строка 78: | Строка 111: | ||
{{Лемма | {{Лемма | ||
+ | |id = stability_lemma | ||
|about= Галлаи, о стабильности (англ. ''stability lemma'') | |about= Галлаи, о стабильности (англ. ''stability lemma'') | ||
|statement= | |statement= | ||
Строка 110: | Строка 144: | ||
− | Так как <tex>D(G - a) = D(G)</tex>, то все вершины, которые были соседями <tex>D(G)</tex>, таковыми и остались. Однако по условию <tex> a \in A(G)</tex>, значит <tex>A(G - a) = A(G) \setminus \{a\}</tex>. | + | Так как <tex>D(G - a) = D(G)</tex>, то все вершины, которые были соседями <tex>D(G)</tex>, таковыми и остались. Однако, по условию <tex> a \in A(G)</tex>, значит <tex>A(G - a) = A(G) \setminus \{a\}</tex>. |
Строка 116: | Строка 150: | ||
− | Наконец, так как <tex> a \in A(G)</tex>, то все максимальные паросочетания в <tex>G</tex> включали <tex>a</tex>. Следовательно <tex>\alpha (G - a) < \alpha (G)</tex>. | + | Наконец, так как <tex> a \in A(G)</tex>, то все максимальные паросочетания в <tex>G</tex> включали <tex>a</tex>. Следовательно, <tex>\alpha (G - a) < \alpha (G)</tex>. Заметим, что, взяв любое максимальное паросочетания в <tex>G</tex> и удалив ребро инцидентное <tex>a</tex>, мы получим паросочетание <tex>M'</tex>, которое на 1 меньше исходного, при этом <tex>M' \in E(G - a)</tex>. В свою очередь, это самое большое паросочетание, которое мы могли теоретически получить в <tex>G - a</tex>. Следовательно, <tex> \alpha (G - a) = \alpha (G) - 1.</tex> |
}} | }} | ||
{{Теорема | {{Теорема | ||
+ | |id = theorem_Gallai_Edmonds | ||
|about = Галлаи, Эдмондс | |about = Галлаи, Эдмондс | ||
|statement= | |statement= | ||
Строка 154: | Строка 189: | ||
|id = barier_struct1 | |id = barier_struct1 | ||
|about = о связи барьера с <tex>D(G)</tex> | |about = о связи барьера с <tex>D(G)</tex> | ||
− | |statement= Для любого барьера графа <tex> | + | |statement= Для любого барьера <tex>B</tex> графа <tex>G</tex> верно, что <tex>B\cap D(G) = \varnothing</tex> |
− | |proof= Рассмотрим <tex>U_{1}, U_{2}, \ldots U_{n}</tex> {{---}} нечётные компоненты связанности <tex>G \setminus B</tex>, <tex>\ M</tex> {{---}} максимальное паросочетание в <tex>G</tex>. <tex>\forall\ U_{i}\ \exists x \in U_{i}: x</tex> не покрыта <tex>\ M</tex> или <tex>xv \in M \land v \in B</tex>. Всего графе не покрыто хотя бы <tex>odd(G\setminus B) - |B|</tex> вершин. Однако так как <tex>B</tex> {{---}} барьер, непокрыто '''ровно''' столько вершин. Следовательно любое максимальное паросочетание не покрывает только вершины из <tex>G \setminus B</tex>, а значит каждая вершина барьера покрыта в любом максимальном паросочетании. Отсюда получаем, что ни одна вершина из <tex>D(G)</tex> не могла оказаться в барьере. | + | |proof= Рассмотрим <tex>U_{1}, U_{2}, \ldots U_{n}</tex> {{---}} нечётные компоненты связанности <tex>G \setminus B</tex>, <tex>\ M</tex> {{---}} максимальное паросочетание в <tex>G</tex>. <tex>\forall\ U_{i}\ \exists x \in U_{i}: x</tex> не покрыта <tex>\ M</tex> или <tex>xv \in M \land v \in B</tex>. Всего графе не покрыто хотя бы <tex>odd(G\setminus B) - |B|</tex> вершин. Однако, так как <tex>B</tex> {{---}} барьер, непокрыто '''ровно''' столько вершин. Следовательно, любое максимальное паросочетание не покрывает только вершины из <tex>G \setminus B</tex>, а значит каждая вершина барьера покрыта в любом максимальном паросочетании. Отсюда получаем, что ни одна вершина из <tex>D(G)</tex> не могла оказаться в барьере. |
}} | }} | ||
Строка 162: | Строка 197: | ||
|about=Следствие из леммы | |about=Следствие из леммы | ||
|statement=В любом максимальном паросочетании все вершины барьера соединены соединены с вершинами <tex>G \setminus B</tex> | |statement=В любом максимальном паросочетании все вершины барьера соединены соединены с вершинами <tex>G \setminus B</tex> | ||
− | |proof=Так как | + | |proof=Так как для барьера <tex>B</tex> верно, что <tex>odd(G\setminus B) - |B|=def(G) \geqslant 0</tex>, то ровно <tex>|B|</tex> вершин из нечётных компонент <tex>G \setminus B</tex> покрыты рёбрами <tex>xv \in M \land v \in B</tex> |
}} | }} | ||
Строка 169: | Строка 204: | ||
|about = о дополнении барьера | |about = о дополнении барьера | ||
|statement= Пусть <tex>x\in A(G)\cup C(G),\ G'=G\setminus x,\ B'</tex> {{---}} барьер графа <tex>G'</tex>. Тогда <tex>B=B'\cup x</tex> {{---}} барьер графа <tex>G</tex> | |statement= Пусть <tex>x\in A(G)\cup C(G),\ G'=G\setminus x,\ B'</tex> {{---}} барьер графа <tex>G'</tex>. Тогда <tex>B=B'\cup x</tex> {{---}} барьер графа <tex>G</tex> | ||
− | |proof= Так как <tex>x \notin D(G)</tex>, то | + | |proof= Так как <tex>x \notin D(G)</tex>, то для любого максимального паросочетания <tex>M: x \in M</tex>. Следовательно, <tex>|M'| = |M| - 1</tex>, где <tex>M'</tex> {{---}} максимальное паросочетание в <tex>G'</tex>. |
<tex>def(G') = (|V| - 1)- 2 \cdot |M'| = |V| - 2 \cdot |M| + 1 = def(G) + 1</tex> | <tex>def(G') = (|V| - 1)- 2 \cdot |M'| = |V| - 2 \cdot |M| + 1 = def(G) + 1</tex> | ||
Строка 186: | Строка 221: | ||
== См. также == | == См. также == | ||
* [[Теорема Татта о существовании полного паросочетания]] | * [[Теорема Татта о существовании полного паросочетания]] | ||
+ | * [[Лапы и минимальные по включению барьеры в графе]] | ||
+ | * [[Пересечение всех максимальных по включению барьеров]] | ||
== Источники информации== | == Источники информации== | ||
*[http://www.people.vcu.edu/~dcranston/691/edmonds-gallai.pdf Edmonds-Gallai Decomposition and Factor-Critical Graphs] | *[http://www.people.vcu.edu/~dcranston/691/edmonds-gallai.pdf Edmonds-Gallai Decomposition and Factor-Critical Graphs] | ||
*[http://immorlica.com/combOpt/lec2.pdf Edmonds-Gallai Decomposition, Edmonds’ Algorithm] | *[http://immorlica.com/combOpt/lec2.pdf Edmonds-Gallai Decomposition, Edmonds’ Algorithm] | ||
+ | *[https://www.youtube.com/watch?v=1KggxCJZFRg {{---}} Лекция А.С. Станкевича] | ||
[[Категория:Алгоритмы и структуры данных]] | [[Категория:Алгоритмы и структуры данных]] | ||
[[Категория:Задача о паросочетании]] | [[Категория:Задача о паросочетании]] |
Текущая версия на 19:35, 4 сентября 2022
В этом направлении много усилий приложили Вильям Томас Татт (William Thomas Tutte), Клод Берж (Claude Berge), Джек Эдмондс (Jack Edmonds) и Тибор Галлаи (Tibor Gallai).
Определение: |
Дефицитом (англ. deficit) графа
| мы будем называть величину:
Определение: |
компонента связности, содержащая нечетное число вершин. | — число нечетных компонент связности в графе , где нечетная компонента (англ. odd component) — это
Лемма: |
, где — граф с вершинами, |
Доказательство: |
Удалим из графа В сумме множество , получим компонент связности, содержащих вершин соответственно. , так как в сумме это все вершины исходного графа . Возьмем данное равенство по модулю два: число единиц равно числу нечетных компонент . Таким образом, . |
Теорема (Бержа): |
Для любого графа выполняется: |
Доказательство: |
2. Если , тогда рассмотрим исходный граф и полный граф с вершинами, - вершины . Каждую вершину соединим с каждой вершиной . Получим граф , докажем, что для него выполнено условие теоремы Татта. Докажем, что для любых . Рассмотрим :
|
Теорема (Татта-Бержа): |
Дан граф , размер максимального паросочетания в нем равен: |
Доказательство: |
Предположим
|
Определение: |
Множество | , для которого , называется барьером (англ. barrier).
Определение: |
Пусть | . Множeство соседей (англ. neighbors) определим формулой:
Структурная теорема Эдмондса-Галлаи
- максимальное паросочетание, не покрывающее существует
- — размер максимального паросочетания в
Определение: |
Граф совершенное паросочетание. | называется фактор-критическим (англ. factor-critical graph), если для любой вершины в графе существует
Теорема (Галлаи): |
— связен и для любой вершины выполняется равенство . |
Лемма (Галлаи, о стабильности (англ. stability lemma)): |
Пусть Тогда:
|
Доказательство: |
Для начала докажем, что
Предположим, что существует максимальное паросочетание a. Путь b. Путь c. Путь кончается ребром из (см. рисунок) Рассмотрим паросочетание . Тогда , причём . Противоречие с максимальностью паросочетания .Таким образом, наше предположение невозможно и . А значит, .
|
Теорема (Галлаи, Эдмондс): |
Пусть — граф, — компоненты связности графа , . Тогда:
|
Доказательство: |
|
Утверждение (следствие из теоремы): |
— барьер графа |
Лемма (о связи барьера с | ):
Для любого барьера графа верно, что |
Доказательство: |
Рассмотрим | — нечётные компоненты связанности , — максимальное паросочетание в . не покрыта или . Всего графе не покрыто хотя бы вершин. Однако, так как — барьер, непокрыто ровно столько вершин. Следовательно, любое максимальное паросочетание не покрывает только вершины из , а значит каждая вершина барьера покрыта в любом максимальном паросочетании. Отсюда получаем, что ни одна вершина из не могла оказаться в барьере.
Утверждение (Следствие из леммы): |
В любом максимальном паросочетании все вершины барьера соединены соединены с вершинами |
Так как для барьера | верно, что , то ровно вершин из нечётных компонент покрыты рёбрами
Лемма (о дополнении барьера): |
Пусть — барьер графа . Тогда — барьер графа |
Доказательство: |
Так как , то для любого максимального паросочетания . Следовательно, , где — максимальное паросочетание в .
Отсюда следует, что — барьер графа . |
Теорема (о структуре барьера): |
Любой барьер графа состоит только из вершин , причём каждая вершина из этого множества входит в какой-то барьер |
Доказательство: |
По лемме о связи барьера с | мы знаем, что в барьере нет вершин вершин из . По лемме о дополнение барьера мы можем взять любую вершину из , удалить из графа, и с помощью барьера нового графа получить барьер исходного, включающий данную вершину.