위치 deg(A) = q
와 다항식을 정의하십시오 deg(B) = p
. deg(C) = q + p
.
이 경우, deg(C) = 1 + 2 = 3
.
A=3+xB=2x2+2C=A∗B=?
계수의 무차별 곱셈으로 O(n2) 시간에 C를 쉽게 찾을 수 있습니다 . FFT (및 역 FFT)를 적용하면 O(nlog(n)) 시간 내에이를 달성 할 수 있습니다. 명시 적으로 :
- A와 B의 계수 표현을 값 표현으로 변환합니다. 이 과정을 평가 라고 합니다. 이것을 분할 정복 (D & C)을 수행하는 단계 걸릴 O(nlog(n)) 시간.
- 값 표현에 다항식을 성분별로 곱하십시오. C = A * B의 값 표현을 리턴합니다. 이 작업에는 O(n) 시간 이 걸립니다 .
- 역 FFT를 사용하여 C를 반전하여 계수 표현에서 C를 구합니다. 이 과정을 보간 이라고 하며 O(nlog(n)) 시간 도 걸립니다 .
계속해서, 우리는 각 다항식을 그 값이 계수 인 벡터로 나타냅니다. 우리는 2의 가장 작은 제곱, n=2k,n≥deg(C) 까지 0으로 벡터를 채 웁니다 . 따라서 n=4 입니다. 2의 거듭 제곱을 선택하면 분할 및 정복 알고리즘을 재귀 적으로 적용 할 수 있습니다.
A=3+x+0x2+0x3⇒B=2+0x+2x+0x3⇒a⃗ =[3,1,0,0]b⃗ =[2,0,2,0]
A′,B′ 각각 A와 B의 값 표현 이라고하자 . FFT (고속 푸리에 변환 )는 선형 변환 ( 선형 맵 )이며 행렬 M 으로 나타낼 수 있습니다 . 그러므로
A′=Ma→B′=Mb→
우리는 정의 M=Mn(ω)ω 복소수이고 nth 통일성을 복소수. n = 4
이 예에서 주목하십시오 . 또한 jth 행 및 kth 열의 항목이 ωjkn 입니다. DFT 매트릭스에 대한 자세한 내용은 여기를 참조하십시오.
M4(w)=⎡⎣⎢⎢⎢⎢⎢⎢111...11ω1ω2...ωn−11ω2ω4...ω2(n−1).........ωjk...1ωn−1......ω(n−1)(n−1)⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢11111ωω2ω31ω2ω4ω61ω3ω6ω9⎤⎦⎥⎥⎥⎥
ω4=4th 근이 주어지면 , 우리는 순서가 정해집니다.
{ω0,ω1,ω2,ω3,ω4,ω5,...}={1,i,−1,−i,1,i,...}
이것은 단위 원의 뿌리를 시계 반대 방향 으로 반복하여 시각화 할 수 있습니다 .
mod n
ω6=ω6modn=ω2=−1−i=ω3=ω3+n
A′,B′
A′=M∗a⃗ =⎡⎣⎢⎢⎢⎢11111ωω2ω31ω2ω4ω61ω3ω6ω9⎤⎦⎥⎥⎥⎥⎡⎣⎢⎢⎢3100⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢3+13+1ω3+ω23+ω3⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢43+i23−i⎤⎦⎥⎥⎥B′=M∗b⃗ =⎡⎣⎢⎢⎢⎢11111ωω2ω31ω2ω4ω61ω3ω6ω9⎤⎦⎥⎥⎥⎥⎡⎣⎢⎢⎢2020⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢2+22+2ω22+2ω42+2ω6⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢4040⎤⎦⎥⎥⎥
이 단계는 D & C 알고리즘을 사용하여 달성 할 수 있습니다 (이 답변의 범위를 벗어남).
A′∗B′
A′∗B′=⎡⎣⎢⎢⎢43+i23−i⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢4040⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢16080⎤⎦⎥⎥⎥=C′
마지막으로, 마지막 단계는 C '를 계수로 나타내는 것입니다. 주의
C′=Mc⃗ ⇒M−1C′=M−1Mc⃗ ⇒c⃗ =M−1C′
M−1n=1nMn(ω−1)ωj=−ωn/2+j
M−1n=14⎡⎣⎢⎢⎢⎢11111ω−1ω−2ω−31ω−2ω−4ω−61ω−3ω−6ω−9⎤⎦⎥⎥⎥⎥=14⎡⎣⎢⎢⎢11111−i−1i1−11−11i−1−i⎤⎦⎥⎥⎥
ω−j
{ω0,ω−1,ω−2,ω−3,ω−4,ω−5,...}={1,−i,−1,i,1,−i,...}
nthω−j=ωn−j
c⃗ =M−1C′=1nMn(w−1)=14⎡⎣⎢⎢⎢11111−i−1i1−11−11i−1−i⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢16080⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢⎢(16+8)/4(16−8)/4(16+8)/4(16−8)/4⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢6262⎤⎦⎥⎥⎥
C=A∗B=6+2x+6x2+2x3