EssayAI
Блог
Блог
Математика и алгоритмы

Теорема Кёнига: двудольный граф, паросочетания и покрытия

24 апреля 2026Время чтения: 7 минут
#теория графов#двудольный граф#паросочетание#вершинное покрытие#теорема Кёнига
Теорема Кёнига: двудольный граф, паросочетания и покрытия

Теорема Кёнига - одно из самых элегантных утверждений теории графов: в любом двудольном графе размер максимального паросочетания в точности равен размеру минимального вершинного покрытия. Две на первый взгляд независимые оптимизационные задачи - «выбрать как можно больше непересекающихся рёбер» и «накрыть все рёбра как можно меньшим числом вершин» - оказываются дуальными и имеют одинаковый ответ. Этот факт лежит в основе венгерского алгоритма, теории потоков и комбинаторной оптимизации. Разберём формулировку, аккуратное доказательство и типовой пример, который часто встречается в курсе дискретной математики.

Что такое двудольный граф

Граф G=(V,E)G = (V, E) называется двудольным, если множество его вершин можно разбить на две непересекающиеся доли XX и YY так, что каждое ребро соединяет вершину из XX с вершиной из YY. Внутри одной доли рёбер нет. Эквивалентный критерий: граф двудолен тогда и только тогда, когда в нём нет циклов нечётной длины. Это удобно проверять обходом в ширину с раскраской вершин в два цвета.

Двудольный граф - естественная модель для задач о назначениях: доля XX - работники, доля YY - задачи, ребро означает «может выполнить». Именно для таких структур теорема Кёнига даёт точный ответ, тогда как для произвольных (недвудольных) графов равенство, вообще говоря, нарушается.

Чтобы не разбирать определения на абстрактном примере, опишите свой граф в инструменте ниже - он подготовит запрос на поиск максимального паросочетания и минимального покрытия с проверкой равенства по теореме Кёнига.

Паросочетание и вершинное покрытие

Паросочетание (matching) MEM \subseteq E - это набор рёбер, попарно не имеющих общих вершин. Максимальное паросочетание - то, в котором рёбер больше всего; его размер обозначают ν(G)\nu(G) (число паросочетания). Если в паросочетании участвует каждая вершина, оно называется совершенным.

Вершинное покрытие (vertex cover) CVC \subseteq V - это набор вершин такой, что у каждого ребра хотя бы один конец лежит в CC. Минимальное покрытие имеет размер τ(G)\tau(G) (число покрытия). Эти два параметра всегда связаны неравенством

ν(G)τ(G),\nu(G) \le \tau(G),

потому что для покрытия рёбер паросочетания нужна хотя бы одна вершина на каждое ребро, а рёбра MM не имеют общих концов. Содержание теоремы Кёнига - в том, что для двудольного графа это неравенство обращается в равенство.

Формулировка теоремы Кёнига

В любом двудольном графе GG размер максимального паросочетания равен размеру минимального вершинного покрытия: ν(G)=τ(G).\nu(G) = \tau(G).

Утверждение доказано Денешем Кёнигом в 1931 году (близкий результат независимо получил Эгервари). Ключевое слово здесь - «двудольный»: для треугольника K3K_3 имеем ν=1\nu = 1, но τ=2\tau = 2, так что без двудольности равенство ломается.

Удобный способ запомнить: в двудольном графе «жадная» нижняя оценка (паросочетание) и «жадная» верхняя оценка (покрытие) сходятся в одной точке - поэтому обе задачи решаются за полиномиальное время.

Доказательство через дополняющие пути

Приведём конструктивное доказательство, которое заодно объясняет, как покрытие извлекается из паросочетания. Пусть MM - максимальное паросочетание двудольного графа с долями XX и YY.

  1. Возьмём множество UXU \subseteq X - все вершины доли XX, не насыщенные паросочетанием MM (свободные).
  2. Рассмотрим множество ZZ всех вершин, достижимых из UU по чередующимся путям - таким, где рёбра попеременно лежат вне MM и в MM.
  3. Построим множество C=(XZ)(YZ)C = (X \setminus Z) \cup (Y \cap Z).

Можно показать, что CC - вершинное покрытие и что C=M|C| = |M|. Покрытием оно является потому, что не существует ребра из XZX \cap Z в YZY \setminus Z (иначе чередующийся путь продлился бы). А равенство C=M|C| = |M| следует из того, что каждая вершина CC насыщена паросочетанием и разным вершинам CC соответствуют разные рёбра MM. Так как заведомо ν(G)τ(G)\nu(G) \le \tau(G), а мы предъявили покрытие размера ν(G)\nu(G), получаем τ(G)ν(G)\tau(G) \le \nu(G), откуда ν(G)=τ(G)\nu(G) = \tau(G).

