【類歐幾里得學習小記】

類歐幾里得算法因爲形式上像歐幾里得算法而得名,其時間複雜度也和歐幾里得算法一致,類歐幾里得算法有很多應用,下面只舉部分例子。

目標

求出以下三個函數值

f(a,b,c,n)=ni=0ai+bc

g(a,b,c,n)=ni=0iai+bc

h(a,b,c,n)=ni=0ai+bc2

m=an+bc

f

當a==0時

f(a,b,c,n)=ni=0ai+bc

=bc(n+1)

當(a>=c)||(b>=c)時

f(a,b,c,n)=ni=0ai+bc

=ni=0(aci+bc+(a%c)i+b%cc)

=acn(n+1)/2+bc(n+1)+f(a%c,b%c,c,n)

(a<c)and(b<c)

f(a,b,c,n)=ni=0ai+bc

=ni=0mj=1[ai+bc>=j]

=ni=0m1j=0[ai+bc>=j+1]

=ni=0m1j=0[ai+b>=cj+c]

=ni=0m1j=0[ai+b>cj+c1]

=ni=0m1j=0[i>cj+cb1a]

=m1j=0ni=0[i>cj+cb1a]

=m1j=0(ncj+cb1a)

=nmm1j=0cj+cb1a

=nmf(c,cb1,a,m1)

g

當a==0時

g(a,b,c,n)=ni=0iai+bc

=bcn(n+1)/2

當(a>=c)||(b>=c)時

g(a,b,c,n)=ni=0iai+bc

=ni=0i(aci+bc+(a%c)i+b%cc)

=acn(n+1)(2n+1)/6+bcn(n+1)/2+g(a%c,b%c,c,n)

(a<c)and(b<c)

g(a,b,c,n)=ni=0iai+bc

=m1j=0ni=0i[i>cj+cb1a]

=m1j=0(n+cj+cb1a1)(ncj+cb1a)/2

=12mn(n+1)12f(c,cb1,a,m1)12h(c,cb1,a,m1)

h

當a==0時

h(a,b,c,n)=ni=0ai+bc2

=(bc)2(n+1)

當(a>=c)||(b>=c)時

h(a,b,c,n)=ni=0ai+bc2

x2=2x(x+1)2x

=2xi=1ix

h(a,b,c,n)=ni=0ai+bc2

=2ni=0ai+bcj=1jf(a,b,c,n)

=2mi=1inj=0[aj+bc>=i]f(a,b,c,n)

=2m1i=0(i+1)nj=0[j>ci+cb1a]f(a,b,c,n)

=nm(m+1)2f(c,cb1,a,m1)2g(c,cb1,a,m1)f(a,b,c,n)

至此我們已經可以解決這一類類歐幾里得問題。

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