Gröbner基方法入门第III部分:Gröbner基方法的应用_gronber基通俗-程序员宅基地

技术标签: 代数  

Gröbner基方法入门第III部分:Gröbner基方法的应用

Gröbner基理论是一种在国外被普遍认同的用于求解多变元高次方程系统的有效算法,其概念最早由Buchberger提出.其本质是从多项式环中任意理想的生成元出发,刻画和计算出一组具有“好的”性质的生成元,进而研究理想的结构并进行某些理想运算;由于数学、科学和工程学中的许多问题都可以用多元多项式方程组表示(例如,理想,模块和矩阵),Gröbner基的代数算法在理论物理学、应用科学和工程学中具有广泛的应用;


计算多项式理想

让我们先来了解如何用Gröbner基来计算多项式理想;

判定任给多项式是否属于一个给定生成元的理想,

  • ♡ \heartsuit 定理3.1:
    P \mathbb{P} P K [ x ] \mathcal{K}[\boldsymbol{x}] K[x] 中的多项式组,而 G \mathbb{G} G P \mathbb{P} P 的 Gröbner 基,则对任意多项式 P ∈ K [ x ] P \in \mathcal{K}[\boldsymbol{x}] PK[x]:

P ∈ ⟨ P ⟩ ⟺ nform ⁡ ( P , G ) = 0 P \in\langle\mathbb{P}\rangle \Longleftrightarrow \operatorname{nform}(P, \mathbb{G})=0 PPnform(P,G)=0

  • ♡ \heartsuit 定理3.2:
    P \mathbb{P} P Q \mathbb{Q} Q K [ x ] \mathcal{K}[\boldsymbol{x}] K[x] 中的多项式组,而 G \mathbb{G} G P \mathbb{P} P的Gröbner基,则:

⟨ Q ⟩ ⊂ ⟨ P ⟩ ⟺ nform ⁡ ( Q , G ) = { 0 } \langle\mathbb{Q}\rangle \subset\langle\mathbb{P}\rangle \Longleftrightarrow \operatorname{nform}(\mathbb{Q}, \mathbb{G})=\{0\} QPnform(Q,G)={ 0}

  • ⋆ \star 例3.3(判定理想 I I I的成员问题):
    I = ⟨ f 1 , f 2 ⟩ = ⟨ x z − y 2 , x 3 − z 2 ⟩ ∈ C [ x , y , z ] I=\left\langle f_{1}, f_{2}\right\rangle=\left\langle x z-y^{2}, x^{3}-z^{2}\right\rangle \in \mathbb{C}[x, y, z] I=f1,f2=xzy2,x3z2C[x,y,z],并且使用grlex项序.取 f = − 4 x 2 y 2 z 2 + y 6 + 3 z 5 f=-4 x^{2} y^{2} z^{2}+y^{6}+3 z^{5} f=4x2y2z2+y6+3z5.我们感兴趣的是是否有 f ∈ I f \in I fI.

计算其Gröbner基:
G = ( f 1 , f 2 , f 3 , f 4 , f 5 ) = ( x z − y 2 , x 3 − z 2 , x 2 y 2 − z 3 , x y 4 − z 4 , y 6 − z 5 ) G=\left(f_{1}, f_{2}, f_{3}, f_{4}, f_{5}\right)=\left(x z-y^{2}, x^{3}-z^{2}, x^{2} y^{2}-z^{3}, x y^{4}-z^{4}, y^{6}-z^{5}\right) G=(f1,f2,f3,f4,f5)=(xzy2,x3z2,x2y2z3,xy4z4,y6z5)

现在可以判定 I I I的成员.比如,使用上述 G G G来约化 f f f,我们发现:

f = ( − 4 x y 2 z − 4 y 4 ) ⋅ f 1 + 0 ⋅ f 2 + 0 ⋅ f 3 + 0 ⋅ f 4 + ( − 3 ) ⋅ f 5 + 0 f=\left(-4 x y^{2} z-4 y^{4}\right) \cdot f_{1}+0 \cdot f_{2}+0 \cdot f_{3}+0 \cdot f_{4}+(-3) \cdot f_{5}+0 f=(4xy2z4y4)f1+0f2+0f3+0f4+(3)f5+0

因为其余数为 0 0 0,可以判定 f ∈ I f \in I fI.

应用概括

