Как стать автором
Поиск
Написать публикацию
Обновить
2286.71
МТС
Про жизнь и развитие в IT

А посчитать? Показываю, как решить задачу про адвент-календарь

Время на прочтение4 мин
Количество просмотров1.2K

Всем привет! Это Диана, математик и автор команды спецпроектов МТС Диджитал. В День всех влюбленных я опубликовала трехчастную задачу про адвент-календарь и обещала показать решения через 10 дней. Час настал! Спойлер: подходов к решению будет несколько. Первые два пункта несложные, а третий поинтереснее. Смотрите, проверяйте себя и приходите обсуждать в комментарии!

Для удобства скажем, что окошки занумерованы не датами, а числами от 1 до 23.

Первый вопрос

Сколько есть возможных сценариев для первого дня, если можно открывать окошки из любой части календаря?

Порассуждаем. В первый день можно открыть любое количество окошек — от 0 до 23 включительно. Случаи с открытием 0 окошек и 23 окошек уникальны (то есть это можно сделать единственным способом), а вот все остальные количества — нет. То есть если Аня открыла два окошка, это могли быть первое и второе или пятое и седьмое — любая пара окошек. Сколько существует таких пар? А троек? А четверок?

Знатоки комбинаторики сразу опознали — речь идет о количестве сочетаний. Именно сочетания позволяют нам вычислить, сколькими способами можно выбрать, например, пару из 23 элементов, когда порядок не важен.

Общая формула для вычисления количества способов выбрать k элементов из n выглядит так:

C_n^k=\dfrac{n!}{(n-k)!\cdot k!}.

Ну а дальше всего делов-то, надо вычислить

C_{23}^1, C_{23}^2, C_{23}^3, ...

в общем, все возможные варианты выбора наборов разной величины. А потом сложить их, не забыв C023 и C2323, которые равны по единичке (можете проверить).

К счастью, делать это вручную не нужно! Есть формула о том, что сумма всевозможных количеств сочетаний Ckn со всеми значениями 0⩽k⩽n всегда равна 2n.

Модная запись:

\sum\limits_{k=0}^n C_{n}^{k} =2^n.

У этого факта есть несколько доказательств. Можно сказать, что это сумма всех биномиальных коэффициентов в n-ой строке треугольника Паскаля.

Но можно рассмотреть и другой подход, не комбинаторный, а через теорию множеств.

Представьте множество из 23 элементов. В первый день Аня может выбрать ноль элементов или любой один, или любые два и так далее. Те элементы, которые Аня выберет в первый день — это некоторое подмножество исходного множества. Нам подходит абсолютно любое подмножество — включая пустое множество и само исходное множество целиком. Есть известный факт, что если исходное множество состояло из n элементов, то множество всех его подмножеств состоит из 2n элементов. У этой штуки даже специальное название есть — булеан.

В нашем случае это число равно 223 = 8 388 608. Всего-навсего а что так мало! И это только количество сценариев для первого дня, что же будет дальше…

Второй вопрос

Аня этого не знает, но в последнем окошке лежит ее любимый крем. Какова вероятность, что она откроет именно это окошко прямо в первый день?

Сначала смешные рассуждения: нууу в первый день она или откроет последнее окошко, или нет — так что вероятность равна 0.5, расходимся. Вы не поверите, но примерно так все и есть.

Для начала получим результат предыдущего пункта другим способом. Возможно вы считали как раз так.

Там у нас получился булеан, множество всех подмножеств. И его мощность (то есть количество элементов) будет 2n как раз потому, что в первый день каждое из окошек либо будет открыто, либо нет. То есть для любого окошка есть 2 исхода и так для каждого из 23 окошек. Первое или открыто, или нет, второе или открыто, или нет, и так далее.

Перемножаем количество исходов для каждого окошка по правилу произведения и получаем 223 способа прожить первый день:

\underbrace{2\cdot2 \cdot ...\cdot 2}_{\text{23 раза}} =2^{23}.

Можно кстати рассуждать и с помощью двоичной записи. Если открытие окошка обозначается единичкой, а не-открытие — нулем, то нас интересует количество всевозможных двоичных чисел длины 23, при условии, что можно начинать и с нулей.

Окей, это мы посчитали все возможные исходы первого дня, а благоприятные в этом случае — те, в которых обязательно открыто последнее окошко. То есть 23-значное число с единичкой на конце. Таких будет уже 223, ведь исход для последнего окошка уже зафиксирован. И поэтому искомая вероятность равна:

\dfrac {2^{22}}{2^{23}}=0.5.

Кстати, если бы любимый крем лежал в каком-то другом окошке, например, 13-ом — вероятность была бы такой же.

Третий вопрос

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

Конечно, совершенно не факт, что мы откроем весь календарь за первый день. Более того — скорее всего этого не случится, ведь из 8 388 608 сценариев только один соответствует полному открыванию всего.

Нам надо открыть 23 окошка, движемся мы по порядку. Но сколько окошек открывается в каждый из дней — неизвестно.

Давайте рассмотрим календарь попроще — из 3 окошек. Как его можно открывать? В каждый из 3 дней мы открываем от 0 до 3 окошек. Всего есть 10 способов, я выписала все подходящие «кодировки» по убыванию. Здесь на n-ом месте стоит количество открытых окошек в n-ый день:
300
210
201
120
111
102
030
021
012
003

А теперь рассмотрим другой подход.

Представьте, что вам надо разделить эти 3 окошка палочками-разделителями. Между любыми двумя соседними окошками либо стоит палочка (это означает, что кончился один день и начался другой), либо не стоит палочка (это означает, что еще продолжается текущий день).

Сколько нужно палочек, чтобы разделить 3 дня? 2 штуки. А сколько есть мест, в которые можно ставить эти палочки? Тут интереснее — таких мест 5. Почему так: у вас есть 3 окошка и 2 палочки, в сумме это 5 слотов. В каждом слоте может быть как окошко, так и палочка. Задача, которую мы тут по сути решаем — понимаем, сколько есть способов расположить 2 палочки по 5 слотам.

По формуле это:

C_5^2=\dfrac{5!}{(5-2)!\cdot 2!}=\dfrac{4\cdot5}{2}=10.

Сходится с нашим перебором выше!

В случае большого календаря у нас 23 окошка и 22 палочки, то есть всего 45 слотов. И вот что мы имеем:

C_{45}^{22}=\dfrac{45!}{(45-22)!\cdot 22!}=4\ 116\ 715\ 363\ 800

Математические эстеты, возможно, заметили: это та же формула, что получается для поиска количества сочетаний с повторениями. Это немного другой подход: например, есть 3 элемента, и тебе надо выбрать 3 из них, при этом каждый элемент может быть выбран несколько раз. Собственно, этот подход хорошо виден, если посмотреть «перебор» трехзначных чисел на картинке выше. И формула там такая:

\overline{C_{n}^{k}}=C_{n+k-1}^{k}=\dfrac{(n+k-1)!}{(n-1)!\cdot k!}

Но мне нравится именно история с палочками. Она помогает лучше понять ситуацию, чем просто ниспосланная свыше формула — которую, кстати, чаще всего доказывают именно через эти палочки.

Вот и все, спасибо за внимание! А если хочется еще поупражняться в открывании календарей, то вот вам бонусный вопрос: сколько есть способов открыть календарь, если можно «перепрыгивать» и открывать любые окошки в любом количестве в каждый из дней? Пишите ответы в комментариях, все посмотрю.

Теги:
Хабы:
Всего голосов 12: ↑12 и ↓0+17
Комментарии1

Полезные ссылки

Enabler для AI-агентов — интеграционная платформа MWS OCTAPI

Время на прочтение9 мин
Количество просмотров180
Всего голосов 6: ↑4 и ↓2+5
Комментарии0

Работа с телевизионными каналами на Android TV: учимся использовать TIF в 2025. Стартовый гайд для разработчиков

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.6K
Всего голосов 20: ↑20 и ↓0+24
Комментарии1

MWS Data Compass: как мы в МТС свой корпоративный BI построили

Время на прочтение10 мин
Количество просмотров1.6K
Всего голосов 17: ↑17 и ↓0+19
Комментарии5

Мой опыт работы с MWS Tables: взгляд бренд-аналитика на новый low-code-инструмент

Время на прочтение6 мин
Количество просмотров954
Всего голосов 15: ↑14 и ↓1+16
Комментарии0

Data Lake 2.0: Iceberg и Parquet в бою за миллисекунды

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.1K
Всего голосов 34: ↑32 и ↓2+33
Комментарии4

Информация

Сайт
www.mts.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия