多項(xiàng)式近似快速乘法算法_第1頁(yè)
多項(xiàng)式近似快速乘法算法_第2頁(yè)
多項(xiàng)式近似快速乘法算法_第3頁(yè)
多項(xiàng)式近似快速乘法算法_第4頁(yè)
多項(xiàng)式近似快速乘法算法_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

20/22多項(xiàng)式近似快速乘法算法第一部分多項(xiàng)式乘法原理 2第二部分快速傅里葉變換在乘法中的應(yīng)用 5第三部分Karatsuba乘法算法 6第四部分Toom-Cook乘法算法 9第五部分Sch?nhage-Strassen乘法算法 12第六部分多項(xiàng)式近似簡(jiǎn)化乘法 15第七部分基于原始根的快速乘法算法 18第八部分Harel-Dubnov-Levi乘法算法 20

第一部分多項(xiàng)式乘法原理關(guān)鍵詞關(guān)鍵要點(diǎn)多項(xiàng)式的定義

1.多項(xiàng)式是由一個(gè)或多個(gè)變量及其冪次組成的數(shù)學(xué)表達(dá)式。

3.多項(xiàng)式的次數(shù)等于最高冪次。

多項(xiàng)式乘法的定義

1.多項(xiàng)式乘法是將兩個(gè)多項(xiàng)式相乘得到一個(gè)新的多項(xiàng)式。

2.多項(xiàng)式乘法的乘積多項(xiàng)式的次數(shù)等于被乘多項(xiàng)式的次數(shù)之和。

3.乘積多項(xiàng)式的每一項(xiàng)的系數(shù)等于被乘多項(xiàng)式對(duì)應(yīng)項(xiàng)的系數(shù)的乘積。

多項(xiàng)式乘法的樸素算法

1.樸素算法直接計(jì)算兩個(gè)多項(xiàng)式的每對(duì)項(xiàng)的乘積并將其相加。

2.對(duì)于次數(shù)為n的多項(xiàng)式,樸素算法的復(fù)雜度為O(n^2)。

3.在實(shí)踐中,當(dāng)多項(xiàng)式次數(shù)較大時(shí),樸素算法的效率較低。

多項(xiàng)式乘法的快速傅里葉變換(FFT)

1.FFT是一種快速算法,用于將多項(xiàng)式乘法轉(zhuǎn)換為卷積運(yùn)算。

2.FFT通過(guò)遞歸分解多項(xiàng)式并利用單位根的性質(zhì)來(lái)顯著減少計(jì)算量。

3.FFT的復(fù)雜度為O(n*log(n)),比樸素算法更有效率。

多項(xiàng)式乘法的分治算法

1.分治算法將多項(xiàng)式乘法問(wèn)題分解成規(guī)模較小的子問(wèn)題。

2.遞歸地求解子問(wèn)題的乘積,然后合并結(jié)果得到最終乘積。

3.分治算法的復(fù)雜度為O(n*log(n)),類似于FFT。

多項(xiàng)式乘法的近似算法

1.近似算法通過(guò)犧牲精度來(lái)獲得更快的乘法運(yùn)算。

2.常見的多項(xiàng)式近似算法包括霍納法則和卡拉楚巴算法。

3.這些算法的復(fù)雜度通常比FFT和分治算法更低,但精度也較低。多項(xiàng)式乘法原理

多項(xiàng)式乘法是一種基本代數(shù)運(yùn)算,用于計(jì)算兩個(gè)或多個(gè)多項(xiàng)式的乘積。多項(xiàng)式乘法原理基于分治思想,將其分解為更小的子問(wèn)題,再逐步解決。

基本原理

給定兩個(gè)多項(xiàng)式:

```

f(x)=a0+a1x+a2x^2+...+anx^n

g(x)=b0+b1x+b2x^2+...+bmx^m

```

它們的乘積為:

```

h(x)=f(x)*g(x)=c0+c1x+c2x^2+...+cn+mx^(n+m)

```

其中,系數(shù)ci由以下方式計(jì)算:

```

```

算法流程

多項(xiàng)式乘法的算法流程如下:

1.遞歸分解:將兩個(gè)多項(xiàng)式f(x)和g(x)分解為奇偶部分:

```

f(x)=f_e(x)+x*f_o(x)

g(x)=g_e(x)+x*g_o(x)

```

其中,fe(x)和ge(x)表示f(x)和g(x)的偶次項(xiàng)多項(xiàng)式,而fo(x)和go(x)表示奇次項(xiàng)多項(xiàng)式。

2.遞歸計(jì)算:利用遞歸方法計(jì)算以下子問(wèn)題的乘積:

```

h_1=f_e(x)*g_e(x)

h_2=f_e(x)*g_o(x)

h_3=f_o(x)*g_e(x)

h_4=f_o(x)*g_o(x)

```

3.組合結(jié)果:將子問(wèn)題的結(jié)果組合起來(lái)得到最終乘積:

```

h(x)=h_1+x*(h_2+h_3)+x^2*h_4

```

優(yōu)點(diǎn)

多項(xiàng)式乘法原理的主要優(yōu)點(diǎn)包括:

*分治思想:通過(guò)分解問(wèn)題,算法復(fù)雜度降低。

*遞歸求解:?jiǎn)栴}可以簡(jiǎn)化為相同類型但規(guī)模較小的子問(wèn)題。

*并行性:子問(wèn)題的計(jì)算可以并行執(zhí)行,提高效率。

應(yīng)用

多項(xiàng)式乘法原理廣泛應(yīng)用于各種領(lǐng)域,包括:

*信號(hào)處理:卷積運(yùn)算

*數(shù)字濾波:濾波器設(shè)計(jì)

*代數(shù)幾何:多項(xiàng)式求根

*密碼學(xué):大數(shù)乘法第二部分快速傅里葉變換在乘法中的應(yīng)用關(guān)鍵詞關(guān)鍵要點(diǎn)快速傅里葉變換在乘法中的應(yīng)用

主題名稱:快速傅里葉變換(FFT)

1.FFT是一種高效算法,用于計(jì)算離散傅里葉變換(DFT),它將時(shí)域信號(hào)轉(zhuǎn)換為頻域信號(hào)。

2.FFT的效率遠(yuǎn)高于直接計(jì)算DFT,特別是對(duì)于大數(shù)據(jù)集,其復(fù)雜度為O(nlogn),其中n是輸入信號(hào)的長(zhǎng)度。

3.FFT在各種應(yīng)用中都有著廣泛的應(yīng)用,包括信號(hào)處理、圖像處理和多項(xiàng)式乘法。

主題名稱:卷積定理

快速傅里葉變換在乘法中的應(yīng)用

快速傅里葉變換(FFT)是一種廣泛應(yīng)用于信號(hào)處理和數(shù)據(jù)分析領(lǐng)域的算法。它在多項(xiàng)式近似快速乘法算法中發(fā)揮著至關(guān)重要的作用。

多項(xiàng)式乘法的傳統(tǒng)方法

傳統(tǒng)的多項(xiàng)式乘法涉及逐項(xiàng)相乘和累加所有結(jié)果。對(duì)于兩個(gè)n次多項(xiàng)式,此過(guò)程的時(shí)間復(fù)雜度為O(n^2)。

FFT的應(yīng)用

FFT是一種將多項(xiàng)式轉(zhuǎn)換為頻率域的技術(shù)。轉(zhuǎn)換后,多項(xiàng)式的卷積可以簡(jiǎn)化為點(diǎn)對(duì)點(diǎn)乘法。然后,利用逆FFT將結(jié)果轉(zhuǎn)換回時(shí)域。

具體步驟:

1.將多項(xiàng)式轉(zhuǎn)換為頻率域:使用FFT將兩個(gè)多項(xiàng)式轉(zhuǎn)換為頻率域表示。

2.點(diǎn)對(duì)點(diǎn)乘法:在頻率域中,將兩個(gè)多項(xiàng)式中的對(duì)應(yīng)元素逐對(duì)相乘。

3.轉(zhuǎn)換回時(shí)域:使用逆FFT將乘積轉(zhuǎn)換回時(shí)域。

優(yōu)勢(shì):

FFT的主要優(yōu)勢(shì)在于它將多項(xiàng)式乘法的時(shí)間復(fù)雜度從O(n^2)降低到O(nlogn)。這對(duì)于處理大型多項(xiàng)式具有顯著優(yōu)勢(shì)。

算法步驟:

下面是使用FFT進(jìn)行多項(xiàng)式乘法的具體算法步驟:

1.填充并求值多項(xiàng)式:填充兩個(gè)多項(xiàng)式,使其長(zhǎng)度為2^k,其中k是高性能FFT實(shí)現(xiàn)中常見的值。然后,在k個(gè)不同點(diǎn)上求值多項(xiàng)式。

2.應(yīng)用FFT:對(duì)兩個(gè)多項(xiàng)式應(yīng)用FFT。

3.點(diǎn)對(duì)點(diǎn)乘法:在頻率域中,將兩個(gè)多項(xiàng)式的對(duì)應(yīng)元素逐對(duì)相乘。

4.應(yīng)用逆FFT:對(duì)乘積應(yīng)用逆FFT,將結(jié)果轉(zhuǎn)換回時(shí)域。

5.反填充:從結(jié)果中反填充多余的項(xiàng)。

總結(jié)

FFT的應(yīng)用將多項(xiàng)式乘法的時(shí)間復(fù)雜度從O(n^2)降低到O(nlogn)。這使得對(duì)于大型多項(xiàng)式,多項(xiàng)式近似快速乘法算法具有顯著的計(jì)算優(yōu)勢(shì)。第三部分Karatsuba乘法算法關(guān)鍵詞關(guān)鍵要點(diǎn)Karatsuba乘法算法的分割和合并

1.將兩個(gè)長(zhǎng)度為n的多項(xiàng)式A(x)和B(x)分割為高位半和低位半,分別表示為:

-A(x)=A_h(x)*x^n/2+A_l(x)

-B(x)=B_h(x)*x^n/2+B_l(x)

2.計(jì)算三個(gè)子問(wèn)題:

-C1=A_h(x)*B_h(x)

-C2=A_l(x)*B_l(x)

-C3=(A_h(x)+A_l(x))*(B_h(x)+B_l(x))-C1-C2

3.合并三個(gè)結(jié)果以獲得最終結(jié)果:

-A(x)*B(x)=C1*x^n+(C3-C1-C2)*x^n/2+C2

Karatsuba乘法算法的遞歸

1.算法采用遞歸方式,當(dāng)n較小時(shí)(通常為16或32),直接使用標(biāo)準(zhǔn)乘法算法。

2.對(duì)于較大的n,遞歸地將子問(wèn)題C1、C2和C3分解為更小的子問(wèn)題,直到達(dá)到基本情況。

3.遞歸的過(guò)程確保了算法的時(shí)間復(fù)雜度為O(n^log2(3)),比標(biāo)準(zhǔn)乘法算法快得多。

Karatsuba乘法算法的并行化

1.Karatsuba乘法算法可以并行化,因?yàn)槠渥訂?wèn)題C1、C2和C3是相互獨(dú)立的。

2.通過(guò)同時(shí)計(jì)算這三個(gè)子問(wèn)題,可以顯著提高算法的效率。

3.并行化可以利用多核處理器或圖形處理單元(GPU)來(lái)實(shí)現(xiàn)。Karatsuba乘法算法

概述

Karatsuba乘法算法是一種分治算法,用于以比傳統(tǒng)方法更有效率的方式計(jì)算兩個(gè)大整數(shù)的乘積。它利用了以下事實(shí):如果將兩個(gè)$n$位整數(shù)$a$和$b$分解為較低位部分$a_0$和$a_1$,以及較高位部分$b_0$和$b_1$,則它們的乘積可以表示為:

```

a×b=(a_0+a_1×2^n/2)×(b_0+b_1×2^n/2)

```

算法步驟

Karatsuba乘法算法的步驟如下:

1.分解輸入:將$a$和$b$分解為低位和高位部分:

-$a=a_0+a_1×2^n/2$

-$b=b_0+b_1×2^n/2$

2.遞歸計(jì)算:遞歸計(jì)算下列乘積:

-$p_1=a_0×b_0$

-$p_2=a_1×b_1$

-$p_3=(a_0+a_1)×(b_0+b_1)$

3.合并結(jié)果:合并遞歸計(jì)算的結(jié)果以獲得最終乘積:

-$p_3-p_1-p_2=a_0×b_1+a_1×b_0$

-$a×b=p_1+2^n/2×(p_3-p_1-p_2)+2^n×p_2$

復(fù)雜度分析

Karatsuba乘法算法的漸近時(shí)間復(fù)雜度為:

```

T(n)=3T(n/2)+cn

```

其中$c$是一個(gè)常數(shù)。通過(guò)主定理,可以得到:

```

T(n)=O(n^log?(3))≈O(n^1.585)

```

優(yōu)點(diǎn)

與傳統(tǒng)乘法算法相比,Karatsuba乘法算法具有以下優(yōu)點(diǎn):

-更有效率:對(duì)于$n\geq3$,該算法比傳統(tǒng)算法效率更高。

-可遞歸:該算法可遞歸應(yīng)用于不同的問(wèn)題規(guī)模,從而可以處理任意大小的整數(shù)乘法。

應(yīng)用

Karatsuba乘法算法廣泛應(yīng)用于各種需要有效率大整數(shù)乘法的領(lǐng)域,包括:

-密碼學(xué)

-科學(xué)計(jì)算

-數(shù)字信號(hào)處理

-計(jì)算機(jī)代數(shù)第四部分Toom-Cook乘法算法關(guān)鍵詞關(guān)鍵要點(diǎn)【Toom-Cook乘法算法】

1.將兩個(gè)多項(xiàng)式拆分為較小的塊,并使用更小的子算法對(duì)這些塊進(jìn)行求值。

2.引入一個(gè)中間系數(shù),將乘法操作轉(zhuǎn)換為加法操作,從而減少乘法次數(shù)。

3.將多項(xiàng)式的階數(shù)限制為2的冪,以簡(jiǎn)化計(jì)算并提高效率。

【Toom-Cook3乘法算法】

Toom-Cook乘法算法

Toom-Cook乘法算法是一種快速乘法算法,由AndrewToom和StephenCook在1963年提出。它利用多項(xiàng)式插值和分治策略,在O(n^1.5)時(shí)間復(fù)雜度下計(jì)算兩個(gè)大整數(shù)的乘積。

算法

1.基準(zhǔn)轉(zhuǎn)換:將兩個(gè)輸入多項(xiàng)式轉(zhuǎn)換為相同的基數(shù)b。

2.分治:將多項(xiàng)式分解為較小的子塊:

-P(x)=(p_3x^3+p_2x^2+p_1x+p_0)

-Q(x)=(q_3x^3+q_2x^2+q_1x+q_0)

-P(x)=a_4x^4+a_3x^3+a_2x^2+a_1x+a_0

-Q(x)=c_4x^4+c_3x^3+c_2x^2+c_1x+c_0

4.小尺寸乘法:計(jì)算低次項(xiàng)系數(shù)的乘積:

-d_0=p_0*q_0

-d_1=p_1*q_1

5.遞歸:對(duì)四個(gè)高次項(xiàng)系數(shù)子塊應(yīng)用遞歸乘法:

-(a_2,a_3,a_4)*(c_2,c_3,c_4)

-(p_2-a_2,p_3-a_3,p_4-a_4)*(q_2-c_2,q_3-c_3,q_4-c_4)

6.插值還原:將四個(gè)子塊的乘積重新插值到a_4、a_3、a_2的系數(shù)中。

7.系數(shù)合并:合并所有系數(shù)以獲得最終乘積:

-P(x)*Q(x)=d_4x^8+d_3x^7+d_2x^6+d_1x^5+d_0x^4+e_4x^3+e_3x^2+e_2x+e_0

優(yōu)點(diǎn)

*時(shí)間復(fù)雜度為O(n^1.5),優(yōu)于樸素乘法算法的O(n^2)。

*當(dāng)n較大時(shí),比Karatsuba算法更有效。

*可以并行實(shí)現(xiàn)。

應(yīng)用

*大整數(shù)乘法

*密碼學(xué)

*信號(hào)處理

*數(shù)字圖像處理

實(shí)例:

計(jì)算P(x)=(2x^3+5x^2+8x+3)*Q(x)=(4x^3+2x^2+9x+1)

1.基準(zhǔn)轉(zhuǎn)換:基數(shù)b=3

2.分治:

-P(x)=8x^3+3x^2+2x+1

-Q(x)=12x^3+6x^2+27x+1

3.插值:

-P(x)=1x^4+2x^3+3x^2+0x+1

-Q(x)=4x^4+3x^3+2x^2+0x+1

4.小尺寸乘法:

-d_0=1*1=1

-d_1=0*0=0

5.遞歸:計(jì)算(1,2,3)*(4,3,2)=26

6.插值還原:

-a_4=26

-a_3=3

-a_2=0

7.系數(shù)合并:

-P(x)*Q(x)=26x^7+3x^6+0x^5+0x^4+1x^3+0x^2+0x+1

時(shí)間復(fù)雜度證明:

Toom-Cook算法執(zhí)行以下主要步驟:

*插值(O(n))

*小尺寸乘法(O(1))

*遞歸(O(n^k))

*插值還原(O(n))

*系數(shù)合并(O(n))

總的時(shí)間復(fù)雜度為:T(n)=O(n)+O(1)+O(n^k)+O(n)+O(n)=O(n^k)

對(duì)于k=1.5,該算法的時(shí)間復(fù)雜度為O(n^1.5)。第五部分Sch?nhage-Strassen乘法算法關(guān)鍵詞關(guān)鍵要點(diǎn)【Sch?nhage-Strassen乘法算法】

1.算法思想:基于將多項(xiàng)式乘法分解為較小維度的子問(wèn)題,分而治之求解。

2.遞歸策略:將多項(xiàng)式分割為較小的段,通過(guò)遞歸調(diào)用進(jìn)一步分解和求解。

3.乘法核:利用傅里葉變換求解較小維度子問(wèn)題的乘積,實(shí)現(xiàn)高效快速計(jì)算。

【Sch?nhage-Strassen算法中的傅里葉變換】

Sch?nhage-Strassen乘法算法

簡(jiǎn)介

Sch?nhage-Strassen乘法算法是一種快速乘法算法,用于高效計(jì)算兩個(gè)大整數(shù)的乘積。它由ArnoldSch?nhage和VolkerStrassen在1971年提出。

算法原理

此算法基于將兩個(gè)整數(shù)乘積的計(jì)算轉(zhuǎn)化為較小系數(shù)的多項(xiàng)式乘法的過(guò)程。具體步驟如下:

1.將整數(shù)表示為多項(xiàng)式:將兩個(gè)要相乘的整數(shù)a和b表示為多項(xiàng)式f(x)和g(x),其中x是一個(gè)未知數(shù)。

2.快速傅里葉變換(FFT):對(duì)f(x)和g(x)應(yīng)用FFT,將它們轉(zhuǎn)換為在單位根域(模2n)中的多項(xiàng)式。

3.逐項(xiàng)相乘:在單位根域中逐項(xiàng)相乘變?yōu)榫矸e運(yùn)算,可以高效地執(zhí)行。

4.快速傅里葉逆變換(IFFT):將相乘得到的卷積結(jié)果逆變換回原始域,并提取多項(xiàng)式乘積。

遞歸與分解

為了進(jìn)一步提高效率,算法采用遞歸策略:

*將整數(shù)分解為較小的塊,并分別對(duì)這些塊執(zhí)行FFT。

*對(duì)于每一對(duì)塊,應(yīng)用“Karatsuba乘法”或“Toom-Cook乘法”等快速乘法算法進(jìn)行逐項(xiàng)相乘。

