[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [obm-l] Combinatória



On Tue, Sep 28, 2004 at 01:54:07PM -0300, Nicolau C. Saldanha wrote:
> > Vocês conhecem a fórmula para resolver
> > 
> > x[1] + x[2] + x[3] + ... + x[n] = k, em que 
> > 
> > 0 =< x[1] , x[2] , x[3] , ... , x[n] =< a (a < k) ?
> > 
> > Um exemplo do caso geral acima :
> > 
> > Resolva x + y + w + z = 27 sendo que o maior valor que as incógnitas podem 
> > assumir seja 9, ou seja, 
> > 0 =< x, y, w, z =< 9
> 
> Eu acho que a pergunta não está muito bem formulada. Eu adivinho que você
> quer saber *quantas* soluções *inteiras* a equação tem. É isso? Se for,
> não é difícil.
> 
> O número de soluções de x1 + x2 + ... + xn = k, xi >= 0 é binom(k+n-1,n-1).
> Agora é só fazer inclusão e exclusão: o número de soluções de
> x1 + x2 + ... + xn = k, xi >= 0, x1 >= b é binom(k-b+n-1,n-1):
> basta fazer y1 = x1 - b e considerar o problema y1 + x2 + ... + xn = k - b.
> Assim, para calcular o número de soluções com 0 <= xi < b precisamos tirar 
> fora estas soluções, com o cuidado usual do somar de volta o que for excluído
> duas vezes e assim por diante:
> binom(k+n-1,n-1) - n*binom(k-b+n-1,n-1) + binom(n,2)*binom(k-2b+n-1,n-1) -...
> = Soma_{i >= 0} (-1)^i binom(n,i) binom(k - i*b + n - 1, n - 1)

O que eu fiz está incompleto: faltou especificar o valor máximo de i.
É bem claro pelo raciocínio que devemos ter k - i*b >= 0.
Se definirmos binom(x,y) da forma usual como um polinômio em x
de grau y para cada valor fixo de y então a soma completa dá zero,
como podemos facilmente provar.
Assim, a resposta é
Soma_{i >= 0, i <= k/b} (-1)^i binom(n,i) binom(k - i*b + n - 1, n - 1)
ou
- Soma_{i >= 0, i > k/b} (-1)^i binom(n,i) binom(k - i*b + n - 1, n - 1)
Outra maneira de obter a segunda fórmula é observar que o número
de solucões para k é igual ao número de solucões para n*(b-1) - k.

No problema proposto com n = 4, k = 27, b = 10 a resposta é
binom(27+4-1,4-1) - 4*binom(27-10+4-1,4-1) + 6*binom(27-2*10+4-1,4-1) =
binom(30,3) - 4*binom(20,3) + 6*binom(10,3) =
4060 - 4*1140 + 6*120 = 220.

Observem que a segunda fórmula permite chegar à resposta mais rapidamente:
4*binom(0,3) - binom(-10,3) = 4*0 + 220 = 220.

Isto pode ser confirmado procurando o coeficiente de x^27 (ou de x^9)
em ((x^10-1)/(x-1))^4 =

 36      35       34       33       32       31       30        29        28
x   + 4 x   + 10 x   + 20 x   + 35 x   + 56 x   + 84 x   + 120 x   + 165 x

            27        26        25        24        23        22        21
     + 220 x   + 282 x   + 348 x   + 415 x   + 480 x   + 540 x   + 592 x

            20        19        18        17        16        15        14
     + 633 x   + 660 x   + 670 x   + 660 x   + 633 x   + 592 x   + 540 x

            13        12        11        10        9        8        7
     + 480 x   + 415 x   + 348 x   + 282 x   + 220 x  + 165 x  + 120 x

           6       5       4       3       2
     + 84 x  + 56 x  + 35 x  + 20 x  + 10 x  + 4 x + 1


[]s, N.
=========================================================================
Instruções para entrar na lista, sair da lista e usar a lista em
http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
=========================================================================