Функції генерації корисні при розробці алгоритмів підрахунку. Тобто, не тільки коли ви шукаєте кількість об'єктів, що мають певну властивість, але і коли ви шукаєте спосіб перерахувати ці об’єкти (і, можливо, створити алгоритм для підрахунку об'єктів). Є дуже гарна презентація у главі 7 конкретної математики Рональда Грема, Дональда Кнута та Орена Паташника . Наведені нижче приклади - з цих книг (помилки та неясність - це мої).
Припустимо, ви шукаєте способи внесення змін із заданим набором монет. Наприклад, із поширеними номіналами США¹ можливі монети . Щоб дати ¢ 42 у зміні, одна з можливостей є [ 25 ] [ 10 ] [ 5 ] [ 1 ] [ 1 ] ; інша можливість - [ 10 ] [ 10 ] [ 10[1],[5],[10],[25],[100][25][10][5][1][1] . Ми писатимемо 42 ⟨ [ 25 ] [ 10 ] [ 5 ] [ 1 ] 2 ⟩ = ⟨ [ 10 ] 4 [ 1 ] 2 ⟩ . Більш загально, ми можемо записати формуючу функцію для всіх способів зміни змін:
H = ∑ h ≥ 0 ∑ q ≥ 0 ∑ d ≥ 0 ∑[10][10][10][10][1][1]42⟨[25][10][5][1]2⟩=⟨[10]4[1]2⟩
Більш технічно,H- термін у просторі рядів потужності над п’ятьма змінними[100],[25],[10],[5],[1]. Визначте значення мономера в цьому просторі за допомогою
H=∑h≥0∑q≥0∑d≥0∑n≥0∑p≥0[100]h[25]q[10]d[5]n[1]p
H[100],[25],[10],[5],[1]
Тоді способів дати
v центів зміни є число одночленним оцінка яких
v . Ми можемо виражати
Н поступово, спочатку записуючи шляхи
P, щоб змінити лише копійки, а потім
N⟨[100]h[25]q[10]d[5]n[1]p⟩=100h+25q+10d+5n+p
vvHPNдати зміни в копійках і нікелях тощо. (
увазі відсутність монети.)
P = I + [ 1 ] + [ 1 ] 2 + [ 1 ] 3 + … = II
Якщо ви хочете порахувати, а не просто перерахувати способи зміни, то існує простий спосіб використовувати отриманий нами офіційний ряд. Застосовуйте гомоморфізм
S:P=I+[1]+[1]2+[1]3+…=II−[1]N=(I+[5]+[5]2+[5]3+…)P=PI−[5]D=(I+[10]+[10]2+[10]3+…)N=NI−[10]Q=(I+[25]+[25]2+[25]3+…)D=DI−[25]H=(I+[100]+[100]2+[100]3+…)Q=QI−[100]
Коефіцієнт
X v в
S ( C ) - це кількість способів надання
v центів змін.
S:[1]↦X,[5]↦X5,[ 10 ] ↦ X10, [ 25 ] ↦ X25, [ 100 ] ↦ X100
ХvS( С)v
Більш складний приклад: припустимо, що ви хочете вивчити всі способи плитки прямокутників доміно 2 × 1. Наприклад, є два способи плитки прямокутника розміром 2 × 2, або з двома горизонтальними доміно, або з двома вертикальними доміно. Підрахувати кількість способів плитки прямокутника досить просто, але справа 3 × n швидко стає непомітною. Ми можемо перерахувати всі можливі нахили горизонтальної смуги висотою 3 шляхом склеювання доміно, що швидко дає повторювані візерунки:
{ U = o + L V + Γ Λ + ≡ U V = I2 × n3 × n
де кумедні форми являють собою елементарні доміно-композиції:o- не доміно,L- вертикальне доміно зверху лівої частини горизонтального доміно,
⎧⎩⎨⎪⎪⎪⎪⎪⎪U= o + L V+ Γ Λ + ≡ UV= ЯU+ =-VΛ =ЯU+-=Λ
оL - вертикальне доміно, вирівняне внизу смуги висотою 3,
Я - горизонтальне доміно, вирівняне з вершиною смуги плюс два горизонтальних доміно під ним та один крок праворуч тощо. Тут множення являє собою горизонтальне конкатенацію і не є комутативним, але між елементарними візерунками, що утворюють змінні, є рівняння у цій силовій серії. Як і раніше з монетами, ми можемо замінити
Xдля кожного доміно і отримати генеруючий ряд для кількості нахилівпрямокутника
3×(2n/3)(тобто коефіцієнт
X3k- кількість способів плитки a прямокутник площею
6к, який містить
3к-=Х3 × ( 2 п / 3 )Х3 к6 к3 к2 к
Знову читайте Конкретну математику для менш поспішної презентації.
¹ я знаю, що мій список неповний; Припустимо , спрощена США підходить для математичного examples.²
² Крім того , якщо мова йде вгору, припустимо , сферичні монети.
³ І краще набір.