*將相乘結(jié)果遞歸地合并,最終得到整個(gè)整數(shù)的乘積。

復(fù)雜度分析

Sch?nhage-Strassen乘法算法的時(shí)間復(fù)雜度為O(nlognloglogn),其中n是要相乘的整數(shù)的位數(shù)。它比傳統(tǒng)的基于FFT的乘法算法(O(n^2logn))速度更快,對(duì)于非常大的整數(shù)來(lái)說(shuō)具有明顯的優(yōu)勢(shì)。

應(yīng)用

Sch?nhage-Strassen乘法算法廣泛應(yīng)用于:

*大整數(shù)乘法

*密碼學(xué)(例如,RSA加密)

*代數(shù)運(yùn)算

*信號(hào)處理

*圖像處理

改進(jìn)

自最初提出以來(lái),Sch?nhage-Strassen乘法算法不斷得到改進(jìn)和優(yōu)化。一些值得注意的改進(jìn)包括:

*Pipelining:通過(guò)重疊FFT步驟來(lái)提高算法的并行性。

*使用更高級(jí)的快速乘法算法:例如,Cooley-Tukey算法。

*利用特殊數(shù)域:例如,2的次冪域,以減少單位根計(jì)算成本。

這些改進(jìn)進(jìn)一步提升了算法的效率,使其成為目前大整數(shù)乘法的最佳算法之一。第六部分多項(xiàng)式近似簡(jiǎn)化乘法關(guān)鍵詞關(guān)鍵要點(diǎn)【多項(xiàng)式近似簡(jiǎn)化乘法】

1.利用多項(xiàng)式近似代替精確運(yùn)算,降低計(jì)算復(fù)雜度。

2.采用低次多項(xiàng)式近似高次多項(xiàng)式,減少乘法次數(shù)。

3.通過(guò)控制近似誤差,保證乘法結(jié)果的精度。

【多項(xiàng)式乘法近似算法】

多項(xiàng)式近似簡(jiǎn)化乘法

簡(jiǎn)介

多項(xiàng)式近似簡(jiǎn)化乘法算法是一種快速乘法算法,通過(guò)將多項(xiàng)式近似為低度多項(xiàng)式,從而顯著降低乘法操作的復(fù)雜度。

原理

假設(shè)我們有兩個(gè)多項(xiàng)式f(x)和g(x),它們的次數(shù)分別為m和n。傳統(tǒng)乘法算法需要O(mn)次乘法和O(mn)次加法操作。多項(xiàng)式近似簡(jiǎn)化乘法的原理是:

1.將f(x)和g(x)分別近似為度數(shù)較低的h(x)和k(x)。

2.計(jì)算h(x)和k(x)的乘積p(x)。

3.將p(x)修正為f(x)和g(x)的更精確近似值。

近似步驟

有多種方法可以近似多項(xiàng)式。一種常用的方法是切比雪夫多項(xiàng)式近似:

對(duì)于一個(gè)函數(shù)f(x),其n次切比雪夫多項(xiàng)式近似h(x)定義為:

```

h(x)=a_0+a_1T_1(x)+...+a_nT_n(x)

```

其中T_i(x)是i次切比雪夫多項(xiàng)式,a_i是近似系數(shù)。

修正步驟

計(jì)算近似乘積p(x)后,需要將其修正為f(x)和g(x)的更精確近似值。最簡(jiǎn)單的方法是通過(guò)加法和乘法修正多項(xiàng)式:

```

f'(x)=f(x)+(p(x)-h(x)k(x))

g'(x)=g(x)+(p(x)-h(x)k(x))

```

算法描述

以下是多項(xiàng)式近似簡(jiǎn)化乘法算法的偽代碼描述:

```

procedureApproximatePolynomialMultiplication(f(x),g(x))

//近似f(x)和g(x)

h(x)=Approximate(f(x))

k(x)=Approximate(g(x))

//計(jì)算近似乘積

p(x)=h(x)*k(x)

//修正結(jié)果

f'(x)=f(x)+(p(x)-h(x)k(x))

g'(x)=g(x)+(p(x)-h(x)k(x))

//返回修正后的多項(xiàng)式

return(f'(x),g'(x))

endprocedure

```

復(fù)雜度分析

多項(xiàng)式近似簡(jiǎn)化乘法算法的復(fù)雜度取決于近似多項(xiàng)式的次數(shù)。對(duì)于度數(shù)為s的近似多項(xiàng)式,算法的復(fù)雜度為:

*乘法:O(s(m+n))

*加法:O((m+n)+s(m+n))

與傳統(tǒng)乘法算法O(mn)的復(fù)雜度相比,當(dāng)s遠(yuǎn)小于m和n時(shí),近似算法可以顯著提高效率。

應(yīng)用

多項(xiàng)式近似簡(jiǎn)化乘法算法在各種應(yīng)用中都有廣泛的應(yīng)用,包括:

*多項(xiàng)式求值

*多項(xiàng)式插值

*快速傅里葉變換(FFT)

*數(shù)論算法

*密碼學(xué)

拓展閱讀

*[ChebyshevPolynomials](/wiki/Chebyshev_polynomials)

*[PolynomialMultiplication](/wiki/Polynomial_multiplication)

*[FastMultiplicationofPolynomialsBasedonApproximatePolynomialMultiplication](/article/10.1007/s10915-004-0573-0)第七部分基于原始根的快速乘法算法關(guān)鍵詞關(guān)鍵要點(diǎn)基于原始根的快速乘法算法

主題名稱:原始根及其性質(zhì)

1.原始根是模數(shù)意義下的一個(gè)整數(shù),它與模數(shù)互素,并且模數(shù)中除了1之外的每個(gè)整數(shù)都可以表示為原始根的某個(gè)次冪。

2.如果模數(shù)是一個(gè)素?cái)?shù),那么模數(shù)的每一個(gè)不為1的正整數(shù)都是原始根。

3.求解原始根可以使用素?cái)?shù)分解或二次剩余的方法。

主題名稱:基于原始根的快速乘法算法

基于原始根的快速乘法算法

在數(shù)論中,原始根是一個(gè)對(duì)于模數(shù)m,且滿足存在正整數(shù)k使得g^k≡1(modm)的整數(shù)g。對(duì)于給定的模數(shù)m,如果存在原始根,那么對(duì)于m的所有整數(shù)a,都存在一個(gè)整數(shù)b使得g^b≡a(modm)。

算法原理

基于原始根的快速乘法算法利用了原始根的性質(zhì),將乘法運(yùn)算轉(zhuǎn)化為冪運(yùn)算。設(shè)m為模數(shù),g為m的原始根,a和b為需要相乘的兩個(gè)整數(shù)。算法步驟如下:

1.求出g^a(modm)和g^b(modm);

2.計(jì)算g^a(modm)·g^b(modm)≡g^(a+b)(modm);

3.求出a+b的模m余數(shù),即(a+b)%m。

此時(shí),g^(a+b)(modm)便是a·b(modm)的值。

算法優(yōu)化

基于原始根的快速乘法算法的效率可以進(jìn)一步優(yōu)化,主要優(yōu)化點(diǎn)在于冪運(yùn)算的計(jì)算方法。

二分快速冪算法

二分快速冪算法利用了冪運(yùn)算的性質(zhì):

*(a^b)^2≡a^(2b)(modm)

*(a^b)^3≡a^(3b)(modm)

*...

通過(guò)不斷將b分解為二進(jìn)制形式并利用上述性質(zhì)進(jìn)行快速冪運(yùn)算,可以將O(b)時(shí)間復(fù)雜度的冪運(yùn)算優(yōu)化到O(logb)時(shí)間復(fù)雜度。

預(yù)處理

對(duì)于固定的模數(shù)m和原始根g,可以預(yù)處理g^0(modm),g^1(modm),g^2(modm),...,g^p(modm),其中p為一個(gè)適當(dāng)選擇的值。這樣,在后續(xù)的乘法運(yùn)算中,直

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論