Генерация функций полезна при разработке алгоритмов подсчета. То есть не только когда вы ищете количество объектов, имеющих определенное свойство, но и когда вы ищете способ перечислить эти объекты (и, возможно, сгенерировать алгоритм для подсчета объектов). В главе 7 « Конкретной математики » есть очень хорошая презентация Рональда Грэма, Дональда Кнута и Орен Паташник . Приведенные ниже примеры взяты из этих книг (ошибки и отсутствие ясности - мои).
Предположим, что вы ищете способы внести изменения с помощью данного набора монет. Например, с обычными номиналами в США¹ возможны монеты . Чтобы дать ¢ 42 в изменении, одна возможность - ; другая возможность - . Мы напишем . В более общем смысле, мы можем написать производящую функцию для всех способов изменения:
В более технических терминах - это термин в пространстве степенных рядов над пятью переменными[ 25 ] [ 10 ] [ 5 ] [ 1 ] [ 1 ] [ 10 ] [ 10 ] [ 10 ] [ 10 ] [ 1 ] [ 1 ] 42 ⟨ [ 25 ] [ 10 ][ 1 ] , [ 5 ] , [ 10 ] , [ 25 ] , [ 100 ][ 25 ] [ 10 ] [ 5 ] [ 1 ] [ 1 ][ 10 ] [ 10 ] [ 10 ] [ 10 ] [ 1 ] [ 1 ]Н = Σ ч ≥ 0 Σ Q ≥ 0 Σ d ≥ 0 Σ п ≥ 0 Σ р ≥ 0 [ 100 ] ч [ 25 ] д [ 10 ] d [ 5 ] n [ 1 ] p42 ⟨ [ 25 ] [ 10 ] [ 5 ] [ 1 ]2⟩ = ⟨ [ 10 ]4[ 1 ]2⟩
ЧАС= ∑h ≥ 0ΣQ≥ 0Σd≥0Σn ≥ 0Σp ≥ 0[ 100 ]час[ 25 ]Q[ 10 ]d[ 5 ]N[ 1]п
[ 100 ] , [ 25 ] , [ 10 ] , [ 5 ] , [ 1 ] ⟨ [ 100 ] ч [ 25 ] д [ 10 ] d [ 5 ] п [ 1 ] р ⟩ = 100 ч + 25 кв + 10 d + 5 n + p v v H PЧАС[ 100 ] , [ 25 ] , [ 10 ] , [ 5 ] , [ 1 ], Определите оценку монома в этом пространстве как
Тогда способы дать центов в изменении - это количество мономов, оценка которых . Мы можем выразить в инкрементной форме, сначала записав способы чтобы дать изменение только в копейках, затем способы чтобы дать изменение в пенни и никелях, и так далее. ( виду нет монеты.)
⟨ [ 100 ]час[ 25 ]Q[ 10 ]d[ 5 ]N[ 1]п⟩ = 100 ч + 25 кв+ 10 д+ 5 н + р
vvЧАСпI P = I + [ 1 ] + [ 1 ] 2 + [ 1 ] 3 + … = INяп= Я+ [ 1 ] + [ 1 ]2+ [ 1 ]3+ … = Яя- [ 1 ]N= ( Я+ [ 5 ] + [ 5 ]2+ [ 5 ]3+ … ) P= Pя- [ 5 ]D = ( я+ [ 10 ] + [ 10 ]2+ [ 10 ]3+ … ) N= Nя- [ 10 ]Q = ( я+ [ 25 ] + [ 25 ]2+ [ 25 ]3+ … ) D = Dя- [ 25 ]ЧАС= ( Я+ [ 100 ] + [ 100 ]2+ [ 100 ]3+ … ) Q = Qя- [ 100 ]
Если вы хотите сосчитать, а не просто перечислить способы внесения изменений, то существует простой способ использования полученных формальных рядов. Примените гомоморфизм
коэффициент в представляет количество способов дать центов в смену.
S:[ 1 ] ↦ X,[ 5 ] ↦ X5,[ 10 ] ↦ X10, [ 25 ] ↦ X25, [ 100 ] ↦ Х100
ИксvS( C)v
Более сложный пример: предположим, что вы хотите изучить все способы разбиения прямоугольников на 2 × 1 домино. Например, существует два способа наложить прямоугольник 2 × 2, либо с двумя горизонтальными домино, либо с двумя вертикальными домино. Подсчет количества способов разбить прямоугольник довольно прост, но случай быстро становится неочевидным. Мы можем перечислить все возможные наклоны горизонтальной полосы высотой 3, склеив домино вместе, что быстро дает повторяющиеся шаблоны:
2 × n3 × n
⎧⎩⎨⎪⎪⎪⎪⎪⎪U= o + L V+ Γ Λ + ≡ UВ= ЯU+ =-ВΛ =яU+-знак равноΛ
где забавные фигуры представляют элементарные композиции домино: - не домино, - вертикальное домино на вершине левой части горизонтального домино, - это вертикальное домино, выровненное по низу полосы высотой 3, - это горизонтальное домино, выровненное по верху полосы, плюс два горизонтальных домино под ним и один шаг вправо, и т. д. Здесь умножение представляет горизонтальную конкатенацию и не является коммутативным, но между элементарными образцами, которые образуют переменные в этом степенном ряду, существуют уравнения. Как и раньше с монетами, мы можем заменить для каждого домино и получить серию генерации для числа бросков
оLя-знак равноИкс3 × ( 2 н / 3 )Прямоугольник (т. Е. Коэффициент - это количество способов разбить прямоугольник площадью , который содержит домино и имеет ширину ). Эта серия также может использоваться более универсально; например, различая вертикальное и горизонтальное домино, мы можем подсчитать размеры мозаики с заданным количеством вертикальных и горизонтальных домино.
Икс3 к6 к3 к2 к
Снова, прочитайте Конкретную Математику для менее спешащего представления
¹ Я знаю , что мой список является неполным; предположим, что для математических примеров используется упрощенный метод США.
² Кроме того, если это подходит, предположим, что сферические монеты.
³ И лучше набрать текст.