fbpx
Wikipedia

Exponenciación binaria

La exponenciación binaria es un algoritmo utilizado para calcular de forma rápida grandes potencias enteras de un número dado. También es conocido como potenciación por cuadrados o elevar al cuadrado y multiplicar. Implícitamente utiliza la expansión binaria del exponente. Es de uso bastante regular en aritmética modular. Este algoritmo es similar al de la duplicación en la multiplicación.

Versión recurrente

Fundamentos

El algoritmo está basado en las siguientes tres propiedades de la potencia:

(1) 

(2) 

(3) 

Usando   y   en la ecuación (2) se sigue que  . Tomando   y   en la ecuación (3) se obtiene que  .

Algoritmo

El siguiente algoritmo recursivo calcula   para un natural   dado:

 

Comparado con el método original de multiplicar   por sí mismo   veces, este algoritmo sólo utiliza O(log n) multiplicaciones y acelera el cálculo de   tremendamente; más o menos de la misma forma que el algoritmo de la multiplicación acelera una multiplicación sobre el método más lento de realizar una suma repetida.

Aplicaciones

La misma idea permite el cálculo rápido de potencias muy grandes en módulo. Especialmente en criptografía, es útil calcular potencias en el anillo de los enteros módulo q.

La idea puede ser usada también para computar potencias de números enteros en un semigrupo, usando la regla

Potencia(x, -n) = (Potencia(x, n))-1.

Este método funciona en cualquier semigrupo, y es usado frecuentemente para calcular potencias de matrices.

Por ejemplo, la evaluación de

13789722341 (mod 2345)

tomaría mucho tiempo y espacio de almacenamiento si el método ingenuo es usado: calcular 13789722341 y tomar el residuo cuando es dividido por 2345. Incluso usando un método más efectivo tomará tiempo considerable: elevar 13789 al cuadrado , tomar el residuo cuando se divide por 2345, multiplicar el resultado por 13789, y así sucesivamente. Este proceso realizará 722340 multplicaciones modulares. Este algoritmo está basado en la observación que 13789722341 = 13789(137892)361170. Entonces, si se calcula 137892, el cálculo completo tomaría 361170 multiplicaciones modulares. Esta es una ganancia en un factor de dos. Pero como el nuevo problema sigue siendo similar al anterior, se puede aplicar la observación nuevamente, reduciendo a la mitad la cantidad, aproximadamente.

La aplicación sucesiva de este algoritmo es equivalente a descomponer el exponente (convirtiéndolo a base binaria) en una secuencia de cuadrados y multiplicaciones: por ejemplo

x13 = x1101bin
= x(1*2^3 + 1*2^2 + 0*2^1 + 1*2^0)
= x1*2^3 * x1*2^2 * x0*2^1 * x1*2^0
= x2^3 * x2^2 * 1 * x2^0
= x8 * x4 * x1
= (x4)2 * (x2)2 * x
= (x4 * x2)2 * x
= ((x2)2 * x2)2 * x
= ((x2 * x)2)2 * x       → algoritmo necesita sólo 5 multiplicaciones en vez de 13 - 1 = 12

Algunos ejemplos más:

  • x10 = ((x2)2*x)2 porque 10 = (1,010)2 = 23+21, algoritmo necesita 4 multiplicaciones en vez de 9
  • x100 = (((((x2*x)2)2)2*x)2)2 porque 100 = (1,100,100)2 = 26+25+22, algoritmo necesita 8 multiplicaciones en vez de 99
  • x1,000 = ((((((((x2*x)2*x)2*x)2*x)2)2*x)2)2)2 porque 103 = (1,111,101,000)2, algoritmo necesita 14 multiplicaciones en vez de 999
  • x1,000,000 = ((((((((((((((((((x2*x)2*x)2*x)2)2*x)2)2)2)2)2*x)2)2)2*x)2)2)2)2)2)2 porque 106 = (11,110,100,001,001,000,000)2, algoritmo necesita 25 multiplicaciones
  • x1,000,000,000 = ((((((((((((((((((((((((((((x2*x)2*x)2)2*x)2*x)2*x)2)2)2*x)2*x)2)2*x)2)2*x)2*x)2)2)2*x)2)2*x)2)2)2)2)2)2)2)2)2 porque 109 = (111,011,100,110,101,100,101,000,000,000)2, algoritmo necesita 41 multiplicaciones

Véase también

Enlaces externos

  •   Datos: Q864127

