Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Блог Хеллера ([info]syn_heller)
@ 2014-02-19 08:46:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Сочетания, разбиения, включения-исключения

Давно ничего не писал, но вот выкладываю сразу аж три параграфа одним скопом. Тут материал довольно прикладной, но одновременно с тем его редко рассматривают на инженерных специальностях, поэтому, думаю, нематематикам будет интересно. Как всегда призываю читать pdf и помогать на Гитхабе.

В pdf-ке так же появился параграф про формализм, но довольно сырой, был ещё немного переработан параграф про интуицию относительно теорий. Всё это пока довольно сыро, я делал это довольно в авральном режиме для того, чтобы курс на Hexlet был более полноценен, так что праки в той части, думаю, ещё будут. Пока же просто уже затрахался править главу логики, вероятно, в дальнейшем к ней ещё вернусь, но только когда закончу третью главу (это, по идее, уже скоро: осталось порядка пяти параграфов).

Сочетания

«k-cочетание» — это просто другое название для термина «k-элементное подмножество», которое по историческим причинам (хотя многие считают, что так удобнее) принято в комбинаторике. Нас будет интересовать количество k-сочетаний взятых из множества [n].

Определение. Биномиальным коэффициентом n \choose k называется число сочетаний из [n] по k.

Вместо обозначения {n \choose k} в российской и французской литературе исторически чаще используется обозначение C^k_n, однако оно кажется мне менее удобным в случаях если вместо величин n и k используются какие-то длинные выражения. По этой причине мы будем придерживаться общемирового обозначения.

Значения {n \choose 1} = n и {n \choose n} = 1 очевидны. Так же удобно полагать, что {n \choose 0} =1 (пустое множество всего одно, соответственно есть лишь один способ его выбрать).

Упражнение. На листочке в клетку начерчен прямоугольник со сторонами m и n. Мы двигаемся из левого нижнего угла прямоугольника в правый верхний, сдвигаясь за шаг либо на одну клетку вверх, либо на одну клетку вправо. Сколько всего существует таких путей? Сведите задачу к вычислению количества сочетаний, как их считать я расскажу ниже.

Упражнение. Будем считать, что в условиях прошлой задачи m=n. Сколько существует путей из левого нижнего угла в правый верхний таких, что они не пересекают диагонали квадрата? (Подсказка: возьмите путь, пересекающий диагональ, и отразите его начало до пересечения относительно этой диагонали).

Теорема. \sum_{k=0}^n{n \choose k} = 2^n

Доказательство. В левой части этого выражения строит общее количество всех подмножеств множества [n]. В правой части на самом деле написано то же самое: 2^n есть мощность булеана, как вы видели в § 3.1.
\square

Теорема. {n \choose k} = {n \choose n-k}

Доказательство. Выбрать k элементнов из множества [n] это всё равно что выбрать n-k элементов, которые мы оставим в множестве.
\square

Теорема. {n \choose k} = {n-1 \choose k-1} + {n - 1 \choose k}

Доказательство. Рассмотрим все k-сочетания из множества [n]. Сам элемент n может либо принадлежать выбранному подмножеству, либо не принадлежать. В первом случае количество сочетаний будет равно n-1\choose k, во втором случае, поскольку один элемент сочетания уже фиксирован, это будет величина n-1\choose k - 1.
\square

Последняя теорема, как и в случае чисел Стирлинга, позволяет вычислять биномиальные коэффициенты. Однако, для сочетаний мы можем записать и явную формулу.

Определение. k-размещением мы назовём некоторый упорядоченный набор, состоящий из некоторых k элементов множества [n]. Количество размещений из n по k будем обозначать как n^{\lfloor k\rfloor}.

Теорема. n^{\lfloor k \rfloor} = \frac{n!}{(n-k)!}

