—1.11—

Одно из направлений обобщения холловского результата – получить какие-то его аналоги для произвольных недвудольных графов с целью характеризовать существование совершенного паросочетания или найти максимальное паросочетание. Наш первый недвудольный результат касается простой характеризации максимальных паросочетаний в терминах увеличивающих цепочек. Введём определения. Пусть \(G = (V,E)\) – граф, и пусть \(M \subseteq E\) – паросочетание, т.е. множество рёбер, никакие два из которых не имеют общего конца. Несамопересекающийся путь в графе \(v_0 \to v_1 \to v_2 \to \ldots \to v_{2k-1} \to v_{2k} \to v_{2k+1}\), \(k \ge 0\), называется увеличивающим, если

  • вершины \(v_1\) и \(v_{2k+1}\) не заняты в паросочетании \(M\) (не являются концами рёбер из \(M\));
  • рёбра \((v_1, v_2), (v_3, v_4), \ldots, (v_{2k-1}, v_{2k})\) входят в \(M\).

Смысл названия в том, что имея увеличивающую цепочку, можно переназначить рёбра паросочетания вдоль \(M\)) так что паросочетание увеличится: для этого надо выбросить рёбра \((v_1, v_2), \ldots, (v_{2k-1}, v_{2k})\) из \(M\)), а вместо них добавить рёбра \((v_0, v_1), (v_2, v_3), \ldots, (v_{2k}, v_{2k+1})\).

Лемма [Berge, 1957]. 1 Паросочетание \(M\) в графе \(G = (V, E)\) максимально (по мощности) тогда и только тогда нету увеличивающих цепочек.

Доказательство. Выше мы обсудили, что если увеличивающая цепочка есть, то паросочетание не максимально. В обратную сторону: пусть увеличивающих цепочек нет, но паросочетание \(M\) не максимально, т.е. нашлось паросочетание \(M’\), \(|M’| > |M|\). Рассмотрим симметрическую разность \(S = M’ \triangle M = (M’ \setminus M) \cup (M \setminus M’)\). Рёбра \(S\) образуют подграф \(G\), который разбивается на циклы и цепочки (так как степень каждой вершины в \(S\) не превосходит двух). Из условия \(|M’| > |M|\) следует, что среди компонент \(S\) найдётся увеличивающая цепочка. \(\square\)

Лемма Бержа даёт наивный алгоритм поиска максимального паросочетания: ищем увеличивающие пути, пока они есть, и вдоль них оптимизируем паросочетание. К сожалению, поиск увеличивающих цепочек в недвудольном графе (эффективно) организовать непросто из-за наличия нечётных циклов. Наиболее известный (из относительно эффективных и несложных) алгоритм – алгоритм Эдмондса поиска максимального паросочетания – использует дополнительные идеи (поиск цветков), которые мы обсуждать не будем.

Чтобы наш второй недвудольный результат выглядел естественным, переформулируем лемму Холла ещё раз.

Теорема [yet another Hall formulation]. Двудольный граф \(G = (V, E)\) имеет совершенное паросочетание в том и только том случае, когда для любого \(U \subseteq V\) подграф графа \(G\), индуцированный на множестве вершин \(V \setminus U\), имеет не более \(|U|\) одновершинных компонент связности (изолированных вершин).

Эта формулировка влечёт исходную: описанное условие запрещает ситуацию, когда отбрасывание множества девочек \(U\) оставит более \(|U|\) мальчиков в состоянии одиночества. Несложно понять их равносильность. Обобщение Татта выглядит теперь совсем удивительным.

Теорема [Tutte, 1947]. Граф \(G = (V, E)\) имеет совершенное (т.е. вовлекающее все вершины) паросочетание в том и только том случае, когда для любого \(U \subseteq V\) подграф графа \(G\), индуцированный на множестве вершин \(V \setminus U\), имеет не более \(|U|\) компонент связности с нечётным числом вершин.