exponenciación, binaria, exponenciación, binaria, algoritmo, utilizado, para, calcular, forma, rápida, grandes, potencias, enteras, número, displaystyle, dado, también, conocido, como, potenciación, cuadrados, elevar, cuadrado, multiplicar, implícitamente, uti. La exponenciacion binaria es un algoritmo utilizado para calcular de forma rapida grandes potencias enteras de un numero x displaystyle x dado Tambien es conocido como potenciacion por cuadrados o elevar al cuadrado y multiplicar Implicitamente utiliza la expansion binaria del exponente Es de uso bastante regular en aritmetica modular Este algoritmo es similar al de la duplicacion en la multiplicacion Indice 1 Version recurrente 1 1 Fundamentos 1 2 Algoritmo 2 Aplicaciones 3 Vease tambien 4 Enlaces externosVersion recurrente EditarFundamentos Editar El algoritmo esta basado en las siguientes tres propiedades de la potencia 1 x 1 x displaystyle x 1 x 2 x a b x a x b displaystyle x a b x a x b 3 x a b x a b displaystyle x a b left x a right b Usando a n 1 displaystyle a n 1 y b 1 displaystyle b 1 en la ecuacion 2 se sigue que x n x n 1 x displaystyle x n x n 1 x Tomando a n 2 displaystyle textstyle a frac n 2 y b 2 displaystyle b 2 en la ecuacion 3 se obtiene que x n x n 2 2 displaystyle x n left x frac n 2 right 2 Algoritmo Editar El siguiente algoritmo recursivo calcula x n displaystyle x n para un natural n displaystyle n dado x n x si n 1 x n 2 2 si n es par x x n 1 si n es impar displaystyle x n begin cases x amp mbox si n 1 left x frac n 2 right 2 amp mbox si n mbox es par x times x n 1 amp mbox si n mbox es impar end cases Comparado con el metodo original de multiplicar x displaystyle x por si mismo n 1 displaystyle n 1 veces este algoritmo solo utiliza O log n multiplicaciones y acelera el calculo de x n displaystyle x n tremendamente mas o menos de la misma forma que el algoritmo de la multiplicacion acelera una multiplicacion sobre el metodo mas lento de realizar una suma repetida Aplicaciones EditarLa misma idea permite el calculo rapido de potencias muy grandes en modulo Especialmente en criptografia es util calcular potencias en el anillo de los enteros modulo q La idea puede ser usada tambien para computar potencias de numeros enteros en un semigrupo usando la regla Potencia x n Potencia x n 1 Este metodo funciona en cualquier semigrupo y es usado frecuentemente para calcular potencias de matrices Por ejemplo la evaluacion de 13789722341 mod 2345 tomaria mucho tiempo y espacio de almacenamiento si el metodo ingenuo es usado calcular 13789722341 y tomar el residuo cuando es dividido por 2345 Incluso usando un metodo mas efectivo tomara tiempo considerable elevar 13789 al cuadrado tomar el residuo cuando se divide por 2345 multiplicar el resultado por 13789 y asi sucesivamente Este proceso realizara 722340 multplicaciones modulares Este algoritmo esta basado en la observacion que 13789722341 13789 137892 361170 Entonces si se calcula 137892 el calculo completo tomaria 361170 multiplicaciones modulares Esta es una ganancia en un factor de dos Pero como el nuevo problema sigue siendo similar al anterior se puede aplicar la observacion nuevamente reduciendo a la mitad la cantidad aproximadamente La aplicacion sucesiva de este algoritmo es equivalente a descomponer el exponente convirtiendolo a base binaria en una secuencia de cuadrados y multiplicaciones por ejemplo x13 x1101bin x 1 2 3 1 2 2 0 2 1 1 2 0 x1 2 3 x1 2 2 x0 2 1 x1 2 0 x2 3 x2 2 1 x2 0 x8 x4 x1 x4 2 x2 2 x x4 x2 2 x x2 2 x2 2 x x2 x 2 2 x algoritmo necesita solo 5 multiplicaciones en vez de 13 1 12Algunos ejemplos mas x10 x2 2 x 2 porque 10 1 010 2 23 21 algoritmo necesita 4 multiplicaciones en vez de 9 x100 x2 x 2 2 2 x 2 2 porque 100 1 100 100 2 26 25 22 algoritmo necesita 8 multiplicaciones en vez de 99 x1 000 x2 x 2 x 2 x 2 x 2 2 x 2 2 2 porque 103 1 111 101 000 2 algoritmo necesita 14 multiplicaciones en vez de 999 x1 000 000 x2 x 2 x 2 x 2 2 x 2 2 2 2 2 x 2 2 2 x 2 2 2 2 2 2 porque 106 11 110 100 001 001 000 000 2 algoritmo necesita 25 multiplicaciones x1 000 000 000 x2 x 2 x 2 2 x 2 x 2 x 2 2 2 x 2 x 2 2 x 2 2 x 2 x 2 2 2 x 2 2 x 2 2 2 2 2 2 2 2 2 porque 109 111 011 100 110 101 100 101 000 000 000 2 algoritmo necesita 41 multiplicacionesVease tambien EditarExponenciacion modularEnlaces externos EditarMethod of repeated squaring en PlanetMath Datos Q864127Obtenido de https es wikipedia org w index php title Exponenciacion binaria amp oldid 133315578, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos