ความซับซ้อนของการคำนวณการแปลงฟูริเยร์แบบแยก?


18

อะไรคือความซับซ้อน (บน RAM จำนวนเต็มมาตรฐาน) ของการคำนวณการแปลงฟูริเยร์แบบแยกแบบไม่ต่อเนื่องของเวกเตอร์จำนวนจำนวนเต็ม?n

คลาสสิกอัลกอริทึมสำหรับการแปลงฟูริเยร์ได้อย่างรวดเร็ว , ไม่เหมาะสม[1]ประกอบกับคูลลีย์และทูกีมักจะอธิบายว่าเป็นทำงานในเวลา แต่ที่สำคัญที่สุดของการดำเนินการทางคณิตศาสตร์ดำเนินการในขั้นตอนวิธีนี้เริ่มต้นด้วยการที่ซับซ้อนn th รากของความสามัคคีซึ่งเป็น (ส่วนใหญ่n ) เหตุผลการประเมินผลที่แน่นอนดังนั้นในเวลาคงไม่สมเหตุสมผล ปัญหาเดียวกันเกิดขึ้นกับอัลกอริธึมไร้เดียงสาO ( n 2 ) - (คูณด้วยเมทริกซ์ Vandermonde ของรากที่ซับซ้อนของความสามัคคี)O(nlogn)nnO(n2)

ยังไม่ชัดเจนว่าจะแสดงผลลัพธ์ของ DFT ได้อย่างไร (ในรูปแบบที่มีประโยชน์ใด ๆ ) กล่าวอีกอย่างหนึ่งก็ไม่ชัดเจนว่าการคำนวณ DFT นั้นเป็นไปได้จริง ๆ !

สมมติว่าเราต้องการเพียงความแม่นยำบิตในแต่ละค่าผลลัพธ์ ความซับซ้อนของการคำนวณการแปลงฟูริเยร์แบบแยกเป็นฟังก์ชันของnและbคืออะไร? (เพื่อความเป็นรูปธรรมรู้สึกอิสระที่จะสมมติว่าnคือพลังของ2 )bnbn2

หรือทุกตัวอย่างของ "FFT" ในวรรณคดีจริง ๆ แล้วหมายถึง " การแปลงตัวเลขเชิงทฤษฎีเร็ว" หรือไม่? [2]

ดูคำถามที่เกี่ยวข้องของฉันเกี่ยวกับความซับซ้อนของGaussian กำจัดและยุคลิดเส้นทางที่สั้นที่สุด

[1]มันควรจะเรียกว่า (คำนำหน้าบางส่วน) อัลกอริทึม Gauss-Runge-König-Yates-Stumpf-Danielson-Lánczos-Cooley-Tukey

[2]และถ้าเป็นเช่นนั้นทำไมหนังสือเรียนส่วนใหญ่จึงอธิบายเฉพาะอัลกอริธึมจำนวนเชิงซ้อนเท่านั้น?


1
ฉันคิดว่านั่นคือประเด็นของเขา: ในทางทฤษฎีคุณไม่ต้องกังวลกับแต่ในการใช้งานจริงคุณต้องกังวลเกี่ยวกับมันและข้อผิดพลาดที่อาจเกิดขึ้น b
Suresh Venkat

1
ที่จริงนี่เป็นคำถามที่ดีความแม่นยำของแต่ละบิตเพิ่มอีกถึงความแรงของสัญญาณ (คูณด้วย2 ) ดังนั้นฉันคิดว่าคำถามจะมีประโยชน์มากที่สุดหากขนาดของคำสื่อกลางสามารถขยายได้! 3dB2
vs

3
การวิเคราะห์ที่เชื่อถือได้ได้พิจารณาสิ่งนี้และคำถามที่เกี่ยวข้อง บทความนี้ก่อให้เกิดความซับซ้อนในการคำนวณการแปลงฟูริเยร์ภายในกรอบของเอฟเฟ็กต์ Type II ของ Weirauch ข้อ จำกัด คือมันเป็นเส้นตรงในการนำเสนอของอินพุท (อนันต์มูลค่าจริง) ทั้งอินพุตและเอาต์พุตถูกกำหนดพารามิเตอร์ความแม่นยำของ wrt ในระบบนี้ดังนั้นอาจมีวิธีในการแปลสิ่งนี้เป็นโมเดล RAM
Aaron Sterling

