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

智能推荐

ECS框架学习(Entitas)入门_ecs框架 entitas-程序员宅基地

文章浏览阅读6.2k次。公司要求使用ECS框架经行开发,没办法只能自己学习了。记录一下学习过程。框架的含义可以去其他地方查看,我这里写一点我的理解(新人,不对请谅解)。ECS即Entity-Component-System(实体-组件-系统) 的缩写。它做到了行为、数据分开,Component存数据。Entity用来就是由各个Component组成。System用来经行他们中间的通信。对于网上或者官方说速度更快、更容..._ecs框架 entitas

vars()函数用法-程序员宅基地

文章浏览阅读1.5w次,点赞10次,收藏35次。python内置函数。vars() 函数返回对象object的属性和属性值的字典对象。vars([对象])当函数不接收参数时,其功能和locals函数一样,返回当前作用域内的局部变量。当函数接收一个参数时,参数可以是模块、类、类实例,或者定义了__dict__属性的对象。#作用于模块>>> import time>&a_vars()

vue中实现文字超出横向滚动_el-pagination超出屏幕-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏14次。vue中实现文字超出横向滚动marquee组件<template> <div class="marquee-wrap" ref="marquee-wrap"> <div class="scroll" ref="scroll"> <p class="marquee">{{text}}</p> <p class="copy" ref="copy"></p> </div>_el-pagination超出屏幕

web.config/app.config敏感数据加/解密的二种方法-程序员宅基地

文章浏览阅读59次。一.利用代码加解密usingSystem.Web.Configuration;//加密web.Config中的指定节privatevoidProtectSection(stringsectionName){Configurationconfig=WebConfigurationManager.OpenWebConfigurat..._app.config代码加解密

记录一个诡异的bug-程序员宅基地

文章浏览阅读4k次。我擦,进到XXXXController的261行看了一下,发现是successPage里面的请求http方法报错,竟然进入到了successPage方法,我以为根本没进去呢。完了,完全没有想法了,我以为是天宫的问题,/ai/oa/meetingtran...这个路径找不到,就把整改项目的/oa/请求路径都去掉了,也不好使。我把这个successPage地址,加入到OA测试环境‘智能中心’那个应用,点击‘智能中心’跳转,跳转回successPage,也是不好使。我擦我擦我擦我擦,学习了。

Spring Boot:@EnableAutoConfiguration和@Configuration的区别_@autoconfiguration @configuration-程序员宅基地

文章浏览阅读2.3k次。SpringBoot提倡通过annotation来进行bean的配置,现在spring-boot里面常用的两种创建bean的方式有@EnableAutoConfiguration和@Configuration两种方式。@Configuration方式Spring Application在启动的时候,@ComponentScan注解会扫描包(路径可以指定,默认的情况下就是这个目录所在的包开始扫描),当扫描到@Configuration注解以后,就会初始化这个类下面所有加了@Bean的方法,并初始化这个_@autoconfiguration @configuration

随便推点

如何从零开始实现TDOA技术的 UWB 精确定位系统(1)_uwb_tdoa-程序员宅基地

文章浏览阅读1.1k次,点赞28次,收藏24次。这是一个系列文章,将向你介绍如何从零开始实现一个使用TDOA技术的 UWB 精确定位系统。重要提示劝退说明Q:做这个定位系统需要基础么?A:文章不是写给小白看的,需要有电子技术和软件编程的基础Q:你的这些硬件/软件是开源的吗?A:不是开源的。这一系列文章是授人以“渔”,而不是授人以“鱼”。文章中我会介绍怎么实现UWB定位系统,告诉你如何克服难点,但不会直接把PCB的Gerber文件给你去做板子,不会把软件的源代码给你,不会把编译好的固件给你。我不会给你任何直接的结果,我只是告诉你方法。_uwb_tdoa

各种常见报错汇总_vs未经处理的异常怎么处理-程序员宅基地

文章浏览阅读10w+次,点赞2次,收藏13次。Visual Studio解决办法:报错原因:堆栈溢出,可能是定义的某个变量太大而没有修改栈保留大小所至。本人的问题是用ege画图的时候定义的地图面积太大导致。解决方法:项目→属性→链接器→系统→堆栈保留大小→设置成一个比较大的数并应用。即可完美解决,如果还没解决可能是设置的不够大。其实真正应该修改的是你的代码,问题就出现在为什么会有栈溢出问题,很简单,显然是数组或者开辟的指针空间太大!所以,解决办法就是将大数组定义在main()外部当作全局变量,全局变量放在数据区,空间足够使用。或者写在mai_vs未经处理的异常怎么处理

各大OJ网站的用途及利与弊-程序员宅基地

文章浏览阅读770次,点赞25次,收藏18次。今天就来分享一下我的工作成果,在各个网站搜集了资料,再加上我个人的一些见解,历经半年时间,终于写出这篇博文。希望对大家能有帮助,如果你不知道选用哪个网站进行OJ学习的话,可以认真阅读哦。这些是常见的OJ网站,如果有别的建议,可以留言,我有空的话会回复。

申请代码签名证书-程序员宅基地

文章浏览阅读865次,点赞33次,收藏17次。代码签名证书也是数字证书的一种,其主要作用是对可执行脚本、软件代码和内容进行数字签名的数字证书。代码签名证书用于验证开发者身份真实性、保护代码的完整性。用户下载软件时,能通过数字签名验证软件来源,确认软件、代码没有被非法篡改或植入病毒,保护用户不会被病毒、恶意代码和间谍软件所侵害。使用代码签名证书,您可以保证签名者的身份和软件的完整性,这可以防止在下载和安装软件时出现警告。代码签名证书是软件开发人员用来签署其软件、应用程序和驱动程序代码的数字证书。它使用公私密钥基础设施(PKI)将实体绑定到公钥和私钥。

NOIP提高组历届真题(1997~2018)_noi1998提高组题目-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏7次。上次发了NOIP普及组真题,这次发一波提高组。还是有些难度的先上快捷查看键:第一页第二页第三页上具体题目,难度,以及年份P1003 铺地毯 NOIp提高组 2011 普及-P1005 矩阵取数游戏 NOIp提高组 2007 提高+/省选-P1006 传纸条 NOIp提高组 2008 高性能 普及+/提高P1011 车站 NOIp提高组 1998 普及-P1012 拼数 NOIp..._noi1998提高组题目

美国在线计算机硕士项目,优弗留学美国留学计算机硕士学校分析-程序员宅基地

文章浏览阅读185次。今天优弗留学小编想给大家分享的是关于美国留学读计算机硕士学校的难度分析,有想要去美国留学读计算机硕士的同学有没有对相关的院校有一个大概的了解呢?话不赘述,有需要的同学赶快和优弗留学小编一起来了解一下吧!一、难度五颗星1. Princeton University普林斯顿大学的计算机系申请时只能申请M.S.E. ,M.S.E.是两年的项目,需要完成论文。但研一下学期,可以申请转到Master of ...