1 格 Point Lattices
def 欧氏空间中 R n \mathbb{R}^n R n 上的一个离散加法子群,通过在整数格 Z n \mathbb{Z}_n Z n 上作单射线性变换(injective linear transformation)得到。令 B = [ b 1 , . . . , b n ] ∈ R d × n B=[b_1, ..., b_n] \in \mathbb{R}^{d×n} B = [ b 1 , ... , b n ] ∈ R d × n 为 R d \mathbb{R}^d R d 上一组线性无关的向量,则由 B B B 生成的格为集合
L ( B ) = { B x : x ∈ Z n = { ∑ i = 1 n x i ⋅ b i : ∀ i . x i ∈ Z } } \mathcal{L}(B)=\{Bx:x \in \mathbb{Z}^n =\{\sum_{i=1}^n{x_i} \cdot b_i:\forall i.x_i \in \mathbb{Z}\}\}
L ( B ) = { B x : x ∈ Z n = { i = 1 ∑ n x i ⋅ b i : ∀ i . x i ∈ Z }}
R n R^n R n :实数域上的 n 维矢量空间
B B B :格 L ( B ) \mathcal{L}(B) L ( B ) 的基矩阵(basis matrix),是一组线性无关的矩阵,能用来生成一个向量空间
b 1 , b 2 , . . . , b n b_1,b_2,...,b_n b 1 , b 2 , ... , b n :格基,同一个格可以由多组不同的格基生成。
i.e. 格基 ( 1 , 0 ) T (1,0)^T ( 1 , 0 ) T 与 ( 0 , 1 ) T (0,1)^T ( 0 , 1 ) T 可以生成二维空间的所有整数格,还可以为:( 1 , 1 ) T (1,1)^T ( 1 , 1 ) T 与 ( 2 , 1 ) T (2,1)^T ( 2 , 1 ) T
n n n :格 L ( B ) \mathcal{L}(B) L ( B ) 的秩(rank)/ 维度(dimension),若 n = d n=d n = d 成立,则称格 L ( B ) \mathcal{L}(B) L ( B ) 是满秩的
Info
由 B B B 张成的向量空间(格的延展空间) s p a n ( B ) span(B) s p an ( B ) 和格 L ( B ) \mathcal{L}(B) L ( B ) 的区别:(1)前者可以同任意的实数系数相乘,后者仅包含整数系数;(2)若 B B B 是格 L ( B ) \mathcal{L}(B) L ( B ) 的基,则它也是由格张成的向量空间 s p a n ( B ) span(B) s p an ( B ) 的基;反之不一定成立。
s p a n ( B ) = { B x : x ∈ R n } span(B)=\{Bx:x \in \mathbb{R}^n\}
s p an ( B ) = { B x : x ∈ R n }
1.1 子格 sublattice
def 对任意格 Λ = L ( B ) \Lambda=\mathcal{L}(B) Λ = L ( B ) ,一个子格 Λ ′ \Lambda^{\prime} Λ ′ 是格 Λ \Lambda Λ 的子集,满足 Λ ′ ⊆ Λ \Lambda^{\prime} \subseteq \Lambda Λ ′ ⊆ Λ 。
2 基 Bases
def 若存在其他的矩阵 V ∈ Z n × n V \in \mathbb{Z}^{n\times n} V ∈ Z n × n 使得 V U = U V = I VU=UV=I V U = U V = I ,则称整数方阵 U ∈ Z n × n U \in \mathbb{Z}^{n\times n} U ∈ Z n × n 是可逆(invertible)的。
U − 1 U^{-1} U − 1 :对于每一个矩阵 V V V ,可逆矩阵 U − 1 U^{-1} U − 1 必须是唯一的
G L ( n , Z ) GL(n, \mathbb{Z}) G L ( n , Z ) :一般线性群(general linear group),表示矩阵乘法下的一个群,包含了形如 U − 1 U^{-1} U − 1 的可逆整数矩阵。
Note
论文中经常出现的 bases,其实是 basis 的复数形式。即当提到 “bases” 时,通常是指多组基。i.e. 两个不同的格 L ( B ) \mathcal{L}(B) L ( B ) 和 L ( C ) \mathcal{L}(C) L ( C ) ,每个格都有各自的基,那么这两组基可统称为 “bases”。
def 对矩阵 B ∈ R d × n B \in \mathbb{R}^{d \times n} B ∈ R d × n 上的基本(整数)列操作,为以下操作之一:(1)S W A P ( i , j SWAP(i, j S W A P ( i , j ): 对于任意 i ≠ j i \neq j i = j ,交换任意两个基向量 ( b i , b j ) ← ( b j , b i ) (b_i, b_j) \leftarrow (b_j, b_i) ( b i , b j ) ← ( b j , b i ) ;(2)I N V E R T ( i ) INVERT(i) I N V ERT ( i ) : 对于任意 i i i ,改变基向量 b i ← ( − b i ) b_i \leftarrow (-b_i) b i ← ( − b i ) 的符号;(3)A D D ( i , c , j ) ADD(i, c, j) A DD ( i , c , j ) : 对于任意 i ≠ j i \neq j i = j 且 c ∈ Z c \in \mathbb{Z} c ∈ Z ,将一个基向量的整数倍加到另一个基向量 b i ← ( b i + c ⋅ b j ) b_i \leftarrow (b_i + c \cdot b_j) b i ← ( b i + c ⋅ b j ) 中。
这里对矩阵的基本列操作 σ \sigma σ 均作用在右侧的矩阵,因此对于任意矩阵 B B B 和 A A A ,有 σ ( B ⋅ A ) = B − σ ( A ) \sigma(B \cdot A) = B - \sigma(A) σ ( B ⋅ A ) = B − σ ( A ) 。
特别地,任意的基本列操作 σ \sigma σ 均对应于整数矩阵 σ ( I ) ∈ Z n × n \sigma(I) \in \mathbb{Z}^{n \times n} σ ( I ) ∈ Z n × n 的右乘,因为
σ ( B ) = σ ( B ⋅ I ) = B ⋅ σ ( I ) \sigma(B)=\sigma(B \cdot I)=B \cdot \sigma(I)
σ ( B ) = σ ( B ⋅ I ) = B ⋅ σ ( I )
由于单位矩阵 I I I 是可逆的,这样的基本列操作不会改变由 B B B 生成的格。而对于更多的一系列列操作 σ = [ σ 1 , . . . , σ k ] \sigma = [ \sigma_1, . . . , \sigma_k] σ = [ σ 1 , ... , σ k ] ,同样可以表示为可逆矩阵的右乘 σ ( I ) = σ 1 ( I ) ⋅ σ 2 ( I ) . . . σ k ( I ) ∈ G L ( n , Z ) \sigma(I) = \sigma_1(I) \cdot \sigma_2(I) ... \sigma_k(I) \in GL(n, \mathbb{Z}) σ ( I ) = σ 1 ( I ) ⋅ σ 2 ( I ) ... σ k ( I ) ∈ G L ( n , Z ) 。再结合上述定理可知,对同一个格有 L ( B ) = L ( σ ( B ) ) \mathcal{L}(B) = \mathcal{L}(\sigma(B)) L ( B ) = L ( σ ( B )) ,即可通过任意的列操作序列将原先格的基 B B B 转化为等价的基 σ ( B ) \sigma(B) σ ( B ) 。换言之,任意的可逆矩阵 U ∈ G L ( n , Z ) U \in GL(n, \mathbb{Z}) U ∈ G L ( n , Z ) 均可表示为一系列基本列操作的形式,也总能够通过对基 B B B 的一系列基本列操作得到新的一组格基。
def 若∣ d e t ( B ) ∣ = 1 \left|det(B)\right|=1 ∣ d e t ( B ) ∣ = 1 ,则矩阵 B ∈ Z n × n B \in \mathbb{Z}^{n \times n} B ∈ Z n × n 是一个幺模(unimodular)矩阵。
lem 任意 U ∈ G L ( n , Z ) U \in GL(n, \mathbb{Z}) U ∈ G L ( n , Z ) 均为幺模矩阵。
埃尔米特形式 (Hermite normal form, HNF)的整数矩阵:i.e. 一个上三角矩阵,其中正对角元素 h i , i > 0 h_{i,i} > 0 h i , i > 0 ,所有其他非零元素 0 ≤ h i , j < h i , i 0 ≤ h_{i,j} < h_{i,i} 0 ≤ h i , j < h i , i 均为模同一行上的对应对角元素 h i , i h_{i,i} h i , i 后得到的。
theo 对任意一个满秩(nonsingular)的整数方阵 B ∈ Z n × n B \in \mathbb{Z}^{n \times n} B ∈ Z n × n ,存在一系列基本整数列操作 σ \sigma σ ,使得 σ ( B ) \sigma(B) σ ( B ) 在 HNF 中。
coro 对任意矩阵 U ∈ Z n × n U \in \mathbb{Z}^{n \times n} U ∈ Z n × n ,下述条件是等价的:(1)对于一些基本列操作 σ \sigma σ ,有 U = σ ( I ) U = \sigma(I) U = σ ( I ) ;(2)U U U 是可逆的,有 U ∈ G L ( n , Z ) U \in GL(n, \mathbb{Z}) U ∈ G L ( n , Z ) ;(3)U U U 是满秩的,有 d e t ( U ) = ± 1 det(U)=\pm1 d e t ( U ) = ± 1 。
3 施密特正交化 Gram-Schmidt orthogonalization
def 通过将每一个向量投影其他向量的空间维度上,使得这组线性无关的向量 b 1 , b 2 , . . . , b n b_1,b_2,...,b_n b 1 , b 2 , ... , b n 转化为正交向量 b 1 ∗ , b 2 ∗ , . . . , b n ∗ b_1^*,b_2^*,...,b_n^* b 1 ∗ , b 2 ∗ , ... , b n ∗ ,即
b i ∗ = b i ⊥ [ b 1 , . . . , b i − 1 ] b_i^*=b_i\bot[b_1,...,b_{i-1}]
b i ∗ = b i ⊥ [ b 1 , ... , b i − 1 ]
π i \pi_i π i :常用于表示第 i i i 个向量向前 i − 1 i-1 i − 1 个基向量投影的映射关系,有 b i ∗ = π i ( b i ) b_i^*=\pi_i(b_i) b i ∗ = π i ( b i )
coro
(1)一般地,B ∗ B^* B ∗ 不是格 L ( B ) \mathcal{L} (B) L ( B ) 的基,这是因为这组正交向量 B ∗ B^* B ∗ 通常不属于格;(2)需要注意正交化中基向量的先后顺序,b 1 , b 2 , . . . , b n b_1,b_2,...,b_n b 1 , b 2 , ... , b n 的向量顺序不同,得到的正交向量 b 1 ∗ , b 2 ∗ , . . . , b n ∗ b_1^*,b_2^*,...,b_n^* b 1 ∗ , b 2 ∗ , ... , b n ∗ 也不同。
i.e. 对向量 b 1 = ( 2 , 0 ) b_1=(2,0) b 1 = ( 2 , 0 ) 和 b 2 = ( 1 , 2 ) b_2=(1,2) b 2 = ( 1 , 2 ) ,关于 [ b 1 , b 2 ] [b_1,b_2] [ b 1 , b 2 ] 的施密特正交化为 b 1 ∗ = b 1 , b 2 ∗ = b 2 ⊥ b 1 = ( 1 , 2 ) b_1^*=b_1, b_2^*=b_2 \bot b_1=(1,2) b 1 ∗ = b 1 , b 2 ∗ = b 2 ⊥ b 1 = ( 1 , 2 ) 。如图所示,此时正交向量 b 2 ∗ b_2^* b 2 ∗ 是不属于格 L ( B ) \mathcal{L}(B) L ( B ) 的。而反转顺序后,对 [ b 2 , b 1 ] [b_2,b_1] [ b 2 , b 1 ] 的施密特正交化为 b 2 ∗ = b 2 , b 1 ∗ = b 1 ⊥ b 2 = ( 8 5 , − 4 5 ) b_2^*=b_2, b_1^*=b_1 \bot b_2=(\frac{8}{5},-\frac{4}{5}) b 2 ∗ = b 2 , b 1 ∗ = b 1 ⊥ b 2 = ( 5 8 , − 5 4 ) 。
lem 对 B = [ b 1 , b 2 , . . . , b n ] B=[b_1,b_2,...,b_n] B = [ b 1 , b 2 , ... , b n ] 的施密特正交化可由下述等式计算而得:
b i ∗ = b i − ∑ j < i μ i , j b j ∗ w h e r e μ i , j = ⟨ b i , b j ∗ ⟩ ⟨ b j ∗ , b j ∗ ⟩ b_i^*=b_i-\sum_{j < i}{\mu_{i, j}b_j^* \: where \: \mu_{i, j}=\frac{\langle b_i, b_j^*\rangle}{\langle b_j^*,b_j^*\rangle}}
b i ∗ = b i − j < i ∑ μ i , j b j ∗ w h ere μ i , j = ⟨ b j ∗ , b j ∗ ⟩ ⟨ b i , b j ∗ ⟩
B B B 及其正交化矩阵 B ∗ B^* B ∗ 满足 B = B ∗ T B=B^*T B = B ∗ T ,其中 T = [ 1 μ 2 , 1 ⋯ μ n , 1 ⋱ ⋮ 1 μ n , n − 1 1 ] T=\begin{bmatrix} 1 & \mu_{2,1} & \cdots & \mu_{n,1} \\ & \ddots & & \vdots\\ & \ & 1 & \mu_{n,n-1} \\ & & & 1\end{bmatrix} T = 1 μ 2 , 1 ⋱ ⋯ 1 μ n , 1 ⋮ μ n , n − 1 1
4 格的行列式 The determinant
def 给定一个基 B = [ b 1 , … , b n ] ∈ R d × n B = [b_1, \dots, b_n] \in \mathbb{R}^{d \times n} B = [ b 1 , … , b n ] ∈ R d × n ,与基 B 相关的基本平行多面体(fundamental parallelepiped)是集合 P ( B ) = B T n = { ∑ i = 1 n x i ⋅ b i ∣ ∀ i , 0 ≤ x i < 1 } P(B) = B \mathbb{T}^n = \left\{ \sum_{i=1}^{n} x_i \cdot b_i \mid \forall i, 0 \leq x_i < 1 \right\} P ( B ) = B T n = { ∑ i = 1 n x i ⋅ b i ∣ ∀ i , 0 ≤ x i < 1 } ,其中 T = [ 0 , 1 ) \mathbb{T}= [0, 1) T = [ 0 , 1 ) 是半开单位区间。
P ( B ) P(B) P ( B ) :一组格基在 [ 0 , 1 ) [0,1) [ 0 , 1 ) 中实系数组合生成的空间,是格的基本区(fundamental region):给定格 Λ \Lambda Λ ,在其生成空间 span ( Λ ) \text{span}(\Lambda) span ( Λ ) 中,如果通过格点 x ∈ Λ x \in \Lambda x ∈ Λ 对 S S S 进行平移后的区域集合 { x + S : x ∈ Λ } \{x + S : x \in \Lambda\} { x + S : x ∈ Λ } 构成了 span ( Λ ) \text{span}(\Lambda) span ( Λ ) 的一个分割(partition),则该区域 S ⊂ span ( Λ ) S \subset \text{span}(\Lambda) S ⊂ span ( Λ ) 称为格的基本区。
分割(partition):S S S 和它通过格点的所有平移 x + S x + S x + S 可以无重叠且无间隙地覆盖整个生成空间 span ( Λ ) \text{span}(\Lambda) span ( Λ ) 。
coro 不同的基定义了不同的平行多面体,但不同平行多面体的体积总是相同的。
Note
格基本区的其他分割方式:
正交(orthogonalized)平行多面体 P ( B ∗ ) P(B^*) P ( B ∗ ) :由正交化基向量生成的平行多面体
中心(centered)平行多面体 C ( B ) C(B) C ( B ) :以原点为中心的平行多面体,将 P ( B ) P(B) P ( B ) 平移 − 1 2 ∑ i = 1 n b i -\frac{1}{2} \sum_{i=1}^n b_i − 2 1 ∑ i = 1 n b i 单位后得到,满足
C ( B ) = B ⋅ [ − 1 2 , 1 2 ) n = − 1 2 ∑ i = 1 n b i + P ( B ) C(B) = B \cdot \left[-\frac{1}{2}, \frac{1}{2}\right)^n = -\frac{1}{2} \sum_{i=1}^n b_i + P(B)
C ( B ) = B ⋅ [ − 2 1 , 2 1 ) n = − 2 1 i = 1 ∑ n b i + P ( B )
正交中心平行多面体 C ( B ∗ ) C(B^*) C ( B ∗ ) :同样以原点为中心,将 P ( B ∗ ) 平移 − 1 2 ∑ i = 1 n b i ∗ P (B^*) 平移 -\frac {1}{2} \sum_{i=1}^n b_i^* P ( B ∗ ) 平移 − 2 1 ∑ i = 1 n b i ∗ 单位后得到,满足
C ( B ∗ ) = B ∗ ⋅ [ − 1 2 , 1 2 ) n = − 1 2 ∑ i = 1 n b i ∗ + P ( B ∗ ) C(B^*) = B^* \cdot \left[-\frac{1}{2}, \frac{1}{2}\right)^n = -\frac{1}{2} \sum_{i=1}^n b_i^* + P(B^*)
C ( B ∗ ) = B ∗ ⋅ [ − 2 1 , 2 1 ) n = − 2 1 i = 1 ∑ n b i ∗ + P ( B ∗ )
def 给定一个基 B ∈ R d × n B\in R^{d \times n} B ∈ R d × n 及其施密特正交化 B ∗ B^* B ∗ ,格 Λ = L ( B ) \Lambda = \mathcal{L}(B) Λ = L ( B ) 的行列式(determinant)定义为与基 B B B 相关联的基本平行多面体的 n 维体积,形如
det ( Λ ) = vol ( P ( B ) ) = ∏ i ∥ b i ∗ ∥ \det(\Lambda) = \text{vol}(P(B)) = \prod_i \|b^*_i\|
det ( Λ ) = vol ( P ( B )) = i ∏ ∥ b i ∗ ∥
格的行列式等于格的基本区体积,且与所选择的基无关。即无论选择哪个基 B B B ,计算出的行列式 det ( Λ ) \det(\Lambda) det ( Λ ) 都是相同的。i.e. 如果两个基是由同一个格生成的,那么它们的格的行列式的值是相同的。
行列式可以看作是空间中格点密度的倒数。对格 Λ \Lambda Λ 和它的行列式 det ( Λ ) \det(\Lambda) det ( Λ ) ,在一个足够大的规则区域 A A A 中,格点数目大约等于 A A A 的体积除以行列式。
i.e. 正交向量 b 1 , b 2 ∈ R 2 b_1,b_2 \in \mathbb{R}^2 b 1 , b 2 ∈ R 2 ,∥ b 1 ∥ = 2 \|b_1\| = 2 ∥ b 1 ∥ = 2 ,∥ b 2 ∥ = 3 \|b_2\| = 3 ∥ b 2 ∥ = 3 ,R 2 \mathbb{R}^2 R 2 上的格 Λ \Lambda Λ 的行列式 det ( Λ ) = 2 × 3 = 6 \det(\Lambda)=2 \times 3=6 det ( Λ ) = 2 × 3 = 6 ,假设区域 A A A 的面积为 60,则 A A A 内大约有 60 6 = 10 \frac{60}{6} = 10 6 60 = 10 个格点。
theo 阿达马不等式(Hadamard Inequality)对于任何格 Λ = L ( B ) \Lambda = \mathcal{L}(B) Λ = L ( B ) ,行列式 det ( Λ ) \det(\Lambda) det ( Λ ) 满足以下不等式:
det ( Λ ) ≤ ∏ i ∥ b i ∥ \det(\Lambda) \leq \prod_{i} \|b_i\|
det ( Λ ) ≤ i ∏ ∥ b i ∥
上界 ∥ b i ∗ ∥ ≤ ∥ b i ∥ \|b_i^*\| \leq \|b_i\| ∥ b i ∗ ∥ ≤ ∥ b i ∥ :正交化后的基向量 b i ∗ b_i^* b i ∗ 长度总是小于或等于原基向量 b i b_i b i 的长度。这是因为 b i ∗ b_i^* b i ∗ 仅保留了与先前的基向量正交的部分。
正交基的平行多面体体积最大,因此行列式 det ( Λ ) \det(\Lambda) det ( Λ ) 在正交情况下达到最大值;对于非正交基,行列式(体积)会变小。
lem 对于任何格基 B ∈ R d × n B \in \mathbb{R}^{d \times n} B ∈ R d × n ,格 Λ = L ( B ) \Lambda = \mathcal{L}(B) Λ = L ( B ) 的行列式可以通过以下方式计算:
det ( Λ ) = det ( B T B ) \det(\Lambda) = \sqrt{\det(B^T B)}
det ( Λ ) = det ( B T B )
特别地,如果 B B B 是一个 n × n n \times n n × n 的满秩方阵,那么
det ( Λ ) = ∣ det ( B ) ∣ \det(\Lambda) = |\det(B)|
det ( Λ ) = ∣ det ( B ) ∣
为了在 P P T PPT PPT 内计算格的行列式,还可使用上述更为简单的方法,其不涉及施密特正交化。具体计算是利用模运算和中国剩余定理完成的:先选择一些小的质数 p 1 , p 2 , … , p k p_1, p_2, \dots, p_k p 1 , p 2 , … , p k ,分别计算 det ( B ) \det(B) det ( B ) 在这些质数模数下的值。即对于每个质数 p i p_i p i ,计算 det ( B ) m o d p i \det(B)\mod p_i det ( B ) mod p i ;再利用 CRT 将这些结果组合起来,恢复出 det ( B ) \det(B) det ( B ) 在更大整数模数下的值,并恢复出完整的行列式值。
对基 B B B 的格拉姆矩阵(Gram matrix)B T B B^TB B T B :通过计算格拉姆矩阵的行列式并取平方根,能够得到基本平行多面体的体积。
当 B B B 为一个方阵时,行列式直接反映了基向量生成的 n 维平行多面体的体积。因此,行列式的绝对值直接给出了格的行列式。
theo 假设 B B B 和 C C C 是同一个格 Λ \Lambda Λ 的两个基,即 Λ ( B ) = Λ ( C ) \Lambda(B) = \Lambda(C) Λ ( B ) = Λ ( C ) ,那么有 v o l ( P ( B ) ) = v o l ( P ( C ) ) vol(P(B))=vol(P(C)) v o l ( P ( B )) = v o l ( P ( C )) 。
注:
def - definition,定义
theo - theorem,定理
lem - lemma,引理
coro - corollary,推论
参考
[1] CSE206A Lec1, Daniele Micciancio
[2] 格密码的基础概念(1)
[3] 如何通俗地理解施密特正交化|马同学图解线性代数