3
ดูวิธีการ A ในเอกสารของSchönhageและ Strassen จากการคูณจำนวนเต็ม มันใช้การแปลงฟูริเยร์ที่ซับซ้อนด้วยความแม่นยำขอบเขต ฉันคิดว่ามันอธิบายไว้ใน Knuth Vol ด้วย 2.
Markus Bläser

2
Markus, Aaron: เปลี่ยนเป็นคำตอบใช่ไหม
Suresh Venkat

คำตอบ:


9

คำตอบนี้เป็นตัวแปรของการวิเคราะห์อัลกอริทึมแรก ("Methode A") โดยSchönhageและ Strassen สำหรับการคูณจำนวนเต็มแบบยาว

สมมติว่าเราต้องการที่จะคำนวณความยาวของ FFT k ปรับขนาดการป้อนข้อมูลของคุณโดยที่ค่าทั้งหมดมีค่าน้อยกว่า 1 ก่อนอื่นให้เราสมมติว่าเราคำนวณด้วยเลขคณิตจุดคงที่m -bit ( บิตmหลังจุดไบนารี่) ให้δ = 2 1 / 2 - ม.เป็น ( "ซับซ้อน") หน่วยของตำแหน่งอย่างน้อย ให้ω = ประสบการณ์( 2 π ฉัน/ K )K=2kmmδ=21/2mω=exp(2πi/K)

ωj|ωjωj|(2k1)δ0jK1O(KM(m))M(m)m

M(m)=O(mlogm)M(m)=O(m)mmO(logm)

a=b+ωjcma=truncate(b+ωjc)bcϵa2ϵ+2kδ

(2k1)2kδbmk+logk+b+O(1)

O(KkM(k+b))

สิ่งนี้ควรทำงานกับหมายเลขทศนิยม: 1) สามารถทำได้ด้วยเลขคณิตจุดคงที่ 2) ก็เป็นจริงสำหรับตัวเลขทศนิยม


O(k+b)O(k+b)O(K(k+b))


O(nlog2n)

O(nlogn)O(k+b)

2
bO(logn)O(nlogn)M(O(logn))=1

ฉันบังเอิญดูหนังสือของ Aho, Hopcroft และ Ullman เรื่อง "การออกแบบและวิเคราะห์อัลกอริทึม" และพวกเขาพูดถึงอัลกอริทึมในรูปแบบบิตและปัญหาที่เกี่ยวข้องในรายละเอียดบางอย่าง
จันทรา Chekuri

แต่เท่าที่ฉันจำได้พวกเขาพูดถึง "number-theoretic FFT" ใน bit-model
Markus Bläser

8

นี่ไม่ใช่คำตอบที่สมบูรณ์ แต่ฉันสามารถชี้ให้คุณดูเอกสารที่เกี่ยวข้องบางส่วนและอธิบายบางส่วนด้วยว่าทำไมการแยกคำตอบสำหรับคำถามเฉพาะของคุณออกจากวรรณคดีนั้นไม่ใช่เรื่องง่าย

ให้ฉันเริ่มต้นด้วยการถามทำไมคุณต้องการที่จะรู้คำตอบสำหรับคำถามนี้ โดยทั่วไปแล้วผู้ที่พบว่าตนเองสนใจเกี่ยวกับปัญหาประเภทนี้คือผู้ที่ต้องเผชิญกับการใช้ FFT ที่มีประสิทธิภาพสูงสำหรับการใช้งานจริง คนแบบนี้ใส่ใจความซับซ้อนเชิงซีมโทติคในรูปแบบการคำนวณในอุดมคติบางอย่างมากกว่าการเพิ่มประสิทธิภาพสูงสุดภายใต้ข้อ จำกัด ด้านฮาร์ดแวร์และซอฟต์แวร์ ตัวอย่างเช่นนักพัฒนาของการแปลงฟูริเยร์ที่เร็วที่สุดในตะวันตกเขียนไว้ในกระดาษ:

ตัวเลือกที่ดีที่สุดขึ้นอยู่กับรายละเอียดฮาร์ดแวร์เช่นจำนวนการลงทะเบียนเวลาในการตอบสนองและปริมาณงานขนาดและความสัมพันธ์ของแคชโครงสร้างของไพพ์ไลน์โปรเซสเซอร์ ฯลฯ