Интересно, что применение теоремы Татта для двудольных графов даёт результат сильнее, чем лемма Холла. Будем обозначать через \(o(G - U)\) количество нечётных компонент связности в графе \(G’ = G - U\), полученном из \(G\) удалением вершин \(U\) со всеми инцидентными рёбрами. Критерий Татта тогда говорит, что совершенное паросочетание существует если и только если дефект любого подмножества \(U\) вершин неположителен: \[ \text{def}(U) := o(G-U) - |U| \le 0. \]

Доказательство Андерсона теоремы Татта. Как обычно, в одну сторону утверждение простое. Пусть в \(G\) есть совершенное паросочетание, и пусть \(U \subseteq V\). Удалим вершины \(U\) с инцидентными рёбрами, получим граф \(G’ = G - U\). Тогда каждая нечётная компонента связности \(G’\) содержит хотя бы одну вершину, из которой ребро совершенного паросочетания идёт в \(U\). Таким образом каждой нечётной компоненте мы ставим в соответствие хотя бы одну вершину \(U\), и разным компонентам сопоставляем разные вершины. Отсюда следует необходимость.

Достаточность будем доказывать индукцией по \(|V| = 2n\). Здесь мы использовали, что вершин чётное число: это следует из \(\text{def}(\varnothing) = o(G) \le 0\). Пусть все дефекты неположительны. База \(n=1\) тривиальна. Докажем переход. Первое элементарное наблюдение: \[ o(G-U) \equiv |U| \pmod{2}, \]
т.е. дефект любого множества чётен. Возможны два случая (сравните логику с доказательством леммы Холла в —1.1—).

  1. Дефект любого множества \(U\), \(|U|\ge 2\), строго отрицателен. Тогда \(o(G-U) \le |U| - 2\) (из соображений чётности). Тогда мы возьмём в наше паросочетание одно ребро \((v,u)\) совершенно произвольно, и применим предположение индукции к графу \(G - \{ v,u \} \). Для него него проверяется (проверьте!) таттовское условие неположительности дефектов, поэтому в нём есть максимальное паросочетание. Это паросочетание, объединённое с ребром \((v,u)\), даст максимальное паросочетание в \(G\).
  2. Есть множество \(U\), \(|U|\ge 2\), обладающее нулевым дефектом. Выберем самое большое такое множество \(U\). В индуцированном подграфе \(G-U\) ровно \(|U|\) нечётных компонент. Применим лемму Холла, чтобы “поженить” нечётные компоненты \(G-U\) (= “мальчики”) и элементы \(U\) (= “девочки”). Мальчик и девочка знакомы, если элемент-девочка смежен с хотя бы одной из вершин компоненты-мальчика. Предположим противное: какие-то \(k\) мальчиков знакомы с множеством девочек \(T \subset U\), \(|T| < k\). Тогда \(o(G-T) \ge k > |T|\), противоречие с таттовским условием. Тем самым, сватовство удастся, и мы соотнесём все вершины \(U\) с нечётными компонентами \(G-U\). Выберем все рёбра, которые отвечают назначенным парам, и отнесём их в паросочетание, которое мы хотим построить. Теперь нам остаётся достроить это паросочетание до максимального, используя остатки нечётных компонент (из каждой нечётной компоненты мы выбрасываем одну вершину, спаренную с чем-то из \(U\)). Предположим, в одной из нечётных компонент достроить паросочетание не удалось. Пусть это была компонента \(O\), и в ней лежит уже спаренная вершина \(v\). Обозначим \(G’ = O-{v}\). По предположению индукции, существует подмножество вершин \(T\) в \(G’\), не удовлетворяющее условию Татта: \[ o’(G’-T) > |T|, \] где функция \(o’\) считает нечётные компоненты внутри \(G’\). Из соображений чётности \(o’(G’-T) \ge |T|+2\). Но тогда \[ o(G - (T \cup U \cup {a})) = o’(G’-T) + o(G-U) - 1 \ge |T| + |U| + 1 = |T \cup U \cup {a}|, \] что противоречит предположению о максимальности \(U\). \(\square\)

