記擴展歐幾里得算法的學習

爲了解決形如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之間的關係即可,不難推導。
整個過程其實並不複雜,但是當年學的時候卻急於求成沒有真正弄懂,留下巨大的漏洞。可見對於知識的記憶基於理解的程度,理解的越深越好,越難以忘記。所以今天絲毫不敢有半點輕蔑的爲這個一直半桶水的知識點寫一篇記錄自學過程的博客。

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