русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

При решении комбинаторных задач


Дата добавления: 2015-07-23; просмотров: 803; Нарушение авторских прав


 


Если


 

 

f ( z) 


 

ak z k , (16)

k  0


 

то f(z) называют производящей функцией числовой последовательности a0, a1, …, ak, … . Если последовательность конечна или, начиная с некоторого места, все ее члены равны

нулю, то наряду с (16) пишут также

 


 

f ( z) 


n

ak z k ,

k  0


 

предполагая, что члены последовательности с номерами больше чем n отсутствуют или равны нулю. Иногда производящей функцией последовательности a0, a1, …, ak, … называют ряд в правой части (16) и говорят, что производящая функция представлена в замкнутом виде, если для f(z) указано конечное аналитическое выражение.


 

 

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

последовательности биномиальных коэффициентов

 


C 0 , C1 , …, C n


служит функция f(z) = (1 + z)n; для бесконечной


n n n


 

 

 б 


последовательности биномиальных коэффициентов


  ,


k

 

k = 0, 1, …, производящей функцией служит f(z) = (1 + z).

Обоснование для последних двух примеров дается в курсе анализа.

 

Последовательность Производящая   функция Замкнутый вид
1,2,1,0,0,… 1 + z +z2 1 + z +z2
1,1,1,1,… z k 1 1− z
1,–1,1,–1,… ∑(−1)k z k 1 1+ z
1,0,1,0,… z 2k 1 1−z 2
1,2,4,8,16,… ∑2k z k 1 1− 2 z
1,2,3,4,… ∑(k + 1) z k 1 (1− z ) 2
111 z k ez
111 z k 1

 



1,1, 2 , 3!, 4! … ∑ k!

 


0,1, 2 , 3 , 4 … ∑ k


ln1− z


 

 

Рассмотрим несколько примеров комбинаторного применения производящих функций.

Задача о «размене». Требуется найти число способов разменять заданную сумму n рублей монетами достоинством 1,

2 и 5 рублей.

 

Обозначим искомое число способов размена через Pn, n = 0, 1, 2,… . Для малых значений n числа Pn легко вычисляются непосредственно:

P0 = 1; P1 = 1; P2 = 2 (1 + 1, 2); P3 = 2 (1 + 1 + 1, 1 + 2);

 

P4 = 3 (1 + 1 + 1 + 1, 1 + 1 + 2, 2 + 2).

 

Составим производящую функцию последовательности Pn:

 

P(z) = P0 + P1z + P2z2 +… .

 

Рассмотрим произведение

(1 + z + z2 +…)(1 + z2 + z4 +…)(1 + z5 + z10 +…). (17) После раскрытия скобок и приведения подобных коэффициент при zn окажется равным Pn. В самом деле, коэффициент при zn в (17) – это число способов представить zn в виде произведения степеней zu, z2v, z5w, равное числу решений в целых неотрицательных числах уравнения

 

u + 2v + 5w = n.

 

Но это как раз и есть число «разменов» числа n единицами,

 

двойками и пятерками, т. е. число Pn. Следовательно,

 

P(z) = (1 + z + z2 +…)(1 + z2 + z4 +…)(1 + z5 + z10 +…) .


 

 

Суммируя геометрические прогрессии в скобках, получаем:

 


P(z)  1 ⋅ 1


⋅ 1 . (18)


1 − z


1− z 2 1− z5


 

Используя производную, можно найти явное выражение

 

для Pn:

 

P(n) (0)

Pn n! .

Впрочем, представление (18) позволяет получить рекуррентные соотношения для вычисления чисел Pn. Вместе с


 

P(z)  1 ⋅ 1


 

⋅ 1 = P


 

 

+ P z + P


 

 

z2 +…


 

пусть


1 − z


1− z 2 1− z5 0 1 2


 


 

Q( z) 


1 − z


⋅ 1

1− z 2


 

= Q0


 

+ Q1


 

z + Q2


 

z2 +… ,


 


 

Тогда:


 

R( z) 