在数学和应用科学的许多不同领域中,有许多问题都可以使用Grobner基础解决.在这里,我们仅列出一些应用问题:

  • 多项式方程组的求解系统,例如相交的曲面和曲线,找到曲线上或曲面上最接近给定点的点,Lagrange乘子问题(尤其是那些具有多个乘子的问题)等.这些问题的解决方案基于所谓的扩展理论.参见文献[1]

  • 为等距​​曲线和曲面找到到由多项式方程定义的曲线和曲面的方程,例如圆锥截面,Bezier三次方程;在各种多项式集合之间找到syzygy关系,例如对称多项式,有限组不变式,插值函数等.这些问题的解决方案基于所谓的消除理论.参见文献[1]

  • 找到等距的曲线和曲面作为相应曲线和曲面族的包络.参见文献[2,1]

  • 隐式化问题,即消除参数并找到曲线和曲面的隐式形式.

  • 机器人技术中的正向运动学和逆向运动学问题.参见文献[3,1]

  • 自动几何定理证明.参见文献[3,4,1]

  • 根据生成不变式表达有限组的不变式.参见文献[1]

  • 查找多项式函数之间的关系,例如插值函数(Syzygy关系).

  • 有关大地测量学的最新应用.参见文献[5]

  • 另请参见约翰·拉顿计算与应用数学研究所(RICAM)的Grobner基地书目.参见文献[6]

一些例子

代数曲面
  • ⋆ \star 例3.4:
    S 1 S_{1} S1 S 2 S_{2} S2为多项式 f 1 f_{1} f1 f 2 f_{2} f2所定义的球面:

f 1 = 4 ( x 1 − 1 ) 2 + 4 x 2 2 + 4 x 3 2 − 9 , f 2 = ( x 1 + 1 ) 2 + x 2 2 + x 3 2 − 4 f_{1}=4\left(x_{1}-1\right)^{2}+4 x_{2}^{2}+4 x_{3}^{2}-9, f_{2}=\left(x_{1}+1\right)^{2}+x_{2}^{2}+x_{3}^{2}-4 f1=4(x11)2+4x22+4x329,f2=(x1+1)2+x22+x324

也就是说 S 1 = V ( f 1 ) S_{1}=\mathbf{V}\left(f_{1}\right) S1=V(f1)并且 S 2 = V ( f 2 ) S_{2}=\mathbf{V}\left(f_{2}\right) S2=V(f2).那么,理想 J J J的一个使用项序 x > y > z x>y>z x>y>z生成的约化的Gröbner基为

G = { 256 x 2 2 + 256 x 3 2 − 495 , 16 x 1 − 7 } G=\left\{256 x_{2}^{2}+256 x_{3}^{2}-495,16 x_{1}-7\right\} G={ 256x22+256x32495,16x17}

此处第一个多项式 c c c给出了圆柱面 V ( c ) \mathbf{V}(c) V(c)而第二项给出了平面 V ( π ) \mathbf{V}(\pi) V(π).如此一来,曲线 C = S 1 ∩ S 2 = V ( c ) ∩ V ( π ) C=S_{1} \cap S_{2}=\mathbf{V}(c) \cap \mathbf{V}(\pi) C=S1S2=V(c)V(π)可以用两种方式可视化出来:

在这里插入图片描述

i) 两个球面相交的方式(图左);
ii) 圆柱面和平面相交的方式(图右);

机器人
  • ⋆ \star 例3.5(机械手臂动作规划):
    我们建模一个CGA作为一个5-D实向量空间 V V V的Clifford代数,这是3-D Euclidean空间的一个原点无穷大平面的扩张.令 { e 1 , e 2 , e 3 , e 4 , e 5 } \left\{\mathbf{e}_{1}, \mathbf{e}_{2}, \mathbf{e}_{3}, \mathbf{e}_{4}, \mathbf{e}_{5}\right\} { e1,e2,e3,e4,e5}是空间 V V V的基向量族,并且在CGA中满足下列约束关系:

e i 2 = 1 , e i ⋅ e j = e j ⋅ e i = 0 , e i ⋅ e 4 = e i ⋅ e 5 = 0 , e 4 2 = e 5 2 = 0 , e 4 ⋅ e 5 = − 1 \mathbf{e}_{i}^{2}=1, \quad \mathbf{e}_{i} \cdot \mathbf{e}_{j}=\mathbf{e}_{j} \cdot \mathbf{e}_{i}=0, \quad \mathbf{e}_{i} \cdot \mathbf{e}_{4}=\mathbf{e}_{i} \cdot \mathbf{e}_{5}=0, \quad \mathbf{e}_{4}^{2}=\mathbf{e}_{5}^{2}=0, \quad \mathbf{e}_{4} \cdot \mathbf{e}_{5}=-1 ei2=1,eiej=ejei=0,eie4=eie5=0,e42=e52=0,e4e5=1

