Discrete Fourier Transform (DFT) hesaplamasını Cooley-Tukey Radix-2 yöntemi ile O(n^2) süresinden O(n log n) süresine indiren temel algoritmadır.
Hızlı Fourier Dönüşümü (FFT), bir zaman serisini veya sinyali frekans bileşenlerine ayıran Discrete Fourier Transform (DFT) işlemini son derece hızlı bir şekilde gerçekleştiren algoritmalar ailesidir.
DFT hesaplamasının kaba kuvvet yaklaşımı her girdi çifti için çarpım yaptığından $O(n^2)$ karmaşıklığa sahiptir. Cooley-Tukey algoritması, girdi boyutunu tek ve çift indeksli olmak üzere ikiye bölüp (divide-and-conquer), karmaşık birim kökleri (twiddle factors) ile birleştirerek bu süreyi $O(n log n)$ seviyesine indirir.
FFT, dijital sinyal işleme (DSP), ses/görüntü sıkıştırma (JPEG, MP3), hızlı büyük tamsayı/polinom çarpımı ve kuantum bilişimde (QFT) kritik bir öneme sahiptir.
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1interface Complex {2 re: number;3 im: number;4}56function add(a: Complex, b: Complex): Complex {7 return { re: a.re + b.re, im: a.im + b.im };8}910function sub(a: Complex, b: Complex): Complex {11 return { re: a.re - b.re, im: a.im - b.im };12}1314function mul(a: Complex, b: Complex): Complex {15 return {16 re: a.re * b.re - a.im * b.im,17 im: a.re * b.im + a.im * b.re18 };19}2021export function cooleyTukeyFFT(a: Complex[]): Complex[] {22 const n = a.length;23 if (n <= 1) return a;24 25 const even: Complex[] = [];26 const odd: Complex[] = [];27 for (let i = 0; i < n; i++) {28 if (i % 2 === 0) even.push(a[i]);29 else odd.push(a[i]);30 }31 32 const yEven = cooleyTukeyFFT(even);33 const yOdd = cooleyTukeyFFT(odd);34 35 const y = new Array(n); 36 for (let k = 0; k < n / 2; k++) {37 const angle = (-2 * Math.PI * k) / n;38 const w: Complex = { re: Math.cos(angle), im: Math.sin(angle) };39 const t = mul(w, yOdd[k]);40 41 y[k] = add(yEven[k], t);42 y[k + n / 2] = sub(yEven[k], t);43 }44 45 return y;46}Gerçek sayı dizilerini girerek Cooley-Tukey kelebek (butterfly) adımlarını ve frekans spektrum genliklerini hesaplayın.
Gerçek sayı dizilerini girerek Cooley-Tukey kelebek (butterfly) adımlarını ve frekans spektrum genliklerini hesaplayın.
En İyi Durum: O(n log n) - Her zaman aynı sayıda bölünme adımı gerçekleşir
Ortalama Durum: O(n log n)
En Kötü Durum: O(n log n)
O(n) - Özyinelemeli dizileri ve sonuçları saklamak için - Bu algoritmanın karmaşıklığı belirtilmemiş.
Hızlı Fourier Dönüşümü (Fast Fourier Transform) Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar:
Frekans spektrum verilerini tekrar zaman serisine dönüştüren algoritma.
Polinomları katsayı bazında bölen bir diğer divide-and-conquer çarpım yöntemi.