Transcript
Page 1: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

с/к “Эффективные алгоритмы”Лекция 20: Максимальное паросочетание

А. Куликов

Computer Science клуб при ПОМИhttp://logic.pdmi.ras.ru/∼infclub/

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 1 / 32

Page 2: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

План лекции

1 Постановка задачи

2 Дополняющие пути

3 Случай двудольных графов

4 Общий случай

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 2 / 32

Page 3: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

План лекции

1 Постановка задачи

2 Дополняющие пути

3 Случай двудольных графов

4 Общий случай

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 2 / 32

Page 4: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

План лекции

1 Постановка задачи

2 Дополняющие пути

3 Случай двудольных графов

4 Общий случай

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 2 / 32

Page 5: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

План лекции

1 Постановка задачи

2 Дополняющие пути

3 Случай двудольных графов

4 Общий случай

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 2 / 32

Page 6: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

План лекции

1 Постановка задачи

2 Дополняющие пути

3 Случай двудольных графов

4 Общий случай

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 3 / 32

Page 7: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Постановка задачи

Определение

Сочетанием (matching) простого графа называется егоподмножество рёбер, никакие два из которых не имеют общегоконца.Задача о максимальном паросочетании (matching problem)заключается в нахождении по данному графу сочетаниямаксимального размера.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 4 / 32

Page 8: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Постановка задачи

ОпределениеСочетанием (matching) простого графа называется егоподмножество рёбер, никакие два из которых не имеют общегоконца.

Задача о максимальном паросочетании (matching problem)заключается в нахождении по данному графу сочетаниямаксимального размера.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 4 / 32

Page 9: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Постановка задачи

ОпределениеСочетанием (matching) простого графа называется егоподмножество рёбер, никакие два из которых не имеют общегоконца.Задача о максимальном паросочетании (matching problem)заключается в нахождении по данному графу сочетаниямаксимального размера.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 4 / 32

Page 10: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример сочетания

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 5 / 32

Page 11: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

План лекции

1 Постановка задачи

2 Дополняющие пути

3 Случай двудольных графов

4 Общий случай

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 6 / 32

Page 12: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Дополняющий путь

Определение

Вершина называется свободной относительно сочетания M (freew.r.t. a matching M), если она не является концом ребра из M.Путь в графе называется чередующимся относительно M(alternating w.r.t. M), если в нем чередуются ребра из M и не изM.Путь называется дополняющим относительно M (augmentingw.r.t. M), если он является простым чередующимся путём междудвумя совободными вершинами.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 7 / 32

Page 13: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Дополняющий путь

ОпределениеВершина называется свободной относительно сочетания M (freew.r.t. a matching M), если она не является концом ребра из M.

Путь в графе называется чередующимся относительно M(alternating w.r.t. M), если в нем чередуются ребра из M и не изM.Путь называется дополняющим относительно M (augmentingw.r.t. M), если он является простым чередующимся путём междудвумя совободными вершинами.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 7 / 32

Page 14: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Дополняющий путь

ОпределениеВершина называется свободной относительно сочетания M (freew.r.t. a matching M), если она не является концом ребра из M.Путь в графе называется чередующимся относительно M(alternating w.r.t. M), если в нем чередуются ребра из M и не изM.

Путь называется дополняющим относительно M (augmentingw.r.t. M), если он является простым чередующимся путём междудвумя совободными вершинами.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 7 / 32

Page 15: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Дополняющий путь

ОпределениеВершина называется свободной относительно сочетания M (freew.r.t. a matching M), если она не является концом ребра из M.Путь в графе называется чередующимся относительно M(alternating w.r.t. M), если в нем чередуются ребра из M и не изM.Путь называется дополняющим относительно M (augmentingw.r.t. M), если он является простым чередующимся путём междудвумя совободными вершинами.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 7 / 32

Page 16: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример дополняющего пути

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 8 / 32

Page 17: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример дополняющего пути

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 8 / 32

Page 18: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Основное свойство дополняющего пути

ТеоремаПаросочетание M не является максимальным тогда и только тогда,когда в графе есть дополняющий путь относительно M.

Доказательство⇐ Если P — дополняющий путь, то симметрическая разность M ⊕ P

(то есть рёбра, принадлежащие ровно одному из этих множеств)является сочетанием, причём |M ⊕ P| = |M|+ 1.

⇒ I Пусть M, N суть немаксимальное и максимальное паросочетания,соответственно.

I Рассмотрим симметрическую разность D = M ⊕ N.I Степень каждой вершины в D не превосходит 2.I Значит, D является объединением циклов и путей.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 9 / 32

Page 19: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Основное свойство дополняющего пути

ТеоремаПаросочетание M не является максимальным тогда и только тогда,когда в графе есть дополняющий путь относительно M.

Доказательство⇐ Если P — дополняющий путь, то симметрическая разность M ⊕ P

(то есть рёбра, принадлежащие ровно одному из этих множеств)является сочетанием, причём |M ⊕ P| = |M|+ 1.

⇒ I Пусть M, N суть немаксимальное и максимальное паросочетания,соответственно.

I Рассмотрим симметрическую разность D = M ⊕ N.I Степень каждой вершины в D не превосходит 2.I Значит, D является объединением циклов и путей.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 9 / 32

Page 20: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Основное свойство дополняющего пути

ТеоремаПаросочетание M не является максимальным тогда и только тогда,когда в графе есть дополняющий путь относительно M.

Доказательство⇐ Если P — дополняющий путь, то симметрическая разность M ⊕ P

(то есть рёбра, принадлежащие ровно одному из этих множеств)является сочетанием, причём |M ⊕ P| = |M|+ 1.

⇒ I Пусть M, N суть немаксимальное и максимальное паросочетания,соответственно.

I Рассмотрим симметрическую разность D = M ⊕ N.I Степень каждой вершины в D не превосходит 2.I Значит, D является объединением циклов и путей.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 9 / 32

Page 21: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Основное свойство дополняющего пути

ТеоремаПаросочетание M не является максимальным тогда и только тогда,когда в графе есть дополняющий путь относительно M.

Доказательство⇐ Если P — дополняющий путь, то симметрическая разность M ⊕ P

(то есть рёбра, принадлежащие ровно одному из этих множеств)является сочетанием, причём |M ⊕ P| = |M|+ 1.

⇒ I Пусть M, N суть немаксимальное и максимальное паросочетания,соответственно.

I Рассмотрим симметрическую разность D = M ⊕ N.

I Степень каждой вершины в D не превосходит 2.I Значит, D является объединением циклов и путей.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 9 / 32

Page 22: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Основное свойство дополняющего пути

ТеоремаПаросочетание M не является максимальным тогда и только тогда,когда в графе есть дополняющий путь относительно M.

Доказательство⇐ Если P — дополняющий путь, то симметрическая разность M ⊕ P

(то есть рёбра, принадлежащие ровно одному из этих множеств)является сочетанием, причём |M ⊕ P| = |M|+ 1.

⇒ I Пусть M, N суть немаксимальное и максимальное паросочетания,соответственно.

I Рассмотрим симметрическую разность D = M ⊕ N.I Степень каждой вершины в D не превосходит 2.

