Декомпозиция Эдмондса-Галлаи — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Структурная теорема Эдмондса-Галлаи)
м (rollbackEdits.php mass rollback)
 
(не показаны 54 промежуточные версии 10 участников)
Строка 1: Строка 1:
 +
В этом направлении много усилий приложили Вильям Томас '''Татт''' (''William Thomas Tutte''), Клод '''Берж''' (''Claude Berge''), Джек '''Эдмондс''' (''Jack Edmonds'') и Тибор '''Галлаи''' (''Tibor Gallai'').
 
{{Определение  
 
{{Определение  
 +
|id = deficit
 
|definition=
 
|definition=
<tex>odd(G-U)</tex> - количество [[Отношение связности, компоненты связности|компонент связности]] нечетного размера в <tex> G[V - U]</tex>.}}
+
'''Дефицитом''' (англ. ''deficit'') графа <tex>G</tex> мы будем называть величину: <br>
 
 
{{Определение
 
|definition=
 
'''Дефицитом''' графа G мы будем называть величину: <br>
 
 
<tex>\mathrm{def}(G) = |V| - 2\alpha (G)</tex>, <br>
 
<tex>\mathrm{def}(G) = |V| - 2\alpha (G)</tex>, <br>
где <tex>\alpha (G)</tex> - размер [[Теорема о максимальном паросочетании и дополняющих цепях|максимального поросочетания]] в <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>.
 +
}}
  
 
{{Теорема
 
{{Теорема
 +
|id = Th_Berge
 
|about=Бержа
 
|about=Бержа
 
|statement=
 
|statement=
Для любого графа G выполняется:<br>
+
Для любого графа <tex>G</tex> выполняется:<br>
<tex>def(G) = \max_{S \subset V(G)} \{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=
 
Дан граф <tex>G</tex>, размер максимального паросочетания в нем равен:<br>
 
Дан граф <tex>G</tex>, размер максимального паросочетания в нем равен:<br>
<tex>\alpha (G) = \min_{U \in V} \{1/2(|V|-|U|-odd(G-U)\} </tex>
+
<tex>\mathrm{\alpha}(G) = \min\limits_{U \in V} \{\dfrac{1}{2}(|V|+|U|-\mathrm{odd}(G - U)\}. </tex>
 +
|proof=
 +
Предположим <tex>G</tex> {{---}} связный, иначе мы можем применить индукцию к компонентам <tex>G</tex>. Приведем доказательство по индукции по числу вершин в графе. <br>
 +
<u> ''База  индукции:''</u> <br>
 +
Очевидно, для <tex> n = 1 </tex> утверждение верно. <br>
 +
<u> ''Индукционный переход:''</u> <br>
 +
Рассмотрим два случая:
 +
# <tex>G</tex> {{---}} содержит вершину <tex>v</tex> покрытую всеми максимальными паросочетаниями (например средняя вершина)
 +
#: Тогда <tex> \mathrm{\alpha}(G - v) = \mathrm{\alpha}(G) - 1 </tex>.
 +
#: По индукции, формула Татта-Берджа содержит <tex>G - v</tex> для некоторого множества  <tex>U'</tex>. Пусть <tex>U = U' \bigcup v</tex>. Тогда:
 +
#: <tex> \mathrm{\alpha}(G) = \mathrm{\alpha}(G - v) + 1 = \dfrac{1}{2}(|V - v|+|U - v| - \mathrm{odd}(G - v - (U - v))) + 1 = </tex>
 +
#: <tex> = \dfrac{1}{2}(|V| - 1 + |U|- 1 - \mathrm{odd}(G - U)) + 1 = \dfrac{1}{2}(|V|+|U| - \mathrm{odd}(G - U)). </tex>
 +
#:
 +
# Для каждой вершины <tex>v</tex> есть максимальное паросочетание <tex>M</tex> которое не покрывает <tex>v</tex> (например <tex>C_3</tex>)
 +
#:
 +
#: Покажем, что существует паросочетание размера <tex> \dfrac{1}{2}(|V| - 1) </tex>, из которого следует теорема (при <tex> U = \emptyset </tex>).
 +
#: <u> ''От противного:''</u>
 +
#: Предположим что любое максимальная паросочетание <tex> M </tex> не покрывает, по крайней мере, две различные вершины <tex> u </tex> и <tex> v </tex>. Среди всех таких <tex> (M, u, v) </tex> выберем их так, что <tex> \mathrm{d}(u, u) </tex> в <tex> G </tex> {{---}} минимально.
 +
#: Если <tex> \mathrm{d}(u, u) = 1 </tex>, то <tex> u </tex> и <tex> v </tex> являются смежными, и, следовательно, мы можем увеличить <tex> M </tex>, что противоречит его максимальности.
 +
#: Значит <tex> \mathrm{d}(u, u) \geqslant 2 </tex>, и, следовательно, мы можем выбрать промежуточную вершину <tex> t </tex> на пути <tex> u-v </tex> и <tex> N </tex> максимальное паросочетание, такое что симметрическая разность с <tex> M </tex> минимальна. Так как <tex> (M, u, v) </tex> минимально, то <tex> N </tex> должно охватывать <tex> u </tex> и <tex> v </tex> так, что есть другая вершина <tex> x </tex>, покрытая только в <tex> M </tex>.
 +
#: Пусть <tex> y </tex> будет вершиной покрытой с <tex> x </tex> в <tex> M </tex> и заметим <tex> y \neq t </tex> (иначе можно было бы добавить к <tex> N </tex>). Пусть <tex> z </tex> будет вершиной покрытой с <tex> y </tex> в <tex> N </tex> и заметим <tex> z \neq x </tex> (так как <tex> x </tex> не покрыто в <tex> N </tex>). Тогда <tex> N - yz + xy </tex> {{---}} паросочетание, которое имеет с <tex> M </tex> меньшую симметрическую разность, что противоречит выбору <tex> N </tex>.
 
}}
 
}}
 
 
 
{{Определение  
 
{{Определение  
 +
|id=barrier
 
|definition=
 
|definition=
Множество <tex>S \subset V (G)</tex>, для которого <tex>odd(G - S) - |S| = def(G) </tex>, называется '''барьером'''.
+
Множество <tex>S \subset V (G)</tex>, для которого <tex>\mathrm{odd}(G - S) - |S| = \mathrm{def}(G) </tex>, называется '''барьером''' (англ. ''barrier'').
 
}}
 
}}
 
 
{{Определение
 
{{Определение
|definition=Пусть <tex>X \subset V </tex>. '''Множeство соседей''' <tex>X</tex> определим формулой:  <tex>N(X)= \{  y \in V: (x,y) \in E \}</tex>
+
|definition=Пусть <tex>X \subset V </tex>. '''Множeство соседей''' (англ. ''neighbors'') <tex>X</tex> определим формулой:  <tex>N(X)= \{  y \in V:(x,y) \in E \}</tex>
 
}}
 
}}
  
  
 
+
==Структурная теорема Эдмондса-Галлаи==
=Структурная теорема Эдмондса-Галлаи=
 
 
{{Определение  
 
{{Определение  
 +
|neat = 1
 
|definition=
 
|definition=
Необходимые определения:
+
Структурные единицы декопозиции:
[[Файл: EG_red.png|300px|thumb|right|Пример. Рёбра из паросочетания выделены красным]]
+
# <tex>D(G) = \{v \in V \mid </tex> существует [[Теорема о максимальном паросочетании и дополняющих цепях|максимальное паросочетание]], не покрывающее <tex> v\}</tex>
# <tex>D(G) = \{v \in V |</tex> существует [[Теорема о максимальном паросочетании и дополняющих цепях|максимальное паросочетание]], не покрывающее <tex> v\}</tex>
 
 
# <tex>A(G) = N(D(G)) \setminus D(G)</tex>
 
# <tex>A(G) = N(D(G)) \setminus D(G)</tex>
# <tex>C(G) = V \setminus( D(G) \bigcup A(G) )</tex>
+
# <tex>C(G) = V \setminus(D(G) \bigcup A(G))</tex>
# <tex> \alpha (G) </tex> - размер максимального паросочетания в <tex>G</tex>
+
# <tex> \alpha (G) </tex> {{---}} размер максимального паросочетания в <tex> G. </tex>
 
}}
 
}}
 
+
[[Файл: EG_red.png|300px|thumb|right|Пример. Рёбра из паросочетания выделены красным]]
 
{{Определение  
 
{{Определение  
 
|definition=
 
|definition=
Граф <tex>G</tex> называется '''Фактор-критическим''', если для любой вершины <tex>v \in G</tex> в графе <tex>G</tex> существует полное паросочетание, не покрываеющее <tex>v</tex>.
+
Граф <tex>G</tex> называется '''фактор-критическим''' (англ. ''factor-critical graph''), если для любой вершины <tex>v \in G</tex> в графе <tex>G \setminus {v}</tex> существует [[Теорема Холла#def1|совершенное паросочетание]].
 
}}
 
}}
 
 
  
 
{{Теорема
 
{{Теорема
 +
|id = theorem_Gallai
 
|about=Галлаи
 
|about=Галлаи
 
|statement=
 
|statement=
<tex>G</tex> - фактор-критический граф <tex> \Leftrightarrow </tex> <br>
+
<tex>G</tex> {{---}} фактор-критический граф <tex> \Leftrightarrow </tex> <br>
<tex>G</tex> - связен и для любой вершины<tex> u \in V(G) </tex> выполняется равенство <tex> \alpha (G - u) = \alpha  (G)</tex>.
+
<tex>G</tex> {{---}} связен и для любой вершины <tex>u \in V(G) </tex> выполняется равенство <tex> \alpha (G - u) = \alpha  (G)</tex>.
 
}}
 
}}
 +
  
 
{{Лемма
 
{{Лемма
|about= Галлаи, о стабильности  
+
|id = stability_lemma
 +
|about= Галлаи, о стабильности (англ. ''stability lemma'')
 
|statement=
 
|statement=
 
Пусть <tex> a \in A(G).</tex> Тогда:  
 
Пусть <tex> a \in A(G).</tex> Тогда:  
Строка 73: Строка 120:
 
# <tex> \alpha (G - a) = \alpha (G) - 1.</tex>
 
# <tex> \alpha (G - a) = \alpha (G) - 1.</tex>
 
|proof=
 
|proof=
Достаточно доказать, что <tex>D(G - a) = D(G)</tex>. <br>
+
Для начала докажем, что <tex>D(G - a) = D(G)</tex>. <br>
'''1.''' покажем, что <tex>D(G - a) \supset D(G)</tex> : <br>
+
[[Файл: Gallai-lema-a.png|150px|thumb|right|Случай '''а''']]
Пусть <tex>u \in D(G)</tex>. Тогда существует [[Теорема о максимальном паросочетании и дополняющих цепях|максимальное паросочетание]] <tex>M_u</tex> графа <tex>G</tex>, не покрывающее <tex>u</tex>. Поскольку любое максимальное паросочетание графа <tex>G</tex> покрывает a, то <tex> \alpha (G - a) = \alpha (G) - 1 </tex> и более того, если, для некоторой вершины <tex>x \in D(G)</tex>, <tex>ax \in M_u</tex>, то <tex>M_u \setminus {ax} </tex> -  максимальное паросочетание графа <tex> G - a </tex>, не покрывающее <tex> u </tex>. Таким образом, <tex>D(G - a) \supset D(G) </tex>. <br>
+
[[Файл: Gallai-lema-b.png|150px|thumb|right|Случай '''b''']]
'''2.''' покажем, что <tex> D(G - a) \subset D(G)</tex>: <br>
+
[[Файл: Gallai-lema-с.png|150px|thumb|right|Случай '''c''']]
Предположим, что существует максимальное паросочетание <tex>M'</tex> графа <tex> G - a</tex>, не покрывающее вершину <tex>v not \in D(G)</tex>. Пусть <tex> w \in D(G) </tex> - смежная с <tex> a \in A(G)</tex> вершина, а <tex> M_w </tex>- максимальное паросочетание графа <tex> G </tex>, не покрывающее <tex> w </tex>. Так как <tex> v not \in D(G) </tex>, максимальное паросочетание <tex> M_w </tex> покрывает вершину <tex>v</tex>. Рассмотрим граф <tex> H = G(M_w \bigcup M') </tex> - очевидно, он является объединением нескольких путей и чётных циклов. Пусть <tex> U </tex> - компонента связности графа <tex> H </tex>, содержащая <tex>v</tex>. Так как <tex> dH(v) = 1 </tex>, то <tex> P = H(u) </tex> - путь с началом в вершине <tex>v</tex>. В пути <tex>P</tex> чередуются рёбра из <tex> M_w и M' </tex>, причём начинается путь ребром из <tex>M_w </tex>. Так как <tex> dH(a) = 1 </tex>, то вершина a либо не принадлежит пути <tex>P</tex>, либо является её концом (в этом случае последнее ребро пути принадлежит паросочетанию <tex> M_w</tex>). Рассмотрим несколько случаев: <br>
+
# Покажем, что <tex>D(G - a) \supset D(G)</tex> : <br>
 +
#:Пусть <tex>u \in D(G)</tex>. Тогда существует [[Теорема о максимальном паросочетании и дополняющих цепях|максимальное паросочетание]] <tex>M_u</tex> графа <tex>G</tex>, не покрывающее <tex>u</tex>. Поскольку любое максимальное паросочетание графа <tex>G</tex> покрывает <tex>a</tex>, то <tex> \alpha (G - a) = \alpha (G) - 1 </tex> и более того, если, для некоторой вершины <tex>x \in D(G)</tex>, <tex>ax \in M_u</tex>, то <tex>M_u \setminus {ax} </tex> {{---}} максимальное паросочетание графа <tex> G - a </tex>, не покрывающее <tex> u </tex>. Таким образом, <tex>D(G - a) \supset D(G) </tex>. <br>
 +
#покажем, что <tex> D(G - a) \subset D(G)</tex>: <br>
 +
Предположим, что существует максимальное паросочетание <tex>M'</tex> графа <tex> G - a</tex>, не покрывающее вершину <tex>v</tex> <tex> \notin D(G)</tex>. Пусть <tex> w \in D(G) </tex> {{---}} смежная с <tex> a \in A(G)</tex> вершина, а <tex> M_w </tex> {{---}} максимальное паросочетание графа <tex> G </tex>, не покрывающее <tex> w </tex>. Так как <tex>v</tex> <tex> \notin D(G) </tex>, максимальное паросочетание <tex> M_w </tex> покрывает вершину <tex>v</tex>. Рассмотрим граф <tex> H = G(M_w \bigcup M') </tex> {{---}} очевидно, он является объединением нескольких путей и чётных циклов. Пусть <tex> U </tex> {{---}} компонента связности графа <tex> H </tex>, содержащая <tex>v</tex>. Так как <tex> deg_H(v) = 1 </tex> (степень вершины), то <tex> P = H(U) </tex> {{---}} путь с началом в вершине <tex>v</tex>. В пути <tex>P</tex> чередуются рёбра из <tex> M_w</tex> и <tex>M' </tex>, причём начинается путь ребром из <tex>M_w </tex>. Так как <tex> deg_H(a) = 1 </tex>, то вершина a либо не принадлежит пути <tex>P</tex>, либо является её концом (в этом случае последнее ребро пути принадлежит паросочетанию <tex> M_w</tex>). Рассмотрим несколько случаев: <br>
  
[[Файл: Gallai-lema-a.png|150px|thumb|right|случай '''а''']]
 
 
'''a.''' Путь <tex>P</tex> кончается ребром из <tex> M'</tex> (см. рисунок)<br>
 
'''a.''' Путь <tex>P</tex> кончается ребром из <tex> M'</tex> (см. рисунок)<br>
 
Рассмотрим паросочетание <tex>M_v = M_w \oplus E(P)</tex> (симметрическая разность
 
Рассмотрим паросочетание <tex>M_v = M_w \oplus E(P)</tex> (симметрическая разность
<tex> M_w и E(P)</tex>. то есть, рёбра, входящие ровно в одно из двух множеств).
+
<tex> M_w</tex> и <tex>E(P)</tex>. то есть, рёбра, входящие ровно в одно из двух множеств).
Очевидно, <tex>M_v</tex> - максимальное паросочетание графа <tex>G</tex>, не покрывающее <tex>v</tex>, поэтому <tex> v \in D(G)</tex>, противоречие. <br>
+
Очевидно, <tex>M_v</tex> {{---}} максимальное паросочетание графа <tex>G</tex>, не покрывающее <tex>v</tex>, поэтому <tex> v \in D(G)</tex>, противоречие. <br>
  
[[Файл: Gallai-lema-b.png|150px|thumb|right|случай '''b''']]
+
'''b.''' Путь <tex>P</tex> кончается ребром из <tex> M_w</tex>, вершина <tex>a</tex> {{---}} конец пути <tex>P</tex>. (см.рисунок)<br>
'''b.''' Путь <tex>P</tex> кончается ребром из <tex> M_w</tex>, вершина a - конец пути <tex>P</tex>. (см.рисунок)<br>
+
Рассмотрим паросочетание <tex>M_v∗ = (M_w \oplus E(P)) \bigcup \{aw\} </tex>. Тогда <tex> M_v∗ </tex> {{---}} максимальное паросочетание графа <tex> G </tex>, не покрывающее <tex> v </tex>, поэтому <tex> v \in D(G) </tex>, противоречие.
Рассмотрим паросочетание <tex>M_v∗ = (M_w \oplus E(P)) \bigcup \{aw\} </tex>. Тогда <tex> M_v∗ </tex> - максимальное паросочетание графа <tex> G </tex>, не покрывающее <tex> v </tex>, поэтому <tex> v \in D(G) </tex>, противоречие.
 
  
[[Файл: Gallai-lema-с.png|150px|thumb|right|случай '''c''']]
 
 
'''c.'''  Путь <tex> P </tex> кончается ребром из <tex> M_w, a \in V(P) </tex> (см. рисунок)
 
'''c.'''  Путь <tex> P </tex> кончается ребром из <tex> M_w, a \in V(P) </tex> (см. рисунок)
 
Рассмотрим паросочетание <tex> M'' = M \oplus E(P) </tex>. Тогда <tex> |M''| = |M'| + 1 </tex>, причём <tex>M'' \subset E(G - a)</tex>. Противоречие с максимальностью паросочетания <tex>M'</tex>.
 
Рассмотрим паросочетание <tex> M'' = M \oplus E(P) </tex>. Тогда <tex> |M''| = |M'| + 1 </tex>, причём <tex>M'' \subset E(G - a)</tex>. Противоречие с максимальностью паросочетания <tex>M'</tex>.
 +
 +
Таким образом, наше предположение невозможно и <tex>D(G - a) \subset D(G)</tex>.
 +
А значит, <tex>D(G - a) = D(G)</tex>.
  
  
Таким образом, наше предположение невозможно и <tex>D(G - a) \subset D(G)</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>.
 +
 
 +
 
 +
Так же заметим, что <tex>C(G - a) = V(G - a) \setminus (D(G - a) \cup A(G - a)) = V(G - a) \setminus (D(G) \cup (A(G) \setminus \{a\}))</tex><tex> = V(G) \setminus (D(G) \cup A(G)) = C(G)</tex>
 +
 
  
А значит, <tex>D(G - a) = D(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=
Пусть G - граф, <tex>U_1,{...},U_n</tex> - компоненты связности графа <tex>G(D(G))</tex>, <tex>D_i = G(U_i), C = G(C(G))</tex>. тогда:
+
Пусть <tex>G</tex> {{---}} граф, <tex>U_1\ldots U_n</tex> {{---}} компоненты связности графа <tex>G(D(G))</tex>, <tex>D_i = G(U_i), C = G(C(G))</tex>. Тогда:
 
 
 
# Граф <tex>C</tex> имеет совершенное паросочетание.<br>
 
# Граф <tex>C</tex> имеет совершенное паросочетание.<br>
# Графы <tex>D_1,{...},D_n</tex> - фактор-критические. <br>
+
# Графы <tex>D_1\ldots D_n</tex> {{---}} фактор-критические. <br>
# Любое максимальное паросочетание <tex>M</tex> графа <tex>G</tex> состоит из совершенного паросочетания графа <tex>C</tex>, почти совершенных паросочетаний графов <tex>D_1,{...},D_n</tex> и покрывает все вершины множества <tex>A(G)</tex> рёбрами с концами в различных компонентах связности <tex>U_1,{...},U_n</tex> <br>
+
# Любое максимальное паросочетание <tex>M</tex> графа <tex> G </tex> состоит из совершенного паросочетания графа <tex> C </tex>, почти совершенных паросочетаний графов <tex> D_1\ldots D_n </tex> и покрывает все вершины множества <tex> A(G) </tex> рёбрами с концами в различных компонентах связности <tex> U_1\ldots U_n. </tex> <br>
# <tex>def(G) = n - |A(G)|, 2\alpha (G) = v(G) + |A(G)| - n</tex>.
+
# <tex>\mathrm{def}(G) = n - |A(G)|.</tex> <br>
 
+
# <tex>2\mathrm{\alpha}(G) = v(G) + |A(G)| - n</tex>.
 
|proof=
 
|proof=
 
[[Файл: Edmonds-Gallai_2.png|300px|thumb|right|Пример]]
 
[[Файл: Edmonds-Gallai_2.png|300px|thumb|right|Пример]]
1) Последовательно удаляя вершины множества<tex> A = A(G)</tex>, по лемме о стабильности мы получим:
+
# Последовательно удаляя вершины множества <tex>A = A(G)</tex>, по лемме о стабильности мы получим:
* <tex>D(G - A) = D(G),</tex>  
+
#:* <tex>D(G - A) = D(G),</tex>  
* <tex>A(G - A) = \O, </tex>
+
#:* <tex>A(G - A) = \O, </tex>
* <tex>C(G - A) = C(G),</tex>
+
#:* <tex>C(G - A) = C(G),</tex>
* <tex>\alpha (G - A) = \alpha (G) - |A|.</tex>
+
#:* <tex>\alpha (G - A) = \alpha (G) - |A|.</tex>
 +
#:
 +
#:Это означает, что не существует рёбер, соединяющих вершины из <tex>C(G - A)</tex> и <tex>D(G - A)</tex>. Каждое максимальное паросочетание <tex>M'</tex> графа <tex>G - A</tex> покрывает все вершины множества <tex>C(G)</tex>, поэтому <tex>M'</tex> содержит совершенное паросочетание графа <tex>C</tex>. Тем самым, мы доказали пункт <tex>1)</tex>.
 +
#:
 +
# Из формулы <tex> \alpha(G - A) = \alpha (G) - |A|</tex> следует, что <tex>U_1\ldots U_n</tex> {{---}} компоненты связности графа <tex>G - A</tex>. Для любой вершины <tex>u \in U_i</tex> существует максимальное паросочетание <tex>M_u</tex> графа <tex>G - A</tex>, не содержащее <tex>u</tex>. Так как <tex>U_i</tex> {{---}} компонента связности графа <tex>G - A</tex>, паросочетание <tex>M_u</tex> содержит максимальное паросочетание графа <tex>D_i</tex> (разумеется, не покрывающее вершину <tex>u</tex>). Следовательно, <tex> \alpha (D_i) = \alpha (D_i - u) </tex> и по теореме Галлаи (мы получаем, что граф <tex>D_i</tex> {{---}} фактор-критический.
 +
#:
 +
# Пусть <tex>M</tex> {{---}} максимальное паросочетание графа <tex>G</tex>, а <tex>M'</tex> получено из <tex>M</tex> удалением всех рёбер, инцидентных вершинам множества <tex>A</tex>. Тогда <tex>|M'| \geqslant |M| - |A|</tex> и по формуле <tex> \alpha (G - A) = \alpha (G) - |A|</tex> понятно, что <tex>M'</tex> {{---}} максимальное паросочетание графа <tex>G - A</tex>. Более того, из <tex> \alpha (G - A) = \alpha (G) - |A|</tex> следует <tex>|M'| = |M| - |A|</tex>, а значит, все вершины множества <tex>A</tex> покрыты в <tex>M</tex> различными рёбрами. Так как <tex>M'</tex> {{---}} максимальное паросочетание графа <tex>G - A</tex>, то по пунктам <tex>1)</tex> и <tex>2)</tex> очевидно, что <tex>M'</tex> содержит совершенное паросочетание графа <tex>C</tex> и почти совершенные паросочетания фактор-критических графов <tex>D_1\ldots D_n</tex>. Значит, рёбра паросочетания <tex>M</tex> соединяют вершины <tex>A</tex> с непокрытыми <tex>M'</tex> вершинами различных компонент связности из <tex>U_1\ldots U_n</tex>.
 +
# Из пункта <tex>3)</tex> сразу же следуют равенства пункта <tex>4)</tex> и <tex>5)</tex>.
 +
}}
 +
 
 +
{{Утверждение
 +
|about=следствие из теоремы
 +
|statement=
 +
<tex>A(G)</tex> {{---}} '''барьер''' графа <tex>G</tex>
 +
}}
  
Это означает, что не существует рёбер, соединяющих вершины из <tex>C(G - A)</tex> и <tex>D(G - A)</tex>. Каждое максимальное паросочетание <tex>M'</tex> графа <tex>G - A</tex> покрывает все вершины множества <tex>C(G)</tex>, поэтому <tex>M'</tex> содержит
+
{{Лемма
совершенное паросочетание графа <tex>C</tex>. Тем самым, мы доказали пункт 1).
+
|id = barier_struct1
 +
|about = о связи барьера с <tex>D(G)</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> не могла оказаться в барьере.
 +
}}
  
2) Из формулы <tex> \alpha(G - A) = \alpha (G) - |A|</tex> следует, что <tex>U_1,{...},U_n</tex>- компоненты связности графа <tex>G - A</tex>. Для любой вершины <tex>u \in U_i</tex> существует максимальное паросочетание <tex>M_u</tex> графа <tex>G - A</tex>, не содержащее <tex>u</tex>. Так как <tex>U_i</tex> -  компонента связности графа <tex>G - A</tex>, паросочетание <tex>M_u</tex> содержит максимальное паросочетание графа <tex>D_i</tex> (разумеется, не покрывающее вершину <tex>u</tex>). Следовательно, <tex> \alpha (D_i) = \alpha (D_i - u) </tex> и по теореме Галлаи(выше) мы получаем, что граф <tex>D_i</tex> - фактор-критический.
+
{{Утверждение
 +
|id = barier_struct1a
 +
|about=Следствие из леммы
 +
|statement=В любом максимальном паросочетании все вершины барьера соединены соединены с вершинами <tex>G \setminus B</tex>
 +
|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>
 +
}}
  
3) Пусть <tex>M</tex> - максимальное паросочетание графа <tex>G</tex>, а <tex>M'</tex> получено из <tex>M</tex> удалением всех рёбер, инцидентных вершинам множества <tex>A</tex>. Тогда <tex>|M'| \ge |M| - |A|</tex> и по формуле <tex> \alpha (G - A) = \alpha (G) - |A|</tex> понятно, что <tex>M'</tex> - максимальное паросочетание графа <tex>G - A</tex>. Более того, из <tex> \alpha (G - A) = \alpha (G) - |A|</tex> следует <tex>|M'| = |M| - |A|</tex>, а значит, все вершины множества <tex>A</tex> покрыты в <tex>M</tex> различными рёбрами. Так как <tex>M'</tex> - максимальное паросочетание графа <tex>G - A</tex>, то по пунктам 1) и 2) очевидно, что <tex>M'</tex> содержит совершенное паросочетание графа <tex>C</tex> и почти совершенные паросочетания фактор-критических графов <tex>D1,{...},Dn</tex>. Значит, рёбра паросочетания <tex>M</tex> соединяют вершины <tex>A</tex> с непокрытыми <tex>M'</tex> вершинами различных компонент связности из <tex>U_1,{...},U_n</tex>.
+
{{Лемма
4) Из пункта 3) сразу же следуют оба равенства пункта 4).
+
|id = barier_struct2
 +
|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>
 +
|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>odd(G - (B'\cup x)) = odd(G' - B') = </tex><tex>|B'| + def(G') = |B'| + 1 + def(G) = |B'\cup x| + def(G)</tex>
 +
Отсюда следует, что <tex>B</tex> {{---}} барьер графа <tex>G</tex>.
 +
}}
  
{{Утверждение
+
{{Теорема
|about=следствие из теоремы
+
|id=barier_struct3
|statement=
+
|about=о структуре барьера
<tex>A(G)</tex> - '''барьер''' графа <tex>G</tex>
+
|statement=Любой барьер графа состоит только из вершин <tex>A(G)\cup C(G)</tex>, причём каждая вершина из этого множества входит в какой-то барьер
 +
|proof=По лемме о связи барьера с <tex>D(G)</tex> мы знаем, что в барьере нет вершин вершин из <tex>D(G)</tex>. По лемме о дополнение барьера мы можем взять любую вершину из <tex>A(G)\cup C(G)</tex>, удалить из графа, и с помощью барьера нового графа получить барьер исходного, включающий данную вершину.
 
}}
 
}}
  
 +
== См. также ==
 +
* [[Теорема Татта о существовании полного паросочетания]]
 +
* [[Лапы и минимальные по включению барьеры в графе]]
 +
* [[Пересечение всех максимальных по включению барьеров]]
  
== Источники ==
+
== Источники информации==
 
*[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://logic.pdmi.ras.ru/~dvk/211/graphs_dk.pdf Д.В Карпов - теория графов]
+
*[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) графа G мы будем называть величину:

def(G)=|V|2α(G),
где α(G) — размер максимального паросочетания в G, а

V(G) — множество вершин графа G.


Определение:
odd(G) — число нечетных компонент связности в графе G, где нечетная компонента (англ. odd component) — это компонента связности, содержащая нечетное число вершин.


Лемма:
(n+|S|+odd(GS))0(mod2), где G — граф с n вершинами, SVG
Доказательство:

Удалим из графа G множество S, получим t компонент связности, содержащих k1,k2...kt вершин соответственно. |S|+ki=1ki=n, так как в сумме это все вершины исходного графа G. Возьмем данное равенство по модулю два: (|S|+ki=1ki)n(mod2)

В сумме ki=1(kimod2) число единиц равно числу нечетных компонент odd(GS). Таким образом, SV:(odd(GS)+|S|)n(mod2).
Теорема (Бержа):
Для любого графа G выполняется:
def(G)=maxSV(G){odd(GS)|S|}.
Доказательство:

SV:(odd(GS)+|S|)n(mod2)


Рассмотрим несколько случаев:


1. Если maxSV(odd(GS)|S|)=0, тогда для любых SV:odd(GS)|S|, следовательно выполнено условие теоремы Татта, значит, в графе есть совершенное паросочетание, то есть его дефицит равен нулю.

2. Если maxSV(odd(GS)|S|)=k, тогда рассмотрим исходный граф G и полный граф Kk с k вершинами, W - вершины Kk. Каждую вершину Kk соединим с каждой вершиной G. Получим граф H=Kk+G, докажем, что для него выполнено условие теоремы Татта. Докажем, что для любых SVH:odd(HS)|S|. Рассмотрим SVH:

  • Если WS, тогда поскольку граф Kk полный и все его вершины связаны с каждой вершиной графа G, то граф H связный и odd(HS)=0 или odd(GS)=1.
    • В случае odd(HS)=0 условие очевидно выполняется, так как для любых SG:0|S|.
    • Рассмотрим случай odd(HS)=1, |VH|=n+k=n+odd(GA)|A|, где A=argmaxSV(odd(GS)|S|). Разность odd(GA)|A| имеет ту же четность, что и n, и odd(HS)=1, поэтому |VH| четно, значит, по лемме, мощность S нечетна, следовательно она не равна нулю, значит, 1|S|.


  • Если WS, то odd(HS)=odd(G(SV))=odd(G(SV))|SV|+|SV||SV|+k|S|, так как maxSV(odd(GS)|S|)=k. Таким образом, для графа H выполнено условие теоремы Татта, следовательно в нём есть полное паросочетание. Рассмотрим полное паросочетание в графе H, удалим вершины W из графа H. Количество непокрытых вершин после удаления не больше, чем количество удаленных вершин k, значит, def(G)k. Удалим множество вершин A=argmaxSV(odd(HS)|S|) из графа G. Заметим, что после удаления в графе осталось odd(GA) нечетных компонент и образовались новые непокрытые вершины, но при этом число нечетных компонент больше числа удаленных на k. Значит, хотя бы k нечетных компонент содержали исходно непокрытую вершину, следовательно def(G)k. Из def(G)k и def(G)k следует def(G)=k.


Теорема (Татта-Бержа):
Дан граф G, размер максимального паросочетания в нем равен:
α(G)=minUV{12(|V|+|U|odd(GU)}.
Доказательство:

Предположим G — связный, иначе мы можем применить индукцию к компонентам G. Приведем доказательство по индукции по числу вершин в графе.
База индукции:
Очевидно, для n=1 утверждение верно.
Индукционный переход:
Рассмотрим два случая:

  1. G — содержит вершину v покрытую всеми максимальными паросочетаниями (например средняя вершина)
    Тогда α(Gv)=α(G)1.
    По индукции, формула Татта-Берджа содержит Gv для некоторого множества U. Пусть U=Uv. Тогда:
    α(G)=α(Gv)+1=12(|Vv|+|Uv|odd(Gv(Uv)))+1=
    =12(|V|1+|U|1odd(GU))+1=12(|V|+|U|odd(GU)).
  2. Для каждой вершины v есть максимальное паросочетание M которое не покрывает v (например C3)
    Покажем, что существует паросочетание размера 12(|V|1), из которого следует теорема (при U=).
    От противного:
    Предположим что любое максимальная паросочетание M не покрывает, по крайней мере, две различные вершины u и v. Среди всех таких (M,u,v) выберем их так, что d(u,u) в G — минимально.
    Если d(u,u)=1, то u и v являются смежными, и, следовательно, мы можем увеличить M, что противоречит его максимальности.
    Значит d(u,u), и, следовательно, мы можем выбрать промежуточную вершину t на пути u-v и N максимальное паросочетание, такое что симметрическая разность с M минимальна. Так как (M, u, v) минимально, то N должно охватывать u и v так, что есть другая вершина x , покрытая только в M .
    Пусть y будет вершиной покрытой с x в M и заметим y \neq t (иначе можно было бы добавить к N ). Пусть z будет вершиной покрытой с y в N и заметим z \neq x (так как x не покрыто в N ). Тогда N - yz + xy — паросочетание, которое имеет с M меньшую симметрическую разность, что противоречит выбору N .
\triangleleft
Определение:
Множество S \subset V (G), для которого \mathrm{odd}(G - S) - |S| = \mathrm{def}(G) , называется барьером (англ. barrier).


Определение:
Пусть X \subset V . Множeство соседей (англ. neighbors) X определим формулой: N(X)= \{ y \in V:(x,y) \in E \}


Структурная теорема Эдмондса-Галлаи

Определение:
Структурные единицы декопозиции:
  1. D(G) = \{v \in V \mid существует максимальное паросочетание, не покрывающее v\}
  2. A(G) = N(D(G)) \setminus D(G)
  3. C(G) = V \setminus(D(G) \bigcup A(G))
  4. \alpha (G) — размер максимального паросочетания в G.
Пример. Рёбра из паросочетания выделены красным
Определение:
Граф G называется фактор-критическим (англ. factor-critical graph), если для любой вершины v \in G в графе G \setminus {v} существует совершенное паросочетание.


Теорема (Галлаи):
G — фактор-критический граф \Leftrightarrow
G — связен и для любой вершины u \in V(G) выполняется равенство \alpha (G - u) = \alpha (G).


Лемма (Галлаи, о стабильности (англ. stability lemma)):
Пусть a \in A(G). Тогда:
  1. D(G - a) = D(G)
  2. A(G - a) = A(G) \setminus \{a\}
  3. C(G - a) = C(G)
  4. \alpha (G - a) = \alpha (G) - 1.
Доказательство:
\triangleright

Для начала докажем, что D(G - a) = D(G).

Случай а
Случай b
Случай c
  1. Покажем, что D(G - a) \supset D(G) :
    Пусть u \in D(G). Тогда существует максимальное паросочетание M_u графа G, не покрывающее u. Поскольку любое максимальное паросочетание графа G покрывает a, то \alpha (G - a) = \alpha (G) - 1 и более того, если, для некоторой вершины x \in D(G), ax \in M_u, то M_u \setminus {ax} — максимальное паросочетание графа G - a , не покрывающее u . Таким образом, D(G - a) \supset D(G) .
  2. покажем, что D(G - a) \subset D(G):

Предположим, что существует максимальное паросочетание M' графа G - a, не покрывающее вершину v \notin D(G). Пусть w \in D(G) — смежная с a \in A(G) вершина, а M_w — максимальное паросочетание графа G , не покрывающее w . Так как v \notin D(G) , максимальное паросочетание M_w покрывает вершину v. Рассмотрим граф H = G(M_w \bigcup M') — очевидно, он является объединением нескольких путей и чётных циклов. Пусть U — компонента связности графа H , содержащая v. Так как deg_H(v) = 1 (степень вершины), то P = H(U) — путь с началом в вершине v. В пути P чередуются рёбра из M_w и M' , причём начинается путь ребром из M_w . Так как deg_H(a) = 1 , то вершина a либо не принадлежит пути P, либо является её концом (в этом случае последнее ребро пути принадлежит паросочетанию M_w). Рассмотрим несколько случаев:

a. Путь P кончается ребром из M' (см. рисунок)
Рассмотрим паросочетание M_v = M_w \oplus E(P) (симметрическая разность M_w и E(P). то есть, рёбра, входящие ровно в одно из двух множеств). Очевидно, M_v — максимальное паросочетание графа G, не покрывающее v, поэтому v \in D(G), противоречие.

b. Путь P кончается ребром из M_w, вершина a — конец пути P. (см.рисунок)
Рассмотрим паросочетание M_v∗ = (M_w \oplus E(P)) \bigcup \{aw\} . Тогда M_v∗ — максимальное паросочетание графа G , не покрывающее v , поэтому v \in D(G) , противоречие.

c. Путь P кончается ребром из M_w, a \in V(P) (см. рисунок) Рассмотрим паросочетание M'' = M \oplus E(P) . Тогда |M''| = |M'| + 1 , причём M'' \subset E(G - a). Противоречие с максимальностью паросочетания M'.

Таким образом, наше предположение невозможно и D(G - a) \subset D(G). А значит, D(G - a) = D(G).


Так как D(G - a) = D(G), то все вершины, которые были соседями D(G), таковыми и остались. Однако, по условию a \in A(G), значит A(G - a) = A(G) \setminus \{a\}.


Так же заметим, что C(G - a) = V(G - a) \setminus (D(G - a) \cup A(G - a)) = V(G - a) \setminus (D(G) \cup (A(G) \setminus \{a\})) = V(G) \setminus (D(G) \cup A(G)) = C(G)


Наконец, так как a \in A(G), то все максимальные паросочетания в G включали a. Следовательно, \alpha (G - a) \lt \alpha (G). Заметим, что, взяв любое максимальное паросочетания в G и удалив ребро инцидентное a, мы получим паросочетание M', которое на 1 меньше исходного, при этом M' \in E(G - a). В свою очередь, это самое большое паросочетание, которое мы могли теоретически получить в G - a. Следовательно, \alpha (G - a) = \alpha (G) - 1.
\triangleleft


Теорема (Галлаи, Эдмондс):
Пусть G — граф, U_1\ldots U_n — компоненты связности графа G(D(G)), D_i = G(U_i), C = G(C(G)). Тогда:
  1. Граф C имеет совершенное паросочетание.
  2. Графы D_1\ldots D_n — фактор-критические.
  3. Любое максимальное паросочетание M графа G состоит из совершенного паросочетания графа C , почти совершенных паросочетаний графов D_1\ldots D_n и покрывает все вершины множества A(G) рёбрами с концами в различных компонентах связности U_1\ldots U_n.
  4. \mathrm{def}(G) = n - |A(G)|.
  5. 2\mathrm{\alpha}(G) = v(G) + |A(G)| - n.
Доказательство:
\triangleright
Пример
  1. Последовательно удаляя вершины множества A = A(G), по лемме о стабильности мы получим:
    • D(G - A) = D(G),
    • A(G - A) = \O,
    • C(G - A) = C(G),
    • \alpha (G - A) = \alpha (G) - |A|.
    Это означает, что не существует рёбер, соединяющих вершины из C(G - A) и D(G - A). Каждое максимальное паросочетание M' графа G - A покрывает все вершины множества C(G), поэтому M' содержит совершенное паросочетание графа C. Тем самым, мы доказали пункт 1).
  2. Из формулы \alpha(G - A) = \alpha (G) - |A| следует, что U_1\ldots U_n — компоненты связности графа G - A. Для любой вершины u \in U_i существует максимальное паросочетание M_u графа G - A, не содержащее u. Так как U_i — компонента связности графа G - A, паросочетание M_u содержит максимальное паросочетание графа D_i (разумеется, не покрывающее вершину u). Следовательно, \alpha (D_i) = \alpha (D_i - u) и по теореме Галлаи (мы получаем, что граф D_i — фактор-критический.
  3. Пусть M — максимальное паросочетание графа G, а M' получено из M удалением всех рёбер, инцидентных вершинам множества A. Тогда |M'| \geqslant |M| - |A| и по формуле \alpha (G - A) = \alpha (G) - |A| понятно, что M' — максимальное паросочетание графа G - A. Более того, из \alpha (G - A) = \alpha (G) - |A| следует |M'| = |M| - |A|, а значит, все вершины множества A покрыты в M различными рёбрами. Так как M' — максимальное паросочетание графа G - A, то по пунктам 1) и 2) очевидно, что M' содержит совершенное паросочетание графа C и почти совершенные паросочетания фактор-критических графов D_1\ldots D_n. Значит, рёбра паросочетания M соединяют вершины A с непокрытыми M' вершинами различных компонент связности из U_1\ldots U_n.
  4. Из пункта 3) сразу же следуют равенства пункта 4) и 5).
\triangleleft
Утверждение (следствие из теоремы):
A(G)барьер графа G
Лемма (о связи барьера с D(G)):
Для любого барьера B графа G верно, что B\cap D(G) = \varnothing
Доказательство:
\triangleright
Рассмотрим U_{1}, U_{2}, \ldots U_{n} — нечётные компоненты связанности G \setminus B, \ M — максимальное паросочетание в G. \forall\ U_{i}\ \exists x \in U_{i}: x не покрыта \ M или xv \in M \land v \in B. Всего графе не покрыто хотя бы odd(G\setminus B) - |B| вершин. Однако, так как B — барьер, непокрыто ровно столько вершин. Следовательно, любое максимальное паросочетание не покрывает только вершины из G \setminus B, а значит каждая вершина барьера покрыта в любом максимальном паросочетании. Отсюда получаем, что ни одна вершина из D(G) не могла оказаться в барьере.
\triangleleft
Утверждение (Следствие из леммы):
В любом максимальном паросочетании все вершины барьера соединены соединены с вершинами G \setminus B
\triangleright
Так как для барьера B верно, что odd(G\setminus B) - |B|=def(G) \geqslant 0, то ровно |B| вершин из нечётных компонент G \setminus B покрыты рёбрами xv \in M \land v \in B
\triangleleft
Лемма (о дополнении барьера):
Пусть x\in A(G)\cup C(G),\ G'=G\setminus x,\ B' — барьер графа G'. Тогда B=B'\cup x — барьер графа G
Доказательство:
\triangleright

Так как x \notin D(G), то для любого максимального паросочетания M: x \in M. Следовательно, |M'| = |M| - 1, где M' — максимальное паросочетание в G'.

def(G') = (|V| - 1)- 2 \cdot |M'| = |V| - 2 \cdot |M| + 1 = def(G) + 1

odd(G - (B'\cup x)) = odd(G' - B') = |B'| + def(G') = |B'| + 1 + def(G) = |B'\cup x| + def(G)

Отсюда следует, что B — барьер графа G.
\triangleleft
Теорема (о структуре барьера):
Любой барьер графа состоит только из вершин A(G)\cup C(G), причём каждая вершина из этого множества входит в какой-то барьер
Доказательство:
\triangleright
По лемме о связи барьера с D(G) мы знаем, что в барьере нет вершин вершин из D(G). По лемме о дополнение барьера мы можем взять любую вершину из A(G)\cup C(G), удалить из графа, и с помощью барьера нового графа получить барьер исходного, включающий данную вершину.
\triangleleft

См. также

Источники информации