Algoritmo del canguro de Pollard

En teoría computacional de números y álgebra computacional , el algoritmo canguro de Pollard (y también el algoritmo lambda de Pollard , consulte la sección Título a continuación) es un algoritmo para resolver el problema del logaritmo discreto . El algoritmo fue propuesto en 1978 por el teórico de números J. M. Pollard en el mismo artículo [1] que su algoritmo ρ más conocido para resolver el mismo problema. Aunque Pollard describe la aplicación de este algoritmo al problema del logaritmo discreto en un grupo multiplicativo módulo a primo p, es, de hecho, un algoritmo general para logaritmos discretos: funcionará en cualquier grupo finito cíclico.

Algoritmo

Sea un grupo cíclico  finito de orden generado por un elemento , y buscamos el logaritmo discreto del elemento con respecto a la base . En otras palabras, estamos buscando , tal que . El algoritmo lambda nos permite buscar en algún subconjunto de . Podemos buscar el conjunto completo de logaritmos posibles asumiendo y , aunque el algoritmo ρ será más eficiente en este caso. Procedemos de la siguiente manera:

1. Elija un conjunto de enteros y defina un mapeo pseudoaleatorio .

2. Elija un número entero y calcule la secuencia de elementos del grupo de acuerdo con las fórmulas:

3. Calcular

.

Darse cuenta de

4. Comenzamos a calcular la segunda secuencia de elementos del grupo usando las fórmulas

y la correspondiente secuencia de números enteros según la fórmula

.

Darse cuenta de

por

5. Dejar de computar y cuando se cumpla alguna de las condiciones

A) para algunos . Si las secuencias y "chocan" de esta manera, tenemos: así que encontramos lo que queríamos. B) . Si esto sucede, el algoritmo no ha podido encontrar . Se puede hacer otro intento cambiando el conjunto y/o la asignación .

Dificultad

Pollard especificó una complejidad temporal para el algoritmo , basada en un razonamiento probabilístico, que se deriva de la suposición de que f actúa de forma pseudoaleatoria. Tenga en cuenta que en el caso en que el tamaño del conjunto { a , …, b } se mide en bits , lo cual es habitual en la teoría de la complejidad , el conjunto tiene el tamaño log( b  −  a ), por lo que la complejidad algorítmica es igual a , que es un exponente del tamaño del problema. Por esta razón, el algoritmo lambda de Pollard se considera un algoritmo de complejidad exponencial . Para ver un ejemplo de un algoritmo subexponencial en el tiempo, consulte Algoritmo de cálculo de pedidos .

Título

El algoritmo es conocido por dos nombres.

El primer nombre es el algoritmo "canguro" de Pollard . El nombre hace referencia a una analogía utilizada en el artículo donde se proponía el algoritmo. El artículo explica el algoritmo en términos del uso de un canguro domesticado para capturar uno salvaje . Como explicó Pollard [2] , esta analogía se inspiró en un artículo "encantador" publicado en el mismo número de Scientific American que la publicación del RSA Public Key Cryptosystem . El artículo [3] describe un experimento en el que "el costo energético de mover un canguro, medido en términos de consumo de oxígeno a varias velocidades, se determinó colocando un canguro en una cinta rodante ".

El segundo nombre es el algoritmo lambda de Pollard . Muy similar al nombre del otro algoritmo de Pollard para logaritmos discretos, el algoritmo ρ , y este nombre se debe a la similitud de visualización del algoritmo con la letra griega lambda ( ). La línea corta de la letra lambda corresponde a la secuencia . En consecuencia, la línea larga corresponde a la secuencia que "choca con" la primera secuencia (similar al encuentro de las líneas corta y larga de una letra).

Pollard prefiere usar el nombre de "algoritmo canguro" [4] para evitar confusiones con algunas versiones paralelas del algoritmo ρ, que también se denominan "algoritmos lambda".

Véase también

Notas

  1. Pollard, 1978 .
  2. Pollard, 2000 , pág. 437-447.
  3. Dawson, 1977 , pág. 78-89.
  4. jmptidcott2 . Consultado el 5 de noviembre de 2016. Archivado desde el original el 17 de agosto de 2016.

Literatura