Biến đổi Walsh-Hadamard thưa thớt


15

Các Walsh-Hadamard transform (WHT) là một sự tổng quát của biến đổi Fourier, và là một sự biến đổi trực giao trên một vector của các số thực hoặc phức tạp của chiều . Phép biến đổi này rất phổ biến trong điện toán lượng tử, nhưng gần đây nó đã được nghiên cứu như một loại tiền đề cho các phép chiếu ngẫu nhiên của các vectơ chiều cao để sử dụng trong chứng minh Bổ đề Johnson-Lindenstrauss. Đặc điểm chính của nó là mặc dù là ma trận vuông , nhưng nó có thể được áp dụng cho một vectơ trong thời gian (chứ không phải ) bằng phương pháp giống FFT. d × d O ( d log d ) d 2d=2md×dÔi(dđăng nhậpd)d2

Giả sử vectơ đầu vào thưa thớt : nó chỉ có một vài mục nhập khác (giả sử ). Có cách nào để tính WHT theo thời gian sao cho và cho ?f ( r , d ) f ( d , d ) = O ( d log d ) f ( r , d ) = o ( d log d ) r = o ( d )r«df(r,d)f(d,d)= =Ôi(dđăng nhậpd)f(r,d)= =o(dđăng nhậpd)r= =o(d)

Lưu ý: những yêu cầu này chỉ là một cách để chính thức hóa ý tưởng rằng tôi muốn thứ gì đó chạy nhanh hơn cho nhỏ .rdđăng nhậpdr


Tôi chắc chắn rằng bạn biết về hai quan sát dễ dàng sau đây, nhưng dù sao tôi cũng sẽ viết chúng cho những người đọc khác: (1) Phép nhân đơn giản cho thời gian O (nd). Nó chỉ tốt hơn O (d log d) khi r = o (log d). (2) Ngay cả khi vectơ đầu vào thưa thớt, đầu ra nói chung không thưa thớt. Điều này có nghĩa là chúng ta không thể hy vọng f (r, d) là o (d) ngay cả với r = 1.
Tsuyoshi Ito

4
Bạn có biết câu trả lời cho cùng một câu hỏi cho biến đổi Fourier là gì không?
Robin Kothari

Tsuyoshi: vâng, tôi biết về (1) và thực tế đó là những gì được thực hiện cho các ứng dụng cần điều này. đối với (2) điều đó cũng đúng. Robin, đó là một điểm tốt - tôi không biết gì về FT, và thực tế đó có thể là một nơi tốt để bắt đầu đào.
Suresh Venkat

Hóa ra tôi nên đào trên wikipedia. trang FFT đề cập đến hai bài báo có thể liên quan đến vấn đề tính toán thưa thớt.
Suresh Venkat

Câu trả lời:


6

Lập chỉ mục các hàng WHT theo số nguyên x, cho . Vì vậy x có bit d log. Tương tự, lập chỉ mục các cột. (X, y) là vị trí ( - 1 ) x , y nơi số mũ là sản phẩm chấm có độ dài log d. Giả sử r là lũy thừa 2, làm tròn số nếu cần. Chia ma trận dxr thành các khối rxr bằng cách để các bit log r đầu tiên thay đổi và sửa các bit log (d / r) khác trong mỗi cách d / r. Khối rxr này là một ma trận WHT nhỏ hơn có kích thước r, ngoại trừ có thể có một số cột bị thiếu, lặp lại hoặc bị phủ định. Trong mọi trường hợp, tiền xử lý vectơ dễ dàng sau đó thực hiện Wx rxr trong thời gian r log r, sau đó lặp lại d / r lần cho tổng thời gian d log r.0x<d(-1)x,y

Thí dụ:

d = 4.

WHT H là

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

Tập hợp các cột tùy ý là 00 và 10 (ngoài cùng bên trái và hai cột từ đó):

++
++
+-
+-

Khối hàng là

++
++

--
--

Trong mỗi khối, có các cột lặp lại, các cột bị thiếu và, trong khối thứ hai, các cột bị phủ định. Tiền xử lý một vectơ thành ( a + b , 0 ) T và nhân với 2x2 WHT:(một,b)T(một+b,0)T

++
+-

Sau đó tiền xử lý thành ( - a - b , 0 ) T và nhân với 2x2 WHT:(một,b)T(-một-b,0)T

++
+-
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.