Несложно обобщить этот результат до формулы, дающей размер максимального паросочетания в произвольном графе. Пусть множество \(U\) имеет максимальный дефект. Если этот дефект нулевой, то мы показали, что максимальное паросочетание имеет мощность \(\frac12 n\), где \(n = |V|\). Пусть теперь \(\text{def}(U) > 0\). С одной стороны, невозможно будет найти паросочетание размера больше \(\frac12 (n - \text{def}(U))\), и аргумент здесь похож на наше рассуждение в доказательстве необходимости в теореме Татта (по крайней мере \((n - \text{def}(U))\) нечётных компонент \(G-U\) будут насыщены паросочетанием не полностью). С другой стороны, паросочетание размера \(\frac12 (n - \text{def}(U))\) действительно найдётся: для этого добавим к графу \(\text{def}(U)\) новых вершин, каждую из которых мы соединим со всеми вершинами \(V\). После этого можно проверить, что все дефекты станут неположительны, в новом графе будет существовать совершенное паросочетание, из которого мы вычленим паросочетание в \(G\) размера \(\frac12 (n - \text{def}(U))\). То, что мы доказали, обычно называется формулой Татта–Бержа.

Теорема [Berge, 1958]. Размер максимального паросочетания в графе \(G = (V, E)\) на \(n\) вершинах определяется по формуле \[ \frac12 \min_{U \subseteq V}(|U| - o(G-U) + |V|) = \frac12 \min_{U \subseteq V}(n - \text{def}(U)). \]

—1.12—

Лемма Холла указывает критерий существования совершенного паросочетания в двудольном графе (а это очень известная задача computer science), но сама она в чистом виде не даёт алгоритма поиска максимального паросочетания. Но такой алгоритм можно получить, покопавшись внимательно в её следствиях. Читатели, знакомые с олимпиадным программированием, вспомнят алгоритм Куна поиска максимального паросочетания в двудольном графе. Он основан на концепции увеличивающей цепочки, которая обсуждалась выше. Грубо говоря, это просто метод Бержа, упомянутый в —1.11—, где поиск увеличивающих цепочек производится при помощи обхода в глубину. В отсутствие нечётных циклов этот поиск организовать легко.

Мы пойдём чуть дальше и обсудим венгерский алгоритм (названный так Куном в честь венгерского вклада Кёнига и Эгервари) для поиска максимального паросочетания во взвешенном двудольном графе. Этот полиномиальный алгоритм более-менее прямо считывается с (алгоритмизованной версии) доказательства теоремы Эгервари, приведённого в —1.9—.

Постановка задачи о назначениях такова. Дан полный двудольный граф \(G = (V = L \cup R, E = L \times R)\), \(|L|=|R|=n\), причём каждому ребру \((x,y), x \in L, y \in R\), назначен вес \(w(x,y) \in \mathbb{R}\). Мы хотим найти паросочетание \(M\) максимального суммарного веса. Название задачи интерпретируется так: элементы \(L\) – это потенциальные кандидаты на выполнение разных видов работы \(R\), а веса задают полезность, которую принесёт тот или иной кандидат, будучи назначенным на соответствующую работу.

Вспоминая терминологию из теоремы Эгервари, ввёдем функции дробного вершинного покрытия \(\lambda : L \to \mathbb{R}\), \(\mu : R \to \mathbb{R}\). Функции \(\lambda, \mu\) назовём допустимыми, если \[ \lambda(x) + \mu(y) \ge w(x,y) \quad \forall~ x\in L, y \in R. \] Дефектом покрытия на ребре \((x,y)\), как и раньше, мы назовём величину \(\lambda(x) + \mu(y) - w(x,y)\). Для фиксированного допустимого покрытия \((\lambda, \mu)\) определён подграф на множестве рёбер с нулевым дефектом. Для подмножества \(S \subseteq L\) будем обозначать через \(N(S)\) множество всех вершин из \(R\), смежных с \(S\) по рёбрам нулевого дефекта.

