—1.1—

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

Теорема [Hall’s marriage lemma, 1935]. Пусть есть \(n\) мальчиков и сколько-то девочек. Некоторые мальчики знакомы с некоторыми девочками (знакомства взаимны). Тогда для того, чтобы всех мальчиков можно было посватать за знакомых им девочек (разумеется, нельзя приписывать одну девочку нескольким мальчикам), необходимо и достаточно выполнение следующего условия: для любого \(1 \le k \le n\) любые \(k\) мальчиков должны совокупно быть знакомы не менее, чем с \(k\) девочками, т.е. если объединить множества их знакомых девочек, их должно выйти не меньше \(k\).

Свадьба из кинофильма Э. Кустурицы 'Завет', 2007 г.

Доказательство. Необходимость очевидна: если удалось посватать мальчиков и девочек, то для любых \(k\) мальчиков множество их знакомых девочек состоит по крайней мере из тех \(k\) девочек, за кого они посватаны.

Докажем достаточность (именно это есть содержательная часть теоремы, которой все пользуются). Индукция по \(n\). База очевидна. Для того, чтобы провести рассуждение с переходом индукции, рассмотрим два случая.

  1. Для любого \(k\) любая группа из \(k\) мальчиков знает совокупно строго более \(k\) девочек. Тогда назначим первому мальчику невесту произвольным образом, выбросим эту пару из рассмотрения, а к остальным применим предположение индукции. Легко видеть, что из-за того, что мы выбросили лишь одну девочку, то выполнено условие «для любого \(1 \le k \le n-1\) любые \(k\) мальчиков совокупно знакомы не менее, чем с \(k\) девочками», поэтому по предположению индукции можно образовать \(n-1\) пар. В этом случае всё ясно.

  2. Для некоторого \(k\) существует группа из \(k\) мальчиков, которая знает совокупно ровно \(k\) девочек. Легко проверить (проверьте!) что к этой группе мальчиков и знакомых им девочек можно применить предположение индукции, и построить на них \(k\) пар. Ничуть не сложнее проверить (проверьте!), что для всех остальных мальчиков и девочек также применимо предположение индукции, и на них можно образовать \(n-k\) пар. Так что и в этом случае всё хорошо.

Теорема доказана. \(\square\)

—1.2—

Эквивалентно лемму Холла можно переформулировать в терминах паросочетаний в двудольных графах. Двудольным называется граф, вершины которого можно разбить на две доли \(L\) и \(R\) так, что любое ребро будет идти между долями, а внутри каждой доли рёбер не будет. Паросочетанием в двудольном графе называется подмножество рёбер, никакие два из которых не имеют общего конца. Совершенным паросочетанием в двудольном графе с размерами долей \(|L| \le |R|\) называется паросочетание, состоящее из \(|L|\) рёбер (максимальное потенциально возможное).

Теорема [Hall’s lemma revisited]. Для существования совершенного паросочетания в двудольном графе с долями \(L\) и \(R\) необходимо и достаточно выполнение следующего свойства: для любого \(1 \le k \le |L|\) любые \(k\) вершин доли \(L\) должны быть совокупно смежны не менее чем с \(k\) вершинами доли \(R\), т.е. если объединить множества с ними смежных вершин, то должно получиться не менее \(k\) штук.

Доказательство. Воспринимаем вершины доли \(L\) как мальчиков, вершины доли \(R\) как девочек, рёбра как знакомства и применяем предыдущую формулировку. \(\square\)

На ФУПМе обычно формулируют лемму Холла немножко иначе, в терминах множеств и представителей. Пусть “мальчики” – это подмножества \(S_1, \ldots, S_n\) некоторого конечного базового множества \(S = { x_1, \ldots, x_m }\). Пусть “девочки” – это элементы \(x_1, \ldots, x_m\) множества \(S\). Давайте говорить, что мальчик \(S_i\) знаком с девочкой \(x_j\), если \(x_j \in S_i\). В таких терминах получаем ещё одну эквивалентную переформулировку. Будем говорить, что некоторые \(n\) элементов множества \(S\) образуют систему различных представителей для подмножеств \(S_1, \ldots, S_n\), если можно их занумеровать \(z_1, \ldots, z_n\) так, чтобы \(z_i \in S_i\).

