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.
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 ) ?
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 .
źródło
Odpowiedzi:
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.0 ≤ x < d ( - 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
źródło