Пятьдесят пенни

Задача

Однажды дождливым лондонским утром Шерлок Холмс и доктор Ватсон попыхивали из трубок, уютно расположившись у камина. Ватсон нарушил молчание:
— Дорогой Холмс, меня давно мучает один вопрос...
Холмс оживился:
— Какой же, друг мой?
— Может быть, он покажется Вам смешным, но... я про вознаграждение, которым Вы балуете своих юных помощников. Представьте, что у Вас есть 50 монет по одному пенни и четверо мальчишек. Сколькими способами можно раздать им деньги? Конечно, я допускаю, что кто-то из них может ничего не получить.
Великий сыщик замер с трубкой в руках, но не прошло и пяти минут, как он воскликнул:
— Это же элементарно, Ватсон!


Подсказка 1

В сухом математическом остатке мы получаем такую задачу: нужно разбить число 50 на 4 слагаемых. Причём некоторые из них могут быть нулевыми, а разбиения, отличающиеся порядком слагаемых, мы считаем разными.


Подсказка 2

Давайте разложим все монеты в ряд и будем разделять части этого ряда из монет, которые причитаются разным помощникам. Понятно, что нам понадобится 3 «разделителя», чтобы разбить все монеты на 4 части. Теперь каждый способ раздать монеты четверым описывается расположением этих разделителей в ряду монет. При этом удобно считать, что разделители — это тоже элементы ряда.


Решение

Конечно, эту задачу можно решать очень по-разному, но попробуем закончить, пожалуй, самое простое решение, намеченное в подсказках. Давайте в качестве разделителей возьмём «пустые» элементы ряда или, если угодно, другие монеты, которые никому не достаются. В итоге получится ряд длины 53 из монет и разделителей. Каждое расположение разделителей описывает один вариант получения помощниками награды. Монеты слева от первого разделителя достанутся первому помощнику (то есть это будет первое слагаемое в разложении числа 50 в сумму четырёх слагаемых), между первым и вторым разделителями — второму, и так далее. Остаётся понять, сколькими способами можно расставить 3 разделителя на 53 местах. Другими словами: сколькими способами можно выбрать 3 места для разделителей из 53? А это — знакомое многим число сочетаний .


Послесловие

Ясно, что совершенно аналогичные рассуждения работают в случае произвольных натуральных n и k вместо чисел 50 и 4. Полученная формула —  — называется количеством разложений числа n в сумму k слагаемых. Заметим, что если забыть про проблемы Шерлока Холмса, то задача не очень-то полезная — мы зачем-то разбиваем число на слагаемые, среди которых могут быть нули, да ещё и считаем одинаковые разложения много раз.

Зададимся более логичным вопросом: сколько существует разбиений числа n на натуральные слагаемые, если разбиения, различающиеся только порядком слагаемых, считать одинаковыми? Это число pn, оно так и называется — количество разбиений числа n. Для чисел pn уже нет такой простой общей формулы, как для чисел разложений. Интересно, что наиболее удобная известная формула — пентагональная теорема (см. также Pentagonal number theorem) — для вычисления числа разбиений принадлежит Эйлеру. Это — рекуррентная формула, она позволяет вычислить pn, зная значения количества разбиений для чисел, которые меньше данного n. Для читателей, знакомых с производящими функциями, доказательство этой формулы не будет чрезмерно трудным (см., например, доказательство в книге С. К. Ландо «Лекции о производящих функциях»).

К слову, для изучения разных числовых последовательностей, в том числе и обсуждаемой нами последовательности p1, p2, ..., pn, ..., производящие функции — это очень мощный инструмент.

Основная идея тут такая: давайте вместо последовательности рассматривать бесконечный ряд (чтобы это ни значило!), умножая каждое pk на xk и складывая все эти произведения от k = 0 до бесконечности; получится такая «функция» от переменной x: 1 + p1x + p2x2 + p3x3 + ... Зачастую, для неё существует и другая, короткая запись. Представьте, себе, например, известную со школы геометрическую прогрессию 1 + x + x2 + x3 + ... (а её можно рассматривать и как производящую функцию для последовательности 1, 1, 1, ...!). Если умножить этот бесконечный ряд на 1 − x, то получится 1 (проверьте это), поэтому можно заключить, что
1 + x + x2 + x3 + ... = 1/(1 − x).

Похожие приёмы работают и в более трудных случаях. Так, производящая функция для последовательности чисел разбиений pn равна

Много интересного про производящие функции можно узнать из уже упоминавшейся книги С. К. Ландо «Лекции о производящих функциях».

Бывает интересно считать число разбиений на фиксированное количество слагаемых или на слагаемые, каждое из которых не больше заданного числа. Здесь встречаются довольно неожиданные факты: например, число разбиений числа на различные слагаемые равно числу разбиений на нечётные слагаемые. Это утверждение довольно просто доказывается методами производящих функций.

У чисел разбиений есть наглядная геометрическая интерпретация — диаграммы Юнга (см. также Young diagram). Количество клеток в диаграмме Юнга равно n, количество строк равно количеству слагаемых, а длины строк равны самим слагаемым. Есть и другие варианты графического изображения — диаграммы Ферре (см. Ferrers diagram) и диаграммы Майя.

Диаграммы Юнга, отвечающие разбиениям числа 4 на слагаемые
Диаграммы Юнга, отвечающие всем пяти возможным разбиениям числа 4 на слагаемые

Диаграммы Юнга появляются в совершенно разных областях математики и физики. Они играют далеко не последнюю роль в теории представлений, исчислительной геометрии, теории инвариантов. Многие сложные утверждения вытекают из простых наглядных свойств диаграмм Юнга.

Отдельная интересная задача — найти количество диаграмм Юнга, помещающихся в прямоугольнике с фиксированными сторонами или с фиксированным количеством клеток, или даже трёхмерных диаграмм Юнга. Обо всём этом можно почитать в статье В. Горина «Что можно сложить из кубиков?» («Квант» №3, 2012, есть PDF номера с полным текстом статьи).


1
Показать комментарии (1)
Свернуть комментарии (1)

  • Alexey Lubkin  | 13.12.2013 | 21:49 Ответить
    Эка просто всё. А я в лоб решал:
    Если у нас 2 человека и 50 монет, то есть 51 способ раздать им монеты:
    f(2,50) = 51

    Если монет не 50, а x, то:
    f(2,x) = x+1

    Добавляем третьего человека. Если дать ему i монет, тогда остальным двоим достанется x-i, а сколько тут вариантов разных - мы уже знаем: f(2,x-i) = x-i+1

    Значит:
    f(3,x) = sum(i=0..x, f(2,x-i))

    Ну и собственно для произвольного числа монет и человеков:
    f(n,x) = sum(i=0..x, f(n-1,x-i))

    Для f(4,50) получим сумму квадратов плюс мелочёвка, если загнать в pari/gp:
    f(n,x) = if(n==2, x+1, sum(i=0,x,f(n-1,x-i)) )
    то получим:
    f(4,50)
    23426
    Ответить
Написать комментарий
Элементы

© 2005–2026 «Элементы»