格密码与线性代数

目录

一. 幺模矩阵

二. Gram-Schmidt 正交化

三. 矩阵分解

四. 格基本区

五. 对偶格基

六. 矩阵伪逆

七. 正定矩阵

八. 矩阵转置

九. 奇异值分解(SVD分解)


格密码中格基是矩阵,格点是向量。本文章梳理一些格密码常用到的一些线性代数的知识点。

一. 幺模矩阵

对格基乘以整数幺模矩阵,会得到新的格基,该格基形成的格点与原来的格点一样。幺模矩阵U\in Z^{m\times m}满足|det(U)|=1。幺模矩阵的逆U^{-1}\in Z^{m\times m}依旧为幺模矩阵。

二. Gram-Schmidt 正交化

将格基的一列看成一个向量,也就是V=\lbrace v_1,\cdots,v_k\rbrace\in R^n。假定Gram-Schmidt 正交化是按顺序进行的,正交化后记作\tilde V=\lbrace \tilde v_1,\cdots,\tilde v_k\rbrace,可以将\tilde v_i看成向量v_i的分量。对格密码而言,最重要的性质则是\tilde v_ispan(v_1,\cdots,v_{i-1})垂直。

三. 矩阵分解

对格基矩阵V可作如下分解:

V=QDU

其中Q\in R^{n\times k}为正交阵,D\in R^{k\times k}为对角阵(对角线的值均大于等于0),U\in R^{k\times k}为上三角矩阵且对角线元素的值均为1。

通常格基中的向量都是线性独立的,所以根据线性代数的基础,我们知道这种分解也是唯一的。而且Gram-Schmidt 正交化后向量的长度与矩阵D对角线元素的值是有关系的,也就是||\tilde v_i||=d_{i,i},其中d_{i,i}为矩阵D对角线元素的值。

四. 格基本区

给定任意格基V=\lbrace v_1,\cdots,v_n\rbrace,可形成格基本区。如果把该基本区进行平移,让原点处于该基本区的中心,也就是所谓的origin-centered parallelepiped,如下:

P_{1/2}(V)=V\cdot [-\frac{1}{2},\frac{1}{2}]^n

五. 对偶格基

原格基为V,对偶格基为V^*,利用如何公式可计算对偶格基:


V^*=V^{-t}=(V^{-1})^t

通俗来讲就是先对格基求逆,再转置,就是对偶格的格基。整个过程非常丝滑。

其实对偶格Gram-Schmidt 正交化的结果与原来格基也有关系,先上结论:

\tilde v_i^*=\tilde v_i/||\tilde v_i||^2

其实就是向量长度互为倒数,如下:

||\tilde v_i^*||=1/||\tilde v_i||

六. 矩阵伪逆

有些方阵X不能直接求逆,这个时候就需要利用伪逆(有的时候也叫Moore-Penrose伪逆),为方便后续解释,暂时记为X^{+}。原矩阵和伪逆矩阵需要满足:

(XX^+)X=X

反过来也经常利用:

X^+(XX^+)=X^+

需要注意的是XX^+不等于单位阵,但是XX^+X^+X互为对称矩阵(其实就是转置相等)。

在格密码中,矩阵和伪逆矩阵的空间是不变的,也就是:

span(X)=span(X^+)

七. 正定矩阵

给定一个对称矩阵\Sigma\in R^{n\times n},对任意向量x\in R^n,都满足如下不等式:

x^t\Sigma x>0

则称该矩阵\Sigma为正定矩阵(positive definite),通常记为\Sigma>0

当然,如果不等式改为:

x^t\Sigma x\geq 0

则称该矩阵为半正定矩阵,记为\Sigma\geq 0

实际上,正定矩阵一定可以求逆,并且逆矩阵也为正定矩阵,也就是\Sigma^{-1}>0

但是半正定矩阵不一定可以求逆,只能求伪逆,其伪逆也为半正定矩阵,也就是\Sigma^+\geq 0

在格密码论文中,如果看到\Sigma_1>\Sigma_2,其实是想表达两个矩阵相减为正定矩阵(\Sigma_1-\Sigma_2)>0。这个结论换成半正定矩阵也是成立的。另外,如果原矩阵满足这种不等关系,逆矩阵也有类似的结论。换句话说,如果\Sigma_1\geq \Sigma_2\geq 0,可得\Sigma_2^+\geq \Sigma_1^+\geq 0

八. 矩阵转置

“七”中谈到的对称矩阵有一个非常简单的实现方式。给定任意矩阵B,将该矩阵的转置乘以本身,得到新的矩阵则为对称矩阵。也就是,\Sigma=BB^t。另外其实很好证明,这个矩阵\Sigma则是一个半正定矩阵,因为:

x^t\Sigma x=\langle B^tx,B^tx\rangle=||B^tx||^2\geq 0

当然,熟悉线代的小伙伴都知道,以上运算要求矩阵B非奇异(nonsingular)。

这个结论可以反推。如果已知某矩阵\Sigma>0,那么该矩阵存在平方根,也就是B=\sqrt \Sigma。根据半正定矩阵的性质,任意\Sigma\geq 0都存在平方根,而且求平方根的过程多项式时间复杂度内可以解决(比如Cholesky分解法)。

