Algoritmo LLL

En el mundo actual, Algoritmo LLL es un tema que ha capturado la atención de millones de personas. Desde su relevancia en la historia hasta sus aplicaciones en la actualidad, Algoritmo LLL ha sido objeto de estudio, debate y exploración en una variedad de campos. A lo largo de los años, se ha convertido en un elemento fundamental en nuestro día a día, influyendo tanto en nuestra cultura como en nuestra forma de vida. En este artículo, nos sumergiremos en el fascinante mundo de Algoritmo LLL, explorando sus orígenes, su impacto en la sociedad y las posibles implicaciones futuras.

El algoritmo de simplificación de bases de retículos de Lenstra–Lenstra–Lovász (LLL) es un algoritmo de simplificación de retículos de complejidad polinomial inventado por Arjen Lenstra, Hendrik Lenstra y László Lovász en 1982.​ Dada una base con coordenadas enteras n-dimensionales , de un retículo L en Rn con , el algoritmo LLL devuelve una base del retículo LLL-reducida (pequeña, casi ortogonal) en tiempo

donde B es la longitud más larga de los bajo la norma euclídea.

Las aplicaciones originales eran dar algoritmos de complejidad polinomial para factorizar polinomios que coeficientes racionales, para encontrar aproximaciones racionales simultáneas a los números reales, y para resolver el problema de la programación lineal entera en dimensiones fijadas.

Simplificación del LLL

La definición exacta de LLL-reducido es la siguiente: Dada una base

se definen su base ortogonal obtenida por el proceso de ortogonalización de Gram-Schmidt

y los coeficientes de Gram-Schmidt

, para cada .

Entonces la base es LLL-reducida si existe un parámetro en (0.25,1] tal que se cumplen las siguientes condiciones:

  1. (Tamaño reducido) Para . Por definición, esta propiedad garantiza la reducción de la longitud de la base.
  2. (Condición de Lovász) Para k = 2,3,..,n .

Llegados a este punto, estimando el valor del parámetro, podemos concluir cómo de bien se reduce la base. A mayores valores de mayores reducciones de la base. Inicialmente, A. Lenstra, H. Lenstra and L. Lovász demostraron el algoritmo de simplificación LLL algoritmo para . Nótese que si bien el algoritmo de simplificación LLL está bien definido para , la complejidad de tiempo polinomial está garantizada solo para .

El algoritmo LLL calcula bases LLL-reducidas. No se conoce un algoritmo eficiente que calcule una base cuyos vectores sean tan pequeños como sea posible para retículos de dimensiones mayores que 4. Sin embargo, una base LLL-reducida es casi tan pequeña como sea posible, en le sentido de que hay unas cotas absolutas tal que el primer vector de la base no es más de veces más largo que el vector más corto del retículo, el segundo vector de la base es igualmente más largo como máximo que el segundo vector más corto, y así sucesivamente.

Implementaciones en lenguajes computacionales

LLL está implementado en

  • Arageli como la función lll_reduction_int.
  • fpLLL como implementación que se ejecuta en local.
  • GAP como la función LLLReducedBasis.
  • Macaulay2 como la función LLL en el paquete LLLBases.
  • Magma como las funciones LLL y LLLGram (tomando una matriz de Gram).
  • Maple como la función IntegerRelations.
  • Mathematica como la función LatticeReduce.
  • Number Theory Library (NTL) como la función LLL.
  • PARI/GP como la función qflll.
  • Pymatgen como la función analysis.get_lll_reduced_lattice.
  • Sage como el método LLL llevado a cabo por fpLLL y NTL.

Referencias

Véase también

Bibliografía