扩展欧几里得算法中y初值取0时在回溯结束后为什么可以使最终|x|+|y|最小?
g
c
d
(
A
,
0
)
=
A
gcd(A,0)=A
gcd(A,0)=A
则有 A ∗ x + 0 ∗ y = A A*x+0*y=A A∗x+0∗y=A
所以在递归终点 x为1,y可取任意整数
g c d ( a , b ) = g c d ( b , a m o d b ) gcd(a,b)=gcd(b,a\;mod\;b) gcd(a,b)=gcd(b,amodb)
a ∗ x 1 + b ∗ y 1 = b ∗ x 0 + ( a − [ a b ] ∗ b ) ∗ y 0 a*x_1+b*y_1=b*x_0+(a-[\frac{a}{b}]*b)*y_0 a∗x1+b∗y1=b∗x0+(a−[ba]∗b)∗y0
整理得
a ∗ ( x 1 − y 0 ) + b ∗ ( y 1 + [ a b ] ∗ y 0 − x 0 ) = 0 a*(x_1-y_0)+b*(y_1+[\frac{a}{b}]*y_0-x_0)=0 a∗(x1−y0)+b∗(y1+[ba]∗y0−x0)=0
由于上式恒成立,所以
x 1 = y 0 x_1=y_0 x1=y0
y 1 = − [ a b ] ∗ y 0 + x 0 y_1=-[\frac{a}{b}]*y_0+x_0 y1=−[ba]∗y0+x0
a和b的值在递归的过程中已经确定,而在回溯的过程中,上一层的 y 0 y_0 y0越小,本层 x 1 x_1 x1越小
要证明 y 0 y_0 y0取0的时候, ∣ x f i n a l ∣ + ∣ y f i n a l ∣ |x_{final}|+|y_{final}| ∣xfinal∣+∣yfinal∣最小
用数学归纳法证明:
(由于a和b的值已经确定,所以在下面设 [ a b ] = k ( k ∈ N + ) [\frac{a}{b}]=k(k∈N_+) [ba]=k(k∈N+))
1、当在递归终点时, x 0 ≡ 1 x_0\equiv1 x0≡1,设 y 0 = Y y_0=Y y0=Y
则 x 1 = Y x_1=Y x1=Y
y 1 = − k ∗ Y + 1 y_1=-k*Y+1 y1=−k∗Y+1
∣ x 1 ∣ + ∣ y 1 ∣ = ∣ Y ∣ + ∣ − k ∗ Y + 1 ∣ |x_1|+|y_1|=|Y|+|-k*Y+1| ∣x1∣+∣y1∣=∣Y∣+∣−k∗Y+1∣
①当Y≤0
s u m = − Y + 1 − k ∗ Y = 1 − ( k + 1 ) ∗ Y sum=-Y+1-k*Y=1-(k+1)*Y sum=−Y+1−k∗Y=1−(k+1)∗Y
当且仅当Y=0时,sum有min为1
②当Y>0
有两种,分别为
第一种, 1 − k ∗ Y > 0 1-k*Y>0 1−k∗Y>0时, Y < 1 k Y<\frac{1}{k} Y<k1,由于裴蜀定理中x,y均为整数,而此处Y<1,故不成立
第二种, 1 − k ∗ Y ≤ 0 1-k*Y≤0 1−k∗Y≤0时, Y ≥ 1 k Y≥\frac{1}{k} Y≥k1, s u m = ( k + 1 ) ∗ Y − 1 sum=(k+1)*Y-1 sum=(k+1)∗Y−1,由于Y此时最小为1(k=1),所以 s u m ≥ k ≥ 1 sum≥k≥1 sum≥k≥1
故当
y
0
y_0
y0取0时,
x
1
x_1
x1和
y
1
y_1
y1取得最小值
问题转化
x
n
x_{n}
xn和
y
n
y_{n}
yn取得最小值时,
x
n
+
1
x_{n+1}
xn+1和
y
n
+
1
y_{n+1}
yn+1也为最小值
怎么证明第n和第n+1项满足??