Rzadka transformacja Walsha-Hadamarda


15

Walsh-Hadamard'a transformacji (BLK) jest uogólnieniem transformaty Fouriera i jest prostopadła do przetwarzania na wektorze rzeczywistych lub liczb zespolonych o wymiarze . Transformacja jest popularna w obliczeniach kwantowych, ale ostatnio badano ją jako rodzaj warunku wstępnego losowych rzutów wektorów wielowymiarowych do wykorzystania w dowodzie lematu Johnsona-Lindenstraussa. Jego główną cechą jest to, że mimo iż jest to kwadrat d x d matryca, może być zastosowany do wektora w czasie O ( d log d ) (a nie D 2 ) za pomocą FFT, takich jak metody.d=2md×dO(dlogd)d2

Załóżmy, że wektor wejściowy jest rzadki : ma tylko kilka niezerowych pozycji (powiedzmy ). Jest jakiś sposób obliczyć WHT w czasie f ( r , d ) , tak że F ( d , d ) = O ( d log d ) i f ( r , d ) = O ( d log d ) dla r = O ( d ) ?rdf(r,d)f(re,re)=O(relogre)fa(r,re)=o(relogre)r=o(re)

Uwaga: te wymagania są tylko jednym ze sposobów sformalizowania idei, że chciałbym, aby coś działało szybciej niż dla małego r .relogrer


Jestem pewien, że zdajesz sobie sprawę z następujących dwóch łatwych spostrzeżeń, ale i tak zapiszę je dla innych czytelników: (1) Bezpośrednie pomnożenie daje O (rd) czas. Jest lepszy niż O (d log d) tylko wtedy, gdy r = o (log d). (2) Nawet jeśli wektor wejściowy jest rzadki, wynik ogólnie nie jest rzadki. Oznacza to, że nie możemy mieć nadziei, że f (r, d) będzie o (d) nawet dla r = 1.
Tsuyoshi Ito

4
Czy wiesz, jaka jest odpowiedź na to samo pytanie dla transformacji Fouriera?
Robin Kothari,

Tsuyoshi: tak, jestem świadomy (1) i tak właśnie się dzieje z aplikacjami, które tego potrzebują. co do (2), to także prawda. Robin, to dobra uwaga - nie wiem nic o FT, a właściwie może to być dobre miejsce do rozpoczęcia kopania.
Suresh Venkat

Okazuje się, że powinienem był kopać na wikipedii. strona FFT wymienia dwa artykuły, które mogą być związane z rzadkim problemem obliczeniowym.
Suresh Venkat,

Odpowiedzi:


6

Indeksuj wiersze WHT według liczby całkowitej x, dla . Więc x ma log d bitów. Podobnie indeksuj kolumny. (X, Y), sytuacja jest ( - 1 ) x , y gdzie wykładnik jest kropka produkt log długość d. Załóżmy, że r jest potęgą 2, w razie potrzeby zaokrąglając w górę. Podziel macierz dxr na bloki rxr, pozwalając, aby pierwsze bity logarytmiczne r się zmieniały, i ustalając inne bity log (d / r) na każdy ze sposobów d / r. Ten blok rxr jest mniejszą macierzą WHT o rozmiarze r, z tym wyjątkiem, że niektórych kolumn brakuje, powtarzano lub negowano. W każdym razie należy łatwo wstępnie przetworzyć wektor, a następnie wykonać WHT rxr w czasie r log r, a następnie powtórzyć czasy d / r dla całkowitego czasu d log r.0x<re(-1)x,y

Przykład:

d = 4.

WHT H jest

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

Arbitralny zestaw kolumn to 00 i 10 (skrajnie lewy i dwa od tego):

++
++
+-
+-

Bloki wierszy są

++
++

i

--
--

(za,b)T.(za+b,0)T.

++
+-

(za,b)T.(-za-b,0)T.

++
+-
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.