Algoritmo LLL

De testwiki
Ir a la navegación Ir a la búsqueda

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.[1] Dada una base 𝐁={𝐛1,𝐛2,,𝐛d} con coordenadas enteras n-dimensionales , de un retículo L en Rn con  dn, el algoritmo LLL devuelve una base del retículo LLL-reducida (pequeña, casi ortogonal) en tiempo

O(d5nlog3B)

donde B es la longitud más larga de los bi 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

𝐁={𝐛1,𝐛2,,𝐛n},

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

𝐁*={𝐛1*,𝐛2*,,𝐛n*},

y los coeficientes de Gram-Schmidt

μi,j=𝐛i,𝐛j*𝐛j*,𝐛j*, para cada 1j<in.

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

  1. (Tamaño reducido) Para 1j<in:|μi,j|0.5. 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 :δ𝐛k1*2𝐛k*2+μk,k12𝐛k1*2.

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 δ=34. Nótese que si bien el algoritmo de simplificación LLL está bien definido para δ=1, la complejidad de tiempo polinomial está garantizada solo para δ(0.25,1) .

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 ci>1 tal que el primer vector de la base no es más de c1 veces más largo que el vector más corto del retículo, el segundo vector de la base es igualmente c2 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[LLL].
  • 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

Plantilla:Listaref

Véase también

Bibliografía

Plantilla:Control de autoridades