记扩展欧几里得算法的学习

为了解决形如ax+by=c的方程求解问题而应运而生的算法就是扩展欧几里得算法,没想到学了高等代数相关知识后温习这个的证明也变得简单多了。完全可以将其的某些性质和多项式的那些定理等价,证明什么的也都如出一辙。
而其求解与辗转相除法密不可分。首先如何证明辗转相除法的正确性呢?
a = bq + r,那么若x = gcd(a, b), y = gcd(b, r)即证x=y; 由等式易知x|a&&x|b,那么x|r,所以x也是b,r的公因式,然后等式两边分别除以x用反证法证明即可。
然后是裴蜀定理的证明,这些都是扩展欧几里得算法的预备知识。
对任何a,b∈Z和它们的最大公约数d,关于未知数x和y的线性不定方程(称为裴蜀等式):ax+by=c有整数解(x,y)当且仅当d∣c,可知有无穷多解。特别地,一定存在整数x,y,使ax+by=d成立。
这里引用一篇博客的内容
其实就和多项式的证明一样,d(x)=u(x)f(x)+v(x)g(x),若d(x)是因式,那么必将是最大公因式,再利用余数r比除数小的性质,再加上整数数域的性质,便可证明了。
至于扩展欧几里得,也是基于除法的性质,既然ax+by=gcd(a,b)不好解,那么就吧a写成b的表达式,令a=qb+r那么化简式子,b(qx+y)+rx=gcd(a,b)=gcd(b,r),突然发现这里的式子与原式如出一辙,完全可以递归求解,而基于辗转相除法优越的性质(a,b)的最大公因式最后会变成(gcd(a,b),0)也就意味着到最后必定会化成gcd(a,b)x + 0y = gcd(a,b)的形式,那么这个方程就可以明显看出他的解为x=1, y=0,然后再一层一层回溯便可求出x,y的一组合法的值。要求出更多的解的话,只要手动算一下a(x+u)+b(y+v)=gcd(a,b)中u,v与a,b之间的关系即可,不难推导。
整个过程其实并不复杂,但是当年学的时候却急于求成没有真正弄懂,留下巨大的漏洞。可见对于知识的记忆基于理解的程度,理解的越深越好,越难以忘记。所以今天丝毫不敢有半点轻蔑的为这个一直半桶水的知识点写一篇记录自学过程的博客。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章