Давно очень не писал, но скоро видимо опять начну. Учебник пишу в неделю по чайной ложке, на остальное вообще времени не хватает, но надеюсь, что скоро с этим станет проще.
В этом параграфе рассматриваю очень обзорно числа Фибоначчи, Каталана и Рамсея. Для тех, кто внимательно читает учебник, обращу внимание на то, что параграф про двойной счёт я немного расширил: добавил доказательство для суммы для случая и для произвольного случая (правда, последнее, это не широко известный результат и числах Бернулли, которые я пока не могу ввести, а менее известная и совершенно бесполезная формула, резюмирующая в целом разговор о комбинаторике, сочетая факториалы, биномиальный коэффициент и числа Стирлинга).
Какой-то неизвестный мне человек сделал эпичный пруфридинг многих параграфов на GitHub-е, за это ему огромное спасибо. Как всегда читать следует лучше в pdf.
В этом параграфе мы очень кратко рассмотрим прочие комбинаторные величины, которые могут оказаться полезны и которые будут в дальнейшем выступать в качесве примеров.
Числа Фибоначчи
Определение. Числа Фибоначчи определяются начальными условиями , и соотношением
Начальные значения чисел Фибоначчи выглядят так:
Эти числа возникают в целом ряде задач и довольно распространены. Исторически числа Фибоначчи стали широко известны после решения Леонардо Пизанским («Фибоначчи» было его прозвищем, что переводится как «сын Боначчи») следующей задачи в 1202 году:
Упражнение. Предположим, что каждая взрослая пара кроликов каждый месяц производит на свет ещё одну молодую пару кроликов. Взросление кроликов наступает в течение одного месяца. Изначально у нас есть одна пара молодых кроликов. Через месяц она становится взрослой. Еще через месяц эта пара производит на свет ещё пару молодых кроликов (итого 2 пары, из которых 1 молодая). В следующий месяц эта же пара производит ещё одну молодую пару, а пара, которая была молодой, взрослеет (имеем 3 пары кроликов, 1 молодая). Таким же образом в следующий месяц мы будем иметь 5 пар кроликов, из которых 2 будут молодыми. Сколько кроликов будет в конце года?
На самом деле числа, которые мы сегодня называем числами Фибоначчи, были известны ещё древним Индусам. Математик Пиндас в своём трактате «Чхандас» (датированным примерно 200 годом до нашей эры) использует их при решении примерно такой задачи:
Упражнение. Пусть нам надо пройти путь длины . При проходе пути мы можем использовать либо шаги длины 1, либо шаги длины 2. Докажите, что существует ровно способов пройти путь используя такие шаги. (Например, для пути длины 3 мы можем сделать три одинарных шага, либо вначале одинарный, а потом двойной, либо наоборот: итого 3 разных способа пройти путь).
Сами индусы, правда, решали хоть и ту же задачу, но из другой предметной области: они исследовали сколько всего существует мелодий, состоящих лишь из одной ноты, которая может иметь либо одинарную, либо двойную длительность. Интерпретация, данная привёденным мной упражнением, используется при решении следующих двух задач:
Упражнение. Докажите следующее тождество, используя двойной счёт:
Упражнение. Докажите следующее тождество (идея доказательства очень похожа):
Теорема.
Доказательство. Идея доказательства продемонстрирована на рисунке 3.13. Прямоугольник Фибоначчи строится следующим образом: вначале рисуем квадрат с единичной длиной стороны. Затем справа от него рисуем ещё один такой же квадрат. После под ними рисуем квадрат со стороной равной двум предыдущим квадратам. Затем справа рисуем опять квадрат со стороной, равной двум предыдущим. Совершая последовательно таких построений, в итоге имеем прямоугольник со сторонами и . Всего его площадь (то есть количество единичных квадратиков, которые в него уместятся), равно . В то же время подсчитав площади квадратов в порядке построения получаем сумму .
Следующая наша теорема (называемая теоремой Цекендорфа) утверждает, что любое натуральное число можно представить единственным образом в виде суммы чисел Фибоначчи таким образом, что каждое из чисел будет использоваться максимум единожды, и что в этой сумме не будут присутствовать никакие два последовательные числа Фибоначчи. Числа и в этом представлении так же не участвуют. Таким образом, для любого мы можем записать:
\begin{equation}\label{non:1}
a = \sum_{i=1}^m F_{\alpha_i}
\end{equation}
где — это последовательность номеров использованных чисел Фибоначчи.
Помимо интересного практического применения этой теоремы (о чём я напишу несколькими абзацами ниже), такое представление позволяет определить операцию «фибоначчиевого умножения». Пусть, например, мы представили число так же в соответствии с теоремой Цекендорфа:
Тогда умножение Фибоначчи определяется таким образом:
Упражнение. Покажите, что и что .
Легко видеть, что такое умножение коммутативно (), однако довольно неожиданно, что оно так же является и ассоциативным, то есть что выполняется тождество
Это в общем-то единственное полезное свойство такого умножения, но сам факт довольно интересен и неожиданнен. Доказательство, которое я представляю ниже, сделает это утверждение очевидным.
Теорема. Любое число допускает единственное представление в виде \eqref{non:1}.
Доказательство. Данная теорема может быть легко доказана по индукции (что и сделал в 1972 году Цекендорф), однако я представлю более остроумное доказательство, придуманное Дональном Кнутом в 1988 году. В той же работе Кнут ввёл понятие фибоначчиева умножения и показал его ассоциативность, как простое следствие из данного доказательства.
Теорему Цекендорфа можно переформулировать как возможность представить любое число в виде суммы
где коэффициенты могут принимать значения 0 или 1, причем два коэффициента подряд не могут принимать значение 1. Такую запись называют «системой счисления Фибоначчи», поскольку она очень похожа на позиционные системы счисления, рассмотренные нами в §3.2, с той лишь разницей, что теперь вместо степеней некоторого основания мы используем значения . По аналогии с позиционными системами счисления мы можем кратко записывать числа в ней, перечисляя последовательно коэффициенты . Чтобы отличать фибоначчиеву систему счисления, мы будем подписывать букву справа от записи. Например,
Два младших разряда (соответствующие и ) всегда равны нулю.
Чтобы получить такую запись, мы вначале позволим коэффициентам принимать произвольные значения, а затем путём их преобразований будем пошагово идти к требуемому представлению. Заметим, что при отсутствии ограничений на коэффициенты, представить натуральное число в виде суммы чисел Фибоначчи не представляет труда: достаточно взять значения и в остальных случаях (или, иначе, можно применить тот же подход с остатками от деления, который мы применяли при построении позиционных систем счисления).
Пусть мы получили некоторую запись натурального числа в виде суммы чисел Фибоначчи без ограничений, и в ней имеется коэффициент . Здесь может быть две ситуации: когда и когда . В первом случае мы можем увеличить на единицу значение и уменьшить на единицу значения и . По определнию чисел Фибоначчи это не поменяет общую сумму. Замечу, что то же преобразование мы можем выполнить в случае
Если же , то мы можем уменьшить на единицу и увеличить на единицу и . Мы пришли к ситуации, когда , а как действовать в этом случае мы уже знаем. Применив указанное выше преобразование мы получаем суммарно, что мы увеличили на единицу , уменьшили на двойку и на единицу .
Если в ходе эти преобразований мы на каком-то шаге получаем , то этот коэффициент можно безболезненно заменить на . Если мы получили , то можно смело прибавлять величину к зануляя .
Здесь важно заметить два момента: во-первых, если рассматривать набор коэффициентов как упорядоченный набор, то после каждого такого преобразования новый набор будет больше старого в смысле лексикографического порядка. Применять одно из указанных преобразований мы можем всегда, если только наше число не представлено уже в требуемом виде. В то же время само множество допустимых наборов у нас ограничено, поскольку всегда найдётся . Таким образом продолжать применять бесконечно долго наши правила преобразования мы не сможем. Отсюда следует, что в итоге мы обязательно придём к Фибоначчиевому представлению числа.
Из этой интерпретации легко увидеть и единственность такого представления. Если нам даны два различных представления числа, то мы можем вычесть меньшее в лексикографическом смысле из большего. Здесь правда может возникнуть проблема, что в каком-то разряде нам придётся вычитать единицу из нуля. Будем писать в этом случае , что означает, что этого слагаемого нам недостаёт. Поскольку мы вычитаем большее из меньшего, всегда найдётся такое , что . Его можно занулить, увеличив на единицу значения и . Повторяя эту операцию несколько раз мы можем избавиться от всех значений , однако результат будет ненулевым, т.к. каждая такая операция не может уменьшать количество единиц в записи. Значит, разница между двумя представлениями будет ненулевой, а следовательно эти представления всё же задают различные числа.
Очевидно теперь, что фибоначчиево умножение — это просто умножение чисел в столбик, с тем только лишь отличием, что мы на этот раз используем фибоначчиеву систему счисления. Отсюда уже легко понять, почему оно ассоциативно (поймите это в качестве упражнения).
В качестве приложения изложенного материала, рассмотрим задачу передачи данных по сети. Для просторы будем считать, что мы последовательно передаём числа в диапазоне от 0 до 15 (на практике мы вероятнее всего были бы заинтересованы в передаче полноценных байтов в диапазоне от 0 до 255). Кодировать числа мы будем битами 1 и 0, что означает наличие и отсутствие напряжения соответственно.
Конечно же, мы легко могли бы передать значения, используя простое двоичное представления. Пусть, например, мы хотим передать числа 11, 13 и 10. В двоичной записи мы передадим следующие данные:
Однако, при передаче по сети данные могут теряться из-за помех. Пусть, например, мы потеряли четвёртый бит. Тогда полученные данные будут выглядеть как
Очевидно, что все последующие данные так же будут повреждены и до получателя в результате дойдёт совершенно бессмысленный набор битов. Если, например, эти данные — видеотрансляция, то пропажа всего одного бита в потоке (что очень вероятно) по сути приведёт к неустранимой ошибке, что заставит пользователя устанавливать соединение заново. Это явно неприемлемо, если вы хотите посмотреть видео через Интернет, или, скажем, сделать звонок в Нидерланды.
Трудность с двоичным представление возникает из-за того, что у нас нет никакого способа отделить один блок данных от другого. Фибоначчиева система счисления может решить проблему. Её критическим свойством является то, что в ней не могут идти подряд два бита 1, а значит мы можем использовать битовую последовательность 11 в качестве разделителя. Для экономии трафика (количества передаваемых данных) мы можем немного даже сэкономить, избавившись, во-первых, от разрядов и (они всегда нулевые), а так же передавая запись в обратном порядке. Это гарантирует нам, что старшим битом в записи всегда будет 1, поэтому мы можем дописывать всего один бит 1 к нему, а не биты 11. Например, если закодировать таким образом , то в итоге получим значение , что короче на один бит. Данные, приведённые выше, будет таким образом переданы в виде
Если теперь у нас произойдёт ошибка связи и какой-то бит потеряется, вставится или изменится, мы конечно получим какие-то данные в ошибочном виде, однако мы всегда знаем, что новое значение начинается после последовательности 11, поэтому любое повреждение будет иметь лишь локальный характер. Опять же в случае видеопотока такое повреждение будет означать, что мы помеха отразится лишь на несколько кадров, однако эта помеха сама же и устранится, т.к. последующие данные мы будем получать уже в корректном виде.
На практике, впрочем, разработано множество других более совершенных систем кодирования, но их мы касаться не будем.
Числа Каталана
Определение. Числа Каталана определяются начальным значением и условием
Начальные значения чисел Каталана выглядят так:
Как и числа Фибоначчи, они возникают во многих задачах. Рассмотрим, например, количество строк длин , состоящих из парных скобок (то есть строк типа "((()()))(())"). Пусть у нас имеется парная скобка. Возьмём первую пару (то есть скобки "(...)..."). Предположим, что внутри этой пары находится пар скобок. Тогда после этой пары скобок будет находиться ещё пар скобок. По индукции это даёт нам, что всего таких строк есть штук. Суммируя теперь по всем значениям получаем, что количество таких строк определяется числами Каталана.
Давайте теперь подсчитаем количество способов вычислить сумму (или любую другую ассоциативную операцию) слагаемых. В силу ассоциативности эта величина равна количеству способов расставить пар скобок в этой записи. Итого опять же получаем, что это количество способов вычислить сумму равно величине .
По расстановке скобок в сумме мы можем построить бинарное дерево. Пусть у нас есть слагаемое. Вначале сопоставим каждому слагаемому в соответствие узел дерева (эти узлы будем называть внешними — они не будут имеют потомков). Затем каждой арифметической операции будем ставить в соответствие узел дерева с двумя потомками, соответствующими складываемым значениям (будем называть такие узлы внутренними). Очевидно, что такие деревья однозначно соответствуют расстановкам скобок, и следовательно таких деревьев будет штук. Здесь — это количество операций, оно же количество внутренних узлов (внешних соответственно ). Если отбросить интерпретацию со слагаемыми, внешними и внутренними узлами, то получаем, что всего бинарных деревьев с узлами имеется штук. Рисунок 3.14 демонстрирует идею.
Стоит отдельно заострить внимание на отличиях от тех деревьев, формулу для числа которых мы получили в теореме 3.42:
- Дерево обладает корнем;
- Вершины не имеют именований, важна только их форма;
- Каждая вершина может иметь максимум двух потомков;
- Рёбра упорядочены, то есть важно, нарисовано оно слева или справа от узла.
На самом деле та же величина за небольшой оговоркой показывает и количество произвольных деревьев. Для того, чтобы увидеть это, нам потребуется следующее определение.
Определение. Лесом называется граф, состоящий из нескольких деревьев.
Опять же леса рассматриваются в математике разные, но нас будут интересовать лишь те, в которых упорядочены как сами деревья, так и их рёбра. Оказывается, что между бинарными деревьями и лесами можно построить взаимооднозначное соответствие. Я покажу как по лесу построить бинарное дерево, процедура в обратную сторону совершенно аналогична.
В качестве корня бинарного дерева выбирается корень первого дерева в лесе. На рисунке 3.15 это узел . Затем по левой ветви мы строим опять же бинарное дерево, которое строится по аналогии, если рассматривать первое дерево за вычетом корня, как лес (в примере на рисунке это лес, состоящий из деревьев d-h, e-i и f). По правой ветви мы строим бинарное дерево для леса, получающегося после удаления первого дерева (в примере это лес, состоящий из деревьев b-g и c). Имея бинарное дерево, мы можем восстановить по нему первоначальный лес, применяя те же операции в обратном порядке.
Теперь мы готовы к тому, чтобы понять сколько всего произвольных деревьев с вершинами существует. Если применить приведённую конструкцию к одному дереву, то полученное нами бинарное дерево не будет иметь правой ветви у корня, левое же его поддерево может быть произвольным бинарным. Итого у нас есть свобода выбора как расположить в дереве узлов. Всего произвольных деревьев с вершинами таким образом существует штук.
Ну и так далее, примеров можно привести ещё множество. Числа Каталана всплывают постоянно и мне даже кажется довольно странным, что они гораздо меньше известны в народе, нежели тех же числа Фибоначчи, которые зачем-то применяют даже биржевые трейдеры (последние верят, что числа Фибоначчи имеют какое-то психологически-сакральное значение, что позволяет им предсказывать поведение цен на рынке). Думаю, в пользе чисел Каталана я вас убедил. Остаётся вопрос о том как можно их более эффективно находить.
Числа Каталана можно интерпретировать ещё вот как. Рассмотрим квадрат размером . Положение в этом квадрата будем записывать парой , которую будем называть координатами. и могут принимать значения от 0 до . Мы начинаем движение из точки с координатами и двигаемся в точку , увеличивая за один шаг либо координату , либо координату на единицу. Числа Каталана в этом случае показывают количество путей, которые не пересекают диагональ квадрата (то есть никогда не заходят в точку с координатами ).
Увидеть это довольно легко по индукции. Пусть утверждение уже доказано для квадратов размером вплоть до и мы рассматриваем количество путей в квадрате со сторонами . Пусть при движении мы в последний раз касаемся диагонали в позиции . Количество способов пройти такой путь до точки касания есть (по предположению индукции). После этого дойти до финиша не коснувшись диагонали у нас остаётся способов (пройти нам надо ещё клетку, однако учитывая, что мы не должны касаться диагонали, первый шаг у нас увеличит координату , а последний координату , что по сути сводит задачу к нахождению пути в квадрате со стороной ). Отсюда следует, что такие пути так же задаются числами Каталана.
С другой стороны те читатели которые читают учебник последовательно, помнят, что вообще-то ровно то же самое количество путей не пересекающих диагональ квадрата предлагалось найти в упражнении 3.60 используя только понятие сочетаний. Я покажу сейчас, как эта задача решается.
Вначале поймём сколько вообще существует путей, увеличивающих за шаг лишь одну координату, без учёта пересечения диагонали (упражнение 3.59). Если размеры прямоугольинка , то нам надо раз увеличить координату и раз координату . Итого нам надо совершить шагов, из которых надо выбрать шагов, которые увеличивают . Способов сделать такой выбор имеется . В случае, если нам дан квадрат размером , то количество путей будет равно .
Рассмотрим теперь путь, который диагональ всё же пересекает. Пусть после первого пересечения мы оказались в позиции . Давайте отразим часть пути до этой точки относительно диагонали, сдвинутой вверх на единицу (см. рисунок 3.16). При этом получится некий путь, начинающийся в координатах и идущий в точку . Таких путей ровно штук, поскольку они описывают движение в прямоугольнике . Легко так же увидеть, что все пути из точки после отражения их от начала до точки пересечения диагонали (а они её пересекут обязательно) дают нам путь в начальном квадрате, который нас не устраивает, причём отношение это опять же взаимооднозначное. Итого нам осталось вычесть количество «неправильных путей» из общего числа путей:
Последнее равенство легко проверяется, я предлагаю вам выполнить проверку в качестве упражнения.
Числа Рамсея
Эта секция, вероятно, окажется наименее полезной и прикладной из всего, что до сих пор было в учебнике, однако сам результат, изложенный ниже, кого-то может удивить и даже показаться эстетически красивым. Лишним в любом случае не будет.
Напомню, что полным графом мы условились называть граф с вершинами такой, что любые две его вершины соединены рёбрами. Для нужд этого параграфа мы будем так же считать, что ребра графа разукрашены в разные цвета, которых всего имеется штук (это предположение эквиваленто заданию отображения , где — множество ребер графа).
Определение. Числом Рамсея называется такая величина, что любой граф будет иметь хотя бы один подграф , ребра которого целиком окрашены в цвет .
Пока это определение наверняка выглядит слишком абстрактно и непонятно. Давайте для примера рассмотрим число Рамсея . Здесь речь идёт о раскраске графа в два цвета (назовём их для определённости синим и красным) и число показывает минимальное количество вершин, которое должен иметь полный граф, чтобы в нём обязательно нашёлся либо красный подграф , либо синий подграф . (Обратите внимание, что сам граф имеет вид треугольника).
Упражнение. Раскрасьте в два цвета рёбра графа таким образом, чтобы в нём не было одноцветного треугольника.
Из приведённого упражнения следует, что . Давайте теперь рассмотрим граф . Возьмём некоторую его вершину . Из этой вершины исходит пять рёбер и среди них обязательно должно быть по крайней мере три ребра одного цвета. Для определённости будем считать, что это три красных ребра, ведущих в вершины , и . Если так сложилось, что все три ребра, соединяющие синие, то мы получили синий треугольник . Если же среди этих ребёр найдётся красный (пусть, для определённости, это ребро ), то мы имеем красный треугольник . Таким образом мы в любом случае будем иметь либо синий -подграф, либо красный, и, следовательно, .
Приведённые рассуждения часто формулируют в виде следующей задачи: докажите, что среди группы из шести произвольных людей либо найдутся трое попарно знакомых друг с другом, либо трое попарно не знакомых. Эта задача требует по сути доказать, что , если обозначить людей за вершины графа, а ребра раскрасить в соответствии с тем, знакомы эти люди или нет.
Что совершенно неочевидно про числа Рамсея, так это то что они вообще в принципе существуют. Пусть мы раскрашиваем граф в три цвета: красный, желтый и зеленый. Верно ли, что любой достаточно большой граф всегда будет иметь либо красный -подграф, либо зелёный -подграф, либо жёлтый -подграф? То что любой довольно большой граф удовлетворяет этому свойству само по себе удивительно и до предъявления строгого доказательства должно вызывать сомнения. Однако это так.
Мы разобьём доказательство того, что числа Рамсея всегда определы, на два этапа. Вначале мы докажем, что числа Рамсея определены для двухцветных раскрасок, а затем перейдём к общему случаю.
Теорема. Число Рамсея всегда определено, и, более того,
Доказательство. Если мы докажем неравенство, то утверждение о существовании чисел Рамсея будет следовать из него само собой. Поэтому сразу возьмёмся за неравенство. Предположим по индукции, что оно выполняется для всех значений , где по крайней мере либо либо . Первый цвет будем называть красным, второй синим. Рассмотрим полный граф с
вершинами и возьмём в нём произвольную вершину . Опять же по обобщённому принципу Дирихле с ним инцидентно либо красных рёбер, либо синих. Пусть верно первое (второй случай рассматривается аналогично). Рассмотрим все вершины, соединённые с красными рёбрами. Эти вершины образуют подграф . По предположению индукции он либо имеет красный -подграф, либо синий -подграф. В последнем случае требуемый подграф найден, в первом же случае мы можем добавить к красному графу вершину , и, поскольку она соединена с вершинами красными ребрами, мы получаем красный -подграф.
Упражнение. Докажите, что
Теорема. Число Рамсея всегда определено, и, более того,
Доказательство. Опять же существование числа Рамсея следует из неравенства. Доказывать мы его будем опять по индукции, но на этот раз будем проводить её по количеству цветов. Предположим, что для количества цветов, меньшего , утверждение верно. Далее, забудем на некоторое время различие между цветами и и будем считать их эквивалентными. Если взять полный граф с
вершинами, то он будет либо иметь -подграф цвета , если , либо же будет иметь -подграф с рёбрами цветов и . В первом случае требуемое доказано. В последнем случае по предположению индукции мы имеем внутри этого подграфа либо -подграф цвета , либо -подграф цвета .
В отличии от всех предыдущих величин, которые мы приводили, числа Рамсея совершенно не поддаются вычислению (теоретически они могут быть вычислены, но сложность этого просто чудовищная). Например, до сих пор неизвестно значение . Оценка, приведённая нами в упражнении 3.86 говорит нам о том, что . На самом деле в 1992 году было доказано\footnote{«A new upper bound for the Ramsey number R (5, 5)», B. McKay, S. Radziszowski, 1992}, что . Так же в 1987 было доказано, что . То есть всего у нас есть 7 вариантов чему оно может быть равно. Давайте посмотрим как можно было бы точно определить используя эту оценку число Рамсея.
Возьмём граф — число 46 лежит посередине между двумя допустимыми границами, и в случае если мы подтвердим или опровергнем наличие раскрасок, не имеющих -одноцветных подграфов, то мы сразу же улучшим существующий научный результат аж в два раза. Очевидный способ, как это можно проверить, это перебрать все возможные графы . Он имеет ребёр, каждое из которых мы можем раскрасить в один из двух цветов. Итого мы имеем различных раскрасок графов . Чему равно сказать очень сложно, но это очень много. Калькулятор не имеет столько цифр. Чтобы оценить масштаб этого числа, попробуйте просто подсчитать разные степени числа 2.
Не смотря на то что числа Рамсея практически невычислимы, сам факт их существования может иметь следствия. Пусть у нас есть некоторая последовательность (конечная или бесконечная). Если выкинуть из неё часть членов, то то что останется мы будем называть подпоследовательностью. Теория Рамсея даёт нам следующий результат:
Упражнение. Докажите, используя теорему Рамсея, что для любых чисел и найдётся такое , что любая последовательность длины различных чисел будет иметь либо возрастающую подпоследовательность длины , либо убывающую подпоследовательность длины .
Упражнение. На самом деле если не использовать теорию Рамсея, то прошлое утверждение можно уточнить. Докажите, используя принцип Дирихле и двойной счёт, что на самом деле любая последовательность длины будет удовлетворять условиям прошлого упражнения. Для доказательства можно сопоставить каждому элементу последовательности пару , где — наибольшая длина возрастающей подпоследовательности, оканчивающийся в позиции , а — наибольшая длина убывающей подпоследовательности, оканчивающейся в позиции . Данная уточнённая оценка называется теоремой Эрдёша-Секереша.
Теорема. Для любого найдётся такое , что как бы мы ни разбивали множество на частей, в одной из них всегда найдутся такие числа (не обязательно различные), что .
Доказательство. Раскрасим элементы множества в цветов. Построим граф , раскрасив каждое ребро тем цветом, в который было раскрашено число . Из существования числа следует, что если достаточно велико, то в найдётся треугольник, раскрашенный одним цветом. Это в свою очередь означает, что найдутся вершины такие, что числа , , раскрашены в один цвет. Очевидно, что .
Приведённая теорема называется теоремой Шура. Похожее решение имеют следующие два упражнения.
Упражнение. Докажите, что для любого найдётся такое , что при любом разбиении найдётся такой элемент разбиения, что в нём будут содержаться числа , , , , , d, что для них выполняется соотношение
Упражнение. Докажите, что теорема Шура останется верна, если наложить условие .