Доказательство. Доказательство практически дублирует доказательство для количества перестановок. На первую позицию мы можем поставить один из n элементов. На вторую позицию один из оставшихся n-1 элементов. На третью —один из n-2 элементов. Однако в отличии от перестановок, теперь нам надо разместить лишь k элементов, а не все n, поэтому мы этот процесс оборвём на k-том шаге. В итоге получаем выражение
n^{\lfloor k \rfloor} = n (n-1)  (n-2) \ldots (n-k+1)
Если это выражение умножить и разделить на  (n-k)! , получим утверждение теоремы.
\square

Само обозначение n^{\lfloor k \rfloor} на самом деле почти всегда используется просто для обозначения произведения k подряд убывающих чисел. Эту величину часто называют убывающим факториалом. В полной аналогии вводится и возрастающий факториал:
n^{\lceil k \rceil} = n(n+1)(n+2)\ldots(n+k-1)

Упражнение. Покажите, что n^{\lfloor k \rfloor} = (n-k+1)^{\lceil k \rceil}

Теорема. {n \choose k} = \frac{n!}{k!(n-k)!}

Доказательство. k-расстановку мы можем получить, вначале выбрав k-элементное подмножество [n], а затем упорядочив его. Всего существует n\choose k способов выбрать такое подмножество. Способов упорядочить выбранное —  k! . Таким образом получаем соотношение
n^{\lfloor k \rfloor} = k!{n\choose k}
Поделив обе части на k! и подставив выражение для n^{\lfloor k \rfloor}, получаем утверждение теоремы.
\square

Упражнение. Теоремы 3.22 и 3.23 можно доказать, пользуясь явным представлением биномиального коэффициента, полученным в 3.25. Сделайте это.

Упражнение. Чему равно \sum_{k=m}^n k^{\lfloor m\rfloor} {n\choose k}

Упражнение. Докажите, что {n\choose m}{n-m\choose k} = {n\choose k}{n-k\choose m}

Упражнение. Докажите, что {n\choose k-1}{n\choose k+1} \le {n\choose k}{n\choose k}

Теорема. (x+y)^n = \sum_{k=0}^n {n \choose k} x^{n-k} y^k

Доказательство. Давайте вначале для наглядности распишем степень подробно:
(x+y)(x+y)\ldots(x+y)
Раскроем все скобки (если пока не понятно как, то потренируйтесь на каких-то частных случаях типа n=3). Раскрытие скобок можно интерпретировать так, что из каждой скобки мы выбираем либо x, либо y. Все слагаемые в полученной сумме будут иметь вид x^iy^j, i+j=n с каким-то коэффициентом, появляющимся за счёт того, что некоторые слагаемые вида x^iy^j появляются несколько раз.

Слагаемое x^n появится лишь один раз в случае, если из всех скобок мы выберем x. Слагаемое x^{n-1}y появляется, если мы выбираем x из всех скобок, кроме одной. Эту одну скобку, из которой мы выбираем y, мы можем выбрать одним из n способов. По аналогии x^{n-2}y^2 появится n\choose 2 раз, поскольку мы выбираем уже две скобки, из которых мы возьмём y. Продолжая по аналогии приходим к утверждению теоремы.
\square

Упражнение. Приведённую теорему можно доказать по индукции. Будет полезным проделать это самостоятельно.

Приведённая теорема даёт нам ещё один способ подсчитать количество подмножеств множества [n]:

\sum_{k=0}^n {n \choose k} = \sum_{k=0}^n {n \choose k}1^{n-k}1^k = (1+1)^n = 2^n

Упражнение. Докажите равенство
3^n = \sum_{k=0}^{n} 2^k {n \choose k}

Последняя задача в свете теоремы 3.26 решается элементарно, однако я замечу, что такие задачи часто даются на олимпиадах для тех школьников, которые ещё по возрасту не могут знать таких теорем. Предполагается, что школьники могут доказать утверждение по индукции (и некоторые действительно могут). Это одна из причин по которой автор ненавидит олимпиадные задачки и «задачки на логику», которые часто дают на собеседованиях — большинство таких задач изначально появляются как тривиальные следствия каких-то более общих результатов, а потом уже задним числом оказывается, что задачу в общем-то можно было бы решить и пользуясь лишь школьной математикой. Однако если сравнивать пользу от решения такой задачи по индукции с пользой от изучения общей теоремы, то последнее явно выигрывает, хотя и не помогает на собеседованиях и олимпиадах.

