格密码基础:对偶格(超全面)

目录

一. 对偶格的格点

1.1 基本定义

1.2 对偶格的例子

1.3 对偶格的图形理解

二. 对偶格的格基

2.1 基本定义

2.2  对偶格的格基证明

三. 对偶格的行列式

3.1 满秩格

3.2 非满秩格

四. 重复对偶格

五. 对偶格的转移定理(transference theorem)

六. 对偶格的连续最小值

七. 对偶格的正交投影

八. 对偶格基的正交化


推荐先阅读:

格密码的基础概念-CSDN博客

一. 对偶格的格点

1.1 基本定义

对偶格(dual lattice)也被称之为倒易格(reciprocal lattice)。原来满秩的格写做\Lambda,其对偶格的定义如下:

原来的格点和对偶格的任意(这两个字非常重要)格点相乘为整数即可。原来的格点如果为整数,那么对偶格里有可能会出现小数。此处y\in R^n代表n维实数空间,更准确来讲,对偶格应该在原来格的扩展空间内。那么对偶格更准确的定义,如下:

对偶格的右上角经常带“*”,span(\Lambda)代表格的扩展空间。

对偶格的重心在于,向量相乘为整数。当然,对偶格也是一种格,格的一些基本性质对偶格也具有。格和对偶格是成对出现的。

1.2 对偶格的例子

整数格的对偶格是其本身,也就是:

(Z^n)^*=Z^n

也就是整数格满足自对偶的性质。

如果把整数格的格点都扩大两倍,则形成子格。该格的对偶格则会出现小数,如下:

(2Z^n)^*=\frac{1}{2}Z^n

此处的系数有点类似倒数的感觉。

原始格的安全性在对偶格中依旧是存在的。

1.3 对偶格的图形理解

思考:给出任意一个向量点x,请找出所有跟这个向量点乘积为整数的点?

备注:向量与向量相乘为标量

线性代数告诉我们这些点会形成一个超平面,点跟点之间的距离为1/||x||。看一个二维的图形就很直接:

二. 对偶格的格基

格点相乘为整数,那这两个格的格基满足什么性质?

2.1 基本定义

原来的格基叫B,写做:

B=(b_1,\cdots,b_n)\in R^{m\times n}

格基内每个向量都是m维,一共有n个向量。

对偶格的格基维度肯定是保持不变的,也就是:

D=(d_1,\cdots,d_n)\in R^{m\times n}

对偶格和原来的格扩展空间肯定一致(向量点维度不一样的话,都不能相乘):

span(D)=span(B)

刚才发现对偶格有点倒数的感觉,反应在矩阵上则互逆,所以满足:

B^TD=I

单位阵对角线上全为1,其他位置均为0。那么矩阵互逆告诉我们,向量位置一致时,相乘为1,也就是:

\langle b_i,d_j\rangle=\delta_{ij}=1\quad i=j

向量位置不一致时,相乘为0:

\langle b_i,d_j\rangle=\delta_{ij}=0\quad i\neq j

如果格基为方阵,也就是格满秩,则可以直接求逆,那么:

D=(B^T)^{-1}

如果格基非方阵,也就是格非满秩,那么可以利用伪逆:

D=B(B^TB)^{-1}

综合以上,对偶格的格基D需要满足两个性质:

 通过以上公式可以发现,只要B确定了,对偶格的格基D也是唯一确定的。

为什么格基满足如上性质,就可以是对偶格?请看2.2

2.2  对偶格的格基证明

本质就是需要证明:

(L(B))^*=L(D)

借鉴集合相等的证明思路,我们的证明分成两步。

第一步:证明L(D)\subset(L(B))^*

从格L(B)内选取一个格点x,也就是x\in L(B),将其写做整数倍的向量求和形式:

x=\sum a_ib_i\quad a_i\in Z

从格基D中随机抽取一个向量d_j,运算可得:

\langle x,d_j\rangle=\sum_i a_i\langle b_i,d_j\rangle=a_i\in Z