I Значит, D является объединением циклов и путей.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 9 / 32

Page 23: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Основное свойство дополняющего пути

ТеоремаПаросочетание M не является максимальным тогда и только тогда,когда в графе есть дополняющий путь относительно M.

Доказательство⇐ Если P — дополняющий путь, то симметрическая разность M ⊕ P

(то есть рёбра, принадлежащие ровно одному из этих множеств)является сочетанием, причём |M ⊕ P| = |M|+ 1.

⇒ I Пусть M, N суть немаксимальное и максимальное паросочетания,соответственно.

I Рассмотрим симметрическую разность D = M ⊕ N.I Степень каждой вершины в D не превосходит 2.I Значит, D является объединением циклов и путей.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 9 / 32

Page 24: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Типы компонент симметрической разностиТипы циклов и путей в симметрической разностиКрасным цветом будем обозначать рёбра сочетания N, синим — рёбраM. Типы компонент:

Путь, первое и последнее ребро которого принадлежат N:

Путь, первое и последнее ребро которого принадлежат M:

Путь, первое и последнее ребро которого принадлежат разнымсочетаниям:

Цикл:

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 10 / 32

Page 25: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Типы компонент симметрической разностиТипы циклов и путей в симметрической разностиКрасным цветом будем обозначать рёбра сочетания N, синим — рёбраM. Типы компонент:

Путь, первое и последнее ребро которого принадлежат N:

Путь, первое и последнее ребро которого принадлежат M:

Путь, первое и последнее ребро которого принадлежат разнымсочетаниям:

Цикл:

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 10 / 32

Page 26: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Типы компонент симметрической разностиТипы циклов и путей в симметрической разностиКрасным цветом будем обозначать рёбра сочетания N, синим — рёбраM. Типы компонент:

Путь, первое и последнее ребро которого принадлежат N:

Путь, первое и последнее ребро которого принадлежат M:

Путь, первое и последнее ребро которого принадлежат разнымсочетаниям:

Цикл:

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 10 / 32

Page 27: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Типы компонент симметрической разностиТипы циклов и путей в симметрической разностиКрасным цветом будем обозначать рёбра сочетания N, синим — рёбраM. Типы компонент:

Путь, первое и последнее ребро которого принадлежат N:

Путь, первое и последнее ребро которого принадлежат M:

Путь, первое и последнее ребро которого принадлежат разнымсочетаниям:

Цикл:

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 10 / 32

Page 28: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Типы компонент симметрической разностиТипы циклов и путей в симметрической разностиКрасным цветом будем обозначать рёбра сочетания N, синим — рёбраM. Типы компонент:

Путь, первое и последнее ребро которого принадлежат N:

Путь, первое и последнее ребро которого принадлежат M:

Путь, первое и последнее ребро которого принадлежат разнымсочетаниям:

Цикл:

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 10 / 32

Page 29: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Завершение доказательства

Завершение доказательства

Поскольку |N| > |M|, есть хотя бы одна компонента, в которойрёбер, принадлежащих N, больше, чем рёбер, принадлежащих M.Единственной такой компонентой является путь, оба конечныхребра которого принадлежат сочетанию N.А это и есть дополняющий путь относительно M.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 11 / 32

Page 30: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Завершение доказательства

Завершение доказательстваПоскольку |N| > |M|, есть хотя бы одна компонента, в которойрёбер, принадлежащих N, больше, чем рёбер, принадлежащих M.

Единственной такой компонентой является путь, оба конечныхребра которого принадлежат сочетанию N.А это и есть дополняющий путь относительно M.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 11 / 32

Page 31: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Завершение доказательства

Завершение доказательстваПоскольку |N| > |M|, есть хотя бы одна компонента, в которойрёбер, принадлежащих N, больше, чем рёбер, принадлежащих M.Единственной такой компонентой является путь, оба конечныхребра которого принадлежат сочетанию N.

А это и есть дополняющий путь относительно M.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 11 / 32

Page 32: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Завершение доказательства

Завершение доказательстваПоскольку |N| > |M|, есть хотя бы одна компонента, в которойрёбер, принадлежащих N, больше, чем рёбер, принадлежащих M.Единственной такой компонентой является путь, оба конечныхребра которого принадлежат сочетанию N.А это и есть дополняющий путь относительно M.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 11 / 32

Page 33: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общий вид алгоритма

Maximum-Matching(G )

1 M ← ∅2 repeat3 if есть дополняющий путь P относительно M4 then M ← M ⊕ P5 else return M

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 12 / 32

Page 34: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

План лекции

1 Постановка задачи

2 Дополняющие пути

3 Случай двудольных графов

4 Общий случай

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 13 / 32

Page 35: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Случай двудольных графов

Случай двудольных графов

Граф называется двудольным, если его множество вершин можетбыть разбито на две части (доли) V1 и V2, так что любое ребрографа соединяет вершины разных долей.В двудольном графе каждый цикл имеет чётную длину.Задача о максимальном паросочетании в двудольном графесводится к задаче о максимальном потоке.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 14 / 32

Page 36: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Случай двудольных графов

Случай двудольных графовГраф называется двудольным, если его множество вершин можетбыть разбито на две части (доли) V1 и V2, так что любое ребрографа соединяет вершины разных долей.

В двудольном графе каждый цикл имеет чётную длину.Задача о максимальном паросочетании в двудольном графесводится к задаче о максимальном потоке.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 14 / 32

Page 37: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Случай двудольных графов

Случай двудольных графовГраф называется двудольным, если его множество вершин можетбыть разбито на две части (доли) V1 и V2, так что любое ребрографа соединяет вершины разных долей.В двудольном графе каждый цикл имеет чётную длину.

Задача о максимальном паросочетании в двудольном графесводится к задаче о максимальном потоке.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 14 / 32

Page 38: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Случай двудольных графов

Случай двудольных графовГраф называется двудольным, если его множество вершин можетбыть разбито на две части (доли) V1 и V2, так что любое ребрографа соединяет вершины разных долей.В двудольном графе каждый цикл имеет чётную длину.Задача о максимальном паросочетании в двудольном графесводится к задаче о максимальном потоке.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 14 / 32

Page 39: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Лемма Холла

ОпределениеПаросочетание называется совершенным (perfect), если оно содержитвсе вершины графа.

Лемма ХоллаДвудольный граф с долями V1, V2 имеет совершенное паросочетаниетогда и только тогда, когда |V1| = |V2| и (∀U ⊆ V1)|N(U)| ≥ |U| (гдеN(U) — множество соседей вершин множества U).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 15 / 32

Page 40: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Лемма Холла

ОпределениеПаросочетание называется совершенным (perfect), если оно содержитвсе вершины графа.

Лемма ХоллаДвудольный граф с долями V1, V2 имеет совершенное паросочетаниетогда и только тогда, когда |V1| = |V2| и (∀U ⊆ V1)|N(U)| ≥ |U| (гдеN(U) — множество соседей вершин множества U).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 15 / 32

Page 41: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Поиск дополняющего пути в двудольном графе

Поиск дополняющего пути в двудольном графе