Теорема [Hall’s lemma one more time]. Для существования системы различных представителей для подмножеств \(S_1, \ldots, S_n\) множества \(S\) необходимо и достаточно выполнение следующего свойства: для любого \(1 \le k \le n\) любые \(k\) множеств \(S_{i_1}, \ldots, S_{i_k}\) имеют в объединении не менее \(k\) элементов.

Доказательство следует из вышесказанного. \(\square\)

—1.3—

В качестве простейшего примера применения леммы Холла приведу решение задачи 4.23 из книжки Флёрова из главы о комбинаторике.

Пусть \(S_1, \ldots, S_n\) – подмножества \(m\)-элементного множества \(S = {x_1, \ldots, x_m}\). Для этой системы строится матрица инциденций \(A\) размера \(n\times m\): \[ a_{ij} = \begin{cases} 1, \quad &\text{если } x_j \in S_i, \\ 0, \quad &\text{иначе.} \end{cases} \] Пусть оказалось, что в каждой строке матрицы \(A\) ровно \(r\) единиц, и в каждом столбце ровно \(r\) единиц. (Отсюда, кстати, тривиально следует \(n=m\).) Доказать, что в этой конфигурации существует система различных представителей.

Решение. Предположим, что какие-то \(k\) множеств \(S_{i_1}, \ldots, S_{i_k}\) имеют в объединении менее \(k\) элементов, обозначим их \(x_{j_1}, \ldots, x_{j_l}\), \(l<k\). Рассмотрим подматрицу матрицы \(A\), образованную на пересечении строк с номерами \(i_1, \ldots, i_k\) и столбцов с номерами \(j_1, \ldots, j_l\). Подсчитаем в ней число единиц двумя способами: считая по строкам, получаем число единиц в точности \(k \cdot r\), а считая по столбцам, получаем число единиц не больше \((k-1)\cdot r\), что строго меньше \(k \cdot r\). Полученное противоречие легитимизирует применение леммы Холла. \(\square\)

Рассмотрим пример чуть посложнее. Лемму Холла можно применить для доказательства верхней оценки числа монотонных функций алгебры логики. Естественным образом эти функции определяются на булевом кубе \(\{0,1\}^n\), на котором также вводится отношение порядка: говорят, что набор \(\alpha = (\alpha_1, \ldots, \alpha_n) \in {0,1}^n\) не превосходит набор \(\beta = (\beta_1, \ldots, \beta_n)\in \{0,1\}^n\) (пишем \(\alpha \le \beta\)), если поразрядно выполнено \(\alpha_i \le \beta_i\). Цепью в булевом кубе тогда будет называться последовательность элементов булева куба, упорядоченная в линейную цепочку в соответствии с введённым отношением порядка. Функция \(f : \{0,1\}^n \to \{0,1\}\) называется монотонной, если \(f(\alpha) \le f(\beta)\) для любых \(\alpha \le \beta\). Пусть \(\mathcal{M}^{(n)}\) – множество монотонных функций алгебры логики от \(n\) переменных. Докажем следующую верхнюю оценку.

Теорема [Monotonic functions estimate]. \[ |\mathcal{M}^{(n)}| \le 2 + n^{n\choose \lfloor n/2 \rfloor}. \]

Булев куб

Доказательство. Двойка в правой части – это функции-константы 0 и 1. Оценка числа неконстантных монотонных функций проводится следующим образом. С помощью леммы Холла ниже мы докажем, что булев куб \(\{0,1\}^n\) можно разбить на \({n\choose \lfloor n/2 \rfloor}\) цепей. Каждая цепь, как легко видеть, будет состоять не более, чем из \(n+1\) вершин. Если мы посмотрим на значения монотонной функции на вершинах цепи (в порядке обхода цепи, задаваемом отношением \(\le\)), то сразу же поймём, что они представляют собой подряд идущие нули, в какой-то момент сменяемые подряд идущими единицами. Задать монотонную функцию на одной из цепей – это то же, что задать “момент переключения” с нулей на единицы. Мы рассматриваем неконстантные функции \(f\), поэтому можно считать, что \(f(0, \ldots, 0) = 0\), \(f(1, \ldots, 1) = 1\). Поэтому момент переключения для произвольной цепи может быть выбран как максимум \(n\) способами. Для того, чтобы задать монотонную функцию на булевом кубе, необходимо корректно задать монотонную функцию на наборе из \({n\choose \lfloor n/2 \rfloor}\) цепей, на которые куб разбит. Это можно сделать не более, чем \(n^{n\choose \lfloor n/2 \rfloor}\) способами. Не любое задание функции на цепях породит монотонную функцию на всём кубе, так как цепи каким-то сложным образом согласованы, но нам это и не важно – мы строим грубую оценку сверху.