第一个等号:将格点x直接带入;

第二个等号:矩阵B与矩阵D互逆;

因为a_i一定为整数,这个时候说明格基D中的每一个列向量都可以算做一个对偶格的格点。格点的求和运算具有封闭性,继续对这些对偶格点进行整数组合也一定是对偶格点,所以可得:

L(D)\subset(L(B))^*

第二步:证明(L(B))^*\subset L(D)

从对偶格(L(B))^*内随机取一个格点y,也就是:

y\in (L(B))^*

根据对偶格的定义,易得:

y\in span(B)=span(D)

根据扩展空间的定义,那么就可以将该点写做:

y=\sum a_id_i\quad a_i\in R

将对偶格的格点和原格的某个格基向量相乘,可得:

\langle y,b_j\rangle=\sum_i a_i\langle d_i,b_j\rangle=a_j\in Z

所以可得:

y\in L(D)

综上第一步和第二步,证明完毕。

三. 对偶格的行列式

对偶格的行列式与原来格的行列式互为倒数,也就是:

det(\Lambda^*)=1/det(\Lambda)

证明:

3.1 满秩格

将格基先转置在求逆,即为对偶格,所以可得:

det(\Lambda^*)=|det((B^T)^{-1})|

逆矩阵的行列式与原矩阵的行列式互为倒数,所以可得:

det(\Lambda^*)=|det((B^T)^{-1})|=|\frac{1}{det(B^T)}|

矩阵转置不影响行列式的值,所以可得:

3.2 非满秩格

非满秩格不能直接求逆,则需要借助伪逆,运算性质与以上类似,可得:

四. 重复对偶格

对偶格的对偶,即为原格,也就是:

(\Lambda^*)^*=\Lambda

证明:

考虑一般情况。记原格\Lambda的格基为B,那么对偶格的格基为:

D=B(B^TB)^{-1}

继续对格L(D)求对偶格,也就是运算:

D(D^TD)^{-1}

带入运算可得:

五. 对偶格的转移定理(transference theorem)

本小节需要用到这篇博客的结论:

格密码与最短向量上界_最短向量问题-CSDN博客

假定格\Lambda的秩为n,对偶格的最短向量长度满足:

\lambda_1(\Lambda)\cdot \lambda_1(\Lambda^*)\leq n

证明:

首先根据闵可夫斯基上界(Minkowski's bound),可得:

将其类推到对偶格,可得:

两者相乘可得:

\lambda_1(\Lambda)\cdot \lambda_1(\Lambda^*)\leq n

备注:根据Banaszczyk定理,这个界可以继续被放缩,可得:

\lambda_1(\Lambda)\cdot \lambda_n(\Lambda^*)\leq n

六. 对偶格的连续最小值

本小节需要利用此篇博客的基础知识:

格密码基础:最短向量与连续最小值(附下界讨论)_格的逐次最小长度-CSDN博客

假定格\Lambda的秩为n,可得:

\lambda_1(\Lambda)\cdot \lambda_n(\Lambda^*)\geq 1

证明:

假定v为原来的格最短的向量点,也就是:

v\in \Lambda\quad ||v||=\lambda_1(\Lambda)

从对偶格\Lambda^*中取n个线性独立的向量:

x_1,\cdots,x_n

根据格点相乘为整数,可得:

\langle x_i,v\rangle \in Z

这两个向量的长度乘积必然大于1,也就是:

||x_i||\cdot ||v||\geq 1

\lambda_n(\Lambda^*)的长度一定比||x_i||要大,于是乎可得:

\lambda_1(\Lambda)\cdot \lambda_n(\Lambda^*)\geq 1

七. 对偶格的正交投影

b_1,\cdots,b_n进行Gram-Schmidt正交化,可得:

\pi_1(b_1),\cdots,\pi_n(b_n)

其中\pi_i代表将向量投影到前i-1个正交平面上,也就是:

span(b_1,\cdots,b_{i-1})^\bot

假定B和D互为对偶格基。将矩阵B进行正交投影,可得:

B'=(\pi_i(b_i),\cdots,\pi_i(b_n))

此处就是把向量b_i,b_{i+1},\cdots,b_n往同一个正交平面进行投影。

该格基的对偶格基与原来保持不变,也就是

D'=(d_i,\cdots,d_n)

证明:

从扩展平面角度来讲,可得:

span(B')=span(b_1,\cdots,b_{i-1})^\bot

根据对偶格基的性质。d_i,\cdots,d_nb_1,\cdots,b_{i-1}互相垂直,任意向量之间同样两两独立。换句话说,也就是:

span(D')=span(b_1,\cdots,b_{i-1})^\bot

所以可得:

span(B')=span(D')

满足对偶格基的第一个性质。

根据向量相乘的性质,不难计算:

根据逆矩阵的性质,不难证明原定理。

八. 对偶格基的正交化

原格基为:

b_1,\cdots,b_n

Gram-Schmidt正交化为:

\tilde{b}_1,\cdots,\tilde b_n

对偶格基:

d_1,\cdots,d_n

按反方向,Gram-Schmidt正交化为:

\tilde{d}_1,\cdots,\tilde d_n

长度满足:

证明:通过以上对偶格基长度讨论易得。也可以用归纳法:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/234770.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代 C++ 及 C++ 的演变

C 活跃在程序设计领域。该语言写入了许多新项目,而且据 TIOBE 排行榜数据显示,C 的受欢迎度和使用率位居第 4,仅次于 Python、Java 和 C。 尽管 C 在过去二十年里的 TIOBE 排名都位居前列(2008 年 2 月排在第 5 名,到…

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-https://blog.csdn.net/alex_starsky/category_12467518.html 如何使用大模型查询助手功能?例如调用工具实现网络查询助手功能。目前只有 ChatGLM3-6B 模型支持工具调用,而 ChatGLM3-6B-Base 和 ChatGLM3-6B-32K 模型不支持。 定义好工具的…

【Gin实战教程】快速入门

Gin是一个轻量级的Web框架,使用Go语言开发。它具有高性能、易用性和灵活性的特点,是构建可扩展的Web应用程序的理想选择。 首先,Gin是一个高性能的框架。它基于Go语言的原生HTTP包进行开发,利用了Go语言的并发特性和协程模型&…

聊聊 Java 集合框架中的 ArrayList

其实 Java 集合框架也叫做容器,主要由两大接口派生而来,一个是 collection,主要存放对象的集合。另外一个是Map, 存储着键值对(两个对象)的映射表。 下面就来说说 List接口,List存储的元素是有序、可重复的。其下有三个…

JAVA实现文件上传至阿里云

注册阿里云账号后,开通好对象存储服务(OSS),三个月试用 阿里云登录页 (aliyun.com) 目录 一.创建Bucket 二.获取AccessKey(密钥) 三.参考官方SDK文件,编写入门程序 1.复制阿里云OSS依赖,粘贴…

Swift单元测试Quick+Nimble

文章目录 使用QuickNimble1、苹果官方测试框架XCTest的优缺点2、选择QuickNimble的原因:3、QuickNimble使用介绍集成:Quick关键字说明:Nimble中的匹配函数等值判断:使用equal函数是否是同一个对象:使用beIdenticalTo函…

【Verilog】期末复习——分别画出下面两个程序综合后的电路图/reg型数据和wire型数据的区别

系列文章 数值(整数,实数,字符串)与数据类型(wire、reg、mem、parameter) 运算符 数据流建模 行为级建模 结构化建模 组合电路的设计和时序电路的设计 有限状态机的定义和分类 期末复习——数字逻辑电路分…

基于ssm基于协同过滤技术的网上书城的开发与研究+jsp论文

摘 要 社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱。本次开发一套基于协同过滤技术的网上书城有…

大数据毕业设计:图书推荐系统+可视化+Django框架 图书管理系统 (附源码+论文)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

外汇天眼:CQG 与 TradeStation Securities 的经纪服务集成

TradeStation Securities, Inc.,一家自营的在线股票、ETF、期权和期货交易经纪公司,宣布与CQG合作,CQG是一家为交易员、经纪商、商业套保者和交易所提供高性能技术解决方案的全球供应商,已与TradeStation Securities的经纪服务集成…

idea右上角浏览器图标没有idea内部浏览器怎么显示

idea右上角浏览器图标没有idea内部浏览器怎么显示 file -> settings -> tools -> web brosers 选择需要的浏览器,勾选上展示到编辑器中 打开上图的Built-in Preview,就会显示idea标志的内部显示了!!!

python 和shell 变量互相传递

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 主要介绍python和shell变量互相传递方法,使用了环境变量、管道等方法。 python -> shell: 1.环境变量 import os var123或var123 o…

《C++语言程序设计(第5版)》(清华大学出版社,郑莉 董渊编著)习题——第2章 C++语言简单程序设计

2-15 编写一个程序&#xff0c;运行时提示输入一个数字&#xff0c;再把这个数字显示出来。 #include <iostream>using namespace std;int main() {// 提示用户输入数字cout << "请输入一个数字: ";// 用于存储用户输入的数字的变量double number;// 从…

源码|redis7.2.2|sds

文章目录 前言Type && EncodingsdsencodingcreateStringObjectcreateEmbeddedStringObject总结 createRawStringObject总结 createStringObjectFromLongDouble总结 createStringObjectFromLongLongWithOptions总结 相关操作sdscatlen总结 阈值44sds VS C字符串 前言 从…

docker镜像的生成过程

镜像的生成过程 Docker镜像的构建过程&#xff0c;大量应用了镜像间的父子关系。即下层镜像是作为上层镜像的父镜像出现的&#xff0c;下层镜像是作为上层镜像的输入出现。上层镜像是在下层镜像的基础之上变化而来。 FROM centos:7 FROM指令是Dockerfile中唯一不可缺少的命令&a…

Web APIs知识点讲解

学习目标: 能获取DOM元素并修改元素属性具备利用定时器间歇函数制作焦点图切换的能力 一.Web API 基本认知 1.作用和分类 作用: 就是使用 JS 去操作 html 和浏览器分类&#xff1a;DOM (文档对象模型)、BOM&#xff08;浏览器对象模型&#xff09; 2.DOM DOM(Document Ob…

吉林大学19、21级计算机学院《计算机网络》期末真题试题

一、21级&#xff08;考后回忆&#xff09; 一、不定项选择&#xff08;一共10个选择题&#xff0c;一个两分&#xff0c;选全得满分&#xff09; 不定项&#xff1a;可以选择1~4个 考点有&#xff1a; ①协议、服务 ②码分多路复用通过接受码片序列&#xff0c;求哪个站点发送…

vue3项目中axios的常见用法和封装拦截(详细解释)

1、axios的简单介绍 Axios是一个基于Promise的HTTP客户端库&#xff0c;用于浏览器和Node.js环境中发送HTTP请求。它提供了一种简单、易用且功能丰富的方式来与后端服务器进行通信。能够发送常见的HTTP请求&#xff0c;并获得服务端返回的数据。 此外&#xff0c;Axios还提供…

C++ queue

目录 一、介绍 二、queue使用 三、模拟实现 四、优先级队列 五、priority_queue使用 OJ题&#xff1a;215. 数组中的第K个最大元素 快速排序 优先级队列 TOPK 六、模拟实现priority_queue 1、仿函数 2、优先级队列类 3、测试函数 一、介绍 1、队列是一种容器适配器…

【手搓深度学习算法】用线性回归预测波士顿房价

线性回归 线性回归是一种监督学习方法&#xff0c;用于建立因变量与一个或多个自变量之间的关系。线性回归的目标是找到一条直线&#xff0c;使得所有数据点到这条直线的距离之和最小。 线性回归的基本形式如下&#xff1a; y β 0 β 1 x 1 β 2 x 2 . . . β n x n ϵ…