กำหนดพหุนามที่และdeg(A) = q
deg(B) = p
deg(C) = q + p
ในกรณีdeg(C) = 1 + 2 = 3
นี้
A=3+xB=2x2+2C=A∗B=?
เราสามารถหาค่า C ในเวลาได้อย่างง่ายดายโดยการคูณค่าสัมประสิทธิ์ของเดียรัจฉาน โดยใช้ FFT (และผกผัน FFT) เราสามารถบรรลุเป้าหมายนี้ในเวลา อย่างชัดเจน:O(n2)O(nlog(n))
- แปลงการแทนค่าสัมประสิทธิ์ของ A และ B เป็นการแทนค่า กระบวนการนี้เรียกว่าการประเมินผล การแสดงแบ่งและพิชิต (D & C) สำหรับการนี้จะใช้เวลาเวลาO(nlog(n))
- การคูณแบบหลายส่วนประกอบด้วยพหุนามในการแสดงค่าของพวกมัน ส่งคืนการแทนค่าของ C = A * B นี้ใช้เวลาเวลาO(n)
- Invert C โดยใช้ inverse FFT เพื่อรับ C ในการแทนค่าสัมประสิทธิ์ กระบวนการนี้เรียกว่าการแก้ไขและยังใช้เวลาเวลาO(nlog(n))
เราจะแสดงพหุนามแต่ละอันเป็นเวกเตอร์ที่มีค่าเป็นสัมประสิทธิ์ เราแผ่นเวกเตอร์ด้วย 0 ขึ้นอยู่กับอำนาจที่เล็กที่สุดของทั้งสอง(C) ดังนั้น4 การเลือกพลังสองวิธีทำให้เราสามารถใช้อัลกอริทึมการหารและการชนะแบบเรียกซ้ำได้n=2k,n≥deg(C)n=4
A=3+x+0x2+0x3⇒B=2+0x+2x+0x3⇒a⃗ =[3,1,0,0]b⃗ =[2,0,2,0]
ให้เป็นค่าแทน A และ B ตามลำดับ ขอให้สังเกตว่า FFT (Fast แปลงฟูเรีย ) เป็นแปลงเชิงเส้น ( เส้นแผนที่ ) M ดังนั้นA′,B′M
A′=Ma→B′=Mb→
เรากำหนดโดยที่เป็นรากที่ซับซ้อนรากที่ซับซ้อนของความสามัคคี ขอให้สังเกตในตัวอย่างนี้ นอกจากนี้ยังแจ้งให้ทราบว่ารายการในที่แถวและคอลัมน์{} ดูเพิ่มเติมเกี่ยวกับเมทริกซ์ DFT ที่นี่M=Mn(ω)ωnthn = 4
jthkthωjkn
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
เพื่อให้ขั้นตอนที่ 1 ( การประเมินผล ) เสร็จสมบูรณ์เราจะพบโดยดำเนินการ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 (เกินขอบเขตของคำตอบนี้)
ทวีคูณส่วนประกอบที่ชาญฉลาด (ขั้นตอนที่ 2)A′∗B′
A′∗B′=⎡⎣⎢⎢⎢43+i23−i⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢4040⎤⎦⎥⎥⎥=⎡⎣⎢⎢⎢16080⎤⎦⎥⎥⎥=C′
ในที่สุดขั้นตอนสุดท้ายคือการแทน C 'ลงในค่าสัมประสิทธิ์ แจ้งให้ทราบ
C′=Mc⃗ ⇒M−1C′=M−1Mc⃗ ⇒c⃗ =M−1C′
แจ้งให้ทราบล่วงหน้า 1และJ}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⎤⎦⎥⎥⎥
ดังนั้นเราจึงได้พหุนาม 1 : สูตรผกผันหน้า 73, อัลกอริทึมโดย Dasgupta และ อัล (C) 2006C=A∗B=6+2x+6x2+2x3