格(Lattice)基础(一)
格(Lattice)
格(lattice)的定義
不是那么標(biāo)準(zhǔn)的定義
有一組線性無關(guān)的空間向量(b1,b2,…,bn)∈Rn(b_1,b_2,\ldots,b_n) \in \mathbb{R^n}(b1?,b2?,…,bn?)∈Rn作為基,該組的每個(gè)向量若乘以某個(gè)整數(shù)系數(shù)(也就是通過線性變換)所產(chǎn)生的離散基向量生成空間向量集合就稱為格。
L(b1,b2,…,bn)={Σxibi∣xi∈Z}\mathcal{L}\left(b_{1}, b_{2}, \ldots, b_{n}\right)=\left\{\Sigma x_{i} b_{i} \mid x_{i} \in \mathbb{Z}\right\} L(b1?,b2?,…,bn?)={Σxi?bi?∣xi?∈Z}
如果把基向量組合用合成矩陣BBB來表示
L(B)=L(b1,b2,…,bn)=∑i=1nbi?Z={Bx∣x∈Zn}\mathcal{L}(B)=\mathcal{L}\left(b_{1}, b_{2}, \ldots, b_{n}\right)=\sum_{i=1}^{n} \mathbf_{i} \cdot \mathbb{Z}=\left\{B x \mid x \in \mathbb{Z}^{n}\right\} L(B)=L(b1?,b2?,…,bn?)=i=1∑n?bi??Z={Bx∣x∈Zn}
幫助理解: 假如把空間里的向量的末端視為一個(gè)點(diǎn),則格就是某空間里面的具有一些規(guī)律的離散的點(diǎn)集合,也可以說格是某空間中的一個(gè)離散的、具有加法運(yùn)算的子群。類似這樣
值得注意的是:
證明過程如下,
同時(shí),這種矩陣也稱為幺模矩陣
(unimodular matrix)
定義: U∈Zn×nU\in\mathbb{Z}^{n \times n}U∈Zn×n,∣U∣=±1|U|=\pm1∣U∣=±1,UUU稱為幺模矩陣同時(shí)它的逆也是幺模矩陣。
如何判定兩個(gè)格基是否能生成同一個(gè)格呢?
當(dāng)一個(gè)格基能通過幺模矩陣進(jìn)行變換到另一個(gè)格基的時(shí)候,這兩個(gè)格基就可以生成相同的格。
基礎(chǔ)區(qū)域(Fundamental Parallelepiped)
由格基BBB線性組合,系數(shù)在[0,1)[0,1)[0,1)之間組成的一塊區(qū)域。
P(B)={Bx∣x∈Rn,?i:0?xi<1}\mathcal{P}(B)=\left\{B x \mid x \in \mathbb{R}^{n}, \forall i: 0 \leqslant x_{i}<1\right\} P(B)={Bx∣x∈Rn,?i:0?xi?<1}
大概像這樣,
如何判定給定的向量集是否構(gòu)成格的“basis”?
由向量生成的"basic parallelepiped"不應(yīng)該包含除原點(diǎn)外的任何格點(diǎn),即基礎(chǔ)區(qū)域與格的交集為0。
如下圖
圖2(c)中所示的"basic parallelepiped"包含格點(diǎn) (1,0),而圖2(a)和圖2(b)中的基本平行不包含任何非零格點(diǎn)。
一個(gè)格的任意基礎(chǔ)區(qū)域都擁有相同的體積(體積不是狹義的三維體積,可以擴(kuò)展到n維,如二維是面積,三維是體積)。
行列式(Determinant)
類似于線性空間里,一個(gè)格的行列式代表了對(duì)應(yīng)基向量所組成的幾何體體積
定義格的行列式作為基礎(chǔ)區(qū)域的n維體積
det(L)=∑ibi?[0,1)=vol(P(B))det(\mathcal{L})=\sum_{i}{\mathbf_{i}}\cdot[0,1)=vol(\mathcal{P(\mathbf{B})}) det(L)=i∑?bi??[0,1)=vol(P(B))
注意
給定任意一組基向量,這個(gè)Determinant大小是不變的,也就是無論怎么變換,都能找到這個(gè)值,即一個(gè)格的任意基礎(chǔ)區(qū)域體積都相同。它不依賴于計(jì)算它的某個(gè)具體基礎(chǔ)區(qū)域,是格的不變量。證明過程如下
格密度
格的密度可以理解為,在空間里任意取一個(gè)超球體,然后看這個(gè)球體里面覆蓋了多少格點(diǎn),點(diǎn)的數(shù)量平均于球體體積,這個(gè)就是密度
格的行列式與其密度成反比
ForallsufficientlylargeS?Rn:∣S∩L∣≈vol?(S)/det?(L)For\ all\ sufficiently\ large\ S \subseteq \mathbb{R}^{n} :\\ |S \cap \mathcal{L}| \approx \operatorname{vol}(S) / \operatorname{det}(\mathcal{L}) For?all?sufficiently?large?S?Rn:∣S∩L∣≈vol(S)/det(L)
最短距離與連續(xù)最小值
格的一個(gè)基本參數(shù)是格中最短非零向量的長(zhǎng)度,也就是點(diǎn)與點(diǎn)之間的最短距離,為了方便可以把其中一個(gè)點(diǎn)設(shè)置為坐標(biāo)軸的原點(diǎn)。
λ1=min?x,y∈L,x≠y∥x?y∥=min?x∈L,x≠0∥x∥\begin{aligned} \lambda_{1} &=\min _{x, y \in \mathcal{L}, x \neq y}\|x-y\| \\ &=\min _{x \in \mathcal{L}, x \neq 0}\|x\| \end{aligned} λ1??=x,y∈L,x=ymin?∥x?y∥=x∈L,x=0min?∥x∥?
記為λ1(L),\lambda_1(\mathcal{L}),λ1?(L),同理可定義第二近到第nnn近的λ2(L),λ3(L),…,λn(L)\lambda_2(\mathcal{L}),\lambda_3(\mathcal{L}),\ldots,\lambda_n(\mathcal{L})λ2?(L),λ3?(L),…,λn?(L)。
距離函數(shù)(Distance Function)與覆蓋半徑(Covering Radius)
給定一個(gè)任意點(diǎn)t\mathbf{t}t(可以不在格上),定義距離函數(shù)μ(t,L)\mu(\mathbf{t},\mathcal{L})μ(t,L)為這個(gè)點(diǎn)到附近的格點(diǎn)的最短距離。
μ(t,L)=min?x∈L∥t?x∥\mu(\mathbf{t},\mathcal{L})=\min _{\mathbf{x} \in \mathcal{L}}\|\mathbf{t}-\mathbf{x}\| μ(t,L)=x∈Lmin?∥t?x∥
可以通過移動(dòng)t\mathbf{t}t位置得到這個(gè)格中最大的μ\muμ,這個(gè)就稱為覆蓋半徑(Covering Radius)
μ(L)=max?t∈span(L)μ(t,L)\mu(\mathcal{L})=\max _{\mathbf{t} \in span(\mathcal{L})} \mu(\mathbf{t}, \mathcal{L}) μ(L)=t∈span(L)max?μ(t,L)
注意μ\muμ是點(diǎn)到格點(diǎn)的最短距離,如果把點(diǎn)換為格點(diǎn),以每個(gè)格點(diǎn)為圓心畫圓并逐步擴(kuò)大,直到這些圓正好完美的覆蓋所有空間的時(shí)候,這個(gè)半徑就是最大的μ\muμ,即覆蓋半徑了。
格的Smoothing
假如將上述的圓,改變?yōu)榀B加圓形范圍內(nèi)取值的隨機(jī)噪音,而當(dāng)達(dá)到覆蓋半徑的時(shí)候?qū)?huì)出現(xiàn)取值分布很不平均的問題,那么為了解決此問題就需要smooth一下格。
理論上當(dāng)半徑到無限大的時(shí)候,得到的分布是很完美的,但是這種構(gòu)造就沒了意義,所以就出現(xiàn)了一個(gè)Smoothing的半徑最大上限,該上限由格中距離最大的最短向量λn\lambda_{n}λn?來決定的,大于這個(gè)距離之后,必然會(huì)覆蓋其他的格點(diǎn)。
Minkowski定理
凸集定理(Convex body theorem)
用于尋找一個(gè)格點(diǎn)周圍最近的其他格點(diǎn)的。
給出一個(gè)Lattice中最短向量的一個(gè)上限值。
λ1(L)≤nr=n?det?(L)1/n\lambda_{1}(\mathcal{L}) \leq \sqrt{n} r=\sqrt{n} \cdot \operatorname{det}(\mathcal{L})^{1 / n} λ1?(L)≤n?r=n??det(L)1/n
假如把格的Determinant對(duì)應(yīng)空間壓縮為一個(gè)立方體,那么該立方體的對(duì)角線長(zhǎng)度就是nr\sqrt{n}rn?r,對(duì)角線的另一頭必然是下一個(gè)格點(diǎn)(但不一定是最近的格點(diǎn)),所以肯定要小于等于這個(gè)對(duì)角線的長(zhǎng)度
第二定理
給出一個(gè)對(duì)于其他最短向量λi\lambda_{i}λi?的一個(gè)取值上限
λ1(L)≤(∏iλi(L))1/n≤n?det?(L)1/n\lambda_{1}(\mathcal{L}) \leq\left(\prod_{i} \lambda_{i}(\mathcal{L})\right)^{1 / n} \leq \sqrt{n} \cdot \operatorname{det}(\mathcal{L})^{1 / n} λ1?(L)≤(i∏?λi?(L))1/n≤n??det(L)1/n
第二定理指出全部nnn個(gè)最短向量的幾何平均數(shù),小于之前的對(duì)角線長(zhǎng)度,由于任意一個(gè)格的Determinant對(duì)應(yīng)空間的Parallelepiped是不規(guī)則的,所以用幾何平均數(shù)能很好約束Parallelepiped邊的長(zhǎng)度
格中難題
最短向量問題(SVP)
定義
在格中需找一個(gè)最短的非零格點(diǎn)
可以理解為:尋找一組整數(shù)與基向量線性組合使得組合后的向量的長(zhǎng)度最短?;蛘?#xff0c;理解為給定一個(gè)基的格,找到一個(gè)這個(gè)基構(gòu)成的格點(diǎn),使得這個(gè)點(diǎn)距離坐標(biāo)原點(diǎn)距離最近。
寬松版(SVPγSVP_\gammaSVPγ?):找到γ\gammaγ倍距離就行
判定版(GapSVP)
最短獨(dú)立向量問題(SIVP)
定義
給定一個(gè)格,找到n個(gè)線性無關(guān)的向量,并且這些向量的長(zhǎng)度都要小于定于最長(zhǎng)的最短向量。
寬松版(SIVPγSIVP_\gammaSIVPγ?):找到γ\gammaγ倍距離就行
判定版(GapSIVP)
最近向量問題(CVP)
定義
在離散線性集合中逼近目標(biāo)向量的問題
給定一個(gè)不在格中的目標(biāo)向量,在各種尋找一個(gè)向量使得該向量與目標(biāo)向量距離最近。
可以理解為:給定一組格基向量,和一個(gè)目標(biāo)向量,很難找到一組整數(shù)與基向量線性組合使得組合后的向量距離目標(biāo)向量最近?;蛘?#xff0c;理解為給定連續(xù)空間中任意一個(gè)點(diǎn),找到距離這個(gè)點(diǎn)最近的格點(diǎn)。這個(gè)距離一定是小于等于覆蓋半徑的。
還有一種定義是給定一個(gè)格,一個(gè)隨機(jī)點(diǎn)和搜索距離,并且假設(shè)覆蓋半徑小于等于搜索距離,CVP問題就是找到一個(gè)合理的格點(diǎn)并且這個(gè)點(diǎn)到隨機(jī)點(diǎn)的距離小于等于搜索距離。
寬松版(CVPγCVP_\gammaCVPγ?):找到γ\gammaγ倍距離就行
判定版(GapCVP)
格基約減算法(Lattice Basis Reduction)
在上述問題中,都需要輸入格的基,來形成一個(gè)格,從而找到相應(yīng)的值。同一個(gè)格有很多基,有些基是短的,盡可能垂直的,稱為“好”的基。而有些基又是長(zhǎng)的,且方向接近于同一方向或相反方向的,稱為“壞”的基。比如整數(shù)格Zn\mathbb{Z}^nZn就是一個(gè)“好”的基,在它上面解決CVP問題,只需要通過上下取整即可。
所以,需要將“壞”基轉(zhuǎn)變?yōu)椤昂谩被?#xff0c;目標(biāo)是找到一組非常接近垂直基,這個(gè)過程稱之為 格基約減,就是為了發(fā)現(xiàn)一組又短又垂直的基。
比較常見的算法就是施密特正交化,即輸入一組基,通過反復(fù)迭代最后輸出一組垂直的基,這組基能夠張成與輸入基相同的空間。由于格的系數(shù)都是整數(shù),所以應(yīng)用于格的時(shí)候需要把系數(shù)進(jìn)行四舍五入的取整到最近整數(shù)。
施密特方法高度依賴向量的順序問題,不同的基向量順序?qū)?dǎo)致不同的結(jié)果,為解決這個(gè)問題,誕生了LLL算法,但LLL算法只是一次考慮兩個(gè)向量,由此又誕生了BKZ算法。
參考
- 格密碼理論與應(yīng)用實(shí)踐
- 【格理論與密碼學(xué)】周福才,徐劍編著
- yue佬專欄里的格文章
總結(jié)
以上是生活随笔為你收集整理的格(Lattice)基础(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享个PDF文件签名盖章 DEMO
- 下一篇: 也许是全网最全的 Angular 新手入