Модифицируем поиск в ширину так, чтобы он рассматривалтолько дополняющие пути.Начинаем со свободных вершин доли V1.Если на i-й итерации поиска в ширину рассматриваются вершиныLi доли V1, то на следующем шаге будем рассматривать вершиныдоли V2, соединенные с Li и не рассматривавшиеся ранее.Если же рассматриваются вершины Li доли V2, то на следующемшаге будем рассматривать вершины доли V1, соединённыеребрами текущего паросочетания с вершинами Li .Нетрудно видеть, что если будет достигнута свободная вершинадоли V2, то найден дополняющий путь. Если же свободнойвершины из V2 не нашлось, то дополняющего пути нет.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 16 / 32

Page 42: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Поиск дополняющего пути в двудольном графе

Поиск дополняющего пути в двудольном графеМодифицируем поиск в ширину так, чтобы он рассматривалтолько дополняющие пути.

Начинаем со свободных вершин доли V1.Если на i-й итерации поиска в ширину рассматриваются вершиныLi доли V1, то на следующем шаге будем рассматривать вершиныдоли V2, соединенные с Li и не рассматривавшиеся ранее.Если же рассматриваются вершины Li доли V2, то на следующемшаге будем рассматривать вершины доли V1, соединённыеребрами текущего паросочетания с вершинами Li .Нетрудно видеть, что если будет достигнута свободная вершинадоли V2, то найден дополняющий путь. Если же свободнойвершины из V2 не нашлось, то дополняющего пути нет.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 16 / 32

Page 43: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Поиск дополняющего пути в двудольном графе

Поиск дополняющего пути в двудольном графеМодифицируем поиск в ширину так, чтобы он рассматривалтолько дополняющие пути.Начинаем со свободных вершин доли V1.

Если на i-й итерации поиска в ширину рассматриваются вершиныLi доли V1, то на следующем шаге будем рассматривать вершиныдоли V2, соединенные с Li и не рассматривавшиеся ранее.Если же рассматриваются вершины Li доли V2, то на следующемшаге будем рассматривать вершины доли V1, соединённыеребрами текущего паросочетания с вершинами Li .Нетрудно видеть, что если будет достигнута свободная вершинадоли V2, то найден дополняющий путь. Если же свободнойвершины из V2 не нашлось, то дополняющего пути нет.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 16 / 32

Page 44: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Поиск дополняющего пути в двудольном графе

Поиск дополняющего пути в двудольном графеМодифицируем поиск в ширину так, чтобы он рассматривалтолько дополняющие пути.Начинаем со свободных вершин доли V1.Если на i-й итерации поиска в ширину рассматриваются вершиныLi доли V1, то на следующем шаге будем рассматривать вершиныдоли V2, соединенные с Li и не рассматривавшиеся ранее.

Если же рассматриваются вершины Li доли V2, то на следующемшаге будем рассматривать вершины доли V1, соединённыеребрами текущего паросочетания с вершинами Li .Нетрудно видеть, что если будет достигнута свободная вершинадоли V2, то найден дополняющий путь. Если же свободнойвершины из V2 не нашлось, то дополняющего пути нет.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 16 / 32

Page 45: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Поиск дополняющего пути в двудольном графе

Поиск дополняющего пути в двудольном графеМодифицируем поиск в ширину так, чтобы он рассматривалтолько дополняющие пути.Начинаем со свободных вершин доли V1.Если на i-й итерации поиска в ширину рассматриваются вершиныLi доли V1, то на следующем шаге будем рассматривать вершиныдоли V2, соединенные с Li и не рассматривавшиеся ранее.Если же рассматриваются вершины Li доли V2, то на следующемшаге будем рассматривать вершины доли V1, соединённыеребрами текущего паросочетания с вершинами Li .

Нетрудно видеть, что если будет достигнута свободная вершинадоли V2, то найден дополняющий путь. Если же свободнойвершины из V2 не нашлось, то дополняющего пути нет.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 16 / 32

Page 46: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Поиск дополняющего пути в двудольном графе

Поиск дополняющего пути в двудольном графеМодифицируем поиск в ширину так, чтобы он рассматривалтолько дополняющие пути.Начинаем со свободных вершин доли V1.Если на i-й итерации поиска в ширину рассматриваются вершиныLi доли V1, то на следующем шаге будем рассматривать вершиныдоли V2, соединенные с Li и не рассматривавшиеся ранее.Если же рассматриваются вершины Li доли V2, то на следующемшаге будем рассматривать вершины доли V1, соединённыеребрами текущего паросочетания с вершинами Li .Нетрудно видеть, что если будет достигнута свободная вершинадоли V2, то найден дополняющий путь. Если же свободнойвершины из V2 не нашлось, то дополняющего пути нет.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 16 / 32

Page 47: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример

1

2

3

4

5

6

A

B

C

D

E

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 17 / 32

Page 48: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример

1

2

3

4

5

6

A

B

C

D

E

1

5

2

C

D

6

3

A

B

E

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 17 / 32

Page 49: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример

1

2

3

4

5

6

A

B

C

D

E

1

5

2

C

D

6

3

A

B

E

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 17 / 32

Page 50: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример

1

2

3

4

5

6

A

B

C

D

E

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 17 / 32

Page 51: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример

1

2

3

4

5

6

A

B

C

D

E

2

5

D

C

3

1

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 17 / 32

Page 52: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Вершинное покрытие

1

2

3

4

5

6

A

B

C

D

E

Вершины {4, 6, C , D} являются минимальным вершинным покрытием.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 18 / 32

Page 53: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Теорема о вершинном покрытии

ТеоремаВ двудольном графе размер минимального вершинного покрытияравен размеру максимального паросочетания.

ДоказательствоЯсно, что размер любого паросочетания не больше размералюбого покрытия.Предъявим покрытие X , размер которого не превосходит размерамаксимального паросочетания M.Разобьём вершины графа на три части:

1 Вершины, достижимые поиском в ширину из свободных вершиндоли V1.

2 Вершины, достижимые поиском в ширину из свободных вершиндоли V2.

3 Оставшиеся вершины.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 19 / 32

Page 54: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Теорема о вершинном покрытии

ТеоремаВ двудольном графе размер минимального вершинного покрытияравен размеру максимального паросочетания.

Доказательство

Ясно, что размер любого паросочетания не больше размералюбого покрытия.Предъявим покрытие X , размер которого не превосходит размерамаксимального паросочетания M.Разобьём вершины графа на три части:

1 Вершины, достижимые поиском в ширину из свободных вершиндоли V1.

2 Вершины, достижимые поиском в ширину из свободных вершиндоли V2.

3 Оставшиеся вершины.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 19 / 32

Page 55: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Теорема о вершинном покрытии

ТеоремаВ двудольном графе размер минимального вершинного покрытияравен размеру максимального паросочетания.

ДоказательствоЯсно, что размер любого паросочетания не больше размералюбого покрытия.

Предъявим покрытие X , размер которого не превосходит размерамаксимального паросочетания M.Разобьём вершины графа на три части:

1 Вершины, достижимые поиском в ширину из свободных вершиндоли V1.

2 Вершины, достижимые поиском в ширину из свободных вершиндоли V2.

3 Оставшиеся вершины.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 19 / 32

