格(Lattice)

格(lattice)的定义

不是那么标准的定义
有一组线性无关的空间向量(b1,b2,…,bn)∈Rn(b_1,b_2,\ldots,b_n) \in \mathbb{R^n}(b1​,b2​,…,bn​)∈Rn作为基,该组的每个向量若乘以某个整数系数(也就是通过线性变换)所产生的离散基向量生成空间向量集合就称为格。
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{b}_{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}
帮助理解: 假如把空间里的向量的末端视为一个点,则格就是某空间里面的具有一些规律的离散的点集合,也可以说格是某空间中的一个离散的、具有加法运算的子群。类似这样

值得注意的是

  1. 系数是整数,向量坐标是实数,如果向量坐标也是整数,那么生成的格就称为整数格,有点类似笛卡尔坐标系。
  2. 我们可以用线代中学到的基向量变更给这个格找到一组新的基CCC,那么可得C=ABC=ABC=AB,这里det(A)=±1det(A)=\pm1det(A)=±1。即格的任意两个基可以通过左乘一个特定的矩阵来相互转化,这矩阵是由整数构成的,且它的行列式为±1\pm1±1
    证明过程如下,

    同时,这种矩阵也称为幺模矩阵
    (unimodular matrix)
    定义: U∈Zn×nU\in\mathbb{Z}^{n \times n}U∈Zn×n,∣U∣=±1|U|=\pm1∣U∣=±1,UUU称为幺模矩阵同时它的逆也是幺模矩阵。

如何判定两个格基是否能生成同一个格呢?
当一个格基能通过幺模矩阵进行变换到另一个格基的时候,这两个格基就可以生成相同的格。

基础区域(Fundamental Parallelepiped)

由格基BBB线性组合,系数在[0,1)[0,1)[0,1)之间组成的一块区域。

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}
大概像这样,

如何判定给定的向量集是否构成格的“basis”?
由向量生成的"basic parallelepiped"不应该包含除原点外的任何格点,即基础区域与格的交集为0。
如下图

图2(c)中所示的"basic parallelepiped"包含格点 (1,0),而图2(a)和图2(b)中的基本平行不包含任何非零格点。
一个格的任意基础区域都拥有相同的体积(体积不是狭义的三维体积,可以扩展到n维,如二维是面积,三维是体积)。

行列式(Determinant)

类似于线性空间里,一个格的行列式代表了对应基向量所组成的几何体体积
定义格的行列式作为基础区域的n维体积
det(L)=∑ibi⋅[0,1)=vol(P(B))det(\mathcal{L})=\sum_{i}{\mathbf{b}_{i}}\cdot[0,1)=vol(\mathcal{P(\mathbf{B})}) det(L)=i∑​bi​⋅[0,1)=vol(P(B))
注意
给定任意一组基向量,这个Determinant大小是不变的,也就是无论怎么变换,都能找到这个值,即一个格的任意基础区域体积都相同。它不依赖于计算它的某个具体基础区域,是格的不变量。证明过程如下

格密度

格的密度可以理解为,在空间里任意取一个超球体,然后看这个球体里面覆盖了多少格点,点的数量平均于球体体积,这个就是密度
格的行列式与其密度成反比
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)

最短距离与连续最小值

格的一个基本参数是格中最短非零向量的长度,也就是点与点之间的最短距离,为了方便可以把其中一个点设置为坐标轴的原点。
λ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)。

距离函数(Distance Function)与覆盖半径(Covering Radius)