Сочетания часто используются так же вот в каком ключе. Предположим, мама нам сказала: «Пойди в магазин и купи n каких-нибудь пирожков». Мы приходим в магазин, а там продаётся k наименований пирожков. Сколько всего способов у нас есть удовлетворить мамин запрос? Задача в такой постановке приводит нас к понятию сочетаний с повторениями, поскольку искомые наборы могут содержать повторяющиеся элементы.

Для решения задачи предположим, что пирожки разного вида мы разложили по разным пакетам (я видел, что в ларьках у метро именно так часто и делают). Схематически мы будем разделять пакеты вертикальной чертой |, а пирожки (или, более общо, элементы множества), кружочками \circ. Для примера давайте считать, что у нас всего имеется k=5 видов пирожков, а купили мы n=6 пирожков, причем из них было два пирожка первого вида, три третьего и один четвертого. Остальных пирожков мы не покупали. На схеме это будет выглядеть как
|\circ||\circ\circ\circ|\circ||
Теперь мы можем догадаться, как подсчитать общее количество различных сочетаний с повторениями: достаточно просто подсчитать общее количество возможных схем такого вида. В схеме, приведенной выше, если отбросить крайние чёрточки |, получится n+k-1 различных позиций, на которых могут стоять чёрточки либо кружки. Причём мы точно знаем, что кружков всего будет n штук, а чёрточек k-1. Чтобы получить какую-то конкретную схему, нам надо выбрать n позиций под кружки, а остальные позиции мы занимаем чёрточками. Итого для количества сочетаний с повторениями мы имеем выражение
{n+k-1 \choose n} = {n+k-1\choose k - 1}

Упражнение. Докажите, что существует 2^{n-1} способов представить число n в виде суммы ненулевых слагаемых. Задача довольно сложная, поэтому дам некоторые наводки. Вначале следует разобрать случай, когда имеется ровно k слагаемых. Подход здесь может быть аналогичным задаче с булочками выше, но надо учитывать то, что чтобы слагаемые были ненулевыми, мы не можем поставить подряд две черты, не поставив между ними кружок. Способов сделать это n-1\choose k -1 (докажите!). Отсюда уже довольно легко выводится и результат первоначальной задачи.

Упражнение. Сколько можно получить различных слов путём перестановки букв в слове «математика»?

Разбиения множеств

Определение. Число разбиений множества [n] на множества мощностей k_1, k_2, \ldots k_m называется мультиномиальным коэффициентом и обозначается как
n \choose k_1; k_2;\ldots; k_m

В этом определении, очевидно, k_1\ldots+ k_m = n.

Теорема. {n \choose k_1; k_2;\ldots; k_m} = \frac{n!}{k_1!k_2!\ldots k_m!}

Доказательство. Выберём вначале k_1 элемент, споcобов сделать это n\choose k_1. Из оставшихся элементов теперь выберём во второе множество k_2 элементов, способов сделать это n-k_1\choose k_2. Продолжая рассуждать таким же образом, получаем
\begin{align*}
{n \choose k_1; k_2;\ldots; k_m} & = {n\choose k_1}{n-k_1\choose k_2}{n-k_1-k_2\choose k_3}\ldots{n-k_1-\ldots k_{m-1}\choose k_m} \\
&= \frac{n!}{k_1!(n-k_1)!}\cdot\frac{(n-k_1)!}{k_2!(n-k_1-k_2)!}\cdot\frac{(n-k_1-k_2)!}{k_3!(n-k_1-k_2-k_3)!}\cdot\ldots\\
&=\frac{n!}{k_1!k_2!\ldots k_m!}
\end{align*}
\square