นี่เป็นประเด็นที่นักทฤษฎีโดยทั่วไปไม่ต้องการเอาเปรียบ แต่พวกเขาก็มีความสำคัญอย่างยิ่งในการใช้งานจริง ถ้านักทฤษฎีบอกว่า "ฉันเข้าใจความซับซ้อนบิตซีมโทติคที่ดีที่สุดในหน่วยความจำ RAM" ผู้ประกอบการอาจพูดว่า "ดี" แต่อาจพบว่าผลลัพธ์ทางทฤษฎีไม่มีประโยชน์สำหรับจุดประสงค์ของเขาหรือเธอ

ต้องบอกว่าฉันคิดว่าทางออกที่ดีที่สุดของคุณคือการดูวรรณคดีวิเคราะห์เชิงตัวเลข ตัวอย่างเช่นTasche และ Zeunerได้ศึกษาความเสถียรเชิงตัวเลขของอัลกอริทึม FFT สิ่งนี้อาจยังไม่ตรงตามที่คุณต้องการเพราะความเห็นพ้องทั่วไปในหมู่ผู้ปฏิบัติงานนั้นเป็นไปได้ว่าเพื่อให้ได้ความแม่นยำเชิงตัวเลขจำนวนหนึ่งวิธีการปฏิบัติที่ดีที่สุดคือการคำนวณตัวเลขที่เรียกว่า หากคุณกำลังทำเพียงFFT เดียวนี่จะไม่ใช่วิธีที่เร็วที่สุดเพราะคุณไม่ต้องตัดค่าใช้จ่ายในการคำนวณค่าใช้จ่ายล่วงหน้าครั้งเดียวของคุณด้วยการคำนวณ FFT จำนวนมาก แต่ถึงกระนั้นการวิเคราะห์ข้อผิดพลาดในการปัดเศษของกรณีที่แย่ที่สุดก็ควรจะเกี่ยวข้องกับคำถามของคุณ


11024100

1
ฉันสนใจเป็นคำถามเชิงทฤษฎีอย่างหมดจดในความสนใจของทุนการศึกษาที่ถูกต้องและซื่อสัตย์ มันค่อนข้างทั่วไปในการอ่าน "และที่นี่เราใช้ FFT ซึ่งทุกคนรู้ว่าทำงานในเวลา O (n log n)" ในช่วงกลางของอัลกอริทึม combinatorial หมดจดอย่างอื่นวิเคราะห์ในแง่ของตัวชี้ traversals และ O (log n ) เลขคณิตจำนวนเต็มบิต หากในความเป็นจริงการแปลงจำนวนเต็มสามารถทำได้ในเวลา O (n log n) โดยใช้ตัวแปรของ FFT เล็กน้อยนี่อาจจะยกโทษให้ได้ แต่ก็ยังคงเลอะเทอะ ถ้าไม่ schmuck ที่ยากจนที่พยายามใช้อัลกอริทึมจะได้รับคำตอบที่ไม่ถูกต้อง
Jeffε

และแน่นอนฉันไม่คาดหวังว่าคำตอบสำหรับคำถามของฉันจะมีผลกระทบใด ๆ ในทางปฏิบัติใด ๆ
Jeffε

2
เจฟฟ์เท่าที่เกี่ยวข้องกับทุนการศึกษาที่ซื่อสัตย์ไม่เพียงพอที่จะบอกได้ว่า FFT ต้องการการดำเนินงานเสียงเรียกเข้า O (n log n) หรือไม่? นั่นคือวิธีธรรมชาติในการวัดความซับซ้อนของอัลกอริทึม FFT ฉันไม่เห็นแรงจูงใจในการแปลงทุกอย่างเป็นรูปแบบการคำนวณแบบใดแบบหนึ่ง มีทฤษฎีบทบางอย่างที่คุณพยายามจะพิสูจน์ว่าเป็นสิ่งสำคัญที่ต้องติดตามจำนวนบิตของความแม่นยำหรือไม่? สำหรับ schmuck ที่น่าสงสารของคุณฉันไม่ได้ซื้อว่าเขาจะได้รับ "คำตอบที่ผิด" ในการติดตั้งจริงคำถามที่คุณถามที่นี่ไม่น่าเป็นปัญหาสำคัญ
Timothy Chow

O(nlogn)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.