Изменения

Перейти к: навигация, поиск

Совершенное паросочетание в кубическом графе

3406 байт добавлено, 16:12, 4 декабря 2017
Теорема Петерсона (Petersen)
==Лемма о сравнимости по модулю 2==
{{Лемма
|id = lemma1
|statement =
Пусть <tex>G</tex> {{---}} <tex>k</tex>-[[Основные определения теории графов#defRegularGraph |регулярный граф]], <tex>U \in V(G)</tex>, <tex>|U|</tex> нечётно, <tex>m</tex> {{---}} число рёбер, соединяющих вершины множества <tex>U</tex> с вершинами из <tex>V(G) \setminus U</tex>. Тогда <tex>m \equiv k \pmod 2</tex>
|proof =
[[Файл:Сравнимость.png|300px|thumb|left|Иллюстрация к лемме]]
<tex>m = (\sum\limits_{v \in U} d_G(v)) - 2e(G(U))</tex>, где <tex>e(G(U))</tex> {{---}} количество рёбер, соединяющих вершину из <tex>U</tex> с другой вершиной из <tex>U</tex>.
 
тогда <tex>m = k|U| - 2e(G(U))</tex>.
 
<tex>2e(G(U))</tex> чётно, поэтому <tex>m \equiv k|U| \pmod 2</tex>. Так как <tex> |U|</tex> нечётно, <tex>m \equiv k \pmod 2</tex>.
}}
 
==Теорема Петерсона (Petersen)==
{{Определение
{{Теорема
|id=th1.
|author=Петерсон
|statement=Кубический Пусть <tex>G</tex>{{---}}[[Отношение связности, компоненты связности#connected_graph | связный]] кубический граф, у которого нет в котором не более <tex>2</tex> [[Мост, эквивалентные определения | мостов]]. Тогда в <tex>G</tex> есть [[Паросочетания: основные определения, теорема о максимальном паросочетании и дополняющих цепях#perfect_matching | совершенное паросочетание]].| proof = Предположим, что совершенного паросочетанияв <tex>G</tex> нет, тогда можно выбрать [[Теорема Татта о существовании полного паросочетания#Tutt_set | множество Татта]]<tex>S \subset V(G)</tex>.  Пусть <tex>U_1, \ldots, U_n</tex> {{---}} все нечётные компоненты связности графа <tex>G \setminus S</tex>. <tex>m_i</tex> {{---}} количество ребёр <tex>G</tex>, связывающих вершины <tex>U_i</tex> с вершинами <tex>S</tex>.  По предыдущей лемме, все <tex>m_i</tex> нечётны. Так как не более чем два ребра графа <tex>G</tex> {{---}} мосты, содержит то не более, чем два числа из <tex>m_1, \ldots, m_n</tex> равны <tex>1</tex>, остальные числа не менее <tex>3</tex>. Так как минимум <tex>S</tex> {{---}} множество Татта, то <tex>odd(G \setminus S) > |S|</tex>. Так как количество вершин кубического графа <tex>G</tex> чётно, мы имеем <tex>S \neq \emptyset, odd(G \setminus S) \equiv S \pmod 2</tex>, следовательно, <tex>n = odd(G \setminus S) \geqslant |S| + 2</tex>. Тогда <tex>\sum\limits_{v \in S} d_G(v) \geqslant \sum\limits_{i = 1}^n m_i \geqslant 3n - 4 \geqslant 3(|S| + 2) - 4 = 3|S| + 2 >3|S| = \sum\limits_{v \in S} d_G(v)</tex>, что, очевидно, невозможно.  Найдено противоречие, следовательно, множество Татта выбрать невозможно, следовательно, в <tex>G</tex> мостаесть совершенное паросочетание. }}
Следствие из данной теоремы: для любого [[Отношение связностиФайл:Петерсен 3 моста.png|300px|thumb|left|Кубический граф с тремя мостами, компоненты связности| двусвязногов котором не существует совершенного паросочетания.]] кубического графа Заметим, что утверждение теоремы не может быть усилено до большего числа мостов, так как для случая с тремя мостами существует совершенное паросочетаниеконтрпример.
==Теорема Фринка (Frink)==
==Алгоритм поиска совершенного паросочетания (Frink's algorithm)==
Будем сокращать данный граф <tex>G</tex> вышеизложенным способом (на каждой итерации можем выбирать любое ребро) пока не удалим все вершины.
Когда все вершины закончились, создадим пустое совершенное паросочетание <tex>M</tex> и начнём обратный процесс для всех сокращений, то есть восстановление графа будем восстанавливать граф (начиная с последних удалённых вершин). Каждый такой шаг будет приводить к одному из четырёх базовых случаев, представленных в рисунке <tex>5</tex> или к одному из специальных случаев из рисунка <tex>6</tex>. Восстановление для всех специальных случаев, а так же для первых трёх базовых выполняется по строгому алгоритму, т.е. разрешим разрешимо за <tex>O(1)</tex>. Единственный проблемный случай, когда оба ребра принадлежат совершенному паросочетанию. В этой ситуации необходимо найти альтернативный цикл, содержащий как минимум одно из этих рёбер и обновить паросочетание с этим циклом. Эти действия сводят четвёртый базовый случай к одному из первых трёх.
*функция <tex>\mathtt{alternatingCycle}</tex> принимает три параметра: граф, совершенное паросочетание и ребро. Возвращает альтернативный цикл, включающий в себя данное ребро и обновляет совершенное паросочетание,
*функция <tex>\mathtt{reductions}</tex> сокращает граф,
*функция <tex>\mathtt{simpleReversion}</tex> восстанавливают восстанавливает граф.,
*функция <tex>\mathtt{reductedGraph}</tex> принимает три параметра: граф, удаляемые вершины, добавляемые рёбра. Возвращает новый граф, у которого удалены выбранные вершины, вместе c инцидентными рёбрами и добавлены другие рёбра, переданные в параметрах. При этом исходный граф не меняется.
<tex>C =</tex> alternatingCycle<tex>(G, M, r[0])</tex>
<tex>M = M \oplus C</tex>
<tex>M = (M - r) \ \cup </tex> simpleReversion<tex>(G, v, w, r, M)</tex>
'''return''' <tex>M</tex>
==Время работы алгоритма Фринка==
Операция сокращения должна на каждом шаге проверять граф на наличие мостов за <tex>O(n)</tex>, кроме того, при возникновении четвёртого базового случая требуется найти альтернативный цикл за <tex>O(n)</tex>. В алгоритме <tex>O(n)</tex> операций сокращения и восстановления графа, причем каждая из этих операций требует <tex>O(n)</tex> времени. Таким образом, весь этот алгоритм исполняется за время <tex>O(n^2)</tex>.
==См. также==
* [https://ru.wikipedia.org/wiki/%D0%9A%D1%83%D0%B1%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B3%D1%80%D0%B0%D1%84 Wikipedia {{---}} Кубический граф]
* Piotr Stanczyk {{---}} THEORY AND PRACTICE OF COMPUTING MAXIMUM MATCHINGS IN GRAPHS стр. 21-28.
* Карпов В. Д. - Теория графов, стр 42
[[Категория: Алгоритмы и структуры данных]]
[[Категория: Задача о паросочетании]]
137
правок

Навигация