Algoritmo de Pohlig-Hellman

En la teoría numérica, el algoritmo Pohlig–Hellman a veces acreditaba ya que el algoritmo Silver–Pohlig–Hellman es un algoritmo con destino especial para calcular logaritmos distintos en un grupo multiplicative cuyo pedido es un número entero liso.

El algoritmo fue descubierto por Roland Silver, pero primero publicado por Stephen Pohlig y Martin Hellman (independiente de Silver).

Explicaremos el algoritmo ya que se aplica al grupo Z consistiendo en todos los elementos de Z que son coprime a p y lo dejan al lector avanzado para ampliar el algoritmo a otros grupos usando el teorema de Lagrange.

Números enteros de:Input p, g, e.

:Output Un Número entero x, tal que eg (mod p) (si uno existe).

:#Determine factorization principal del pedido del grupo (el totient en este caso): (Todos los p se consideran pequeños ya que el pedido del grupo es liso.)

:#From el teorema del resto chino será suficiente determinar los valores de x modulo cada poder principal que divide el pedido del grupo. Suponga para la ilustración que p divide este pedido pero p no hace. Entonces tenemos que determinar x mod p, es decir tenemos que saber el coeficiente que termina b en la extensión baja-p de x, es decir en la extensión x = un p + b. Podemos encontrar el valor de b examinando todos los valores posibles entre 0 y p-1. (También podemos usar un algoritmo más rápido como el paso de gigante del paso bebé cuando el pedido del grupo es principal.) La llave detrás del examen es que:

Los \begin {alinean} e^ {\\varphi (p)/p_1} & \equiv (G^x) ^ {\\varphi (p)/p_1} \pmod {p} \\

& \equiv (g^ {\\varphi (p)}) ^ {a_1} g^ {b_1\varphi (p)/p_1} \pmod {p} \\

& \equiv (g^ {\\varphi (p)/p_1}) ^ {b_1} \pmod {p }\

Los \end {alinean }\

</matemáticas> (el teorema de Euler que usa). Con todo lo demás ahora conocido, podemos intentar cada valor de b para ver que hace la ecuación ser verdad; exactamente uno trabajará, y que b es el valor de x modulo p. (Una excepción se levanta si desde entonces el pedido de g es menos que φ (p). La conclusión en este caso depende del valor de a la izquierda: si esta cantidad no es 1, entonces ninguna solución x existe; si en cambio esta cantidad también es igual a 1, habrá más de una solución para x menos que φ (p), pero ya que intentamos devolver la sólo una solución x, podemos usar b=0.)

:#The misma operación se realiza ahora para p a través de p. Una modificación menor es necesaria donde un número primo se repite. Suponga que vemos p para el (k + 1) tiempo de S. Entonces ya sabemos c en la ecuación x = un p + b p + c, y encontramos b el mismo camino que antes.

:# Con todo el b conocido, tenemos bastantes congruencias simultáneas para determinar x utilización del teorema del resto chino.

Complejidad

La complejidad del tiempo del caso peor del algoritmo Pohlig–Hellman es para un grupo de la orden n, pero es más eficiente si el pedido es liso. Expresamente, si es factorization principal de n, entonces la complejidad se puede declarar como

.

Notas



Buscar