Осталось уточнить вопрос, как разбить булев куб на \({n\choose \lfloor n/2 \rfloor}\) цепей. Для этого вспомним слоёную структуру куба: все вершины, имеющие ровно \(i\) единиц в координатах, образуют слой \(L_i\) булева куба. Очевидно, что весь куб разбивается на непересекающееся объединение слоёв \(L_0, L_1, \ldots, L_n\), и что \( | L_i | = {n \choose i} \). Теперь мы можем забыть про ориентацию отношений между вершинами. Отныне булев куб – неориентированный граф, где две вершины соединены рёбрами, если они сравнимы в смысле отношения \(\le\). Наша локальная задача – для любой пары соседних слоёв \(L_i, L_{i+1}\) построить паросочетание, по мощности равное \(\min{|L_i|, |L_{i+1}|}\), т.е. максимальное потенциально возможное. Если нам удастся это осуществить по всем \(i\), то рёбра паросочетаний автоматически образуют нужное нам количество цепей.

Итак, рассмотрим соседние слои \(L_i, L_{i+1}\). Считаем, что \(i < n/2\), т.е. что \(|L_i| \le |L_{i+1}|\) (обратная ситуация может быть аналогично рассмотрена, если заменить нули на единицы и наоборот). Из каждой вершины слоя \(L_i\) исходит \(n-i\) рёбер в слой \(L_{i+1}\), а из каждой вершины слоя \(L_{i+1}\) исходит \(i+1\) рёбер в слой \(L_i\). Я утверждаю, что это позволяет нам гарантировать выполнение условия леммы Холла. Аргумент по сути такой же, как и в предыдущей задаче. Действительно, рассмотрим произвольные \(1 \le k \le {n\choose i}\) вершин из слоя \(L_i\). Предположим, что они совокупно смежны с менее, чем \(k\) вершинами слоя \(L_{i+1}\). Посчитаем, сколько рёбер проходит между этими подмножествами вершин. С одной стороны, если считать их по инцидентностям с вершинами слоя \(L_i\), то таких рёбер окажется ровно \(k \cdot (n-i)\). С другой стороны, если считать их по инцидентностям с вершинами слоя \(L_{i+1}\), то таких рёбер не может быть больше, чем \((k-1)\cdot (i+1)\). Имеем: \[ k \cdot (n-i) \le (k-1)\cdot (i+1) < k \cdot (i+1) \quad \Rightarrow \quad n-i < i+1 \quad \Rightarrow \quad 2i \ge n, \] что противоречит нашему предположению \(i < n/2\). Холловское условие выполнено, максимальное паросочетание существует, рассуждение успешно завершено. \(\square\)

Ту же самую верхнюю оценку можно получить короче, если воспользоваться чуть более тяжёлой артиллерией (теорема Шпернера + теорема Дилворта), мы обсудим это позже. Что касается нижней оценки на количество монотонных функций, самый простой аргумент может быть таким. Положим функцию \(f\) равной нулю на всех слоях \(L_i, i < \lfloor n/2 \rfloor\), и равной единице на всех слоях \(L_j, j > \lfloor n/2 \rfloor\). На среднем слое функция \(f\) может быть произвольной. Пересчитывая все такие функции, а также две константы, получаем \[ |\mathcal{M}^{(n)}| \ge 2 + 2^{n\choose \lfloor n/2 \rfloor}. \]

Вышеприведённое доказательство верхней оценки на самом деле очень грубое; используя более тонкую технику так называемых цепей Анселя, можно доказать верхнюю оценку \[ |\mathcal{M}^{(n)}| \le 3^{n\choose \lfloor n/2 \rfloor}. \] Существуют и более точные оценки, но их доказательств я не знаю. Окончательного и удовлетворительного ответа на вопрос “\(|\mathcal{M}^{(n)}| = ?\)” нету.