Page 56: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Теорема о вершинном покрытии

ТеоремаВ двудольном графе размер минимального вершинного покрытияравен размеру максимального паросочетания.

ДоказательствоЯсно, что размер любого паросочетания не больше размералюбого покрытия.Предъявим покрытие X , размер которого не превосходит размерамаксимального паросочетания M.

Разобьём вершины графа на три части:1 Вершины, достижимые поиском в ширину из свободных вершин

доли V1.2 Вершины, достижимые поиском в ширину из свободных вершин

доли V2.3 Оставшиеся вершины.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 19 / 32

Page 57: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Теорема о вершинном покрытии

ТеоремаВ двудольном графе размер минимального вершинного покрытияравен размеру максимального паросочетания.

ДоказательствоЯсно, что размер любого паросочетания не больше размералюбого покрытия.Предъявим покрытие X , размер которого не превосходит размерамаксимального паросочетания M.Разобьём вершины графа на три части:

1 Вершины, достижимые поиском в ширину из свободных вершиндоли V1.

2 Вершины, достижимые поиском в ширину из свободных вершиндоли V2.

3 Оставшиеся вершины.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 19 / 32

Page 58: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Теорема о вершинном покрытии

ТеоремаВ двудольном графе размер минимального вершинного покрытияравен размеру максимального паросочетания.

ДоказательствоЯсно, что размер любого паросочетания не больше размералюбого покрытия.Предъявим покрытие X , размер которого не превосходит размерамаксимального паросочетания M.Разобьём вершины графа на три части:

1 Вершины, достижимые поиском в ширину из свободных вершиндоли V1.

2 Вершины, достижимые поиском в ширину из свободных вершиндоли V2.

3 Оставшиеся вершины.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 19 / 32

Page 59: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Теорема о вершинном покрытии

ТеоремаВ двудольном графе размер минимального вершинного покрытияравен размеру максимального паросочетания.

ДоказательствоЯсно, что размер любого паросочетания не больше размералюбого покрытия.Предъявим покрытие X , размер которого не превосходит размерамаксимального паросочетания M.Разобьём вершины графа на три части:

1 Вершины, достижимые поиском в ширину из свободных вершиндоли V1.

2 Вершины, достижимые поиском в ширину из свободных вершиндоли V2.

3 Оставшиеся вершины.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 19 / 32

Page 60: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Теорема о вершинном покрытии

ТеоремаВ двудольном графе размер минимального вершинного покрытияравен размеру максимального паросочетания.

ДоказательствоЯсно, что размер любого паросочетания не больше размералюбого покрытия.Предъявим покрытие X , размер которого не превосходит размерамаксимального паросочетания M.Разобьём вершины графа на три части:

1 Вершины, достижимые поиском в ширину из свободных вершиндоли V1.

2 Вершины, достижимые поиском в ширину из свободных вершиндоли V2.

3 Оставшиеся вершины.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 19 / 32

Page 61: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Доказательство (продолжение)

Доказательство

Первые две части не пересекаются, поскольку в графе нетдополняющего пути.Все вершины третьей части принадлежат паросочетанию M,причём сочетаются они с вершинами же из третьей части.Возьмем тогда вершины доли V2 из первой части и вершиныдоли V1 из второй и третьей частей.Несложно показать, что построенное множество вершин Xявляется сечением и что разные вершины X принадлежат разнымрёбрам M.Таким образом, |M| ≥ |X |.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 20 / 32

Page 62: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Доказательство (продолжение)

ДоказательствоПервые две части не пересекаются, поскольку в графе нетдополняющего пути.

Все вершины третьей части принадлежат паросочетанию M,причём сочетаются они с вершинами же из третьей части.Возьмем тогда вершины доли V2 из первой части и вершиныдоли V1 из второй и третьей частей.Несложно показать, что построенное множество вершин Xявляется сечением и что разные вершины X принадлежат разнымрёбрам M.Таким образом, |M| ≥ |X |.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 20 / 32

Page 63: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Доказательство (продолжение)

ДоказательствоПервые две части не пересекаются, поскольку в графе нетдополняющего пути.Все вершины третьей части принадлежат паросочетанию M,причём сочетаются они с вершинами же из третьей части.

Возьмем тогда вершины доли V2 из первой части и вершиныдоли V1 из второй и третьей частей.Несложно показать, что построенное множество вершин Xявляется сечением и что разные вершины X принадлежат разнымрёбрам M.Таким образом, |M| ≥ |X |.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 20 / 32

Page 64: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Доказательство (продолжение)

ДоказательствоПервые две части не пересекаются, поскольку в графе нетдополняющего пути.Все вершины третьей части принадлежат паросочетанию M,причём сочетаются они с вершинами же из третьей части.Возьмем тогда вершины доли V2 из первой части и вершиныдоли V1 из второй и третьей частей.

Несложно показать, что построенное множество вершин Xявляется сечением и что разные вершины X принадлежат разнымрёбрам M.Таким образом, |M| ≥ |X |.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 20 / 32

Page 65: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Доказательство (продолжение)

ДоказательствоПервые две части не пересекаются, поскольку в графе нетдополняющего пути.Все вершины третьей части принадлежат паросочетанию M,причём сочетаются они с вершинами же из третьей части.Возьмем тогда вершины доли V2 из первой части и вершиныдоли V1 из второй и третьей частей.Несложно показать, что построенное множество вершин Xявляется сечением и что разные вершины X принадлежат разнымрёбрам M.

Таким образом, |M| ≥ |X |.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 20 / 32

Page 66: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Доказательство (продолжение)

ДоказательствоПервые две части не пересекаются, поскольку в графе нетдополняющего пути.Все вершины третьей части принадлежат паросочетанию M,причём сочетаются они с вершинами же из третьей части.Возьмем тогда вершины доли V2 из первой части и вершиныдоли V1 из второй и третьей частей.Несложно показать, что построенное множество вершин Xявляется сечением и что разные вершины X принадлежат разнымрёбрам M.Таким образом, |M| ≥ |X |.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 20 / 32

Page 67: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

План лекции

1 Постановка задачи

2 Дополняющие пути

3 Случай двудольных графов

4 Общий случай

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 21 / 32

Page 68: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Это были ягодки...

Определение

Цветком относительно паросочетания M (blossom w.r.t. M)называется цикл нечётной длины с r рёбрами M и r + 1 ребром неиз M.Основанием цветка (blossom base) называется вершина цветка, вкоторой встречаются два ребра не из сочетания.Стянутым цветком (shrunken blossom) называется вершина встянутом графе, соответствующая цветку в исходном графе.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 22 / 32

Page 69: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Это были ягодки...

ОпределениеЦветком относительно паросочетания M (blossom w.r.t. M)называется цикл нечётной длины с r рёбрами M и r + 1 ребром неиз M.

Основанием цветка (blossom base) называется вершина цветка, вкоторой встречаются два ребра не из сочетания.Стянутым цветком (shrunken blossom) называется вершина встянутом графе, соответствующая цветку в исходном графе.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 22 / 32

Page 70: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Это были ягодки...

ОпределениеЦветком относительно паросочетания M (blossom w.r.t. M)называется цикл нечётной длины с r рёбрами M и r + 1 ребром неиз M.Основанием цветка (blossom base) называется вершина цветка, вкоторой встречаются два ребра не из сочетания.

Стянутым цветком (shrunken blossom) называется вершина встянутом графе, соответствующая цветку в исходном графе.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 22 / 32

Page 71: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Это были ягодки...

ОпределениеЦветком относительно паросочетания M (blossom w.r.t. M)называется цикл нечётной длины с r рёбрами M и r + 1 ребром неиз M.Основанием цветка (blossom base) называется вершина цветка, вкоторой встречаются два ребра не из сочетания.Стянутым цветком (shrunken blossom) называется вершина встянутом графе, соответствующая цветку в исходном графе.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 22 / 32

Page 72: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пример

S

A

B

C

D

E

F F

H

J

I

S

A

B

C

D ′

J

I

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 23 / 32

Page 73: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Стягивание цветков

ТеоремаПусть M — паросочетание графа G , B — цветок в G . Предположим,что основание цветка не принадлежит M. Пусть граф G ′ ипаросочетание M ′ получаются из G и M стягиванием цветка B . ТогдаM ′ является максимальным в G ′ тогда и только тогда, когда Mмаксимально в G .

ДоказательствоДопустим сперва, что M ′ не максимально в G ′. Из этого следует,что в G ′ есть дополняющий путь P ′ (относительно M ′).Если P ′ не содержит стянутого цветка, то он является идополняющим путём относительно M в G .Допустим, что P ′ содержит стянутый цветок B .Поскольку стянутый цветок B не пересекается с паросочетаниемM ′, он является конечной вершиной пути P ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 24 / 32

Page 74: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Стягивание цветков

ТеоремаПусть M — паросочетание графа G , B — цветок в G . Предположим,что основание цветка не принадлежит M. Пусть граф G ′ ипаросочетание M ′ получаются из G и M стягиванием цветка B . ТогдаM ′ является максимальным в G ′ тогда и только тогда, когда Mмаксимально в G .

Доказательство

Допустим сперва, что M ′ не максимально в G ′. Из этого следует,что в G ′ есть дополняющий путь P ′ (относительно M ′).Если P ′ не содержит стянутого цветка, то он является идополняющим путём относительно M в G .Допустим, что P ′ содержит стянутый цветок B .Поскольку стянутый цветок B не пересекается с паросочетаниемM ′, он является конечной вершиной пути P ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 24 / 32

Page 75: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Стягивание цветков

ТеоремаПусть M — паросочетание графа G , B — цветок в G . Предположим,что основание цветка не принадлежит M. Пусть граф G ′ ипаросочетание M ′ получаются из G и M стягиванием цветка B . ТогдаM ′ является максимальным в G ′ тогда и только тогда, когда Mмаксимально в G .

ДоказательствоДопустим сперва, что M ′ не максимально в G ′. Из этого следует,что в G ′ есть дополняющий путь P ′ (относительно M ′).

Если P ′ не содержит стянутого цветка, то он является идополняющим путём относительно M в G .Допустим, что P ′ содержит стянутый цветок B .Поскольку стянутый цветок B не пересекается с паросочетаниемM ′, он является конечной вершиной пути P ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 24 / 32

Page 76: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Стягивание цветков

ТеоремаПусть M — паросочетание графа G , B — цветок в G . Предположим,что основание цветка не принадлежит M. Пусть граф G ′ ипаросочетание M ′ получаются из G и M стягиванием цветка B . ТогдаM ′ является максимальным в G ′ тогда и только тогда, когда Mмаксимально в G .

ДоказательствоДопустим сперва, что M ′ не максимально в G ′. Из этого следует,что в G ′ есть дополняющий путь P ′ (относительно M ′).Если P ′ не содержит стянутого цветка, то он является идополняющим путём относительно M в G .

Допустим, что P ′ содержит стянутый цветок B .Поскольку стянутый цветок B не пересекается с паросочетаниемM ′, он является конечной вершиной пути P ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 24 / 32

Page 77: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Стягивание цветков

ТеоремаПусть M — паросочетание графа G , B — цветок в G . Предположим,что основание цветка не принадлежит M. Пусть граф G ′ ипаросочетание M ′ получаются из G и M стягиванием цветка B . ТогдаM ′ является максимальным в G ′ тогда и только тогда, когда Mмаксимально в G .

ДоказательствоДопустим сперва, что M ′ не максимально в G ′. Из этого следует,что в G ′ есть дополняющий путь P ′ (относительно M ′).Если P ′ не содержит стянутого цветка, то он является идополняющим путём относительно M в G .Допустим, что P ′ содержит стянутый цветок B .

Поскольку стянутый цветок B не пересекается с паросочетаниемM ′, он является конечной вершиной пути P ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 24 / 32

Page 78: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Стягивание цветков

ТеоремаПусть M — паросочетание графа G , B — цветок в G . Предположим,что основание цветка не принадлежит M. Пусть граф G ′ ипаросочетание M ′ получаются из G и M стягиванием цветка B . ТогдаM ′ является максимальным в G ′ тогда и только тогда, когда Mмаксимально в G .

ДоказательствоДопустим сперва, что M ′ не максимально в G ′. Из этого следует,что в G ′ есть дополняющий путь P ′ (относительно M ′).Если P ′ не содержит стянутого цветка, то он является идополняющим путём относительно M в G .Допустим, что P ′ содержит стянутый цветок B .Поскольку стянутый цветок B не пересекается с паросочетаниемM ′, он является конечной вершиной пути P ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 24 / 32

Page 79: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Раскрытие цветка

Доказательство

Легко видеть, что при раскрытии цветка путь P ′ можнодополнить до дополняющего в G .

Пример

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 25 / 32

Page 80: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Раскрытие цветка

ДоказательствоЛегко видеть, что при раскрытии цветка путь P ′ можнодополнить до дополняющего в G .

Пример

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 25 / 32

Page 81: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Раскрытие цветка

ДоказательствоЛегко видеть, что при раскрытии цветка путь P ′ можнодополнить до дополняющего в G .

Пример

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 25 / 32

Page 82: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Продолжение доказательства

Доказательство

Допустим теперь, что M не является максимальным в G .Значит, в G есть дополняющий путь P относительно M.Считаем, что P пересекает цветок B (иначе всё и так ясно).Поскольку цветок содержит ровно одну вершину не изпаросочетания, хотя бы один из концов P (назовём его w) нележит в цветке.Тогда путь от w до первого пересечения с цветком являетсядополняющим в G ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 26 / 32

Page 83: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Продолжение доказательства

ДоказательствоДопустим теперь, что M не является максимальным в G .

Значит, в G есть дополняющий путь P относительно M.Считаем, что P пересекает цветок B (иначе всё и так ясно).Поскольку цветок содержит ровно одну вершину не изпаросочетания, хотя бы один из концов P (назовём его w) нележит в цветке.Тогда путь от w до первого пересечения с цветком являетсядополняющим в G ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 26 / 32

Page 84: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Продолжение доказательства

ДоказательствоДопустим теперь, что M не является максимальным в G .Значит, в G есть дополняющий путь P относительно M.

