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

智能推荐

【论文汇总】2D目标检测文章汇总,持续更新_target-aware dual adversarial learning-程序员宅基地

文章浏览阅读1.8k次,点赞12次,收藏51次。记录自己比较感兴趣的2D目标检测文章。_target-aware dual adversarial learning

Java中的栈Stack、Deque、ArrayDeque、LinkedList_java中的栈类-程序员宅基地

文章浏览阅读1.1w次,点赞66次,收藏151次。文章目录先来说说Java中的Stack类不用Stack至少有以下两点原因该用ArrayDeque还是LinkedList?结论先来说说Java中的Stack类Java中Stack类从Vector类继承,底层是用数组实现的线程安全的栈。栈是一种后进先出(LIFO)的容器,常用的操作push/pop/peek。不过Java中用来表达栈的功能(push/pop/peek),更适用的是适用双端队列接口Deque,并用ArrayDeque/LinkedList来进行初始化。Deque<Integer&g_java中的栈类

Navicat 连接数据库出现1251_navicat11 1251-程序员宅基地

文章浏览阅读179次。MySql】Navicat 连接数据库出现1251。– 修改远程连接权限 % 可换为自己的电脑ip。_navicat11 1251

python3使用pymysql返回字典-程序员宅基地

文章浏览阅读872次。python3使用pymysql返回字典_pymysql返回字典

Shell脚本学习-阶段二十七-命令解释二_shell shuf-程序员宅基地

文章浏览阅读1.8k次。文章目录-命令解释二前言emacsjedjoenano================picosed===================vi,vim============mtype=============rgrep==========excmpbzcmpcommdiff===========bzdiffdiffstatdiff3find==============locate/slocate=========whereis==========updatedbwhich=========basena.._shell shuf

citespace使用流程(自用)_手把手教你用citespace-程序员宅基地

文章浏览阅读413次,点赞9次,收藏7次。然后再新建项目,选好data和project就可以了。四个文件夹建好,将下载好的Refworks数据。download_xxxx(这个自己定),放到文件夹input中,进行格式转化。然后将处理好的数据放到data中。_手把手教你用citespace

随便推点

TCP三次握手四次挥手详解_tcp三次挥手四次挥手-程序员宅基地

文章浏览阅读2k次。三次握手和四次挥手的总结_tcp三次挥手四次挥手

域账户信息导出脚本_Facebook OAuth漏洞导致的Facebook账户劫持-程序员宅基地

文章浏览阅读2k次。平时在用“Login with Facebook”功能进行跳转登录时,因为其用到了多个URL重定向跳转,所以总会给我有一种不安全的感觉。但是,要想发现Facebook漏洞,并非易事,需要莫大的功夫和精力,更别说涉及登录的Facebook OAuth了,这更是难上加难。然而,我就发现了Facebook OAuth这么一个漏洞,获得了Facebook官方$55,000的奖励。就是这么一个漏洞...

docker中容器和镜像的关系_docker镜像和容器的关系-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏27次。docker中容器和镜像的关系_docker镜像和容器的关系

idea运行java报错:找不到或无法加载主类_idea找不到或无法加载java主类-程序员宅基地

文章浏览阅读4.3k次。idea运行java时报错 错误: 找不到或无法加载主类 _idea找不到或无法加载java主类

java scriptengine,使用Java ScriptEngine(Groovy),如何使它更具性能?-程序员宅基地

文章浏览阅读1.2k次。I am using ScriptEngine in my app to evaluate some client code in my application.The problem is it's not performant enough and I need to take measures to improve the time of execution.Currently, it ca..._scriptenginemanager 性能优化

docker项目运行环境搭建(JDK8、mysql8、tomcat9、redis5、nginx1.14)_docker jdk8-程序员宅基地

文章浏览阅读436次。1、在/home/mysql目录下新建两个文件夹,一个叫data另一个叫conf。_docker jdk8

推荐文章

热门文章

相关标签