—1.4*—

В этом параграфе для знатоков я хочу привести линейно-алгебраический аналог леммы Холла. Для его понимания нужна хорошая база линейной алгебры, но идейно его доказательство чем-то проще, чем у исходной теоремы, так как не требует ветвления. Смело пропускайте эту часть, если что-то непонятно; пользоваться этим результатом мы не будем. Задачу и доказательство я заимствовал у своего блестящего научного руководителя Романа Николаевича Карасёва. Упражнением для читателя может быть вывод обычной леммы Холла из этой версии.

Пусть в векторном пространстве \(V\) (над некоторым полем, необязательно \(\mathbb{R}\)) даны конечные множества \(S_1,\ldots, S_n\) со следующим свойством: для любого набора индексов \(1\le i_1 < i_2 < \dots < i_k \le n\) (включая наборы из одного индекса) линейная оболочка \[ \left\langle S_{i_1} \cup S_{i_2} \cup \dots \cup S_{i_k} \right\rangle \] имеет размерность не менее \(k\). Докажите, что найдётся система представителей \(s_i\in S_i\), которая является линейно независимой.

Решение. Докажем сначала, что линейно независимую систему представителей можно выбрать из пространств \(V_i = \langle S_i \rangle\). Предположим для начала, что поле коэффициентов бесконечно.

Воспользуемся индукцией. Возьмём некоторый вектор \(v\in V_n\) и рассмотрим проекцию набора \(V_1,\ldots, V_{n-1}\) на факторпространство \(V/\langle v \rangle\). Если к проекции применимо предположение индукции и некоторый набор \(v_1\in V_1,\ldots, v_{n-1}\in V_{n-1}\) линейно независим в этом факторпространстве, то добавив к этому набору \(v\), мы получаем требуемое. Иначе, для всякого \(v\in V_n\) найдётся набор \(1\le i_1 < i_2 < \dots < i_k \le n-1\) такой, что проекция суммы \(V_{i_1}+\dots + V_{i_k}\) на \(V/\langle v \rangle\) имеет размерность меньше \(k\). Но так как до проекции размерность \(V_{i_1}+\ldots + V_{i_k}\) была не менее \(k\), то получается что она была ровно \(k\), стала ровно \(k-1\), и \(v \in V_{i_1}+\dots + V_{i_k}\).

Если для некоторой суммы \(V_{i_1}+\dots + V_{i_k}\) (\(i_k\le n-1\)) размерности \(k\) оказалось, что \[ V_n\subseteq V_{i_1}+\dots + V_{i_k} \] то сумма \(V_{i_1}+\dots + V_{i_k}+V_n\) имеет также размерность \(k\), что противоречит условию. Значит, для всякой суммы \(V_{i_1}+\dots + V_{i_k}\) (\(i_k\le n-1\)) размерности \(k\) пересечение \[ (V_{i_1}+\dots + V_{i_k})\cap V_n \] является собственным подпространством \(V_n\). Таких собственных подпространств \(V_n\), соответствующих наборам \(i_1<\dots< i_k\), конечное число. Следовательно, найдётся \(v\in V_n\), который ни в одном таком собственном подпространстве не содержится, он нам и подойдёт.

Теперь решим исходную задачу. Если поле конечное, то вложим его в бесконечное и умножим тензорно \(V\) на новое поле над старым. Теперь поле можно будет считать бесконечным. Теперь по доказанному у нас есть линейно независимые вектора \[ v_i = \sum_{s\in S_i} \alpha_{i, s} s. \] В линейной оболочке \(W = \langle v_1,\ldots, v_n \rangle\) они составляют базис, в котором \(\det(v_1, \ldots, v_n) = 1\). Тогда используя полилинейность детерминанта и раскрывая скобки в равенстве \[ \det\left(\sum_{s\in S_1} \alpha_{1, s} s, \ldots, \sum_{s\in S_n} \alpha_{n, s} s\right) = 1 \] мы получим, что для некоторой системы представителей \(s_i\in S_i\) будет \[ \det(s_1,\ldots, s_n) \neq 0, \] что и гарантирует их линейную независимость. \(\square\)