filtro de Wiener es un filtro propuesto por Norbert Wiener en la década de 1940 y publicado en 1949. Su propósito es, utilizando métodos estadísticos, reducir el ruido presente en la señal de entrada de tal modo que la señal de salida del filtro se aproxime lo más posible (en el sentido cuadrático medio) a una señal deseada (sin ruido). El equivalente en tiempo discreto del trabajo de Wiener fue derivado independientemente por Kolmogorov y publicado en 1941. Por esto, la teoría es a veces referida como teoría de filtrado de Wiener-Kolmogorov.
La Firma de Lamport es un esquema de firma digital de un solo uso, inventada por Leslie Lamport en 1979.1 La firma se aplica sobre mensajes sin efectuar ninguna modificación previa de los mismos.
La esquema de firma de Lamport utiliza un juego de claves, compuesto por una clave privada y una clave pública. La clave privada es un conjunto de elementos privados. La clave pública es otro conjunto de elementos, formados, generalmente, por la aplicación de una función hash a cada elemento privado. Para firmar un documento, se aplica una función hash al documento del que se obtienen bits, y se utilizan para seleccionar elementos de la clave pública.
La firma de Lamport se debe utilizar una sola vez por cada juego de claves. Sin embargo, combinado el esquema de firma de Lamport con un Árbol de Merkle, un solo juego de claves podría usarse para firmar varios mensajes, lo que la convierte en un esquema de firma digital bastante eficiente.
El desarrollo potencial de la computación cuántica amenaza la seguridad de muchas formas comunes de criptografía como RSA, pero se cree que las firmas de Lamport estarían seguras si se usan, como componentes de las claves, valores de tamaño adecuado.
Descripción formal[editar]
A continuación se muestra una descripción de como funciona una firma Lamport, en notación matemática. Notar que el "mensaje" en esta descripción es un bloque de datos siendo posiblemente (pero no necesariamente) el resultado de aplicar una función hash al mensaje que realmente se quiere firmar.
Claves[editar]
Para y el firmante elige aleatoriamente y luego calcula .
La clave privada, , consiste en valores . La clave pública,, consiste en otros valores .
Firma de un mensaje[editar]
Sea el bloque descriptor del mensaje:
La firma del mensaje es:
.
Verificación de la firma[editar]
Quien necesite validar la firma debe verificar que:
para todo .
Se debe conservar los elementos privados que forman la firma, la clave pública y el mensaje original para futuras validaciones.
Para que Eva pueda falsificar una firma, debe poder invertir los valores de la clave pública. Y esto se asume como un problema computacionalmente inviable si se usan valores de tamaño adecuado.
Inconvenientes[editar]
El primer inconveniente es que se debe utilizar cada juego de claves una sola vez. La razón es que al firmar se hacen visibles los elementos privados que generaron los elementos públicos. Es decir, se exponen el 50% de los elementos que forman la clave privada, por lo tanto una vez que se firma un documento no se debe reutilizar el juego de clave pública y privada. Además se debe destruir el 50% remanente de elementos privados que forman la clave privada y no que fueron expuestos.
Otro inconvenientes es el de la excesiva longitud de las claves y la firma.
La fórmula de Bailey-Borwein-Plouffe (o fórmula BBP) permite calcular el enésimo dígito de π en base 2 (o 16) sin necesidad de hallar los precedentes, de una manera rápida y utilizando muy poco espacio de memoria en la computadora. Simon Plouffe junto con David Bailey y Peter Borwein hallaron esta fórmula el 19 de septiembre de 1995 usando un programa informático llamado PSLQ que busca relaciones entre números enteros.
La fórmula BBP[editar]
La demostración de esta fórmula se encuentra más abajo.
Uso de la fórmula para calcular los decimales del número π[editar]
A continuación se muestra el cálculo del enésimo dígito hexadecimal de π.
Primero se debe observar que el dígito ubicado en la posición N+1 de π en base 16 es el mismo que el primer dígito hexadecimal de 16Nπ. En efecto, como en la base 10, multiplicar un número en base 16 por 16 equivale a desplazar la coma decimal un lugar hacia la derecha. De esta manera, multiplicando por 16N, la coma se desplaza N lugares hacia la derecha. El problema original se reduce al cálculo del primer dígito de 16Nπ. Usando la fórmula BBP:
El cálculo de los primeros dígitos hexadecimales a la derecha de la coma de este número no es sencillo por dos razones: el número es muy grande y la suma es infinita.
Supongamos que . El cálculo de los primeros dígitos hexadecimales de SN(a) permitirá obtener los de 16Nπ, a través de la relación:
Descomponiendo la suma SN(a) en dos:
se pueden calcular AN(a) y BN(a) en forma independiente.
Cálculo de BN(a)[editar]
Aunque se trata de una suma infinita, es muy fácil de calcular, porque sus términos son pequeños y decrecen rápidamente.
- En efecto, el primer término de la suma es: . Si se busca el enésimo dígito hexadecimal de π (N = 1 000 000 000 por ejemplo), el primer término es mucho menor que 1.
- Además, cada término tiene un cero más a la derecha de la coma que el precedente, porque para k ≥ N, bk > 16 bk+1:
Finalmente, la suma BN(a) es de la forma (en el peor caso):
Por lo tanto, para obtener BN(a) con una precisión de P cifras detrás de la coma, es suficiente calcular los P primeros términos de la suma, agregándose algunos términos más para evitar errores que aparecen al realizar cálculos con valores aproximados.
Así, se calcula:
Como esta suma sólo posee una pequeña cantidad de términos, el tiempo que insume esta operación es insignificante para una computadora.
Cálculo de AN(a)[editar]
El problema para el cálculo de AN(a) es que los primeros términos son muy grandes (N cifras de base 16 antes de la coma). Sin embargo, al igual que las primeras cifras detrás de la coma, no importa la parte entera, que también es grande. Por lo tanto, puede "eliminarse" usando aritmética modular.
Toda la dificultad se reduce a hallar la parte fraccionaria de . Para ello realizamos la división entera de 16N-k por 8k+a:
Así
es menor que 1, por lo tanto, es la parte fraccional de .
Y
Así, se calcula: .
Utilizando el método de la exponenciación binaria, se calcula rápidamente (con un tiempo de ejecución de O(log2(N-k)).
Conclusión[editar]
Al fin y al cabo, para obtener los primeros dígitos de π base 16 (o 2), se deben calcular los primeros dígitos de:
con .
Complejidad de este método[editar]
Para calcular el enésimo dígito de π en base 16 (o el 4n-ésimo dígito en base 2):
Complejidad temporal[editar]
- Bn'(a) se calcula en complejidad lineal (O(1))
- An'(a) : utilizando el método de la exponenciación binaria, sus términos se calculan en O(log2(n)). Así la suma de n términos, An'(a), se calcula en O(n*log2(n)).
Así Sn'(a) se calcula en O(1)+O(n*log2(n))=O(n*log2(n)). Finalmente, πn se calcula en 4*O(n*log2(n))=O(n*log2(n)).
Por lo tanto el tiempo de cálculo es proporcional a n*log2(n), es decir, casi lineal.
Complejidad espacial[editar]
La complejidad en el uso de memoria es constante, ya que sólo se realizan sumas sucesivas de pequeños números (con una precisión de unos diez decimales es suficiente).
Fórmulas derivadas[editar]
Simon Plouffe[editar]
Fórmula original :
La última fórmula permite hallar dígitos aislados de en base 3 ó 9.
Viktor Adamchick y Stan Wagon (1997)[editar]
Fabrice Bellard[editar]
Los récords[editar]
Para poder comparar, hasta el año 2008 se habían obtenido los primeros 1,241 billones de decimales de π (aproximadamente 4,123 billones de bits).
- 7 de octubre de 1996 (Fabrice Bellard): dígito número 400 mil millones en base 2
- septiembre de 1997 (Fabrice Bellard) : billonésimo dígito en base 2
- febrero de 1999 (Colin Percival) : dígito número 40 billones en base 2
- 2001: dígito número 4000 billones en base 2
- 2011: dígito número 10 billones en base 10
Cálculo del enésimo decimal[editar]
Actualmente, no existe ninguna fórmula eficaz para hallar el enésimo decimal de π en base 10. Simon Plouffe ha desarrollado en diciembre de 1996, a partir de una serie muy antigua que calcula π basado en los coeficientes de binomio de Newton, un método para calcular cifras aisladas base 10, pero debido a su complejidad O(n3*log2(n)) pierde su utilidad en la práctica. Fabrice Bellard ha mejorado el algoritmo para alcanzar un nivel de complejidad en O(n2), pero no es suficiente para competir con los métodos convencionales que calculan todos los decimales.
Anexo: demostración de la fórmula BBP[editar]
Se demuestra primero el siguiente resultado general:
-
-
- por lo tanto:
-
Aplicando este resultado a la fórmula BBP:
Sustituyendo :
Descomponiendo en fracciones simples:
No hay comentarios:
Publicar un comentario