อ่าน 3 นาที
แผนภาพผีเสื้อ
ในบริบทของอัลกอริธึมการแปลงฟูริเยร์แบบเร็วผีเสื้อคือส่วนหนึ่งของการคำนวณที่รวมผลลัพธ์ของการแปลงฟูริเยร์แบบไม่ต่อเนื่อง (DFT) ขนาดเล็กเข้าด้วยกันเป็น DFT ขนาดใหญ่ หรือในทางกลับกัน..
แผนภาพผีเสื้อ

ในบริบทของอัลกอริธึมการแปลงฟูริเยร์แบบเร็วผีเสื้อคือส่วนหนึ่งของการคำนวณที่รวมผลลัพธ์ของการแปลงฟูริเยร์แบบไม่ต่อเนื่อง (DFT) ขนาดเล็กเข้าด้วยกันเป็น DFT ขนาดใหญ่ หรือในทางกลับกัน (การแบ่ง DFT ขนาดใหญ่เป็นการแปลงย่อย) ชื่อ "ผีเสื้อ" มาจากรูปร่างของไดอะแกรมการไหลของข้อมูลในกรณีฐาน 2 ดังที่อธิบายไว้ด้านล่าง[ 1 ]เชื่อกันว่าคำนี้ปรากฏครั้งแรกในสิ่งพิมพ์ในรายงานทางเทคนิคของ MIT ในปี 1969 [ 2 ] [ 3 ]โครงสร้างเดียวกันนี้ยังพบได้ในอัลกอริธึม Viterbiซึ่งใช้สำหรับค้นหาลำดับของสถานะที่ซ่อนอยู่ที่น่าจะเป็นไปได้มากที่สุด
โดยทั่วไป คำว่า "ผีเสื้อ" มักปรากฏในบริบทของอัลกอริธึม Cooley–Tukey FFTซึ่งจะแบ่ง DFT ที่มีขนาดประกอบn = rmออกเป็นrการแปลงย่อยที่มีขนาดmโดยที่rคือ "ฐาน" ของการแปลง จากนั้น DFT ย่อยเหล่านี้จะถูกรวมเข้าด้วยกันโดยใช้ผีเสื้อขนาดrซึ่งตัวมันเองก็คือ DFT ขนาดr (ทำซ้ำmครั้งกับผลลัพธ์ที่สอดคล้องกันของการแปลงย่อย) ที่คูณด้วยรากของเอกภาพ (เรียกว่าตัวประกอบทวิเดิล ) ก่อน (นี่คือกรณี "การลดขนาดตามเวลา" เราสามารถทำขั้นตอนย้อนกลับได้เช่นกัน ซึ่งเรียกว่า "การลดขนาดตามความถี่" โดยที่ผีเสื้อจะมาก่อนและคูณด้วยตัวประกอบทวิเดิลภายหลัง ดู บทความ Cooley–Tukey FFT เพิ่มเติม )
แผนภาพผีเสื้อรากที่ 2
ในกรณีของอัลกอริธึม Cooley–Tukey แบบ radix-2 นั้น ตัวผีเสื้อ (butterfly) ก็คือ DFT ขนาด 2 ที่รับอินพุตสองตัว ( x 0 , x 1 ) (เอาต์พุตที่สอดคล้องกันของการแปลงย่อยสองตัว) และให้เอาต์พุตสองตัว ( y 0 , y 1 ) โดยใช้สูตร (ไม่รวมปัจจัยทวิเดิล ):
หากวาดแผนภาพการไหลของข้อมูลสำหรับการดำเนินการทั้งสองนี้ เส้น ( x 0 , x 1 ) ถึง ( y 0 , y 1 ) จะตัดกันและมีลักษณะคล้ายปีกผีเสื้อจึงเป็นที่มาของชื่อนี้ (ดูภาพประกอบทางด้านขวาประกอบ)

โดยเฉพาะอย่างยิ่ง อัลกอริทึม FFT แบบลดทอนตามเวลาแบบ radix-2 บน อินพุต n = 2p โดยสัมพันธ์กับ รากที่ nของเอกภาพ แบบดั้งเดิม อาศัยผีเสื้อ O( n log 2n )ในรูปแบบ:
โดยที่kเป็นจำนวนเต็มที่ขึ้นอยู่กับส่วนของการแปลงที่กำลังคำนวณ ในขณะที่การแปลงผกผันที่สอดคล้องกันสามารถทำได้ทางคณิตศาสตร์โดยการแทนที่ωด้วยω −1 (และอาจคูณด้วยตัวประกอบมาตราส่วนโดยรวม ขึ้นอยู่กับข้อกำหนดการทำให้เป็นมาตรฐาน) เรายังสามารถกลับด้านผีเสื้อได้โดยตรง:
ซึ่งสอดคล้องกับอัลกอริธึม FFT แบบลดความถี่
การใช้งานอื่นๆ
ผีเสื้อยังสามารถใช้เพื่อปรับปรุงความเป็นสุ่มของอาร์เรย์ขนาดใหญ่ของตัวเลขสุ่มบางส่วนได้ โดยการนำคำ 32 หรือ 64 บิตทุกคำมาสัมผัสเชิงสาเหตุกับคำอื่น ๆ ทุกคำผ่านอัลกอริทึมแฮชที่ต้องการ เพื่อให้การเปลี่ยนแปลงในบิตใดบิตหนึ่งมีโอกาสที่จะเปลี่ยนแปลงบิตทั้งหมดในอาร์เรย์ขนาดใหญ่ได้[ 4 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- คำอธิบายเกี่ยวกับ FFT และแผนภาพผีเสื้อ
- แผนภาพผีเสื้อแสดงการใช้งาน FFT แบบต่างๆ (Radix-2, Radix-4, Split-Radix )
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ แผนภาพผีเสื้อ
ในบริบทของอัลกอริธึมการแปลงฟูริเยร์แบบเร็วผีเสื้อคือส่วนหนึ่งของการคำนวณที่รวมผลลัพธ์ของการแปลงฟูริเยร์แบบไม่ต่อเนื่อง (DFT) ขนาดเล็กเข้าด้วยกันเป็น DFT ขนาดใหญ่ หรือในทางกลับกัน..
แผนภาพผีเสื้อรากที่ 2
ในกรณีของอัลกอริธึม Cooley–Tukey แบบ radix-2 นั้น ตัวผีเสื้อ (butterfly) ก็คือ DFT ขนาด 2 ที่รับอินพุตสองตัว ( x 0 , x 1 ) (เอาต์พุตที่สอดคล้องกันของการแปลงย่อยสองตัว) และให้เอาต์พุตสองตัว ( y 0 , y 1 ) โดยใช้สูตร (ไม่รวม ปัจจัยทวิเดิล ):
การใช้งานอื่นๆ
ผีเสื้อยังสามารถใช้เพื่อปรับปรุงความเป็นสุ่มของอาร์เรย์ขนาดใหญ่ของตัวเลขสุ่มบางส่วนได้ โดยการนำคำ 32 หรือ 64 บิตทุกคำมาสัมผัสเชิงสาเหตุกับคำอื่น ๆ ทุกคำผ่านอัลกอริทึมแฮชที่ต้องการ...
ดูเพิ่มเติม
แผนภาพทางคณิตศาสตร์ เลมมาของซาสเซนเฮาส์ กราฟแสดงการไหลของสัญญาณ