前言
首先引入数学上的一个概念“格点”。怎么定义格点呢?格点是n维空间中的一组具有周期性结构的点,如下图所示(二维空间的“格”)。三维空间的“格点”可以出现在一些晶体中,就像一堆整齐叠放的橘子。历史上,从18世纪末开始,拉格朗日、高斯以及后来的闵可夫斯基等数学家就开始研究“格”这个概念。
近几年,“格”已经成为计算机科学领域中研究的热点性问题之一。“格”可以看成解决安全问题的算法工具;结合计算复杂性,“格”在密码学和密码分析中应用广泛。
一.格的定义
给定n维空间中一组线性无关向量,其整系数组合构成的集合称为格。
此处的
(
b
1
,
⋯
,
b
n
)
(b_1,\cdots,b_n)
(b1,⋯,bn)定义为格基。同一个格可以由多组不同的格基生成。
b
1
,
⋯
,
b
n
∈
b_1,\cdots,b_n\in
b1,⋯,bn∈
R
m
R^m
Rm,此处如果m=n,则称该“格”满秩。因为格是否满秩对它的性质研究影响不大,所以通常研究满秩的格。
举例:
格基
(
1
,
0
)
T
(1,0)^T
(1,0)T与
(
0
,
1
)
T
(0,1)^T
(0,1)T可以产生二维空间的所有整数格。如下图:
能产生二维空间的所有整数格的格基不唯一,还可以是:
(
1
,
1
)
T
与
(
2
,
1
)
T
,
(
2021
,
1
)
T
与(
1
,
2022
)
T
(1,1)^T与(2,1)^T,(2021,1)^T与(1,2022)^T
(1,1)T与(2,1)T,(2021,1)T与(1,2022)T,如下图:
格基
(
1
,
1
)
T
(1,1)^T
(1,1)T与
(
2
,
0
)
T
(2,0)^T
(2,0)T不能产生二维空间的所有整数格。如下图打“×”的为可产生的格,横纵坐标相加为偶数:
二. 格的延展空间
格基实系数组合生成的空间称为格的延展空间。(区别于前面定义的整数)
s
p
a
n
(
L
(
B
)
)
=
s
p
a
n
(
B
)
=
{
B
a
∣
a
∈
R
n
}
span(L(B))=span(B)=\lbrace Ba|a\in R^n\rbrace
span(L(B))=span(B)={Ba∣a∈Rn}
格的延展空间是整个n维空间的前提:
要求为满秩格 要求为满秩格 要求为满秩格
三. 格的基本区
格基在[0,1)中实系数组合生成的空间,称为格的基本区。
P
(
B
)
=
{
B
a
∣
a
∈
R
n
,
0
≤
a
i
<
1
}
P(B)=\lbrace Ba|a\in R^n,0\leq a_i<1\rbrace
P(B)={Ba∣a∈Rn,0≤ai<1}
如果将格基
(
1
,
1
)
T
(1,1)^T
(1,1)T与
(
2
,
0
)
T
(2,0)^T
(2,0)T基本区平移放置在每个格点上,就可以形成此格的延展空间
s
p
a
n
(
L
(
B
)
)
span(L(B))
span(L(B)),如下图:
四.格基的判定定理
秩为n的格
Λ
\Lambda
Λ上线性无关的向量组
B
=
b
1
,
⋅
⋅
⋅
b
n
B=b_1,···b_n
B=b1,⋅⋅⋅bn为格
Λ
\Lambda
Λ的基,当且仅当:
P
(
B
)
∩
Λ
=
{
0
}
P(B)\cap\Lambda=\lbrace0\rbrace
P(B)∩Λ={0}。
证明方法
\color{red}{证明方法}
证明方法:
(1)证明充分性:当线性无关的向量组
B
=
b
1
,
⋅
⋅
⋅
b
n
B=b_1,···b_n
B=b1,⋅⋅⋅bn为格
Λ
\Lambda
Λ的基时,
P
(
B
)
∩
Λ
=
{
0
}
P(B)\cap\Lambda=\lbrace0\rbrace
P(B)∩Λ={0}。
当
b
1
,
⋯
,
b
n
b_1,\cdots,b_n
b1,⋯,bn为
Λ
\Lambda
Λ的格基时,格点可以由它们的整数线性组合形成。因为
P
(
b
1
,
⋯
,
b
n
)
P(b_1,\cdots,b_n)
P(b1,⋯,bn)定义为该格基的小于1的小数线性组合,所以很明显二者的交集为空集(或者理解成仅有原点重合)。
充分性证明完毕
(2)证明必要性:当
P
(
B
)
∩
Λ
=
{
0
}
P(B)\cap\Lambda=\lbrace0\rbrace
P(B)∩Λ={0},线性无关的向量组
B
=
b
1
,
⋅
⋅
⋅
b
n
B=b_1,···b_n
B=b1,⋅⋅⋅bn为格
Λ
\Lambda
Λ的基。
因为
Λ
\Lambda
Λ为秩为n的格点,且
b
1
,
⋅
⋅
⋅
b
n
b_1,···b_n
b1,⋅⋅⋅bn是线性独立的,可以取
y
i
∈
R
y_i\in R
yi∈R,使得
x
=
∑
y
i
b
i
∈
Λ
x=\sum y_ib_i\in \Lambda
x=∑yibi∈Λ,因为格在加减法运算里面是封闭的,所以
x
′
=
∑
(
y
i
−
⌊
y
i
⌋
)
b
i
x'=\sum (y_i-\lfloor y_i\rfloor)b_i
x′=∑(yi−⌊yi⌋)bi也形成格点。根据条件该格点只能为原点,所以
y
i
y_i
yi必定为整数。
将此过程的推导形成逻辑公式如下:
五. 格基的关系
当给出两组格基
B
1
,
B
2
B_1,B_2
B1,B2,如何判断它们产生的格是一样的呢,也就是
L
(
B
1
)
=
L
(
B
2
)
L(B_1)=L(B_2)
L(B1)=L(B2)吗?
B
1
,
B
2
B_1,B_2
B1,B2为同一个格的格基,当且仅当存在幺模矩阵U,满足
B
1
=
B
2
U
B_1=B_2U
B1=B2U
证明充分性过程如下:
已知
L
(
B
1
)
=
L
(
B
2
)
L(B_1)=L(B_2)
L(B1)=L(B2),得出
B
2
=
B
1
U
,
U
为幺模矩阵
B_2=B_1U,U为幺模矩阵
B2=B1U,U为幺模矩阵
因为
L
(
B
1
)
=
L
(
B
2
)
L(B_1)=L(B_2)
L(B1)=L(B2),所以
B
2
B_2
B2中的每一列
b
i
b_i
bi都有,
b
i
∈
L
(
B
1
)
b_i\in L(B_1)
bi∈L(B1),这表明必定存在一个整数矩阵
U
∈
Z
n
×
n
U\in Z^{n\times n}
U∈Zn×n,使得
B
2
=
B
1
U
B_2=B_1U
B2=B1U。同理,也存在
V
∈
Z
n
×
n
V\in Z^{n\times n}
V∈Zn×n,使得
B
1
=
B
2
V
B_1=B_2V
B1=B2V。
所以可得:
B
2
=
B
1
U
=
B
2
V
U
B_2=B_1U=B_2VU
B2=B1U=B2VU
将其转置,得到:
B
2
T
=
(
V
U
)
T
B
2
T
B_2^T=(VU)^TB_2^T
B2T=(VU)TB2T
两式相乘:
B
2
T
B
2
=
(
V
U
)
T
B
2
T
(
V
U
)
B_2^TB_2=(VU)^TB_2^T(VU)
B2TB2=(VU)TB2T(VU)
转置矩阵和原矩阵行列式相等,可得:
B
2
T
B
2
=
(
d
e
t
(
U
V
)
)
2
d
e
t
(
B
2
T
B
2
)
B_2^TB_2=(det(UV))^2det(B_2^TB_2)
B2TB2=(det(UV))2det(B2TB2)
矩阵相乘再求行列式,和分别求行列式再相乘,结果是一样的,所以:
d
e
t
(
V
)
d
e
t
(
U
)
=
±
1
det(V)det(U)=\pm 1
det(V)det(U)=±1
因为U和V均为整数矩阵,所以可得:
d
e
t
(
U
)
=
d
e
t
(
V
)
=
±
1
det(U)=det(V)=\pm 1
det(U)=det(V)=±1
将上述推导过程形成一起,如下:
证明必要性过程如下:
已知
B
2
=
B
1
U
,
U
为幺模矩阵
B_2=B_1U,U为幺模矩阵
B2=B1U,U为幺模矩阵,得出
L
(
B
1
)
=
L
(
B
2
)
L(B_1)=L(B_2)
L(B1)=L(B2)
依据
B
2
=
B
1
U
B_2=B_1U
B2=B1U,所以
B
2
B_2
B2的每一列都包含在
L
(
B
1
)
L(B_1)
L(B1)中,所以
L
(
B
1
)
L(B_1)
L(B1)
⊆
\subseteq
⊆L
(
B
2
)
(B_2)
(B2)。依据幺模矩阵的性质,
B
1
=
B
2
U
−
1
,
B_1=B_2U^{-1},
B1=B2U−1,同理可得
L
(
B
2
)
L(B_2)
L(B2)
⊆
\subseteq
⊆L
(
B
1
)
(B_1)
(B1)。所以
L
(
B
1
)
=
L
(
B
2
)
L(B_1)=L(B_2)
L(B1)=L(B2)。
提示:行列式等于
±
1
的方阵称为幺模矩阵,幺模矩阵的逆依旧为幺模矩阵。
\color{red}{提示:行列式等于\pm1的方阵称为幺模矩阵,幺模矩阵的逆依旧为幺模矩阵。}
提示:行列式等于±1的方阵称为幺模矩阵,幺模矩阵的逆依旧为幺模矩阵。
如果学过群环域的知识的话,幺模矩阵在乘法运算下,形成群的概念。
\color{red}{如果学过群环域的知识的话,幺模矩阵在乘法运算下,形成群的概念。}
如果学过群环域的知识的话,幺模矩阵在乘法运算下,形成群的概念。
此处矩阵乘法的相关性质略。
\color{red}{此处矩阵乘法的相关性质略。}
此处矩阵乘法的相关性质略。
推论1:矩阵B是
Z
n
Z^n
Zn的格基,当且仅当它为幺模矩阵。
推论2:若属于同一个格,则两组基可以相互整系数表示
六. 格基的变换
B
1
,
B
2
B_1,B_2
B1,B2为同一个格的基,当且仅当可以通过下述变换进行转换:
根据行列式的性质,上式中的变换对应的变换矩阵的行列式为
±
1
\pm1
±1
七. 格的行列式
格
Λ
=
L
(
B
)
\Lambda=L(B)
Λ=L(B)的行列式定义为
d
e
t
(
Λ
)
=
d
e
t
(
B
T
B
)
2
det(\Lambda)=\sqrt[2]{det(B^TB)}
det(Λ)=2det(BTB)。
当
Λ
\Lambda
Λ满秩时,矩阵B为方阵,格
Λ
=
L
(
B
)
\Lambda=L(B)
Λ=L(B)的行列式直接为为
d
e
t
(
Λ
)
=
∣
d
e
t
(
B
)
∣
det(\Lambda)=|det(B)|
det(Λ)=∣det(B)∣。
推论
1
\color{green}推论1
推论1:格的行列式与具体基无关。证明如下:
假定
B
1
与
B
2
B_1与B_2
B1与B2为格
Λ
\Lambda
Λ的两组不同格基,依据定义六
B
2
=
B
1
U
,
U
为幺模矩阵
B_2=B_1U,U为幺模矩阵
B2=B1U,U为幺模矩阵。可得如下变换:
推论
2
\color{green}推论2
推论2:格行列式的大小与格点的密度成反比。在格的延展空间中取一个n维的球K,球内格点数与
v
o
l
(
K
)
d
e
t
(
Λ
)
\frac{vol(K)}{det(\Lambda)}
det(Λ)vol(K)成正比例,其中vol(K)为n维球K的体积。
推论
3
\color{green}推论3
推论3:格的行列式等于格的基本区面积,与具体基无关
八. Gram-Schmidt正交化
8.1 介绍
在线性代数中,Gram-Schmidt正交化是将n个线性独立的向量转变成n对正交向量。原理就是将每一个向量都正交投影到其他向量的空间维度上,以二维空间为例,如下:
由此,对于一组线性无关向量
B
=
b
1
,
…
,
b
n
B=b_1,\dots,b_n
B=b1,…,bn,其Gram-Schmidt正交化定义为如下:
其中,
b
i
~
\tilde{b_i}
bi~是
b
i
b_i
bi垂直于
b
1
~
,
…
,
b
i
−
1
~
\tilde{b_1},\ldots,\widetilde{b_{i-1}}
b1~,…,bi−1
的部分。
推论
1
\color{blue}推论1
推论1:
若
i
≠
若i\neq
若i=
j
j
j,则
<
b
i
~
,
b
j
~
>
=
0
<\tilde{b_i},\tilde{b_j}>=0
<bi~,bj~>=0
推论
2
\color{blue}推论2
推论2:对于
1
≤
1\leq
1≤
i
≤
i\leq
i≤
n
n
n,延展空间
s
p
a
n
(
b
1
,
…
,
b
i
)
=
s
p
a
n
(
b
1
~
,
…
,
b
i
~
)
span(b_1,\ldots,b_i)=span(\tilde{b_1},\ldots,\tilde{b_i})
span(b1,…,bi)=span(b1~,…,bi~)。
推论
3
\color{blue}推论3
推论3:向量
b
1
~
,
…
,
~
b
n
\tilde{b_1},\dots,\tilde{}b_n
b1~,…,~bn一般不是格
L
(
b
1
,
…
,
b
n
)
L(b_1,\dots,b_n)
L(b1,…,bn)的格基,甚至一般都不在格上。
推论
4
\color{blue}推论4
推论4:
b
1
,
⋯
,
b
n
b_1,\cdots,b_n
b1,⋯,bn的向量顺序不同,得到的
b
1
~
,
⋯
,
b
n
~
\tilde{b_1},\cdots,\tilde{b_n}
b1~,⋯,bn~也不同。所以通常将这些向量类比为数列而不是集合。
8.2 应用
给定n个线性无关向量如下:
b
1
,
⋯
,
b
n
∈
R
m
b_1,\cdots,b_n\in R^m
b1,⋯,bn∈Rm
进一步形成正交基,如下:
b
~
1
∣
∣
b
~
1
∣
∣
,
⋯
,
b
~
n
∣
∣
b
~
n
∣
∣
\frac{\tilde b_1}{||\tilde b_1||},\cdots,\frac{\tilde b_n}{||\tilde b_n||}
∣∣b~1∣∣b~1,⋯,∣∣b~n∣∣b~n
由此,原n个线性无关向量可以表示成如下
m
×
n
m\times n
m×n矩阵:
如果m=n,该矩阵将为一个正上三角矩阵。
由此,该格的基本区体积和格的行列式可计算如下:
v
o
l
(
P
(
b
1
,
⋯
,
b
n
)
)
=
d
e
t
(
L
(
b
1
,
⋯
,
b
n
)
)
=
∏
i
=
1
n
∣
∣
b
~
i
∣
∣
vol(P(b_1,\cdots,b_n))=det(L(b_1,\cdots,b_n))=\prod_{i=1}^n||\tilde b_i||
vol(P(b1,⋯,bn))=det(L(b1,⋯,bn))=i=1∏n∣∣b~i∣∣
所以正交化后的结果将更加方便计算上式子。
结论
本文可解决的问题:
- 同一个格可以有多少组不同的基?
- 格的延展空间总是整个n维空间吗?
- 在同一个格中,不同格基生成的基本区相同吗?不同的基本区之间有什么关系?
- 如何判断B是否为格 Λ \Lambda Λ的基?
- 根据格的定义,若属于同一个格,则两组基有什么关系?
- 根据行列式的性质,格基在变换时,对应的变化矩阵需要满足什么条件?
- 格的行列式等于格基本区的面积,与具体基的选择有关系吗?
格密码的应用领域广泛。
格密码与普通密码算法相比,优势众多。