九. 奇异值分解(SVD分解)

奇异值分解,英语为singular value decomposition,经常在格密码中简称为SVD分解。奇异值分解主要是给非方阵准备的,对任意矩阵B\in R^{n\times k},可以作如下分解:

B=QDP^t

其中Q\in R^{n\times n},P\in R^{k\times k}均为正交矩阵,D\in R^{n\times k}为对角阵。对角线上的值通常以降序排列,并且每个值均大于等于0。其实实际上,对角线上的值就是矩阵B的奇异值s_i\geq 0。如果想求最大的奇异值,通常利用如下:

s_1(B)=max_u||Bu||=max_u||B^tu||

其中,u为任意单位向量u\in R^k

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

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

相关文章

bisect_left,bisect_right,bisect的用法,区别以源码分析

bisect_left(*args, **kwargs) 向一个数组插入一个数字,返回应该插入的位置。 如果这个数字不存在于这个数组中,则返回第一个比这个数大的数的索引 如果这个数字存在,则返回数组中这个数的位置的最小值(即最左边那个索引&#xf…

【算法系列篇】递归、搜索和回溯(四)

文章目录 前言什么是决策树1. 全排列1.1 题目要求1.2 做题思路1.3 代码实现 2. 子集2.1 题目要求2.2 做题思路2.3 代码实现 3. 找出所有子集的异或总和再求和3.1 题目要求3.2 做题思路3.3 代码实现 4. 全排列II4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面我们通过几个题目…

Vue中父子Props传值不能修改的原因分析以及解决办法

Vue 官方文档中对于 Prop 的定义: Prop 是你可以在组件上注册的一些自定义属性。当一个值传递给一个 props 属性的时候,它就变成了那个组件实例的一个属性。为了给子组件传递数据,我们需要在该组件上使用 v-bind 指令绑定需要传递的数据。 由…

生物识别应用指纹的算法是什么样的?有什么性能?

方案特点 • 采用金融级安全芯片 ACH512 的指纹模组,指纹和密码安全存储,云端数据安全传输 • 采用高性能指纹专用安全MCU芯片ACM32FP4,支持小点阵图像算法处理 • 支持80*64、88*112、96*96、160*160、192*192等像素传感器 • 已适配传…

亚马逊,速卖通,shein卖家如何准确有效的测评补单

一、合理规划测评时间和数量 卖家需要合理规划测评的时间和数量。如果卖家过于频繁地进行测评,或者在短时间内进行大量的测评,这可能会被视为恶意行为,从而触犯风控机制。因此,卖家需要根据自己的销售情况和市场需求,…

二进制转十六进制字符串的C语言高效率实现(如“10100011“转为字符串“A3“)

对于一串二进制01比特,有时为了显示或者编辑方便高效,我们需要将二进制比特流转换成十六进制,众所周知,二进制转十六进制是每4比特进行转换,例如将以下二进制流: 1010 0011 1100 1101 转换为十六进制应为: A3CD 有时候,还可以每字节中间添加一个空格 A3 CD 下面直接…

Android 应用基准分析

先推荐一个作者的开源项目 最快的Json解析方式 参考 benchmark数据参考 benchmark的例子 可以参考json-benchmark 应用基准分析 是衡量时间维度的框架,是App界的鲁大师跑分,常用于耗时判断,冷启动,热启动,框架对比 预热对比等方面 开局一张图 下面再编 今天要做的是Microbe…

详细教程 - 从零开发 Vue 鸿蒙harmonyOS应用 第七节-—— 鸿蒙应用进程通信深度剖析

一、简介 1.1 进程通信的重要性 不同进程间需要通过通信来协作完成任务良好的IPC机制是构建模块化应用的必要手段 1.2 鸿蒙采用的RPC机制 鸿蒙应用进程通信采用了轻量级RPC,流程如下: 客户端发送请求数据到服务器进程服务器调用函数处理请求,并返回响应客户端获取并处理响应…

Educational Codeforces Round 160 (Rated for Div. 2)(D 动态规划)

关于如何思考DP这件事...这题还是比较好的 思路:考虑为当前共有 i 个数且以为结尾,能够形成的字段的个数。要想求出,只需要知道的前一个数可以是什么,这样就能够进行状态转移了。 首先定义是前方第一个比小的数。 1、首先考虑比…

搭建知识付费平台?明理信息科技为你提供全程解决方案

明理信息科技saas知识付费平台 在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和维护…

在Java中高效使用Lambda表达式和流(Streams)的技巧

Java中如何高效使用Lambda表达式和流(Streams)的技巧 1. 简介 在Java中,Lambda表达式和流(Streams)是Java 8引入的两个强大的特性。Lambda表达式为Java添加了一种简洁的方式来实现函数式编程,而流提供了一…

为什么是60R+60R+电容,而不是直接用120R?

我们经常会在CAN通讯中看到如下所示的设计:CAN终端电阻不直接用120欧姆,而是用两个60欧姆串联,并且在两个电阻中间用一个小电容接地。 所以为什么这么做呢?难道说用一颗电阻不好吗?还可以节省点一些布局空间。 存在即…