Эта же конструкция - основа алгоритма Куна и венгерского метода; разбор пошагового поиска паросочетания мы делали в материале про алгоритм Куна для паросочетаний.

Разбор примера

Возьмём двудольный граф с долями X={x1,x2,x3}X = \{x_1, x_2, x_3\} и Y={y1,y2,y3}Y = \{y_1, y_2, y_3\} и рёбрами x1y1,x1y2,x2y2,x3y2,x3y3x_1y_1, x_1y_2, x_2y_2, x_3y_2, x_3y_3. Поиск дополняющих путей даёт максимальное паросочетание M={x1y1,x2y2,x3y3}M = \{x_1y_1, x_2y_2, x_3y_3\} размера ν(G)=3\nu(G) = 3 - оно совершенное, насыщает обе доли.

Теперь извлечём покрытие. Свободных вершин в доле XX нет, поэтому множество ZZ, достижимое чередующимися путями, пусто, и покрытие получается из насыщенных вершин: одного представителя на каждое ребро паросочетания достаточно. Возьмём C={x1,y2,x3}C = \{x_1, y_2, x_3\} - нетрудно проверить, что каждое из пяти рёбер имеет конец в CC, а его размер τ(G)=3\tau(G) = 3. Равенство ν(G)=τ(G)=3\nu(G) = \tau(G) = 3 подтверждает теорему Кёнига. Заметьте: минимальное покрытие здесь не единственно, но его размер фиксирован.

Связь с теоремой Холла

Теорема Кёнига тесно переплетена с теоремой Холла о системе различных представителей. Теорема Холла говорит: совершенное паросочетание, насыщающее всю долю XX, существует тогда и только тогда, когда для любого подмножества SXS \subseteq X выполнено

N(S)S,|N(S)| \ge |S|,

где N(S)N(S) - множество соседей вершин из SS. Из теоремы Кёнига условие Холла выводится в несколько строк, и наоборот. Обе они - частные случаи более общей теоремы о максимальном потоке и минимальном разрезе (Форд - Фалкерсон): паросочетание соответствует потоку, а покрытие - разрезу.

Как применить на практике

Чтобы найти оба объекта вручную для небольшого двудольного графа, удобно действовать так:

  1. Разбейте вершины на доли XX и YY, проверив отсутствие нечётных циклов.
  2. Постройте максимальное паросочетание поиском дополняющих путей (алгоритм Куна).
  3. По описанной выше конструкции с множеством ZZ извлеките минимальное покрытие.
  4. Сверьте: число выбранных рёбер должно совпасть с числом вершин покрытия - это и есть проверка теоремы Кёнига.

Для задач о назначениях с весами вместо «голого» паросочетания применяют венгерский алгоритм, но структура двойственности остаётся той же.

Частые ошибки

  • Применяют теорему к недвудольному графу. Равенство ν=τ\nu = \tau гарантировано только при двудольности. Для графа с нечётным циклом сначала проверьте раскраску в два цвета.
  • Путают максимальное и максимальное по включению паросочетание. «Максимальное по числу рёбер» (maximum) и «нерасширяемое» (maximal) - разные вещи; теорема говорит именно о первом.
  • Считают покрытием множество рёбер. Вершинное покрытие состоит из вершин, а не из рёбер; рёберное покрытие - отдельное понятие со своей теоремой Галлаи.
  • Забывают про изолированные вершины. Они не входят ни в одно ребро и не влияют ни на ν\nu, ни на τ\tau, но иногда их ошибочно добавляют в покрытие.
  • Останавливают поиск паросочетания на первом нерасширяемом. Без перебора дополняющих путей легко получить не максимум, и тогда равенство с покрытием не сойдётся.

FAQ

Работает ли теорема Кёнига для взвешенных графов? В классическом виде - нет, она про мощности множеств. Для весов используют двойственность линейного программирования и венгерский алгоритм, но идея «паросочетание ↔ покрытие» сохраняется.

Чем теорема Кёнига отличается от теоремы Холла? Холл даёт критерий существования паросочетания, насыщающего одну долю; Кёниг даёт точное равенство размеров паросочетания и покрытия. Они эквивалентны и выводятся друг из друга.

Что такое дополнение Кёнига для независимого множества? Поскольку дополнение вершинного покрытия - независимое множество, из теоремы следует, что в двудольном графе максимальное независимое множество имеет размер Vν(G)|V| - \nu(G).

Коротко

Теорема Кёнига утверждает, что в двудольном графе максимальное паросочетание и минимальное вершинное покрытие имеют одинаковый размер: ν(G)=τ(G)\nu(G) = \tau(G). Это равенство - следствие двойственности задач, доказывается конструкцией с чередующимися путями и тесно связано с теоремами Холла и Форда - Фалкерсона. Для произвольных графов оно не выполняется, а для двудольных даёт основу эффективных алгоритмов о назначениях.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также