Теорема. (x_1+x_2\ldots x_m)^n = \sum_{k_1+\ldots + k_m = n}{n\choose k_1;k_2;\ldots;k_m}x_1^{k_1}x_2^{k_2}\ldots x_m^{k_m}
Здесь суммирование ведётся по всем возможным наборам чисел \{k_i\}, дающим в сумме n.

Доказательство. Аналогично доказательству теоремы 3.26. Проведите его самостоятельно.
\square

Упражнение. Покажите, что теорема 3.26 является частным случаем для теоремы 3.29.

Упражнение. Покажите, что в теореме 3.29 будет ровно n + k - 1 \choose n слагаемых.

Определение. Числами Стирлинга второго рода \genfrac{\{}{\}}{0pt}{}{n}{k} называется количество способов разбить множество [n] на k подмножеств.

Упражнение. Выразите \genfrac{\{}{\}}{0pt}{}{n}{k} через мультиномиальные коэффициенты.

Определение. Числами Белла B(n) называется количество способов разбить множество [n] на подмножества.

Теорема. B(n) = \sum_{k=1}^n\genfrac{\{}{\}}{0pt}{}{n}{k}

Доказательство. Очевидно.
\square

Упражнение. Докажите, что \genfrac{\{}{\}}{0pt}{}{n}{2} = 2^{n-1} - 1.

Значения \genfrac{\{}{\}}{0pt}{}{n}{1} = \genfrac{\{}{\}}{0pt}{}{n}{n} = 1 настолько очевидны, что даже не заслуживают отдельного упражнения. Остальные значения, как и в случае чисел Стирлинга первого рода и количества сочетаний, могут быть вичислены рекурсивно.

Теорема. \genfrac{\{}{\}}{0pt}{}{n}{k} = \genfrac{\{}{\}}{0pt}{}{n-1}{k-1} + k\genfrac{\{}{\}}{0pt}{}{n-1}{k}

Доказательство. Рассмотрим элемент n множества [n]. При разбиении [n] на подмножества n может войти в отдельное подмножество мощности 1, либо же войти в состав более крупного подмножества. В первом случае количество таких разбиений будет \genfrac{\{}{\}}{0pt}{}{n-1}{k-1} — количество разбиений без учёта элемента n. Во втором случае мы опять же строим разбиение множества [n-1], но уже на k подмножеств. Нам остаётся лишь выбрать в какое из этих k пожмножеств добавить элемент n. Получаем k\genfrac{\{}{\}}{0pt}{}{n-1}{k}.
\square

Числа Белла так же допускают рекурсивное определние, хотя и не особо удобное.

Теорема. B(n+1) = \sum_{k=0}^n{n \choose k} B(k)

Доказательство. Пусть элемент n+1 при некотором разбиении множества [n+1] попал в множество размера k. Есть n\choose k - 1 способов выбрать это множество, оставшиеся элементы можно разбить на подмножества B(n+1-k) способами. Поскольку k может быть произвольным от 1 до n+1, получаем
\begin{align*}
B(n+1) & = \sum_{k=1}^{n+1}{n\choose k-1}B(n+1-k)\\
& = \sum_{k=1}^{n+1}{n\choose n-k+1}B(n-k+1) \\
& = \sum_{k=0}^{n}{n\choose k}B(k)
\end{align*}
\square

Чтобы эта формула работала, нужно положить B(0) = 1 (чтобы увидеть это, примените 3.32 к значению B(1)), что соответствует интуиции: существует лишь одно разбиение пустого множества на подмножества, которое само является пустым множеством.

Упражнение. Докажите, что для n>2 выполняется оценка
n! < \genfrac{\{}{\}}{0pt}{}{2n}{n} < (2n)!
Вероятно вначале будет целесообразно, пользуясь 3.31, доказать, что B(n) < n! при n>3.

Включения-исключения

Вот задачка, которая как-то попалась мне в младшем возрасте на олимпиаде по математике, а затем многократно попадалась в разных книжках с занимательными примерами по математике.

Есть класс, в кото



(Читать комментарии) (Добавить комментарий)