进一步的方式表示以上约束有:

P = p + 1 2 p 2 e ∞ + e 0 , S = s + 1 2 ( s 2 − r 2 ) e ∞ + e 0 , π = n + d e ∞ P=\mathbf{p}+\frac{1}{2} \mathbf{p}^{2} e_{\infty}+e_{0}, \quad S=\mathbf{s}+\frac{1}{2}\left(\mathbf{s}^{2}-r^{2}\right) e_{\infty}+e_{0}, \quad \pi=\mathbf{n}+d e_{\infty} P=p+21p2e+e0,S=s+21(s2r2)e+e0,π=n+de

这儿 p \mathbf{p} p是3-D点位置, s \mathbf{s} s是3-D球面球心而 r \mathbf{r} r是球半径. n \mathbf{n} n是3-D平面的单位向量, d d d是平面距离原点的距离.

值得注意的是,以上是约束方程,也就是机械手臂无论怎么动都必须满足的方程,我们还会引入目标方程,也就是希望机械手臂终端去触碰的轨迹,这时结合约束方程,就会得到一个非线性多项式方程组,其解即为操纵段的运动轨迹;比如需要求解:

C = S 1 ∧ S 2 = − 17 8 e 1 ∧ e ∞ + 2 e 1 ∧ e 0 − 7 8 e 0 ∧ e ∞ C=S_{1} \wedge S_{2}=-\frac{17}{8} \mathbf{e}_{1} \wedge e_{\infty}+2 \mathbf{e}_{1} \wedge e_{0}-\frac{7}{8} e_{0} \wedge e_{\infty} C=S1S2=817e1e+2e1e087e0e

写出其多项式方程组形式,再求这个方程组生成的理想 I I I的Gröbner基我们得到:

{ − 495 + 256 r 2 , c 3 , c 2 , − 7 + 16 c 1 , n 3 , n 2 , n 1 + 2 } \left\{-495+256 r^{2}, c_{3}, c_{2},-7+16 c_{1}, n_{3}, n_{2}, n_{1}+2\right\} { 495+256r2,c3,c2,7+16c1,n3,n2,n1+2}

最终我们解出得到 n c = ( − 2 , 0 , 0 ) , c = ( 0 , 0 , 0 ) , \mathbf{n}_{\mathbf{c}}=(-2,0,0), \mathbf{c}=(0,0,0), nc=(2,0,0),c=(0,0,0), and r = 5 2 r=\frac{\sqrt{5}}{2} r=25 为所求;

密码分析的代数攻击
  • ⋆ \star 例3.6:
    第一步就是需要用多项式来表征各种密码协议中的密码,比如S-Box的密码可以用一个非线性的多项式方程组来表征:

x m + j ( e ) + x j ( e − 1 ) + ∑ l = 1 m d j , l ⋅ f ( x m + l ( e − 1 ) + k l ( e − 1 ) ) = 0 x_{m+j}^{(e)}+x_{j}^{(e-1)}+\sum_{l=1}^{m} d_{j, l} \cdot f\left(x_{m+l}^{(e-1)}+k_{l}^{(e-1)}\right)=0 xm+j(e)+xj(e1)+l=1mdj,lf(xm+l(e1)+kl(e1))=0

那么很明显我们就是想解出某个约束方程组(先将上面这个方程组记为 P = { p i = 0 } \mathcal{P}=\left\{p_{i}=0\right\} P={ pi=0}),就会用到Gröbner基方法;现在考虑我们有一个明文/密文序列对 ( ( P 1 , … P t ) , ( C 1 , … , C t ) ) \left(\left(P_{1}, \ldots P_{t}\right),\left(C_{1}, \ldots, C_{t}\right)\right) ((P1,Pt),(C1,,Ct)),自然得到下列方程集合 G = { g i = 0 } \mathcal{G}=\left\{g_{i}=0\right\} G={ gi=0}:

x 1 ( 0 ) + P 1 = 0 x 1 ( r ) + C 1 = 0 ⋮ ⋮ x t ( 0 ) + P t = 0 x t ( r ) + C t = 0 \begin{array}{ll} x_{1}^{(0)}+P_{1}=0 & x_{1}^{(r)}+C_{1}=0 \\ \vdots & \vdots \\ x_{t}^{(0)}+P_{t}=0 & x_{t}^{(r)}+C_{t}=0 \end{array} x1(0)+P1=0xt(0)+Pt=0x1(r)+C1=0xt(r)+Ct=0