给定一个任意点t\mathbf{t}t(可以不在格上),定义距离函数μ(t,L)\mu(\mathbf{t},\mathcal{L})μ(t,L)为这个点到附近的格点的最短距离。
μ(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∥
可以通过移动t\mathbf{t}t位置得到这个格中最大的μ\muμ,这个就称为覆盖半径(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μ是点到格点的最短距离,如果把点换为格点,以每个格点为圆心画圆并逐步扩大,直到这些圆正好完美的覆盖所有空间的时候,这个半径就是最大的μ\muμ,即覆盖半径了。

格的Smoothing

假如将上述的圆,改变为叠加圆形范围内取值的随机噪音,而当达到覆盖半径的时候将会出现取值分布很不平均的问题,那么为了解决此问题就需要smooth一下格。
理论上当半径到无限大的时候,得到的分布是很完美的,但是这种构造就没了意义,所以就出现了一个Smoothing的半径最大上限,该上限由格中距离最大的最短向量λn\lambda_{n}λn​来决定的,大于这个距离之后,必然会覆盖其他的格点。

Minkowski定理

凸集定理(Convex body theorem)
用于寻找一个格点周围最近的其他格点的。
给出一个Lattice中最短向量的一个上限值。
λ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对应空间压缩为一个立方体,那么该立方体的对角线长度就是nr\sqrt{n}rn​r,对角线的另一头必然是下一个格点(但不一定是最近的格点),所以肯定要小于等于这个对角线的长度
第二定理
给出一个对于其他最短向量λi\lambda_{i}λi​的一个取值上限
λ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个最短向量的几何平均数,小于之前的对角线长度,由于任意一个格的Determinant对应空间的Parallelepiped是不规则的,所以用几何平均数能很好约束Parallelepiped边的长度

格中难题

最短向量问题(SVP)

定义
在格中需找一个最短的非零格点

可以理解为:寻找一组整数与基向量线性组合使得组合后的向量的长度最短。或者,理解为给定一个基的格,找到一个这个基构成的格点,使得这个点距离坐标原点距离最近。
宽松版(SVPγSVP_\gammaSVPγ​):找到γ\gammaγ倍距离就行
判定版(GapSVP)

最短独立向量问题(SIVP)

定义
给定一个格,找到n个线性无关的向量,并且这些向量的长度都要小于定于最长的最短向量。
宽松版(SIVPγSIVP_\gammaSIVPγ​):找到γ\gammaγ倍距离就行
判定版(GapSIVP)

最近向量问题(CVP)

定义
在离散线性集合中逼近目标向量的问题
给定一个不在格中的目标向量,在各种寻找一个向量使得该向量与目标向量距离最近。

可以理解为:给定一组格基向量,和一个目标向量,很难找到一组整数与基向量线性组合使得组合后的向量距离目标向量最近。或者,理解为给定连续空间中任意一个点,找到距离这个点最近的格点。这个距离一定是小于等于覆盖半径的。

还有一种定义是给定一个格,一个随机点和搜索距离,并且假设覆盖半径小于等于搜索距离,CVP问题就是找到一个合理的格点并且这个点到随机点的距离小于等于搜索距离。
宽松版(CVPγCVP_\gammaCVPγ​):找到γ\gammaγ倍距离就行
判定版(GapCVP)

格基约减算法(Lattice Basis Reduction)

在上述问题中,都需要输入格的基,来形成一个格,从而找到相应的值。同一个格有很多基,有些基是短的,尽可能垂直的,称为“好”的基。而有些基又是长的,且方向接近于同一方向或相反方向的,称为“坏”的基。比如整数格Zn\mathbb{Z}^nZn就是一个“好”的基,在它上面解决CVP问题,只需要通过上下取整即可。

所以,需要将“坏”基转变为“好”基,目标是找到一组非常接近垂直基,这个过程称之为 格基约减,就是为了发现一组又短又垂直的基。

比较常见的算法就是施密特正交化,即输入一组基,通过反复迭代最后输出一组垂直的基,这组基能够张成与输入基相同的空间。由于格的系数都是整数,所以应用于格的时候需要把系数进行四舍五入的取整到最近整数。

施密特方法高度依赖向量的顺序问题,不同的基向量顺序将导致不同的结果,为解决这个问题,诞生了LLL算法,但LLL算法只是一次考虑两个向量,由此又诞生了BKZ算法。

参考

  • 格密码理论与应用实践
  • 【格理论与密码学】周福才,徐剑编著
  • yue佬专栏里的格文章

格(Lattice)基础(一)相关推荐

  1. Lattice原理及在通信中的应用 1 Lattice 基础

    本文 largely based on Prof. Kschischang 和 Chen Feng 2014 年给的 tutorial.原 tutorial 的标题是 "An Introdu ...

  2. 2022年证券从业资格金融市场基础知识考试多选题专练及答案

    题库来源:优题宝公众号 2022年证券从业资格金融市场基础知识考试多选题专练及答案,由优题宝公众号根据最新证券从业资格金融市场基础知识考试大纲与历年证券从业资格金融市场基础知识考试真题汇总编写,包含证 ...

  3. 10、格密码-抗量子计算

    目录 格密码 格的定义 格密码背景 格问题 格密码发展 格密码特点 LLL算法 LWE(Learning With Errors) 参考推荐: ***格密码学习笔记(一)_中科院大学网安学院五班的博客 ...

  4. 计算机课件文字,计算机应用基础_文字处理wordppt课件.ppt

    <计算机应用基础_文字处理wordppt课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机应用基础_文字处理wordppt课件.ppt> ...

  5. 计算机应用基础win,计算机应用基础(Win 7+Office 2010)

    计算机应用基础(Win 7+Office 2010) 语音 编辑 锁定 讨论 上传视频 <计算机应用基础(Win 7+Office 2010)>是清华大学出版社2017年出版的图书,作者张 ...

  6. 姓名学中五格的算法与吉凶

    姓名五格剖象法根据姓名的笔画数以及一定规则构成天格.地格.人格.外格.总格等五种数理关系,来观察姓名所暗示的意义.我们应辩证地看待五格姓名学,取其精华.弃其糟粕.下面简单介绍一下五格的计算方法: 一. ...

  7. 计算机应用基础李健,计算机应用基础教程 李健苹 计算机应用基础教程 第4章...

    计算机应用基础教程 李健苹 计算机应用基础教程 第4章 (58页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 主讲人:李健苹 2011.2 ...

  8. linux提高程序优先级,Linux基础命令---调整程序优先级renice

    renice renice指令可以重新调整程序运行的优先级,可以通过进程id.用户id.组id来修改优先级.修改组的等级,影响组内所有用户的所有进程优先级:修改用户等级,影响该用户的所有进程优先级.除 ...

  9. IBM发布未来五年五大科技预测

    来源:人工智能和大数据 未来五年五大科技预测之AI偏见: AI 偏见将会爆发.但只有公正的 AI 才能生存.  5年之内,有偏见的AI系统和算法将不断增多,就像早前的计算机病毒增多一样.但我们将采取相 ...

  10. 【知识图谱】知识推理

    文章目录 一.本体知识推理简介 1.OWL本体语言 2.描述逻辑 (1)描述逻辑系统 (2)描述逻辑的语义 3.知识推理任务分类 (1)可满足性(satisfiability) (2)分类(class ...

最新文章

  1. webpack入门学习手记(一)
  2. access求斐波拉契数列_打印目录,斐波那契数列的递归与循环,牧场牛数
  3. 如何通过解决精益问题提高敏捷团队生产力
  4. 【BZOJ3172】单词,AC自动机练习
  5. mysql中最常用的存储引擎有_mysql常用的存储引擎有哪些
  6. java Hibernate
  7. Python实现最简单的神经网络(数字识别)
  8. C++---之Arraylist
  9. 关于局云混合的新思路
  10. php选中文本区域,php – 将新行更改为文本区域
  11. 基于SSM的大学生兼职平台
  12. 给WPS添加快捷键 智能粘贴 粘贴纯文本
  13. Linux服务器的系统时间的校准
  14. Ubuntu 18.04 镜像下载
  15. 工资计算器的小demo
  16. 反激开关电源的工作原理
  17. 来电铃声播放流程总结
  18. oracle11g sga分配,Oracle11gsga_target参数设置
  19. 谷歌账户无法添加_如何将多个Google帐户添加到Google Home
  20. web端 刷卡器_在WEB浏览器使用IC卡读卡器的几种方案的对比

热门文章

  1. CMOS逻辑门电路的重要技术参数
  2. 概要设计的过程和任务
  3. 服务器端查看图片库 eog
  4. 《产品经理深入浅出》PART 3:产品经理专业技能
  5. 【算法导论-37】Graph的Java实现
  6. vmware运行虚拟机ubuntu,电脑就重启
  7. CHROME扩展开发文档之·chrome.runtime
  8. s5pv210时钟系统详解
  9. C语言中short和unsigned short的取值问题和计算机组成原理
  10. python桌面程序臃肿_危险的转变:Python正在从简明转向臃肿,从实用转向媚俗