As funções de geração são úteis ao projetar algoritmos de contagem. Ou seja, não apenas quando você está procurando o número de objetos com uma determinada propriedade, mas também quando você está procurando uma maneira de enumerar esses objetos (e, talvez, gerar um algoritmo para contar os objetos). Há uma apresentação muito boa no capítulo 7 da Matemática Concreta, de Ronald Graham, Donald Knuth e Oren Patashnik . Os exemplos abaixo são desses livros (os erros e a falta de clareza são meus).
Suponha que você esteja procurando maneiras de fazer alterações com um determinado conjunto de moedas. Por exemplo, com denominações americanas comuns¹, as moedas possíveis são . Para dar 42 em mudança, uma possibilidade é ; outra possibilidade é . Escreveremos . De maneira mais geral, podemos escrever uma função geradora para todas as formas de alteração:
Em termos mais técnicos, é um termo no espaço da série de potências sobre as cinco variáveis[1],[5],[10],[25],[100][25][10][5][1][1][10][10][10][10][1][1]42⟨[25][10][5][1]2⟩=⟨[10]4[1]2⟩
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]. Defina a avaliação de um monômio nesse espaço por
em seguida, as maneiras de dar centavos na mudança são o número de monômios cuja valorização é . Podemos expressar de uma maneira incremental, primeiro escrevendo as maneiras de dar troco apenas em moedas de um centavo, depois as maneiras de dar a mudança de moedas de um centavo e centavo, e assim por diante. ( não dizer moeda.)
⟨[100]h[25]q[10]d[5]n[1]p⟩=100h+25q+10d+5n+p
vvHPNIP=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]
Se você deseja contar e não apenas enumerar as maneiras de alterar, existe uma maneira simples de usar a série formal que obtivemos. Aplique o homomorfismo
o coeficiente de em é o número de maneiras para dar centavos em mudança.
S:[1]↦X,[5]↦X5,[10]↦X10,[25]↦X25,[100]↦X100
XvS(C)v
Um exemplo mais difícil: suponha que você queira estudar todas as maneiras de ladrilhar retângulos com dominós 2 × 1. Por exemplo, existem duas maneiras de ladrilhar um retângulo 2 × 2, com dois dominós horizontais ou com dois dominós verticais. Contar o número de maneiras de ladrilhar um retângulo é bastante fácil, mas o caso se torna rapidamente não-óbvio. Podemos enumerar todas as inclinações possíveis de uma faixa horizontal de altura 3 juntando dominós, o que gera rapidamente padrões repetitivos:
2×n3×n
⎧⎩⎨⎪⎪⎪⎪⎪⎪U=o+LV+ΓΛ+≡UV=IU+=−VΛ=IU+−=Λ
onde as formas engraçadas representam arranjos elementares de dominó: não é dominó, é um dominó vertical no topo da parte esquerda de um dominó horizontal, é um dominó vertical alinhado com a parte inferior da faixa da altura 3, é um dominó horizontal alinhado com a parte superior da banda, mais dois dominós horizontais abaixo e um passo à direita, etc. Aqui, multiplicação representa concatenação horizontal e não é comutativa, mas existem equações entre os padrões elementares que formam variáveis nesta série de potências. Como antes, com as moedas, podemos substituir por cada dominó e obter uma série geradora pelo número de inclinações de um
oLI−=X3×(2n/3)Retângulo (ou seja, o coeficiente de é o número de maneiras de ladrilhar um retângulo da área , que contém dominós e tem a largura ). A série também pode ser usada de maneiras mais versáteis; por exemplo, ao distinguir dominós verticais e horizontais, podemos contar as inclinações com um determinado número de dominós verticais e horizontais.
X3k6k3k2k
Mais uma vez, leia Concrete Mathematics para uma apresentação menos apressada³.
¹ Eu sei que minha lista está incompleta; assuma um EUA simplificado adequado para exemplos matemáticos.²
² Além disso, se aparecer, assuma moedas esféricas.
³ E melhor digitado.