Transformasi Walsh-Hadamard Jarang

15

The Walsh-Hadamard Transform (WHT) adalah generalisasi dari transformasi Fourier, dan transformasi ortogonal pada vektor bilangan real atau kompleks dimensi . Transformasi ini populer dalam komputasi kuantum, tetapi telah dipelajari baru-baru ini sebagai semacam prasyarat untuk proyeksi acak vektor dimensi tinggi untuk digunakan sebagai bukti dari Johnson-Lindenstrauss Lemma. Fitur utamanya adalah walaupun ini adalah kuadrat matriks, ia dapat diterapkan pada vektor dalam waktu (daripada ) dengan metode seperti FFT.d=2md×dHAI(dcatatand)d2

Misalkan vektor input jarang : hanya memiliki beberapa entri bukan nol (katakanlah ). Apakah ada cara untuk menghitung WHT dalam waktu sedemikian rupa sehingga dan untuk ?rdf(r,d)f(d,d)=HAI(dcatatand)f(r,d)=Hai(dcatatand)r=Hai(d)

Catatan: persyaratan ini hanyalah salah satu cara memformalkan gagasan bahwa saya ingin sesuatu yang berjalan lebih cepat daripada untuk kecil .dcatatandr

Suresh Venkat
sumber
Saya yakin bahwa Anda mengetahui dua pengamatan mudah berikut, tetapi bagaimanapun saya akan menuliskannya untuk pembaca lain: (1) Perkalian langsung memberi O (rd) waktu. Itu lebih baik daripada O (d log d) hanya ketika r = o (log d). (2) Bahkan jika vektor input jarang, outputnya tidak jarang secara umum. Ini berarti bahwa kita tidak dapat berharap untuk f (r, d) menjadi o (d) bahkan untuk r = 1.
Tsuyoshi Ito
4
Apakah Anda tahu apa jawabannya untuk pertanyaan yang sama untuk transformasi Fourier?
Robin Kothari
Tsuyoshi: ya, saya sadar (1) dan itulah sebenarnya yang dilakukan untuk aplikasi yang membutuhkan ini. Adapun (2) itu benar juga. Robin, itu poin bagus - Saya tidak tahu apa-apa untuk FT, dan sebenarnya itu mungkin tempat yang baik untuk mulai menggali.
Suresh Venkat
Ternyata saya seharusnya menggali di wikipedia. halaman FFT menyebutkan dua makalah yang mungkin terkait dengan masalah perhitungan yang jarang.
Suresh Venkat

Jawaban:

6

Indeks baris WHT dengan bilangan bulat x, untuk . Jadi x memiliki log d bit. Demikian pula, indeks kolom. (X, y) posisi adalah ( - 1 ) x , y mana eksponen adalah produk titik panjang log d. Asumsikan r adalah kekuatan 2, mengumpulkan jika perlu. Pecahkan matriks dxr menjadi blok rxr dengan membiarkan bit log pertama r bervariasi dan memperbaiki bit log lain (d / r) dalam setiap cara d / r. Blok rxr ini adalah matriks WHT yang lebih kecil dengan ukuran r, kecuali mungkin ada beberapa kolom yang hilang, berulang, atau dinegasikan. Bagaimanapun, preprocess vektor dengan mudah kemudian lakukan rxr WHT dalam waktu r log r, lalu ulangi d / r kali untuk total waktu d log r.0x<d(-1)x,y

Contoh:

d = 4.

WHT H adalah

++++
+-+-
++--
+--+

Rangkaian kolom yang sewenang-wenang adalah 00 dan 10 (paling kiri dan dua di atasnya):

++
++
+-
+-

Blok baris adalah

++
++

dan

--
--

(Sebuah,b)T(Sebuah+b,0)T

++
+-

(Sebuah,b)T(-Sebuah-b,0)T

++
+-
Martin Strauss
sumber