Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
00464.docx
Скачиваний:
17
Добавлен:
13.11.2022
Размер:
1.65 Mб
Скачать

Подсчет количеств

Иногда можно найти количество объектов с тем или иным свойством, не перечисляя их. Классический пример: - число всех -элементных подмножеств -элементного множества - можно найти, заполняя таблицу по формулам

или по формуле

(Первый способ эффективнее, если надо вычислить много значений .)

Приведем другие примеры.

Число разбиений; предлагалась на Всесоюзной олимпиаде по программированию 1988 года. Пусть - число разбиений целого положительного на целые положительные слагаемые (без учета порядка, и - одно и то же разбиение). При положим (единственное разбиение не содержит слагаемых). Построить алгоритм вычисления для заданного .

Решение. Можно доказать (это нетривиально) такую формулу для :

(знаки у пар членов чередуются, вычитаемые в одной паре равны и ; сумма конечна - мы считаем, что при ).

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

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

что позволяет заполнять таблицу значений функции .

Счастливые билеты; предлагалась на Всесоюзной олимпиаде по программированию 1989 года. Последовательность из цифр (каждая цифра от до ) называется счастливым билетом, если сумма первых цифр равна сумме последних цифр. Найти число счастливых последовательностей данной длины.

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

Разобьем множество таких последовательностей на классы в зависимости от разницы между первой и последней цифрами. Если эта разница равна , то разница между суммами групп из оставшихся цифр равна . Учитывая, что пар цифр с разностью бывает , получаем формулу

(Некоторые слагаемые могут отсутствовать, так как может быть слишком велико.)

В некоторых случаях ответ удается получить в виде явной формулы.

Доказать, что число Каталана (количество последовательностей длины из единиц и минус единиц, в любом начальном отрезке которых не меньше единиц, чем минус единиц) равно .

Указание. Число Каталана есть число ломаных, идущих из в шагами и , не опускающихся в нижнюю полуплоскость, т.е. разность числа всех ломаных (которое есть ) и числа ломаных, опускающихся в нижнюю полуплоскость. Последние можно описать также как ломаные, пересекающие прямую . Отразив их кусок справа от самой правой точки пересечения относительно указанной прямой, мы установим взаимно однозначное соответствие между ними и ломаными из в . Остается проверить, что .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]