Reorganización de sumas alternas de productos de coeficientes binomiales

la suma

k = 0 pag s ( 1 ) k ( norte k ) ( pag k s + norte 1 norte 1 ) ; norte > 0 , s > 0  y  0 pag norte s ,
con ( norte k ) que denota el coeficiente binomial, tiene la limitación de que implementado números enteros de tamaño fijo, hay casos en los que los términos individuales superan el tamaño del número entero aunque el resultado no lo haga. (Incluso suponiendo un cálculo ideal de coeficientes binomiales). ¿Hay alguna forma de reorganizar esa suma para evitar eso? Se puede suponer que el límite de tamaño entero es s norte , la suma de ese resultado para todos pag . Un resultado más fuerte sería que todos los términos sumados no excedan su suma en valor absoluto. Un resultado aún más sólido sería que todos los términos sumados no fueran negativos. Pero incluso el caso más débil está bien.

Bienvenido a MSE. Para obtener información básica sobre cómo escribir matemáticas en este sitio, consulte, por ejemplo , la ayuda básica sobre la notación mathjax , el tutorial y la referencia rápida de mathjax , el tutorial de matemáticas del metasitio principal y la edición de ecuaciones .
Las sumas alternas como esta a menudo se pueden interpretar como una fórmula de inclusión-exclusión y se pueden simplificar a una expresión más simple de coeficientes binomiales. Vea esta respuesta reciente para una suma alterna que se parece mucho a la suya.

Respuestas (3)

No puedo responder a su pregunta exactamente, pero asumiendo que está tratando de calcular esta suma mientras evita el desbordamiento de enteros, aquí hay un truco que podría funcionar. Dejar a k ser el valor absoluto de la k t h sumando en su suma. Puedes probar que los números a k aumentar hasta un punto, y luego disminuir después. Esto implica que su suma alterna está limitada arriba por el mayor a k . Alquiler metro = máximo k a k , puedes calcular metro por adelantado, y luego calcula la suma con todas las sumas realizadas módulo metro . Esto asegura que nunca tenga cálculos parciales más grandes que metro , sin dejar de dar la respuesta correcta.

Esa es una idea muy útil. Puedo mejorarlo en mi caso particular sabiendo que la suma de todas esas sumas (que son todas positivas) es s norte , y s norte no se desborda en mi aplicación, por lo que podría calcular cada término módulo s norte . Lo cual no es trivial en el marco que tengo, pero vale la pena seguirlo.

Si el índice de suma k subió a norte en lugar de pag / s norte , sería la fórmula de inclusión-exclusión para el número de ( norte 1 ) -subconjuntos de { 1 , , pag + norte 1 } que contienen al menos un elemento de cada uno de los siguientes norte intervalos disjuntos:

{ 1 , , s } { s + 1 , , 2 s } { ( norte 1 ) s + 1 , , norte s }
El número de tales subconjuntos es claramente 0 porque norte > norte 1 . Como en la respuesta vinculada, puede generalizar reemplazando el norte 1 con cualquier número menor que norte y seguir obteniendo lo mismo 0 resultado.

Entonces tu suma es

k = 0 pag / s ( 1 ) k ( norte k ) ( pag k s + norte 1 norte 1 ) = k = pag / s + 1 norte ( 1 ) k ( norte k ) ( pag k s + norte 1 norte 1 )

Ese resultado no es 0. En realidad, es el número de formas en que la suma de n dados de s lados, cada uno numerado de 0 a s-1, es p.
OK, estaba resumiendo k = norte , pero su suma se trunca en pag / s norte .

Si sabe que la respuesta final se ajusta al tamaño entero fijo, entonces no tiene que preocuparse por el desbordamiento intermedio. Cálculo con, digamos, 64 -bit enteros es equivalente al módulo de cálculo 2 64 . Entonces, incluso si las respuestas intermedias se desbordan y le dan algo que solo es el módulo correcto 2 64 todavía garantiza que la respuesta final es correcta módulo 2 64 , que será realmente correcto.

Así por ejemplo en 8 -bit aritmética entera que puedo calcular

100 + 200 50 150
y obten 100 , a pesar de que las sumas parciales no encajan en 8 bits:

  • con sin firmar 8 -bit enteros, 100 + 200 vendría a 44 , restando 50 rendiría 250 , y restando 150 rendiría 100 .
  • con firmado 8 enteros de -bit, los términos individuales ni siquiera cabrían, y estaríamos calculando 100 + ( 56 ) 50 ( 106 ) . Las sumas parciales serían 100 + ( 56 ) = 44 , 44 50 = 6 , y 6 ( 106 ) = 100 .
Desafortunadamente, por razones que van más allá de las matemáticas puras, no es tan simple como eso poder confiar en el ajuste desbordante correctamente en el entorno que estoy usando. Pero el módulo es el camino a seguir, como lo he implementado en base a otra respuesta. Pero luego resulta que necesitas calcular el módulo de coeficientes binomiales lo que sea que uses (usé s norte ) y eso no se puede hacer simplemente desbordando. Usé una sugerencia de otro lugar para usar una versión en caché de la relación de recurrencia aditiva para eso, nuevamente módulo s norte .
Es cierto que no es fácil calcular un coeficiente binomial que se ajuste a un número entero de 64 bits cuando los pasos intermedios para encontrarlo no se ajustan. si al menos k ! ( norte k ) Si todavía fuera lo suficientemente pequeño, sería fácil, pero más allá de eso, es posible que deba hacer algo más complicado.