Tablas de diferencias
Sea
polinomio de grado
en
. Una tabla de diferencias se emplea para convertir una sucesión
en la sucesión de coeficientes
tales que
.
Obteniendo los coeficientes
en Haskell. Para este ejemplo utilizaremos el polinomio
.
Primero fabricamos una lista infinita con
para cada índice
en la lista:
> take 8 $ map (^4) [0..] [0,1,16,81,256,625,1296,2401]
El ‘take 8′ es solamente para no mostrar la lista completa.
Creamos ahora una función auxiliar ‘diferencia’ sobre la que vamos a iterar la lista infinita.
let diferencia (x:xs) = zipWith (-) xs (x:xs)
Lo que hace esta función es que, dada por ejemplo la lista
, y su ‘tail’
, resta término a término,
, efectivamente calculando la primera diferencia.
Ahora iteramos indefinidamente sobre la sucesión original (llamémosle xs); esto produce una lista [xs, diferencia xs, diferencia^2 xs, diferencia^3 xs...] de las i-ésimas diferencias de la sucesión.
Ver esa iteración no funcionaría, porque produce una lista infinita de listas infinitas, y nunca vamos a terminar de ver siquiera la primera. Pero para encontrar los coeficientes solamente hacen falta los ‘head’, o primeros términos. Entonces, inmediatamente después de la iteración, los pedimos con ‘map’:
> take 6 $ map head $ iterate diferencia $ map (^4) [0..] [0,1,14,36,24,0]
Podemos pedir más de seis coeficientes con ‘take’, pero no hace falta; dado que
es polinomio de grado 4, solamente hacen falta cinco términos, del sexto en adelante son todos cero.
En lugar de ‘head’ se puede usar ‘take 2′, por ejemplo, para ver más términos de cada lista infinita.
take 5 $ map (take 2) $ iterate diferencia $ map (^4) [0..] [[0,1],[1,15],[14,50],[36,60],[24,24]]
Finalmente, para verificar (empleando el ‘binomial’ en Math.Combinat.Numbers):
> let base x = map (binomial x) [0..] > let coeficientes = (map head $ iterate diferencias $ map (^4) [0..]) > sum $ take 6 $ zipWith (*) coeficientes (base 1200) 2073600000000 > 1200^4 2073600000000
‘base’ es la lista
, ‘coeficientes’ es lo mismo de arriba, el ‘sum $ zipWith (*)’ hace el producto interior.
. Se satisface trivialmente que todas las fichas son del mismo color.
un conjunto con
fichas. Si escondemos una, queda un conjunto
con
, que también tiene todas sus fichas del mismo color por el mismo motivo.
, entonces
,
(o viceversa), y la intersección debe ser vacía.
ya no se satisface que todas las fichas deban ser del mismo color; no hay buena base para este paso de inducción.