Đây là một bộ lấy mẫu đệ quy khá rõ ràng là trong trường hợp tốt nhất (tính theo trọng số ), nhưng theo cấp số nhân trong trường hợp xấu nhất.O(d)ωi
Giả sử chúng ta đã chọn và muốn chọn . Chúng ta cần tính toán
và chọn với xác suất
Mẫu số sẽ là khác không cho bất kỳ sự lựa chọn hợp lệ nào của các mẫu . x i w ( x 1 , ... , x i - 1 , x i ) = Σx1,…,xi−1xiX i = 1 w ( x 1 , ... , x i - 1 , 1 )
w(x1,…,xi−1,xi)=∑xi+1∈{−1,1}⋯∑xd∈{−1,1}(∑j=1dωjxj)+
xi=1x1,...,xi-1w(x1,…,xi−1,1)w(x1,…,xi−1,1)+w(x1,…,xi−1,−1).
x1,…,xi−1
Bây giờ, tất nhiên, câu hỏi là làm thế nào để tính .w(x1,…,xi)
Nếu chúng ta có , thì cho bất kỳ với các mục hàng đầu và vì vậy trở thành:
C:=∑ij=1ωjxj≥∑dj=i+1|ωj|ω⋅x≥0xx1:iw
∑xi+1⋯∑xdω⋅x=ω⋅(∑xi+1⋯∑xdx)=∑j=1iωj(∑xi+1⋯∑xdxj)2d−ixj+∑j=i+1dωj(∑xi+1⋯∑xdxj)0=2d−iC.
Trong trường hợp ngược lại, , chúng ta có và vì vậy .C≤−∑dj=i+1|ωj|ω⋅x≤0w(x1,…,xi)=0
Mặt khác, chúng ta phải lặp lại, sử dụng .w(x1,…,xi)=w(x1,…,xi,1)+w(x1,…,xi,−1)
Giả sử rằng bộ nhớ không phải là vấn đề và chúng ta có thể lưu trữ tất cả các tính toán phụ trong , trong một cây - cho đến khi chúng ta gặp phải một trong những trường hợp "đẹp", sau đó các cuộc gọi mất thời gian liên tục. (Chúng tôi sẽ cần phải tính toán toàn bộ cây này anyway để chọn ). Sau đó, một khi cây này tính toán được xây dựng, các sampler sẽ chỉ mất thời gian. Câu hỏi là mất bao lâu để xây dựng cây, hoặc tương đương với nó lớn như thế nào.w(1)w(−1)x1wO(d)
Tất nhiên chúng tôi sẽ xử lý các trường hợp "đẹp" nhanh hơn nếu được sắp xếp, .ωiω1≥ω2≥⋯≥ωd
Trong trường hợp tốt nhất, . Sau đó, chúng tôi đạt được một trường hợp "đẹp" ngay lập tức cho cả hoặc , vì vậy việc xây dựng cây mất thời gian không đổi và toàn bộ bộ lấy mẫu mất thời gian .|ω1|>∑dj=2|ωj|w(1)w(−1)wO(d)
Trong trường hợp xấu nhất (được sắp xếp), . Sau đó, câu hỏi là: cây lớn như thế nào?ω1=ω2=⋯=ωd
Tất nhiên, các đường dẫn đầu tiên để kết thúc tất nhiên là và có độ dài . Do đó, cây hoàn thành đến độ sâu đó và do đó chứa ít nhất các nút . (Nó có nhiều hơn; bạn có thể tìm thấy nó với một đối số giống như các đối số được sử dụng trong các vấn đề hủy hoại của người đánh bạc, nhưng tôi không thể tìm thấy nó trong hai phút của Google và không quan tâm đặc biệt - là xấu đủ....)( - 1 ,(1,1,…,1)(−1,−1,…,−1)⌈d/2⌉O(2d/2)2d/2
Nếu cài đặt của bạn chỉ có một vài rất lớn , thì đây có lẽ là một cách tiếp cận hợp lý thực tế. Nếu đều có độ lớn tương tự nhau, thì có lẽ nó vẫn còn theo cấp số nhân và quá đắt đối với lớn .ω i dωiωid