Венгерский алгоритм [Kuhn, 1955]. 2

  1. Стартуем с любого допустимого покрытия \((\lambda, \mu)\), определяем соответствующий бездефектный подграф и находим в нём любое паросочетание \(M\).
  2. Если \(|M| = n\), мы победили! (Чтобы это осознать, нужно вспомнить доказательство Эгервари.) Если \(|M| < n\), есть не занятая в паросочетании вершина \(x \in L \). Положим \(S = {x}\) и \(T = \varnothing\).
  3. Если \(N(S) \neq T\), переходим на шаг 4. В противном случае \(N(S) = T\). Пусть \[ \varepsilon = \min_{\substack{x \in S \\ y \in R\setminus T}} (\lambda(x) + \mu(y) - w(x,y)). \] Модифицируем дробное покрытие по формулам \[ \lambda’(x) = \begin{cases} \lambda(x) - \varepsilon, & x \in S; \
    \lambda(x), & x \in L\setminus S; \end{cases} \] \[ \mu’(y) = \begin{cases} \mu(y) + \varepsilon, & y \in T; \
    \mu(y), & y \in R\setminus T. \end{cases} \] Эта замена увеличивает бездефектный граф и множество \(N(S)\). Переходим на шаг 4.
  4. Выберем \(y \in N(S) \setminus T\). Если \(y\) уже спарена в текущем паросочетании \(M\) с какой-то вершиной \(x \in L\), то заменим \(S\) на \(S\cup{x}\), \(T\) на \(T\cup{y}\), и перейдём на шаг 3. В противном случае можно будет найти увеличивающую цепочку вдоль бездефектных рёбер, заканчивающуюся в \(y\), и использовать её, чтобы увеличить паросочетание \(M\). После этого переходим на шаг 2.

Все детали этого алгоритма, связанные с корректностью его работы, уже были неявно включены в доказательство Эгервари, поэтому я их опускаю здесь.

—1.13—

Другой взгляд на задачу о назначениях приходит из теоремы Биркгофа–фон Неймана. Переведём условие в матричные термины. В матричных терминах \(L\) параметризует строки матрицы весов \(W\), \(R\) параметризует столбцы, а на пересечении строки \(x\) и столбца \(y\) в матрице весов \(W\) написано число \(w(x,y)\). Мы ищем биекцию \(\sigma : L \to R\), максимизирующую \(\sum\limits_{x \in L} w(x, \sigma(x))\). В таком виде задача выглядит дискретной оптимизацией, в которой NP-трудные задачи встречаются чаще, чем полиномиально разрешимые. Оказывается, что конкретно эта задача переводится на язык линейного программирования без потери в общности, и этот замечательный факт сокрыт в теореме Биркгофа–фон Неймана. Поясню подробней.

Рассмотрим линейную релаксацию задачи о назначениях. Это означает, что мы разрешаем дробить кандидатов на доли, и назначать доли кандидатов на должности. Формально, введём матрицу \(A = (a(x,y))_{\substack{x \in L \\ y \in R}}\), у которой каждая строка и каждый столбец суммируется в единицу (\(a(x,y)\) – доля кандидата \(x\), назначенная на работу \(y\)). Поставим теперь задачу максимизации полезности \[ \sum\limits_{\substack{x \in L \\ y \in R}} a(x,y) w(x,y) \] относительно переменных \(a(x,y)\), при условии, что они образуют дважды стохастическую матрицу.

Релаксированная задача – задача линейного программирования, т.е. задача о поиске максимума линейной функции на множестве, заданном системой линейных неравенств. Такие задачи эффективно решаются (например, методами внутренней точки). Причём здесь теорема Биркгофа–фон Неймана? Фактически она говорит, что в нашем случае максимум будет достигнут на перестановочной матрице \(A = P_\sigma\). Тем самым, решая задачу про дробных кандидатов, мы получим целый ответ! В этом свете теорема Биркгофа–фон Неймана может быть переформулирована так:

Теорема [Birkhoff–von Neumann revisited]. Перестановочный полиэдр Биркгофа \(\mathcal{P} \subset \mathbb{R}^{n^2}\), заданный системой линейных неравенств как множество всех дважды стохастических матриц, может быть описан двойственным образом как политоп с вершинами в перестановочных матрицах.

Здесь я использовал слова полиэдр и политоп, которые можно понимать как “многогранник, заданный системой линейных неравенств” и “многогранник, заданный как выпуклая оболочка своих вершин”. То, что любой выпуклый многогранник (что бы это ни значило) может быть эквивалентно описан и как полиэдр, и как политоп, нуждается в доказательстве 3 . Идея этого доказательства – замечательная полярная двойственность, которую я не объясняю здесь только потому, что эта лекция и так уже затянулась.

—1.14—

Наконец, приведу формулировку одной задачи, которые я впервые встретил на физтеховской студенческой олимпиаде по математике в 2011 году 4 , а потом оказалось, что эта задача привела к Нобелевской премии по экономике за 2012 год.

Задача [Gale–Shapley, 1962]. Пусть есть \(n\) мужчин и \(n\) женщин, причём у каждого мужчины есть линейно упорядоченный список предпочтений касательно женщин (каждый мужчина знает, кто ему нравится больше всего, кто на втором месте, и т.д.), и аналогично у каждой женщины есть список предпочтений касательно мужчин. Пара из мужчины и женщины считается устойчивой, если неверно, что оба в паре предпочитают кого-то другого своему партнёру (один из партнёров может предпочитать кого-то другого, но не оба). Доказать, что независимо от списков предпочтений, существует паросочетание, состоящее из \(n\) устойчивых пар.

Эта задача усложняет постановку задачи организации сватовства по Холлу (мы ищем устойчивое паросочетание), но леммой Холла не решается. Решение, известное мне, организовано на итерационном процессе, который приводит к устойчивому паросочетанию. Эффективная манифестация существования – алгоритм, приводящий к результату.

Решение. Как только начинается сезон отпусков, каждый мужчина отправляет письмо одной даме, возглавляющей его список предпочтений. Каждая дама после получения писем выбирает самого симпатичного ей из числа отправителей, и тут же выходит замуж (если дама не получила писем в этом сезоне, она ничего не делает). Затем все молодожёны уезжают в бессрочный отпуск, и мы их больше не рассматриваем (вычёркиваем из всех списков предпочтений). В последующие годы повторяем такой же сезон отпусков с оставшимися людьми. Ясно, что все люди будут посватаны в конечном итоге. Нужно удостовериться, что образованное паросочетание – устойчивое, проверьте это! \(\square\)

Также в своей работе 1962 года Гейл и Шепли рассмотрели ещё несколько похожих по духу задач, например, задачу распределения студентов по колледжам (в свадебной интерпретации это означает, что роль мальчиков выполняют студенты, роль девочек выполняют колледжи, и каждой девочке теперь уже нужно приписать несколько мальчиков). Несколько десятилетий спустя американский экономист Элвин Рот придумал несколько интересных применений на практике алгоритмов поиска устойчивых паросочетаний. Например, он предложил (и даже ввёл в практику в некоторых регионах США, Канады, Великобритании) схему организации очереди на донорские почки. Это позволило существенно увеличить число проводимых трансплантаций и значительно сократить время ожидания трансплантации для больных.

За эти результаты Шепли и Рот (Гейл к этому времени уже умер) были удостоены Нобелевской премии.

  1. На самом деле это наблюдение было сделано ещё как минимум в 1891-м году Петерсеном.

  2. Злые языки поговаривают, что Якоби опубликовал примерно то же самое рассуждение на латыни ещё в 1890-м году.

  3. Иногда это называют теоремой Вейля--Минковского.

  4. И не решил тогда.