现在令 I \mathfrak{I} I是多项式集合 L = ( ⋃ i { p i } ) ∪ ( ⋃ i { g i } ) \mathcal{L}=\left(\bigcup_{i}\left\{p_{i}\right\}\right) \cup\left(\bigcup_{i}\left\{g_{i}\right\}\right) L=(i{ pi})(i{ gi})生成的理想,称之为密钥恢复理想.

聪明的读者到此处应该已经知道了,我们就是要求 I \mathfrak{I} I的Gröbner基 G D R L G_{DRL} GDRL,然后再回到之前列方程集合 G = { g i = 0 } \mathcal{G}=\left\{g_{i}=0\right\} G={ gi=0}再尝试求解的过程,如此就能恢复密钥;


总结

Gröbner基方法属于代数几何和交换代数偏应用的、计算机算法色彩比较浓厚的一个方向,由于其可用性、理论深度兼具,因此非常值得学习,特别是针对有志于用代数工具和思维解决工程实际问题的研究人员来说,更应该掌握;

(完结)


[1] D. Cox, J. Little, D. O’Shea, Ideals, Varieties, and Algorithms: An Introduction to Computational Algebraic Geometry and Commutative Algebra. (Springer, New York, 2008)
[2] R. Abłamowicz, J. Liu, On the Parallel Lines for Nondegenerate Conics, Department of Mathematics, TTU, Tech. Report No. 2006-1, January 2006, March 18, 2009
[3] B. Buchberger, in Proc. Marktoberdorf Summer School 1995. (Springer, 1997)
[4] B. Buchberger, F. Winkler, Gr ¨obner Bases and Applications, eds. (Cambridge University Press, 1998)
[5] J. L. Awange, E. W. Grafarend, Solving Algebraic Computational Problems in Geodesy and Geoinformatics. (Springer, Berlin, 2005)
[6] Grobner Basis Bibliography at Johann Radon Institute for Computational and Applied Mathematics (RICAM),March 18, 2009

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hanss2/article/details/108386950

智能推荐

宏碁笔记本安装固态硬盘-程序员宅基地

文章浏览阅读1.8w次。一、开始首先说明一下哈,这并不是一篇教程,只是我安装固态硬盘的过程,记录一下而已,话不多说,开始。首先需要准备一台笔记本,就是这个,宏碁V5-471G。然后是一块固态硬盘。我买还是宏碁自家的256G的固态。放图。31569147132_.pic_hd.jpg二、开始拆机第一步先把电池扣掉,电脑背面有个卡扣,顶一下,电池就出来了。51569147..._宏碁换固态硬盘教程

react-native初始化项目时候报错?Error: Command failed: yarn add react-native --exact_创建reactnative error error: command failed: yarn in-程序员宅基地

文章浏览阅读9.2k次。试着又执行了下面两句后竟然解决问题了,感觉有些莫名其妙,因为我之前已经设置过,并且一直也没出现这个问题,你如果没解决的话试试npm config set registry https://registry.npm.taobao.orgnpm config set disturl https://npm.taobao.org/dist_创建reactnative error error: command failed: yarn install

怎样把计算机放到手机桌面壁纸,怎么把待办事项生成电脑桌面壁纸?-程序员宅基地

文章浏览阅读221次。原标题:怎么把待办事项生成电脑桌面壁纸?我的同事张晨喜欢在工作前把每天的工作待办事项一一添加到手机便签中,这样在办公的时候就能随时查看自己的工作内容了,按照待办事项清单去一一完成,这样不仅会让她更有紧迫感和任务感,还能在无形中提高工作效率。但是张晨说了在手机便签中添加工作待办事项不方便的地方,这就是她使用的办公设备是电脑,一般需要在办公的时候,时不时的打开手机查看待办事项,这样也会分散自己的注意力..._待办事项手机壁纸

Unity VR Pico apk安装失败:INSTALL_FAILED_UPDATE_INCOMPATIBLE_pico apk 安装失败-程序员宅基地

文章浏览阅读1.4k次,点赞10次,收藏8次。PICO4企业版。安装apk,报错“安装失败。(所属的Unity项目打包的apk,被我在同一台pico4安装了20次+)_pico apk 安装失败

机器学习实战(七)_loadsimpdata-程序员宅基地

