参考文献:

  1. Lenstra A K, Lenstra H W, Lovász L. Factoring polynomials with rational coefficients[J]. Mathematische annalen, 1982, 261(ARTICLE): 515-534.

Hadamard比率

它用于描述 n n n维线性空间某一组基 B = { b 1 , b 2 , ⋯   , b n } B = \{b_1,b_2,\cdots,b_n\} B={b1,b2,,bn}的正交程度。

描述:
H ( B ) : = ∣ d e t ( B ) ∣ ∏ i = 1 n ∥ b i ∥ H(B) := \frac{|det(B)|}{\prod_{i=1}^{n}\|b_i\|} H(B):=i=1nbidet(B)
其中 d e t ( ⋅ ) det(\cdot) det()是行列式, ∥ ⋅ ∥ \|\cdot\| 是L2范数, ∣ ⋅ ∣ |\cdot| 是绝对值。
0 < H ( B ) ≤ 1 0 < H(B) \le 1 0<H(B)1
越接近1,基 B B B的正交性越好。若等于1,那么 B B B是正交基。

对于格 L L L,基底 B B B。乘以幺模矩阵 U U U,更换基底 B ′ = B U B'=BU B=BU,其Hadamard比率越大,格基向量的平均长度趋势下降(但不严格)

Gram-Schmidt正交化

给定 n n n个线性无关的向量 b 1 , b 2 , ⋯   , b n ∈ R n b_1,b_2,\cdots,b_n \in R^n b1,b2,,bnRn,其Gram-Schmidt正交化
b ~ i : = b i − ∑ j = 1 i − 1 μ i j b ~ j \tilde b_i := b_i - \sum_{j=1}^{i-1} \mu_{ij} \tilde b_j b~i:=bij=1i1μijb~j

b ~ i ⋅ b ~ j = 0 ,    0 ≤ j < i ≤ n \tilde b_i \cdot \tilde b_j = 0,\,\, 0 \le j <i \le n b~ib~j=0,0j<in
其中
μ i j : = b i ⋅ b ~ j b ~ j ⋅ b ~ j \mu_{ij} := \frac{b_i \cdot \tilde b_j}{\tilde b_j \cdot \tilde b_j} μij:=b~jb~jbib~j
是向量 b i b_i bi b ~ j \tilde b_j b~j方向的投影。

Lenstra-Lenstra-Lovász格基约化

LLL算法约化的过程,实际是尽可能用格基去贴近线性空间的正交基的过程。

