EduBrick

Кёниг, покрытие и независимое множество

Минимальное вершинное покрытие равно максимальному паросочетанию. Отсюда независимое множество, рёберное покрытие и обязательные рёбра.

4 мин

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

Вершинное покрытие — набор вершин, такой что у каждого ребра хотя бы один конец в наборе.

Неравенство в одну сторону очевидно: рёбра паросочетания попарно не пересекаются, поэтому покрыть их все меньше чем M|M| вершинами нельзя. Содержательно то, что покрытие такого размера существует — и строится явно.

Построение

Возьмём максимальное паросочетание MM и запустим обход из свободных вершин доли AA по чередующимся путям: из левой доли идём по рёбрам не из MM, из правой возвращаемся по рёбрам из MM. Пусть LL и RR — посещённые вершины левой и правой доли.

C=(AL)R.C = (A \setminus L) \cup R.
for (int u = 0; u < n; u++) if (matchLeft[u] == -1) { seenLeft[u] = 1; queue.push_back(u); }
for (size_t head = 0; head < queue.size(); head++) {
    int u = queue[head];
    for (int v : adj[u]) {
        if (seenRight[v] || matchLeft[u] == v) continue;   // только рёбра не из M
        seenRight[v] = 1;
        int w = matchRight[v];
        if (w != -1 && !seenLeft[w]) { seenLeft[w] = 1; queue.push_back(w); }
    }
}

Почему это покрытие. Пусть ребро (a,b)(a, b) не покрыто: aLa \in L, bRb \notin R. Из aa обход обязан был пойти по этому ребру. Если оно не из MM, то bb попала бы в RR. Если из MM, то aa была посещена приходом по нему из bb, то есть bRb \in R. Противоречие.

Почему размер равен M|M|. Каждая вершина из CC покрыта паросочетанием: свободные вершины слева все лежат в LL, а свободная вершина справа в RR означала бы увеличивающий путь. И никакое ребро MM не даёт в CC оба конца: если bRb \in R достигнута, её пара попала в LL и в CC не входит.

Обход обязан начинаться именно со свободных вершин. Запустив его из всех, вы получите покрытие, но не минимальное.

Что отсюда следует

Максимальное независимое множество. Дополнение независимого множества — это вершинное покрытие, поэтому в любом графе I=VC|I| = V - |C|, а в двудольном

I=VM,I=L(BR).|I| = V - |M|, \qquad I = L \cup (B \setminus R).

В произвольном графе задача NP-трудна; двудольность и есть то, что делает её полиномиальной.

Минимальное рёберное покрытие (набор рёбер, задевающий все вершины; требует отсутствия изолированных вершин) равно VMV - |M| — теорема Галлаи. Построение: паросочетание плюс по одному ребру к каждой непокрытой вершине.

Недостача по Холлу: nM=maxS(SN(S))n - |M| = \max_S (|S| - |N(S)|). Подставьте S=ACS = A \setminus C и посчитайте.

Ориентация: какие рёбра могут быть в паросочетании

Построим орграф DD: рёбра не из MM направим слева направо, рёбра из MM — справа налево. Тогда чередующиеся пути становятся обычными путями, и на два естественных вопроса есть ответы.

Ребро (a,b)(a, b) входит хотя бы в одно максимальное паросочетание, если оно из MM, либо aa и bb лежат в одной компоненте сильной связности DD (чередующийся цикл через ребро), либо aa достижима из свободной вершины левой доли, либо из bb достижима свободная вершина правой доли.

Три условия, а не одно: добавив ребро, приходится выкинуть два ребра паросочетания, и восстановить размер можно либо циклом, либо пристроив одну из освободившихся вершин к свободной. Ограничиться проверкой компоненты — типичная ошибка.

Ребро входит во все максимальные паросочетания, если оно из MM и не выполнено ни одно из трёх условий: концы в одной компоненте сильной связности; из левого конца достижима свободная вершина справа; правый конец достижим из свободной вершины слева.

Оба критерия — прямое следствие рассуждения про симметрическую разность: другое максимальное паросочетание отличается от MM чередующимися циклами и путями, начинающимися в свободных вершинах.

Где теорема ломается

Треугольник: максимальное паросочетание — одно ребро, минимальное покрытие — две вершины. Равенство держится на отсутствии нечётных циклов, то есть ровно на двудольности. В общем графе паросочетание всё ещё ищется за полином, а вершинное покрытие — уже NP-трудная задача.