คำถามติดแท็ก divide-and-conquer

2
แสดงวิธีการทำ FFT ด้วยมือ
สมมติว่าคุณมีสองพหุนาม:และ23+x3+x3 + x2x2+22x2+22x^2 + 2 ฉันพยายามที่จะเข้าใจว่า FFT ช่วยให้เราคูณชื่อพหุนามทั้งสองนี้อย่างไร อย่างไรก็ตามฉันไม่พบตัวอย่างผลงานใด ๆ บางคนสามารถแสดงให้ฉันเห็นได้ว่าอัลกอริทึม FFT จะทวีคูณชื่อพหุนามทั้งสองนี้อย่างไร (หมายเหตุ: ไม่มีอะไรพิเศษเกี่ยวกับพหุนามเหล่านี้ แต่ฉันต้องการให้มันง่ายเพื่อให้ง่ายต่อการติดตาม) ฉันได้ดูอัลกอริธึมใน pseudocode แต่ดูเหมือนว่าพวกเขาทั้งหมดจะมีปัญหา (อย่าระบุว่าอินพุตควรเป็นอะไร, ตัวแปรที่ไม่ได้กำหนด) และน่าประหลาดใจที่ฉันไม่สามารถหาได้ว่ามีใครบ้างที่เดินผ่าน (ด้วยมือ) ตัวอย่างการคูณพหุนามด้วย FFT

2
รากฐานทางทฤษฎีของการแบ่งแยกและการพิชิต
เมื่อพูดถึงการออกแบบอัลกอริธึมมักใช้เทคนิคต่อไปนี้: การเขียนโปรแกรมแบบไดนามิก กลยุทธ์โลภ แบ่งและพิชิต ในขณะที่วิธีการสองวิธีแรกมีรากฐานทางทฤษฎีที่รู้จักกันดีคือหลักการของ Bellman Optimality และ matroid (resp. greedoid) ทฤษฎีฉันไม่สามารถหากรอบทั่วไปสำหรับอัลกอริธึมตาม D&C ประการแรกฉันตระหนักถึงบางสิ่งบางอย่างที่เรา (หรือมากกว่าผู้เชี่ยวชาญ) ที่แนะนำในคลาสการเขียนโปรแกรมใช้งานได้เรียกว่า "โครงกระดูกอัลกอริทึม" ที่เกิดขึ้นในบริบทของ combinators ตัวอย่างของที่นี่เราให้โครงกระดูกดังกล่าวสำหรับอัลกอริธึม D&C ดังนี้: คำนิยาม : ปล่อยให้เป็นเซตที่ไม่ว่างเปล่า เราเรียกองค์ประกอบของโซลูชั่นและองค์ประกอบของ (นั่นคือส่วนย่อยของ) จะเรียกว่าเป็นปัญหา จากนั้นD & C- โครงกระดูกคือ tuple 4โดยที่:SA,SA,SA,SSSS AP:=P(A)P:=P(A)P:=\mathfrak{P}(A)AAA(Pβ,β,D,C)(Pβ,β,D,C)(P_\beta, \beta, \mathcal{D}, \mathcal{C}) PβPβP_\betaเป็นกริยามากกว่าชุดของปัญหาและเราบอกว่าปัญหาที่เกิดขึ้นเป็นพื้นฐาน IFFถือpppPβ(p)Pβ(p)P_\beta(p) ββ\betaเป็นการแมปที่กำหนดวิธีแก้ปัญหาสำหรับปัญหาพื้นฐานแต่ละข้อPβ→SPβ→SP_\beta \rightarrow S DD\mathcal{D}คือการแมป ที่แบ่งแต่ละปัญหาออกเป็นชุดย่อยของปัญหาP→P(P)P→P(P)P \rightarrow \mathfrak{P}(P) CC\mathcal{C}คือการทำแผนที่ที่เข้าร่วมการแก้ปัญหา (ขึ้นอยู่กับชนิดของ "ปัญหาการหมุน") …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.