文章浏览阅读265次。title: 机器学习实战(七)date: 2020-04-07 09:20:50tags: [AdaBoost, bagging, boosting, ROC]categories: 机器学习实战更多内容请关注我的博客利用AdaBoost元算法提高分类性能在做决定时,大家可能会吸取多个专家而不是一个人的意见,机器学习也有类似的算法,这就是元算法(meta-algorithm)。元算法是对其他算法进行组合的一种方式。基于数据集多重抽样的分类器前面已经学习了五种不同的分类算法,它们各有优._loadsimpdata

python内置数据结构---字符串_python 中列表 choice.lower()-程序员宅基地

文章浏览阅读217次。字符串str:单引号,双引号,三引号引起来的字符信息。数组array:存储同种数据类型的数据结构。[1, 2, 3], [1.1, 2.2, 3.3]列表list:打了激素的数组, 可以存储不同数据类型的数据结构. [1, 1.1, 2.1, 'hello']元组tuple:带了紧箍咒的列表, 和列表的唯一区别是不能增删改。集合set:不重复且无序的。 (交集和并集)字典dict:{“name”:"westos", "age":10# 1. 字符串str字符串或串(String)是由数字、字母_python 中列表 choice.lower()

随便推点

java impala_impala系列: 基本命令和jdbc连接-程序员宅基地

文章浏览阅读436次。--=======================使用impala-shell 登录--=======================impala-shell --auth_creds_ok_in_clear -l -i ip_address -u user_name--=======================JDBC driver--=======================Impal..._impala 创建schema语句

在Proteus中添加元件库所没有的单片机芯片(STM32F407ZGT6为例)_stm32f407zgt6元件库-程序员宅基地

文章浏览阅读4.2w次,点赞43次,收藏311次。今天在画仿真图时发现proteus元件库里的stm32系列并没有我所需要的。通过百度才到了官网下载相应的元件,后自己导入到元件库!1、官网链接为:https://componentsearchengine.com/part-view/STM32F407ZGT6/STMicroelectronics先注册账号后下载相应的元件即可。2、解压元件的压缩包3、打开proteus工程,点击库,再点击import parts。4、点击select File5、找到从官网下载的元件解压后的文件夹,找到LI_stm32f407zgt6元件库

python 设计模式-2_python的饿汉模式-程序员宅基地

文章浏览阅读458次。常用设计模式的介绍一:单例设计模式1,单例设计模式理解2,利用python实现经典的单例模式3, 懒汉式实例化一:单例设计模式1,单例设计模式理解模式提供了一个机制,确保类有且只有一个特定的类型的对象,并提供全局的访问点。用途:通常用于日志记录、数据库操作、打印后后台处理2,利用python实现经典的单例模式class SingleTon(object): def __new__(cls): if not hasattr(cls,'instance'): _python的饿汉模式

常见职位的英文简称_职场中常见的英文缩写是什么意思?4P是哪4P?各个岗位和部门的英文缩写是什么?...-程序员宅基地

文章浏览阅读1.9k次。在大一点的企业或者外企中,你一定要知道的英文缩写,了解各个岗位和部门的英文缩写!【4P是哪4P】Product:产品Price:价格Place:渠道Promotion:促销【职位缩写】首席品牌官【CBO】——chief brand officer首席文化官【CCO】——Chief Cultural Officer开发总监【CDO】——chief Development officer人事总监 【C..._销售顾问中pc,pg,nc都是什么意思

ActiveMQ-cpp客户端程序应用异常退出问题_activemq-cpp客户端stop会奔溃-程序员宅基地

文章浏览阅读1.9k次。笔者使用ActiveMQ作为系统中消息分发的服务器,由Java Web程序读取数据库实时记录作为Producer,接收端为C++Builder开发的客户端程序,常驻客户端右下角,弹窗显示实时消息。测试时发现,当客户端断网(网线拔掉)或者服务器重启等连接中断时,客户端会直接退出,windows也没有报程序崩溃的问题,很是费解。 Debug调试代码发现问题出在自定义的Concumer_activemq-cpp客户端stop会奔溃

php中对类中静态方法和静态属性的学习和理解_静态属性和静态方法的特点-程序员宅基地

文章浏览阅读1.7k次。什么是静态方法或静态属性 static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法静态方法的特点 1.static方法是类中的一个成员方法,属于整个类,即使不用创建任何对象也可以直接调用! 2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。 3.静态方法和..._静态属性和静态方法的特点