Комбинаторные алгоритмы для программистов

          

Задачи на разбиение чисел


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

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

Задача 4. Отправка бандероли.

За пересылку бандероли надо уплатить 18 рублей. Сколькими способами можно оплатить ее марками стоимостью 4, 6, и 10 рублей, если два способа, отличающиеся порядком марок, считаются различными (запас марок различного достоинства считаем неограниченным)?

Обозначим через

Задачи на разбиение чисел
число способов, которыми можно наклеить марки в 4, 6 и 10 рублей так, чтобы общая стоимость этих марок равнялась
Задачи на разбиение чисел
. Тогда для
Задачи на разбиение чисел
справедливо следующее соотношение:
Задачи на разбиение чисел

(5.4)

Пусть имеется некоторый способ наклейки марок с общей стоимостью
Задачи на разбиение чисел
, и пусть последней наклеена марка стоимостью 4 рубля. Тогда все остальные марки стоят (
Задачи на разбиение чисел
) рубля. Наоборот, присоединяя к любой комбинации марок общей стоимостью (
Задачи на разбиение чисел
) рубля одну четырехрублевую марку, получаем комбинацию марок стоимостью
Задачи на разбиение чисел
рублей. При этом из разных комбинаций стоимостью (
Задачи на разбиение чисел
) рублей получается разные комбинации стоимостью
Задачи на разбиение чисел
рублей. Итак, число искомых комбинаций, где последней наклеена марка стоимостью 4 рубля, равно
Задачи на разбиение чисел
.

Точно так же доказывается, что число комбинаций, оканчивающихся на на шестирублевую марку, равно

Задачи на разбиение чисел
, а на десятирублевую марку оканчиваются
Задачи на разбиение чисел
комбинацией. Поскольку любая комбинация оканчивается на марку одного из указанных типов, то по правилу суммы получаем соотношение 5.4.

Соотношение 5.4 позволяет свести задачу о наклеивании марок на сумму

Задачи на разбиение чисел
рублей к задачам о наклеивании марок на меньшие суммы. Но при малых значениях
Задачи на разбиение чисел
задачу легко решить непосредственно. Простой подсчет показывает, что
Задачи на разбиение чисел
Равенство
Задачи на разбиение чисел
означает, что сумму в 0 рублей можно уплатить единственным образом: совсем не наклеивая марок. А сумму в 1,2,3,5,7 и 9 рублей вообще никак нельзя получить с помощью марок стоимостью 4, 6 и 10 рублей.
Используя значения
Задачи на разбиение чисел
для
Задачи на разбиение чисел
, легко найти
Задачи на разбиение чисел
:
Задачи на разбиение чисел
После этого находим
Задачи на разбиение чисел
Задачи на разбиение чисел
и т.д. Наконец, получаем значение
Задачи на разбиение чисел
. Таким образом, марки можно наклеить восемью способами. Эти способы таковы:
Задачи на разбиение чисел
;
Задачи на разбиение чисел
;
Задачи на разбиение чисел
;
Задачи на разбиение чисел
;
Задачи на разбиение чисел
;
Задачи на разбиение чисел
;
Задачи на разбиение чисел
;
Задачи на разбиение чисел
. Отметим, что значения
Задачи на разбиение чисел
для
Задачи на разбиение чисел
можно было получить иначе, не приводя непосредственно проверки. Дело в том, что при
Задачи на разбиение чисел
имеем
Задачи на разбиение чисел
, поскольку отрицательную сумму нельзя уплатить, наклеивая неотрицательное количество марок. В то же время, как мы видели,
Задачи на разбиение чисел
. Поэтому
Задачи на разбиение чисел
.
Точно так же получаем значение
Задачи на разбиение чисел
, а для
Задачи на разбиение чисел
имеем
Задачи на разбиение чисел
.
Задача 5.Общая задача о наклейке марок.
Разобранная задача является частным случаем следующей общей задачи:
Имеются марки достоинством в
Задачи на разбиение чисел
. Сколькими способами можно оплатить с их помощью сумму в
Задачи на разбиение чисел
рублей, если два способа, отличающиеся порядком, считаются различными? Все числа
Задачи на разбиение чисел
различны, а запас марок неограничен. Здесь на первом месте мы будем указывать число слагаемых, на втором – разбиваемое число и на последнем - ограничения на величину слагаемых.
В этом случае число
Задачи на разбиение чисел
способов удовлетворяет соотношению
Задачи на разбиение чисел

(5.5)
При этом
Задачи на разбиение чисел
, если
Задачи на разбиение чисел
и
Задачи на разбиение чисел
. С помощью соотношения 5.5 можно найти
Задачи на разбиение чисел
для любого
Задачи на разбиение чисел
, последовательно вычисляя
Задачи на разбиение чисел
.
Рассмотрим частный случай этой задачи, когда
Задачи на разбиение чисел
,
Задачи на разбиение чисел
. Мы получаем всевозможные разбиения числа
Задачи на разбиение чисел
на слагаемые
Задачи на разбиение чисел
, причем разбиения, отличающиеся порядком слагаемых, считаются различными. Обозначим число этих разбиений через
Задачи на разбиение чисел
. (На первом месте мы будем указывать число слагаемых, на втором - разбиваемое число и на последнем – ограничения на величину слагаемых.) Из соотношения 5.5 следует, что
Задачи на разбиение чисел

(5.6)
При этом
Задачи на разбиение чисел
и
Задачи на разбиение чисел
,если
Задачи на разбиение чисел
. Вычисление
Задачи на разбиение чисел
можно упростить, если заметить, что
Задачи на разбиение чисел
и потому
Задачи на разбиение чисел

(5.7)
Ясно, что слагаемые не могут быть больше
Задачи на разбиение чисел
. Поэтому
Задачи на разбиение чисел
равно числу всех разбиений на
Задачи на разбиение чисел
на натуральные слагаемые (включая и "разбиение"
Задачи на разбиение чисел
. Если число слагаемых равно
Задачи на разбиение чисел
, то получаем
Задачи на разбиение чисел
разбиений. Поэтому
Задачи на разбиение чисел
Итак, мы доказали, что натуральное число
Задачи на разбиение чисел
можно разбить на слагаемые
Задачи на разбиение чисел
способами. Напомним, что при этом учитывается порядок слагаемых.Например, число 5 можно разбить на слагаемые
Задачи на разбиение чисел
способами.
5 = 55 = 3 + 1 + 15 = 1 + 2 + 2
5 = 4 + 15 = 1 + 3+ 15 = 2 + 1 + 1 + 1
5 = 1 + 45 = 1 + 1 + 35 = 1 + 2 + 1 + 1
5 = 2 + 35 = 2 + 2 + 15 = 1 + 1 + 2 + 1
5 = 3 + 25 = 2 + 1 + 25 = 1 + 1 + 1 + 2
5 = 1 + 1 + 1 + 1 + 1
Содержание раздела