Считаем, что P пересекает цветок B (иначе всё и так ясно).Поскольку цветок содержит ровно одну вершину не изпаросочетания, хотя бы один из концов P (назовём его w) нележит в цветке.Тогда путь от w до первого пересечения с цветком являетсядополняющим в G ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 26 / 32

Page 85: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Продолжение доказательства

ДоказательствоДопустим теперь, что M не является максимальным в G .Значит, в G есть дополняющий путь P относительно M.Считаем, что P пересекает цветок B (иначе всё и так ясно).

Поскольку цветок содержит ровно одну вершину не изпаросочетания, хотя бы один из концов P (назовём его w) нележит в цветке.Тогда путь от w до первого пересечения с цветком являетсядополняющим в G ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 26 / 32

Page 86: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Продолжение доказательства

ДоказательствоДопустим теперь, что M не является максимальным в G .Значит, в G есть дополняющий путь P относительно M.Считаем, что P пересекает цветок B (иначе всё и так ясно).Поскольку цветок содержит ровно одну вершину не изпаросочетания, хотя бы один из концов P (назовём его w) нележит в цветке.

Тогда путь от w до первого пересечения с цветком являетсядополняющим в G ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 26 / 32

Page 87: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Продолжение доказательства

ДоказательствоДопустим теперь, что M не является максимальным в G .Значит, в G есть дополняющий путь P относительно M.Считаем, что P пересекает цветок B (иначе всё и так ясно).Поскольку цветок содержит ровно одну вершину не изпаросочетания, хотя бы один из концов P (назовём его w) нележит в цветке.Тогда путь от w до первого пересечения с цветком являетсядополняющим в G ′.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 26 / 32

Page 88: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общие идеи алгоритмаОбщие идеи алгоритма

Мы модифицируем поиск в ширину так, чтобы он находил цветки.Каждый обнаруженный цветок стягивается в вершину, после чегопоиск продолжается.Ясно, что дополняющий путь в стянутом графе легко развернутьв дополняющий путь в исходном графе.Обозначим через U множество вершин не из паросочетания M.Будем строить лес F (последовательно добавляя рёбра изпаросочетания и не из паросочетания), содержащий покомпоненте на каждую вершину U.Ребра паросочетания, таким образом, будут на чётном расстоянииот вершин U.Вершины, находящиеся на чётном расстоянии, будут иметьстепень 2 (одно ребро из паросочетания, второе — нет).Назовём такие вершины внутренними, оставшиеся — внешними.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 27 / 32

Page 89: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общие идеи алгоритмаОбщие идеи алгоритма

Мы модифицируем поиск в ширину так, чтобы он находил цветки.Каждый обнаруженный цветок стягивается в вершину, после чегопоиск продолжается.

Ясно, что дополняющий путь в стянутом графе легко развернутьв дополняющий путь в исходном графе.Обозначим через U множество вершин не из паросочетания M.Будем строить лес F (последовательно добавляя рёбра изпаросочетания и не из паросочетания), содержащий покомпоненте на каждую вершину U.Ребра паросочетания, таким образом, будут на чётном расстоянииот вершин U.Вершины, находящиеся на чётном расстоянии, будут иметьстепень 2 (одно ребро из паросочетания, второе — нет).Назовём такие вершины внутренними, оставшиеся — внешними.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 27 / 32

Page 90: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общие идеи алгоритмаОбщие идеи алгоритма

Мы модифицируем поиск в ширину так, чтобы он находил цветки.Каждый обнаруженный цветок стягивается в вершину, после чегопоиск продолжается.Ясно, что дополняющий путь в стянутом графе легко развернутьв дополняющий путь в исходном графе.

Обозначим через U множество вершин не из паросочетания M.Будем строить лес F (последовательно добавляя рёбра изпаросочетания и не из паросочетания), содержащий покомпоненте на каждую вершину U.Ребра паросочетания, таким образом, будут на чётном расстоянииот вершин U.Вершины, находящиеся на чётном расстоянии, будут иметьстепень 2 (одно ребро из паросочетания, второе — нет).Назовём такие вершины внутренними, оставшиеся — внешними.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 27 / 32

Page 91: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общие идеи алгоритмаОбщие идеи алгоритма

Мы модифицируем поиск в ширину так, чтобы он находил цветки.Каждый обнаруженный цветок стягивается в вершину, после чегопоиск продолжается.Ясно, что дополняющий путь в стянутом графе легко развернутьв дополняющий путь в исходном графе.Обозначим через U множество вершин не из паросочетания M.

Будем строить лес F (последовательно добавляя рёбра изпаросочетания и не из паросочетания), содержащий покомпоненте на каждую вершину U.Ребра паросочетания, таким образом, будут на чётном расстоянииот вершин U.Вершины, находящиеся на чётном расстоянии, будут иметьстепень 2 (одно ребро из паросочетания, второе — нет).Назовём такие вершины внутренними, оставшиеся — внешними.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 27 / 32

Page 92: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общие идеи алгоритмаОбщие идеи алгоритма

Мы модифицируем поиск в ширину так, чтобы он находил цветки.Каждый обнаруженный цветок стягивается в вершину, после чегопоиск продолжается.Ясно, что дополняющий путь в стянутом графе легко развернутьв дополняющий путь в исходном графе.Обозначим через U множество вершин не из паросочетания M.Будем строить лес F (последовательно добавляя рёбра изпаросочетания и не из паросочетания), содержащий покомпоненте на каждую вершину U.

Ребра паросочетания, таким образом, будут на чётном расстоянииот вершин U.Вершины, находящиеся на чётном расстоянии, будут иметьстепень 2 (одно ребро из паросочетания, второе — нет).Назовём такие вершины внутренними, оставшиеся — внешними.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 27 / 32

Page 93: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общие идеи алгоритмаОбщие идеи алгоритма

Мы модифицируем поиск в ширину так, чтобы он находил цветки.Каждый обнаруженный цветок стягивается в вершину, после чегопоиск продолжается.Ясно, что дополняющий путь в стянутом графе легко развернутьв дополняющий путь в исходном графе.Обозначим через U множество вершин не из паросочетания M.Будем строить лес F (последовательно добавляя рёбра изпаросочетания и не из паросочетания), содержащий покомпоненте на каждую вершину U.Ребра паросочетания, таким образом, будут на чётном расстоянииот вершин U.

Вершины, находящиеся на чётном расстоянии, будут иметьстепень 2 (одно ребро из паросочетания, второе — нет).Назовём такие вершины внутренними, оставшиеся — внешними.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 27 / 32

Page 94: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общие идеи алгоритмаОбщие идеи алгоритма

Мы модифицируем поиск в ширину так, чтобы он находил цветки.Каждый обнаруженный цветок стягивается в вершину, после чегопоиск продолжается.Ясно, что дополняющий путь в стянутом графе легко развернутьв дополняющий путь в исходном графе.Обозначим через U множество вершин не из паросочетания M.Будем строить лес F (последовательно добавляя рёбра изпаросочетания и не из паросочетания), содержащий покомпоненте на каждую вершину U.Ребра паросочетания, таким образом, будут на чётном расстоянииот вершин U.Вершины, находящиеся на чётном расстоянии, будут иметьстепень 2 (одно ребро из паросочетания, второе — нет).