1 − z


 

= R0


 

+ R1


 

z + R2


 

z2 +… .


 

(1 – z)R(z) = 1;

 

(1 – z2)Q(z) = R(z); (1 – z5)P(z) = Q(z).

Приравнивая коэффициенты при одинаковых степенях,

 

получаем уравнения:

 

R0 = 1, Rn Rn–1 = 0 (n ≥ 1);

 

Qn Qn–2 = Rn (n ≥ 2);

 

Pn Pn–5 = Qn (n ≥ 5).


 

 

Отсюда выводятся следующие рекуррентные соотношения:

 

R0 = 1, Rn = Rn–1 (n ≥ 1);

 

Qn = Rn (n < 2), Qn = Qn–2 + Rn (n ≥ 2);

 

Pn = Qn (n < 5), Pn = Pn–5 + Qn (n ≥ 5).

 

Последовательные вычисления можно свести в таблицу.

 

n
R
Q
P

 

Задача о «счастливых билетах». Автобусный билет с шестизначным номером считается «счастливым», если сумма первых трех цифр равна сумме последних трех цифр. Например, билет 054 342 «счастливый». Требуется найти число счастливых билетов. Считается, что допустимы любые шестизначные номера.

Пусть x1x2x3 y1y2y3 – номер билета. Билет счастливый, если

 

x1 + x2 + x3 = y1 + y2 + y3.

 

Заменив последние три цифры их дополнениями до 9, т. е. полагая x4 = 9 – y1; x5 = 9 – y2; x6 = 9 – y3, предыдущее уравнение можно переписать так:

x1 + x2 + x3 + x4 + x5 + x6 = 27. (19)

 

Задача о счастливых билетах может быть переформулирована теперь следующим образом: требуется


 

 

найти число целых решений уравнения (19), удовлетворяющих следующим условиям:

0 ≤ xi < 10, i = 1, 2,…, 6.

 

Рассмотрим более общую задачу. Требуется найти число целых решений следующей системы:

x1 + x2 +…+ xk = n; 0 ≤ xi < m, i = 1, 2,…, k. (20)

Обозначим число решений (20) через Cn(k, m) (число счастливых билетов в этих обозначениях равно C27(6, 10)). Если в выражении

(1 + z +…+zm–1)k

 

раскрыть скобки и привести подобные, то коэффициент при zn окажется равен числу способов представить n в виде суммы k слагаемых, которые могут принимать значения 1, 2,…, m – 1. Но это как раз и есть число Cn(k, m). Таким образом,

(1 + z +…+zm–1)k = n Cn(k,m)zn.

 

Суммируя геометрическую прогрессию в левой части равенства, получаем представление производящей функции чисел Cn(k, m) в свернутом виде:

(1 – zm)k(1 – z)–k = n Cn(k,m)zn.

 

По формулам бинома Ньютона имеем:

 


k
 − 


k


 

(1− z)−k


 

 ∑ (−1)s


 

z s ;


 

(1− z m )k


 

 ∑ (−1)t


 

ztm .


s s


t


  t  


 

 

После перемножения этих рядов получится ряд с

 

коэффициентами Cn(k, m). Следовательно,

 

 − k  k


Cn(k, m) = ∑


(−1)st


  . (21)


stmn


s  t


 

Используя формулу (21), заменяя s на n tm и

 


 

C
воспользовавшись соотношением

 

получаем


k −1

=C tm
k n tm −1


n tm k n


 

−1,


 


Cn(k, m) = ∑ (−1)2s t C s


C t =


(−1)t C k −1


C t .


 

 

s tm n


 

k s 1 k


tmn


 

k n tm −1 k


 

В частности, если m = 10, n = 27, то tm n при t = 0, 1, 2.

 

Следовательно,

 


C27(6, 10) =


C 5 C 0 – C 5


C1 + C 5 C 2


= 55252.


32 6


22 6


12 6


 

 



<== предыдущая лекция | следующая лекция ==>
Биномиальный ряд | Рекуррентные соотношения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.314 сек.