Алгоритм Эдмондса Лекция 11 Идея алгоритма Эдмондса • Пусть есть некоторое паросочетание M, построим M-чередующийся лес F. Начинаем с множества S вершин не покрытых M и с пустого множества ребер. • На каждом шаге алгоритм рассматривает вершину y соседнюю с внешней вершиной x. Пусть P(x) обозначает путь в F от x к корню. Возможны три случая и, соответственно, три операции (“прирост”, “увеличение”, и “стягивание”). Прирост • • y V(F) Тогда лес может быть наращен добавлением ребра {x, y} и ребра из M покрывающего y. Увеличение y ― внешняя вершина в другой связной компоненте F. • Тогда увеличим M вдоль P(x)U{x, y}UP(y). • Стягивание • y ― внешняя вершина в той же связной компоненте F (с корнем q). • Пусть r будет первой вершиной в P(x) (считая от x), которая принадлежит и P(y). Если r ― не корень, то она должна иметь степень не меньше 3. Следовательно r ― внешняя вершина . • Тогда C := P(x)[x,r] U{x, y}UP(y)[y,r] ― цветок с не менее чем тремя вершинами. Стягиваем C. x3 Цветок y3 x2 x1 v Три случая Прирост: x1 , y1 ; Увеличение: x2, y2; Стягивание 3: x3, y3. y2 y1 w P(vw) ― увеличивающий путь Максимальное паросочетание • Если ни один из трех случаев не возник, то все соседи внешних вершин внутренние. Докажем, что тогда M ― максимально. Доказательство Пусть X ― множество внутренних вершин, s:=|X|, и пусть t ― число внешних вершин. G – X имеет t нечетных компонент (каждая внешняя вершина изолирована в G – X ), то есть qG(X) – |X|= t – s. Из формулы Бержа-Татта получаем, что любое паросочетание оставляет по крайней мере t – s вершин непокрытыми. С другой стороны, число непокрытых вершин в M равно числу корней F и равно t – s по Утверждению 10.9. Следовательно, M ― максимально. Замечание • Важный вопрос как процедуру стягивания производить эффективно, так чтобы можно было впоследствии восстановить исходный граф. Заметим, что какие-то вершины могут участвовать в нескольких процедурах стягивания. • Вместе применения процедур стягивания, будем рассматривать лес с цветками. Цветочный лес Определение 11.1 Дан граф G и паросочетание M в G. Подграф F из G называется цветочным лесом (относительно M), если существует разбиение V(F) = V1 UV2 U...UVk множества вершин, такое что Fi := F[Vi] является максимальным факторкритическим подграфом F с |M∩E(Fi)| = (|Vi| – 1)/2 (i = 1,...,k) и после стягивания каждого из V1,...,Vk получается чередующийся лес F'. Цветки Определение 11.1 (продолжение) Fi называется внешним цветком (внутренним цветком) если Vi внешняя (внутренняя) вершина в F'. Все вершины внутреннего (внешнего) цветка называются внутренними (внешними). Цветочный лес в котором каждый внутренний цветок является простой вершиной называется специальным цветочным лесом . Все вершины G, не принадлежащие специальному цветочному лесу называются вне-лесными. Специальный цветочный лес Паросочетание, внутренние вершины Нетривиальные внешние цветки Замечание • В дальнейшем, мы будем рассматривать только специальный цветочный лес. • Лемма о стягивании цветков (Лемма 10.7) применима только к внешним цветкам. Лемма 10.7 Пусть G ― граф и M ― паросочетание в G, и C ― цветок в G (относительно M). Предположим, что существует M-чередующийся vr-путь Q четной длины из вершины v, непокрытой M, в базу r цветка C, и E(Q)∩ E(C) = . Пусть G′ и M′ получаются из G и M стягиванием V(C) к одной вершине. Тогда M максимально в G тогда и только тогда, когда M′ является максимальным паросочетанием в G′. Структура хранения специального цветочного леса M x для x непокрытых x y для x, y M x для x V F или x ― база цветка в F y для x, y E F \ M и x― внутренняя вершина x y для x, y E F \ M в соответствии с M -чередующейся декомпозицией цветка содержащего x, если x ― внешняя вершина x если x не является внешней вершиной x y если x является внешней вершиной и y ― база внешнего цветка в F , содержащего x (1) (2) (3) Специальный цветочный лес u → v ((u) = v ) Паросочетание, внутренние вершины Нетривиальные внешние цветки Максимальный путь Для каждой внешней вершины v определим P(v) как максимальный путь, заданный подпоследовательностью v, (v), ((v)), (((v))), ((((v)))),... Утверждение 11.2 Пусть F ― специальный цветочный лес относительно M, и пусть , : V(G) → V(G) удовлетворяют (1) и (2). Тогда: a) Для каждой внешней вершины v, P(v) ― чередующийся v-q-путь, где q ― корень дерева F, содержащего v. b) Вершина x является • внешней тогда и только тогда, когда либо (x) = x или ((x)) ≠ (x) • внутренней тогда и только тогда, когда ((x)) = (x) и (x) ≠ x • вне-лесной тогда и только тогда, когда (x) ≠ x и (x) = x и ((x)) = (x) . Доказательство a) • Из определения и леммы 10.5 начало последовательности v, (v), ((v)), (((v))), ((((v)))),... это M-чередующийся x-r-путь четной длины к базе цветка r. • Если r не корень, то он покрыт M. • последовательность продолжится ребрами {r, (r)} и {(r), ((r))} ((r)-внутренняя) • ((r)) внешняя вершина (можно применить индукцию). Алгоритм Эдмондса Input: Граф G. Output: Максимальное паросочетание в G, заданное ребрами {x, (x)}. 1. Set μ(v):=v, φ(v):=v, ρ(v):=v и scanned(v):= false для всех v V(G). 2. If все внешние вершины просмотрены then stop, else пусть x ― внешняя вершина с scanned(x) = false . 3. Пусть y ― сосед x, такой что ( y ― вне-лесная ) или ( y ― внешняя и ρ(y) ≠ ρ(x)). If таких вершин нет then set scanned(x):= true и go to 2. “Прирост” 4. If y ― вне-лесная, then set φ(y):=x и go to 3. x y “Увеличение” 5. If P(x) и P(y) не имеют общих вершин then μ(φ(v)):=v, μ(v):=φ(v), для всех vP(x) с нечетным расстоянием от x и всех vP(y) с нечетным расстоянием от y; μ(x):=y; μ(y):=x; φ(v):=v, ρ(v):=v, scanned(v):= false для всех vV(G) Go to 2. “Увеличение” y x v w P(vw) ― увеличивающий путь “Стягивание” 6. Пусть r ― первая вершина из P(x)∩P(y), для которой ρ(r) = r. For v Px x ,r P y y ,r c нечетным расстоянием от x (resp. y ) на Px x ,r (resp. P y y ,r ) и v r do : Set v : v. If x r then set x : y. If y r then set y : x. For всех v V G с v Px x ,r P y y ,r do set v : r Go to 3. “Стягивание” Нетривиальные внешние цветки y x q w (w) (w) == wq (u, v) | (u) = v Паросочетание, внутренние вершины r (q) (q) == wr Алгоритм Эдмондса Лемма 11.3 a) b) c) Следующие утверждения выполняются на любом шаге Алгоритма Эдмондса : Ребра {x, (x)} принадлежат M; Ребра {x, (x)} и {x, (x)} образует специальный цветочный лес F относительно M (+ некоторые изолированные ребра паросочетания); Свойства (1), (2) и (3) выполнены относительно F. Структура хранения специального цветочного леса не нарушена. b) Ребра {x, (x)} и {x, (x)} образует специальный цветочный лес F относительно M (+ некоторые изолированные ребра паросочетания); • На шаге 1 и после шага 5 («увеличение») получаем специальный цветочный лес без ребер. • Шаг 4 («прирост») корректно увеличивает специальный цветочный лес на два ребра. • На шаге 6 r либо корень, либо имеет степень по крайней мере 3 r внешняя. • Пусть B:= V(P(x)[x,r]) U V(P(y)[y,r]). • Рассмотрим ребро {u,v}, u B и v B. • Так как F(B) содержит почти совершенное паросочетание, то {u,v} M тогда и только тогда {u,v} = {r, (r)}. • Более того u была внешней до выполнения шага 6 v внутренняя до выполнения шага 6 . • F остается специальным цветочным лесом после шага 6. с) Структура хранения специального цветочного леса • Покажем, что после шага 6 и соответствуют M-чередующейся декомпозиции нового цветка. • Пусть x и у две внешние вершины некоторой связной компоненты специального цветочного леса и r ― первая вершина из P(x)∩P(y), для которой ρ(r) = r. • Новый цветок B:= {v V(G): ρ(v) P(x)[x,r] U P(y)[y,r]} • (v) не изменяется для v B с ρ(v) = r. • Пусть Bold := {v V(G): ρ(v) = r}, (v) задает декомпозицию Bold . • Следующее ушко будет P(x)[x,x’] U {x,y} U P(y)[y,y’], где x’ и y’ первые вершины на P(x) и P(y) в Bold . • Каждое ушко Q старого внешнего цветка B'B, Q \ (P(x) U P(y)) является ушком в новой M-чередующейся декомпозиции. Алгоритм Эдмондса Теорема 11.4 (Edmonds [1965]) Алгоритм Эдмондса находит максимальное паросочетание за время O(n3), где n = |V(G)|. Доказательство корректности • Лемма 11.3 и Утверждение 11.2 на каждом шаге мы корректно определяем функции , корректно определяем паросочетание M. • Пусть M и F паросочетание и специальный цветочный лес, полученные в момент остановки алгоритма. • Пусть X множество внутренних вершин и B множество баз внешних цветков в F. • |V(G)| – |2M| = |B| – |X| Доказательство корректности • Шаг 3 любая вершина y соседняя с произвольной внешней вершиной x, либо внутренняя либо принадлежит тому же цветку что и x. • внешний цветок в F является нечетной компонентой в G – X. • любое паросочетание должно оставить |B| – |X| вершин непокрытыми. • M ― максимальное паросочетание. Время работы • Утверждение 11.2 статус каждой вершины можно проверить за константное время. • Шаг 4 выполняется за одну элементарную операцию и шаги 5 и 6 требуют O(n) элементарных операций. • Между двумя увеличениями шаги 4 и 6 выполняются не более n раз каждый. • Между двумя увеличениями каждая вершина просматривается только один раз и шаг 3 для каждой вершины требует O(n) элементарных операций. • Общее время работы между двумя увеличениями не превосходит O(n2) элементарных операций. • Общее время работы алгоритма ≤ O(n3) элементарных операций. Упражнение 11.1 • Доказать, что k-регулярный двудольный граф имеет k непересекающихся совершенных паросочетаний. Упражнение 11.2 • Показать, что любой граф на n вершинах, у которого степень каждой вершины не меньше k, имеет паросочетание мощности min{k, n/2}. Упражнение 11.3 • Пусть G ― двудольный граф с биразбиением V(G) = A U B. Предположим, что S A, T B и существует паросочетание, покрывающее S, и паросочетание, покрывающее T. Доказать, что существует паросочетание, покрывающее SUT. Упражнение 11.4 • Доказать, что любой связный 3-регулярный граф с не более чем двумя мостами имеет совершенное паросочетание. • Привести пример связного 3-регулярного графа, который не имеет совершенного паросочетания. Упражнение 11.5 • Можно ли найти в произвольном графе реберное покрытие минимальной мощности в полиномиальное время.