对于格 L L L的一组劣质基 { b 1 ′ , b 2 ′ , ⋯   , b n ′ } \{b_1',b_2',\cdots,b_n'\} {b1,b2,,bn},LLL算法的输出是一组优质基 { b 1 , b 2 , ⋯   , b n } \{b_1,b_2,\cdots,b_n\} {b1,b2,,bn},并满足如下条件:

  • 令优质基 { b 1 , b 2 , ⋯   , b n } \{b_1,b_2,\cdots,b_n\} {b1,b2,,bn}的Gram-Schmidt正交基为 { b ~ 1 , b ~ 2 , ⋯   , b ~ n } \{\tilde b_1,\tilde b_2,\cdots,\tilde b_n\} {b~1,b~2,,b~n}

  • Size条件
    μ i j ∈ [ − 1 2 , 1 2 ] \mu_{ij} \in [-\frac{1}{2}, \frac{1}{2}] μij[21,21]

  • Lovász条件
    ∥ b ~ k + 1 ∥ 2 ≥ ( δ − μ k + 1 , k 2 ) ⋅ ∥ b ~ k ∥ 2 \|\tilde b_{k+1}\|^2 \ge (\delta - \mu_{k+1,k}^2) \cdot \|\tilde b_k\|^2 b~k+12(δμk+1,k2)b~k2
    这是一个有序性条件,适用于任意 1 4 < δ < 1 \dfrac{1}{4} < \delta < 1 41<δ<1,常常取 δ = 3 4 \delta = \dfrac{3}{4} δ=43

  • 这种优质基称为 δ − L L L \delta-LLL δLLL约简基,满足:
    ∥ b 1 ∥ ≤ ( 2 4 δ − 1 ) n − 1 λ 1 ( L ) \|b_1\| \le (\frac{2}{\sqrt{4 \delta -1}})^{n-1} \lambda_1(L) b1(4δ1 2)n1λ1(L)
    若取 δ = 3 4 \delta = \dfrac{3}{4} δ=43,那么
    ∥ b 1 ∥ ≤ 2 n − 1 2 λ 1 ( L ) \|b_1\| \le 2^\frac{n-1}{2} \lambda_1(L) b122n1λ1(L)
    这是 S V P SVP SVP问题的 γ = 2 n − 1 2 \gamma = 2^\frac{n-1}{2} γ=22n1近似解。

对于格 L L L的优质基 { b 1 , b 2 , ⋯   , b n } \{b_1,b_2,\cdots,b_n\} {b1,b2,,bn},若以正交基 { b ~ 1 , b ~ 2 , ⋯   , b ~ n } \{\tilde b_1,\tilde b_2,\cdots,\tilde b_n\} {b~1,b~2,,b~n}的标准化为基底,那么可以表示为矩阵 B B B
B = { ∥ b ~ 1 ∥ μ 2 , 1 ∥ b ~ 1 ∥ ⋯ ⋯ μ n , 1 ∥ b ~ 1 ∥ 0 ∥ b ~ 2 ∥ μ 3 , 2 ∥ b ~ 2 ∥ ⋯ μ n , 2 ∥ b ~ 2 ∥ ⋮ ⋱ ⋮ 0 ⋯ ⋯ ∥ b ~ n − 1 ∥ μ n , n − 1 ∥ b ~ 2 ∥ 0 ⋯ ⋯ 0 ∥ b ~ n ∥ } B = \begin{Bmatrix} \|\tilde b_1\| & \mu_{2,1} \|\tilde b_1\| & \cdots & \cdots & \mu_{n,1} \|\tilde b_1\| \\ 0 & \|\tilde b_2\| & \mu_{3,2} \|\tilde b_2\| & \cdots & \mu_{n,2} \|\tilde b_2\| \\ \vdots & & \ddots & & \vdots \\ 0 & \cdots & \cdots & \|\tilde b_{n-1}\| & \mu_{n,n-1} \|\tilde b_2\| \\ 0 & \cdots & \cdots & 0 & \|\tilde b_{n}\| \\ \end{Bmatrix} B=b~1000μ2,1b~1b~2μ3,2b~2b~n10μn,1b~1μn,2b~2μn,n1b~2b~n
Size条件意味着,上三角矩阵 B B B的非枢轴元素绝对值大小不超过枢轴元素的一半。

Lovász条件意味着, B B B对角线上的 2 × 2 2 \times 2 2×2子矩阵
[ ∥ b ~ k ∥ μ k + 1 , k ∥ b ~ k ∥ 0 ∥ b ~ k + 1 ∥ ] \begin{bmatrix} \|\tilde b_k\| & \mu_{k+1,k} \|\tilde b_k\| \\ 0 & \|\tilde b_{k+1}\| \\ \end{bmatrix} [b~k0μk+1,kb~kb~k+1]
它的第二列不比第一列短很多。
事实上, b ~ k \tilde b_k b~k b k b_k bk S p a n ( b ~ 1 , ⋯   , b ~ k − 1 ) Span(\tilde b_1,\cdots,\tilde b_{k-1}) Span(b~1,,b~k1)的正交补空间上投影, b ~ k + 1 + μ k + 1 , k ⋅ b ~ k \tilde b_{k+1} + \mu_{k+1,k} \cdot \tilde b_k b~k+1+μk+1,kb~k b k + 1 b_{k+1} bk+1 S p a n ( b ~ 1 , ⋯   , b ~ k − 1 ) Span(\tilde b_1,\cdots,\tilde b_{k-1}) Span(b~1,,b~k1)的正交补空间上投影。

LLL算法

算法描述

  1. 输入格 L L L的一组基 { b 1 , b 2 , ⋯   , b n } \{b_1,b_2,\cdots,b_n\} {b1,b2,,bn}
  2. 设置 k = 2 k=2 k=2,当 k ≤ n k \le n kn,循环执行:
    1. 如果 k = 2 k=2 k=2,那么令 b ~ 1 = b 1 \tilde b_1 = b_1 b~1=b1
    2. 对于 j = k − 1 , ⋯   , 1 j=k-1,\cdots,1 j=k1,,1,依次计算 b k = b k − ⌊ μ k j ⌉ b j b_k = b_k - \lfloor \mu_{kj} \rceil b_j bk=bkμkjbj
    3. 计算 b ~ k ← G r a m S c h m i d t ( { b ~ 1 , ⋯   , b ~ k − 1 , b k } ) \tilde b_k \leftarrow GramSchmidt(\{\tilde b_1,\cdots,\tilde b_{k-1},b_k\}) b~kGramSchmidt({b~1,,b~k1,bk})
    4. 如果 ∥ b ~ k ∥ 2 ≥ ( δ − μ k , k − 1 2 ) ∥ b ~ k − 1 ∥ 2 \|\tilde b_k \|^2 \ge (\delta - \mu_{k,k-1}^2) \|\tilde b_{k-1} \|^2 b~k2(δμk,k12)b~k12,那么令 k = k + 1 k=k+1 k=k+1
    5. 否则,交换 b k − 1 b_{k-1} bk1 b k b_k bk,设置 k = max ⁡ ( k − 1 , 2 ) k=\max(k-1,2) k=max(k1,2)
  3. 输出 δ − L L L \delta-LLL δLLL约简基 { b 1 , b 2 , ⋯   , b n } \{b_1,b_2,\cdots,b_n\} {b1,b2,,bn}

算法解读

2.1行,暂时选取第一个向量作为Gram-Schmidt正交化的起始向量。

2.2行,前 k − 1 k-1 k1个向量 b j b_j bj近似于 b ~ j \tilde b_j b~j,迭代约简基向量 b k b_k bk;注意 j j j的顺序 (这关乎算法正确性?),以及 μ k j \mu_{kj} μkj需要实时计算。作用:使满足Size条件。

2.3行,更新前 k k k个Gram-Schmidt正交基;由于只有 b k b_k bk改变了,更新 b ~ k \tilde b_k b~k即可。

2.4行,计算Lovász条件,若满足条件则继续约简下一个向量。

2.5行,不满足条件时,交换相邻的基向量;这一操作不改变前 k − 2 k-2 k2个Gram-Schmidt正交基以及它们的Lovász条件,但这使得第 k k k步满足Lovász条件成为可能。作用:使得新的 b ~ k − 1 \tilde b_{k-1} b~k1的范数小于旧的 b ~ k − 1 \tilde b_{k-1} b~k1范数的 δ \delta δ倍,格基缩短。

事实上,如果前 k − 1 k-1 k1步满足Lovász条件但第 k k k步新加入的基 b ∗ b^* b不满足Lovász条件,那么调整基的排列顺序,存在 k ′ < k k' < k k<k,使得前 k ′ k' k个基以及基 b ∗ b^* b满足Lovász条件。

算法复杂度

LLL算法是属于概率多项式时间的。证明过程略。
log ⁡ 1 / δ D B ≤ 1 log ⁡ 1 / δ ⋅ n ( n − 1 ) 2 ⋅ log ⁡ ( max ⁡ ∥ b i ∥ ) \log_{1/\sqrt \delta} D_{B} \le \frac{1}{\log 1/\sqrt \delta} \cdot \frac{n(n-1)}{2} \cdot \log(\max\|b_i\|) log1/δ DBlog1/δ 12n(n1)log(maxbi)
其中 D B D_B DB是格基 B B B的“potential function”,将格基映射到某个正数,用于描述算法迭代过程中的某些特征的衰减速率。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