Назовём такие вершины внутренними, оставшиеся — внешними.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 27 / 32

Page 95: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Общие идеи алгоритмаОбщие идеи алгоритма

Мы модифицируем поиск в ширину так, чтобы он находил цветки.Каждый обнаруженный цветок стягивается в вершину, после чегопоиск продолжается.Ясно, что дополняющий путь в стянутом графе легко развернутьв дополняющий путь в исходном графе.Обозначим через U множество вершин не из паросочетания M.Будем строить лес F (последовательно добавляя рёбра изпаросочетания и не из паросочетания), содержащий покомпоненте на каждую вершину U.Ребра паросочетания, таким образом, будут на чётном расстоянииот вершин U.Вершины, находящиеся на чётном расстоянии, будут иметьстепень 2 (одно ребро из паросочетания, второе — нет).Назовём такие вершины внутренними, оставшиеся — внешними.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 27 / 32

Page 96: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Описание алгоритма

Описание алгоритмаРассмотрим множество соседей внешних вершин. Возможны четыреслучая:

1 Внешняя вершина x соединена с вершиной y не из F .Добавить рёбра (x , y) и (y , z) ∈ M в F .

2 Cоединены две внешние вершины из разных компонент.Корни этих компонет соединены дополняющим путём.

3 Cоединены две внешние вершины x и y из однойкомпоненты. Рассмотрим цикл C компоненты, содержащийвершины x , y , а также путь, ведущий из корня компоненты в этотцикл. Изменить рёбра сочетания вдоль этого пути (размерсочетания при этом не изменится) и стянуть найденный цветок.

4 Каждая внешняя вершина соединена только совнутренними вершинами. Значит, текущее паросочетаниемаксимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 28 / 32

Page 97: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Описание алгоритма

Описание алгоритмаРассмотрим множество соседей внешних вершин. Возможны четыреслучая:

1 Внешняя вершина x соединена с вершиной y не из F .Добавить рёбра (x , y) и (y , z) ∈ M в F .

2 Cоединены две внешние вершины из разных компонент.Корни этих компонет соединены дополняющим путём.

3 Cоединены две внешние вершины x и y из однойкомпоненты. Рассмотрим цикл C компоненты, содержащийвершины x , y , а также путь, ведущий из корня компоненты в этотцикл. Изменить рёбра сочетания вдоль этого пути (размерсочетания при этом не изменится) и стянуть найденный цветок.

4 Каждая внешняя вершина соединена только совнутренними вершинами. Значит, текущее паросочетаниемаксимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 28 / 32

Page 98: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Описание алгоритма

Описание алгоритмаРассмотрим множество соседей внешних вершин. Возможны четыреслучая:

1 Внешняя вершина x соединена с вершиной y не из F .Добавить рёбра (x , y) и (y , z) ∈ M в F .

2 Cоединены две внешние вершины из разных компонент.Корни этих компонет соединены дополняющим путём.

3 Cоединены две внешние вершины x и y из однойкомпоненты. Рассмотрим цикл C компоненты, содержащийвершины x , y , а также путь, ведущий из корня компоненты в этотцикл. Изменить рёбра сочетания вдоль этого пути (размерсочетания при этом не изменится) и стянуть найденный цветок.

4 Каждая внешняя вершина соединена только совнутренними вершинами. Значит, текущее паросочетаниемаксимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 28 / 32

Page 99: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Описание алгоритма

Описание алгоритмаРассмотрим множество соседей внешних вершин. Возможны четыреслучая:

1 Внешняя вершина x соединена с вершиной y не из F .Добавить рёбра (x , y) и (y , z) ∈ M в F .

2 Cоединены две внешние вершины из разных компонент.Корни этих компонет соединены дополняющим путём.

3 Cоединены две внешние вершины x и y из однойкомпоненты. Рассмотрим цикл C компоненты, содержащийвершины x , y , а также путь, ведущий из корня компоненты в этотцикл. Изменить рёбра сочетания вдоль этого пути (размерсочетания при этом не изменится) и стянуть найденный цветок.

4 Каждая внешняя вершина соединена только совнутренними вершинами. Значит, текущее паросочетаниемаксимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 28 / 32

Page 100: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Описание алгоритма

Описание алгоритмаРассмотрим множество соседей внешних вершин. Возможны четыреслучая:

1 Внешняя вершина x соединена с вершиной y не из F .Добавить рёбра (x , y) и (y , z) ∈ M в F .

2 Cоединены две внешние вершины из разных компонент.Корни этих компонет соединены дополняющим путём.

3 Cоединены две внешние вершины x и y из однойкомпоненты. Рассмотрим цикл C компоненты, содержащийвершины x , y , а также путь, ведущий из корня компоненты в этотцикл. Изменить рёбра сочетания вдоль этого пути (размерсочетания при этом не изменится) и стянуть найденный цветок.

4 Каждая внешняя вершина соединена только совнутренними вершинами. Значит, текущее паросочетаниемаксимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 28 / 32

Page 101: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пояснение к последнему шагу

Пояснение к последнему шагу

Почему же паросочетание является максимальным, если каждаявнешняя вершина соединена только со внутренними?Пусть F содержит p внутренних вершин и q внешних.Ясно, что q − p = |U|.Итак, внешних вершин на |U| больше, чем внутренних.Но каждая внешняя вершина может сочетаться только совнутренней. Значит, хотя бы для |U| из них не найдется пары.Поскольку в текущем паросочетании пары нет как раз у |U|вершин, то оно максимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 29 / 32

Page 102: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пояснение к последнему шагу

Пояснение к последнему шагуПочему же паросочетание является максимальным, если каждаявнешняя вершина соединена только со внутренними?

Пусть F содержит p внутренних вершин и q внешних.Ясно, что q − p = |U|.Итак, внешних вершин на |U| больше, чем внутренних.Но каждая внешняя вершина может сочетаться только совнутренней. Значит, хотя бы для |U| из них не найдется пары.Поскольку в текущем паросочетании пары нет как раз у |U|вершин, то оно максимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 29 / 32

Page 103: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пояснение к последнему шагу

Пояснение к последнему шагуПочему же паросочетание является максимальным, если каждаявнешняя вершина соединена только со внутренними?Пусть F содержит p внутренних вершин и q внешних.

Ясно, что q − p = |U|.Итак, внешних вершин на |U| больше, чем внутренних.Но каждая внешняя вершина может сочетаться только совнутренней. Значит, хотя бы для |U| из них не найдется пары.Поскольку в текущем паросочетании пары нет как раз у |U|вершин, то оно максимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 29 / 32

Page 104: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пояснение к последнему шагу

Пояснение к последнему шагуПочему же паросочетание является максимальным, если каждаявнешняя вершина соединена только со внутренними?Пусть F содержит p внутренних вершин и q внешних.Ясно, что q − p = |U|.

Итак, внешних вершин на |U| больше, чем внутренних.Но каждая внешняя вершина может сочетаться только совнутренней. Значит, хотя бы для |U| из них не найдется пары.Поскольку в текущем паросочетании пары нет как раз у |U|вершин, то оно максимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 29 / 32

