Mã hóa nhanh các vectơ cân bằng


10

Dễ dàng thấy rằng với mọi n tồn tại ánh xạ 1-1 F từ {0,1} n đến {0,1} n + O ( log n ) sao cho với mọi x thì vectơ F ( x ) là " cân bằng ", nghĩa là, nó có số lượng bằng 1 và 0 bằng nhau. Có thể định nghĩa F như vậy để cho x chúng ta có thể tính F ( x ) hiệu quả không?nn+O(logn)xF(x)FxF(x)

Cảm ơn.


Tôi cho rằng bằng 'hiệu quả', bạn có nghĩa là O (n) hoặc ở đâu đó, loại trừ lập luận "thử nghiệm ngẫu nhiên lặp lại"?
Suresh Venkat

@Suresh, bạn có thể phác thảo đối số "thử nghiệm ngẫu nhiên lặp lại" không?
Emil

một cách để chứng minh rằng ánh xạ tồn tại là bằng phương pháp xác suất: chọn F một cách ngẫu nhiên, và sau đó ánh xạ hoạt động với một số xác suất. đó là những gì tôi muốn nói
Suresh Venkat

1
Câu hỏi được xác định hoàn hảo nhưng theo tôi, tiêu đề là sai lệch. Tôi sẽ không gọi một ánh xạ F thỏa mãn điều kiện đã nêu là mã hóa các vectơ cân bằng, trừ khi F là tính từ. Nó giống như mã hóa chuỗi n-bit bằng một vectơ cân bằng.
Tsuyoshi Ito

Một cách hoàn hảo, được định nghĩa rõ ràng về các cách giải thích khác nhau có thể có hiệu quả khác nhau Nhưng đây không phải là điểm nhận xét trước đây của tôi.
Tsuyoshi Ito

Câu trả lời:


12

nx

  • f(x,i)xi
  • b(x)xx x

xg(i)=b(f(x,i))

  • g(0)=b(x)
  • g(n)=g(0)
  • |g(i)g(i+1)|=2i

i1g(i)+1

(n+O(logn))yf(x,i)iyO(logn)xy

O(logn)yO(logn)0


b (x) trong dòng thứ 3 nên là b (y).
Emil

Tôi nghĩ rằng bạn cần có thể thêm một bit khác vào chuỗi x để đảm bảo rằng nó có độ dài chẵn (để bạn có thể chắc chắn rằng g (i) bằng 0 đối với một số i).
Emil

g(i)ig(i)i1i

@Jukka: À đúng rồi.
Emil

1
g(i)ii01102log(n)

9

knn/2k(n-1)n/2n-1k-(n-1k(n1n/2)k(n1)n/2n1(n-1)n/2-1k(n1n/2)(n1)n/21


1
Và nếu bạn sử dụng lại giá trị của hệ số nhị thức để tính hệ số nhị thức cần thiết tiếp theo, toàn bộ thuật toán sẽ chạy trong thời gian O (n).
Tsuyoshi Ito

Cảm ơn! Điều này thật ý nghĩa. Tôi đoán thời gian chạy sẽ phụ thuộc vào mô hình tính toán. Nếu bạn có thể thực hiện các thao tác trên các số n bit theo thời gian đơn vị, thì việc thực hiện bởi Tsuyoshi Ito sẽ chạy trong thời gian O (n). Mặt khác, nếu bạn đếm các hoạt động bit, thời gian sẽ là O (n ^ 2), tôi nghĩ vậy.
Piotr
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.