Декомпозиция Эдмондса-Галлаи — различия между версиями
Slavian (обсуждение | вклад)  (→Структурная теорема Эдмондса-Галлаи)  | 
				|||
| (не показаны 53 промежуточные версии 7 участников) | |||
| Строка 1: | Строка 1: | ||
| + | В этом направлении много усилий приложили Вильям Томас '''Татт''' (''William Thomas Tutte''), Клод '''Берж''' (''Claude Berge''), Джек '''Эдмондс''' (''Jack Edmonds'') и Тибор '''Галлаи''' (''Tibor Gallai'').  | ||
{{Определение    | {{Определение    | ||
| + | |id = deficit  | ||
|definition=  | |definition=  | ||
| − | + | '''Дефицитом''' (англ. ''deficit'') графа <tex>G</tex> мы будем называть величину: <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>\alpha (G)</tex> {{---}} размер [[Теорема о максимальном паросочетании и дополняющих цепях#theorem1|максимального паросочетания]] в <tex>G</tex>, а <br>  | 
| − | <tex>V(G)</tex> - множество вершин графа <tex>G</tex>  | + | <tex>V(G)</tex> {{---}} множество вершин графа <tex>G. </tex>  | 
}}  | }}  | ||
| − | |||
{{Теорема  | {{Теорема  | ||
| + | |id = Th_Berge  | ||
|about=Бержа  | |about=Бержа  | ||
|statement=  | |statement=  | ||
| − | Для любого графа G выполняется:<br>  | + | Для любого графа <tex>G</tex> выполняется:<br>  | 
| − | <tex>def(G) = \  | + | <tex>\mathrm{def}(G) = \max\limits_{S \subset V(G)} \{\mathrm{odd}(G - S) - |S|\}. </tex>  | 
}}  | }}  | ||
{{Теорема  | {{Теорема  | ||
| + | |id = theorem_Tatt_Berge  | ||
|about=Татта-Бержа  | |about=Татта-Бержа  | ||
|statement=  | |statement=  | ||
Дан граф <tex>G</tex>, размер максимального паросочетания в нем равен:<br>  | Дан граф <tex>G</tex>, размер максимального паросочетания в нем равен:<br>  | ||
| − | <tex>\alpha (G) =   | + | <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=  | ||
| − | + | Структурные единицы декопозиции:  | |
| + | # <tex>D(G) = \{v \in V \mid </tex> существует [[Теорема о максимальном паросочетании и дополняющих цепях|максимальное паросочетание]], не покрывающее <tex> v\}</tex>  | ||
| + | # <tex>A(G) = N(D(G)) \setminus D(G)</tex>  | ||
| + | # <tex>C(G) = V \setminus(D(G) \bigcup A(G))</tex>  | ||
| + | # <tex> \alpha (G) </tex> {{---}} размер максимального паросочетания в <tex> G. </tex>  | ||
| + | }}  | ||
[[Файл: EG_red.png|300px|thumb|right|Пример. Рёбра из паросочетания выделены красным]]  | [[Файл: EG_red.png|300px|thumb|right|Пример. Рёбра из паросочетания выделены красным]]  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
{{Определение    | {{Определение    | ||
|definition=  | |definition=  | ||
| − | Граф <tex>G</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> Тогда:    | ||
| − | + | # <tex>D(G - a) = D(G)</tex>    | |
| − | + | # <tex>A(G - a) = A(G) \setminus \{a\}</tex>  | |
| − | + | # <tex>C(G - a) = C(G)</tex>    | |
| − | + | # <tex> \alpha (G - a) = \alpha (G) - 1.</tex>  | |
|proof=  | |proof=  | ||
| − | + | Для начала докажем, что <tex>D(G - a) = 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> 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''']]  | 
| − | + | [[Файл: Gallai-lema-с.png|150px|thumb|right|Случай '''c''']]  | |
| − | Предположим, что существует максимальное паросочетание <tex>M'</tex> графа <tex> G - a</tex>, не покрывающее вершину <tex>v   | + | # Покажем, что <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>  | ||
| − | |||
'''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>  | 
| − | + | '''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>, противоречие.  | ||
| − | |||
'''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) = 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> 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  | + | Пусть <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>D_1\ldots D_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>\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|Пример]]  | ||
| − | + | # Последовательно удаляя вершины множества <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>  | ||
| + | }}  | ||
| − | + | {{Лемма  | |
| − | + | |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> не могла оказаться в барьере.  | ||
| + | }}  | ||
| − | + | {{Утверждение  | |
| + | |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>  | ||
| + | }}  | ||
| − | + | {{Лемма  | |
| − | + | |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> -   | + | |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://  | + | *[http://immorlica.com/combOpt/lec2.pdf Edmonds-Gallai Decomposition, Edmonds’ Algorithm]  | 
[[Категория:Алгоритмы и структуры данных]]  | [[Категория:Алгоритмы и структуры данных]]  | ||
[[Категория:Задача о паросочетании]]  | [[Категория:Задача о паросочетании]]  | ||
Версия 20:53, 21 ноября 2018
В этом направлении много усилий приложили Вильям Томас Татт (William Thomas Tutte), Клод Берж (Claude Berge), Джек Эдмондс (Jack Edmonds) и Тибор Галлаи (Tibor Gallai).
| Определение: | 
| Дефицитом (англ. deficit) графа  мы будем называть величину:  ,   | 
| Теорема (Бержа): | 
Для любого графа  выполняется:  | 
| Теорема (Татта-Бержа): | 
Дан граф , размер максимального паросочетания в нем равен:  | 
| Доказательство: | 
| 
 Предположим  — связный, иначе мы можем применить индукцию к компонентам . Приведем доказательство по индукции по числу вершин в графе.  
  | 
| Определение: | 
| Множество , для которого , называется барьером (англ. barrier). | 
| Определение: | 
| Пусть . Множeство соседей (англ. neighbors) определим формулой: | 
Структурная теорема Эдмондса-Галлаи
- существует максимальное паросочетание, не покрывающее
 - — размер максимального паросочетания в
 
| Определение: | 
| Граф называется фактор-критическим (англ. factor-critical graph), если для любой вершины в графе существует совершенное паросочетание. | 
| Теорема (Галлаи): | 
 — фактор-критический граф   — связен и для любой вершины выполняется равенство .  | 
| Лемма (Галлаи, о стабильности (англ. stability lemma)): | 
Пусть  Тогда: 
  | 
| Доказательство: | 
| 
 Для начала докажем, что .  
 Предположим, что существует максимальное паросочетание  графа , не покрывающее вершину  . Пусть  — смежная с  вершина, а  — максимальное паросочетание графа , не покрывающее . Так как  , максимальное паросочетание  покрывает вершину . Рассмотрим граф  — очевидно, он является объединением нескольких путей и чётных циклов. Пусть  — компонента связности графа , содержащая . Так как  (степень вершины), то  — путь с началом в вершине . В пути  чередуются рёбра из  и , причём начинается путь ребром из . Так как , то вершина a либо не принадлежит пути , либо является её концом (в этом случае последнее ребро пути принадлежит паросочетанию ). Рассмотрим несколько случаев:  a. Путь  кончается ребром из  (см. рисунок) b. Путь  кончается ребром из , вершина  — конец пути . (см.рисунок) c. Путь кончается ребром из (см. рисунок) Рассмотрим паросочетание . Тогда , причём . Противоречие с максимальностью паросочетания . Таким образом, наше предположение невозможно и . А значит, . 
 
 
  | 
| Теорема (Галлаи, Эдмондс): | 
Пусть  — граф,  — компоненты связности графа , . Тогда:
 
  | 
| Доказательство: | 
  | 
| Утверждение (следствие из теоремы): | 
 — барьер графа   | 
| Лемма (о связи барьера с ): | 
Для любого барьера  графа  верно, что   | 
| Доказательство: | 
| Рассмотрим — нечётные компоненты связанности , — максимальное паросочетание в . не покрыта или . Всего графе не покрыто хотя бы вершин. Однако, так как — барьер, непокрыто ровно столько вершин. Следовательно, любое максимальное паросочетание не покрывает только вершины из , а значит каждая вершина барьера покрыта в любом максимальном паросочетании. Отсюда получаем, что ни одна вершина из не могла оказаться в барьере. | 
| Утверждение (Следствие из леммы): | 
В любом максимальном паросочетании все вершины барьера соединены соединены с вершинами   | 
| Так как для барьера верно, что , то ровно вершин из нечётных компонент покрыты рёбрами | 
| Лемма (о дополнении барьера): | 
Пусть  — барьер графа . Тогда  — барьер графа   | 
| Доказательство: | 
| 
 Так как , то для любого максимального паросочетания . Следовательно, , где — максимальное паросочетание в . 
 Отсюда следует, что — барьер графа .  | 
| Теорема (о структуре барьера): | 
Любой барьер графа состоит только из вершин , причём каждая вершина из этого множества входит в какой-то барьер  | 
| Доказательство: | 
| По лемме о связи барьера с мы знаем, что в барьере нет вершин вершин из . По лемме о дополнение барьера мы можем взять любую вершину из , удалить из графа, и с помощью барьера нового графа получить барьер исходного, включающий данную вершину. | 
См. также
- Теорема Татта о существовании полного паросочетания
 - Лапы и минимальные по включению барьеры в графе
 - Пересечение всех максимальных по включению барьеров