Page 105: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пояснение к последнему шагу

Пояснение к последнему шагуПочему же паросочетание является максимальным, если каждаявнешняя вершина соединена только со внутренними?Пусть F содержит p внутренних вершин и q внешних.Ясно, что q − p = |U|.Итак, внешних вершин на |U| больше, чем внутренних.

Но каждая внешняя вершина может сочетаться только совнутренней. Значит, хотя бы для |U| из них не найдется пары.Поскольку в текущем паросочетании пары нет как раз у |U|вершин, то оно максимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 29 / 32

Page 106: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пояснение к последнему шагу

Пояснение к последнему шагуПочему же паросочетание является максимальным, если каждаявнешняя вершина соединена только со внутренними?Пусть F содержит p внутренних вершин и q внешних.Ясно, что q − p = |U|.Итак, внешних вершин на |U| больше, чем внутренних.Но каждая внешняя вершина может сочетаться только совнутренней. Значит, хотя бы для |U| из них не найдется пары.

Поскольку в текущем паросочетании пары нет как раз у |U|вершин, то оно максимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 29 / 32

Page 107: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Пояснение к последнему шагу

Пояснение к последнему шагуПочему же паросочетание является максимальным, если каждаявнешняя вершина соединена только со внутренними?Пусть F содержит p внутренних вершин и q внешних.Ясно, что q − p = |U|.Итак, внешних вершин на |U| больше, чем внутренних.Но каждая внешняя вершина может сочетаться только совнутренней. Значит, хотя бы для |U| из них не найдется пары.Поскольку в текущем паросочетании пары нет как раз у |U|вершин, то оно максимально.

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 29 / 32

Page 108: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Анализ времени работы

ЛеммаВремя работы представленного алгоритма есть O(|V |4).

ДоказательствоНа каждом шаге мы либо увеличиваем размер F , либоуменьшаем размер G , либо находим дополняющий путь, либозаканчиваем работу.Дополняющий путь находится не более |V | раз.Стягивается не более |V | цветков.Нахождение цветка или дополняющего пути требует времениO(|E |).Итого, O(|V |2|E |).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 30 / 32

Page 109: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Анализ времени работы

ЛеммаВремя работы представленного алгоритма есть O(|V |4).

Доказательство

На каждом шаге мы либо увеличиваем размер F , либоуменьшаем размер G , либо находим дополняющий путь, либозаканчиваем работу.Дополняющий путь находится не более |V | раз.Стягивается не более |V | цветков.Нахождение цветка или дополняющего пути требует времениO(|E |).Итого, O(|V |2|E |).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 30 / 32

Page 110: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Анализ времени работы

ЛеммаВремя работы представленного алгоритма есть O(|V |4).

ДоказательствоНа каждом шаге мы либо увеличиваем размер F , либоуменьшаем размер G , либо находим дополняющий путь, либозаканчиваем работу.

Дополняющий путь находится не более |V | раз.Стягивается не более |V | цветков.Нахождение цветка или дополняющего пути требует времениO(|E |).Итого, O(|V |2|E |).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 30 / 32

Page 111: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Анализ времени работы

ЛеммаВремя работы представленного алгоритма есть O(|V |4).

ДоказательствоНа каждом шаге мы либо увеличиваем размер F , либоуменьшаем размер G , либо находим дополняющий путь, либозаканчиваем работу.Дополняющий путь находится не более |V | раз.

Стягивается не более |V | цветков.Нахождение цветка или дополняющего пути требует времениO(|E |).Итого, O(|V |2|E |).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 30 / 32

Page 112: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Анализ времени работы

ЛеммаВремя работы представленного алгоритма есть O(|V |4).

ДоказательствоНа каждом шаге мы либо увеличиваем размер F , либоуменьшаем размер G , либо находим дополняющий путь, либозаканчиваем работу.Дополняющий путь находится не более |V | раз.Стягивается не более |V | цветков.

Нахождение цветка или дополняющего пути требует времениO(|E |).Итого, O(|V |2|E |).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 30 / 32

Page 113: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Анализ времени работы

ЛеммаВремя работы представленного алгоритма есть O(|V |4).

ДоказательствоНа каждом шаге мы либо увеличиваем размер F , либоуменьшаем размер G , либо находим дополняющий путь, либозаканчиваем работу.Дополняющий путь находится не более |V | раз.Стягивается не более |V | цветков.Нахождение цветка или дополняющего пути требует времениO(|E |).

Итого, O(|V |2|E |).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 30 / 32

Page 114: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Анализ времени работы

ЛеммаВремя работы представленного алгоритма есть O(|V |4).

ДоказательствоНа каждом шаге мы либо увеличиваем размер F , либоуменьшаем размер G , либо находим дополняющий путь, либозаканчиваем работу.Дополняющий путь находится не более |V | раз.Стягивается не более |V | цветков.Нахождение цветка или дополняющего пути требует времениO(|E |).Итого, O(|V |2|E |).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 30 / 32

Page 115: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Что мы узнали за сегодня?

Что мы узнали за сегодня?

Основным моментом в поиске максимального паросочетанияявляется поиск дополняющих путей.Искать дополняющие пути в двудольном графе гораздо легче.В двудольном графе размер максимального паросочетаниясовпадает с размером минимального вершинного покрытия.В общем случае максимальное паросочетание находится за времяO(|V |4).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 31 / 32

Page 116: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Что мы узнали за сегодня?

Что мы узнали за сегодня?Основным моментом в поиске максимального паросочетанияявляется поиск дополняющих путей.

Искать дополняющие пути в двудольном графе гораздо легче.В двудольном графе размер максимального паросочетаниясовпадает с размером минимального вершинного покрытия.В общем случае максимальное паросочетание находится за времяO(|V |4).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 31 / 32

Page 117: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Что мы узнали за сегодня?

Что мы узнали за сегодня?Основным моментом в поиске максимального паросочетанияявляется поиск дополняющих путей.Искать дополняющие пути в двудольном графе гораздо легче.

В двудольном графе размер максимального паросочетаниясовпадает с размером минимального вершинного покрытия.В общем случае максимальное паросочетание находится за времяO(|V |4).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 31 / 32

Page 118: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Что мы узнали за сегодня?

Что мы узнали за сегодня?Основным моментом в поиске максимального паросочетанияявляется поиск дополняющих путей.Искать дополняющие пути в двудольном графе гораздо легче.В двудольном графе размер максимального паросочетаниясовпадает с размером минимального вершинного покрытия.

В общем случае максимальное паросочетание находится за времяO(|V |4).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 31 / 32

Page 119: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Что мы узнали за сегодня?

Что мы узнали за сегодня?Основным моментом в поиске максимального паросочетанияявляется поиск дополняющих путей.Искать дополняющие пути в двудольном графе гораздо легче.В двудольном графе размер максимального паросочетаниясовпадает с размером минимального вершинного покрытия.В общем случае максимальное паросочетание находится за времяO(|V |4).

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 31 / 32

Page 120: Эффективные алгоритмы, осень 2007: Максимальное паросочетание

Спасибо за внимание!

А. Куликов (CS клуб при ПОМИ) 20. Максимальное паросочетание 32 / 32


Recommended