Các trình tự chênh lệch thấp có làm việc trong các không gian riêng biệt không?


9

Trình tự chênh lệch thấp trong một không gian thực ( ) có vẻ như là một công cụ thực sự xuất sắc để lấy mẫu một không gian mẫu một cách đồng đều. Theo như tôi có thể nói, họ khái quát tốt cho bất kỳ không gian thực nào, nếu bạn sử dụng bản đồ phù hợp (ví dụ: bản đồ tuyến tính).[0,1]n[0,1][a,b]

Các trình tự như vậy có khái quát đến các không gian riêng biệt không? ví dụ. nếu tôi có một không gian chỉ có hai phần tử trong mỗi thứ nguyên (ví dụ: công tắc boolean), tôi có thể ánh xạ không? Còn về kích thước có nhiều phần tử hơn (ví dụ: công tắc 4 trạng thái?). Và cho các không gian có số lượng trạng thái khác nhau trong mỗi thứ nguyên?[0,0.5]0; (0.5,1]1

Trực giác của tôi nói rằng điều này có thể hoạt động tốt, đặc biệt là nếu chuỗi con dài, nhưng nó có thể hoạt động tốt hơn đối với một số chuỗi so với các trạng thái khác, tùy thuộc vào số lượng trạng thái (ví dụ: chuỗi Halton có thể có tương tác kỳ lạ với kích thước với một số nguyên tố trạng thái hoặc chuỗi Sobol ' chỉ có thể hoạt động cho các kích thước có phần tử). Nhưng tôi đã không thực hiện thử nghiệm.2n

Nếu điều này không làm việc, tại sao không?

Câu trả lời:


2

Câu trả lời ngắn gọn là có! Nó có thể hoạt động và đơn giản như nhân vectơ với một số nguyên và lấy phần nguyên của mỗi thành phần của nó.tn(0,1)dm

Câu trả lời dài hơn là trực giác của bạn là chính xác, rằng trong thực tế, nó có kết quả hỗn hợp tùy thuộc vào sự lựa chọn của:

  • bạn chọn chuỗi nào (Halton, Sobol, v.v.)
  • các tham số cơ bản (ví dụ: 2,3,5, ...)
  • và ở mức độ thấp hơn, giá trị của .m

Tuy nhiên, gần đây tôi đã viết một bài đăng trên blog chi tiết "Hiệu quả không hợp lý của các chuỗi quasirandom , về cách dễ dàng tạo ra một chuỗi chênh lệch thấp kết thúc mở trong các kích thước tùy ý, có thể dễ dàng hơn nhiều so với các trình tự chênh lệch thấp hiện có, chẳng hạn như trình tự Halton và Kronecker.

Phần trong bài đăng có tên "Bao trùm" đề cập cụ thể đến câu hỏi của bạn về việc loại bỏ các chuỗi sai lệch thấp.

Trong các ô vuông hình ảnh sau (biểu thị một điểm mạng nguyên duy nhất) có ít màu đỏ hơn ngụ ý phân phối đồng đều hơn, vì mỗi ô vuông màu đỏ chỉ ra rằng ô không chứa điểm màu xanh. Người ta có thể thấy rõ ràng ngay cả resultence phân phối điểm so với các phương pháp đương đại khác.R

Hình ảnh: Các chuỗi khác biệt thấp rời rạc theo hai chiều

Giải pháp là phương pháp tái phát phụ gia (modulo 1) nhằm khái quát hóa vấn đề 1 chiều mà giải pháp phụ thuộc vào Tỷ lệ vàng. Giải pháp cho vấn đề -chiều, phụ thuộc vào hằng số đặc biệt , trong đó là giá trị nhỏ nhất, giá trị thực dương của sao cho dϕdϕdx

xd+1=x+1

Với ,  , đó là tỷ lệ vàng chính tắc.d=1ϕ1=1.618033989...

Với , , thường được gọi là hằng số dẻo và có một số tính chất đẹp. Giá trị này được phỏng đoán rất có thể là giá trị tối ưu cho một vấn đề hai chiều liên quan [Hensley, 2002].d=2ϕ2=1.3247179572...

Jacob Rus đã đăng một hình ảnh đẹp của chuỗi chênh lệch thấp 2 chiều này, có thể tìm thấy ở đây .

Với hằng số đặc biệt này, việc tính toán thuật ngữ thứ bây giờ cực kỳ đơn giản và nhanh chóng để tính toán:n

R:tn=αα0+nαα(mod1),n=1,2,3,...
whereαα=(1ϕd,1ϕd2,1ϕd3,...1ϕdd),

Tất nhiên, lý do đây được gọi là chuỗi lặp lại là vì định nghĩa trên tương đương với

R:tn+1=tn+αα(mod1)

Trong gần như tất cả các trường hợp, lựa chọn không thay đổi các đặc điểm chính và vì vậy, vì lý do đơn giản rõ ràng, là lựa chọn thông thường. Tuy nhiên, có một số đối số, liên quan đến tính đối xứng, cho thấy là lựa chọn tốt hơn.αα0αα0=00αα0=1/21/2

Mã Python là

# Use Newton-Rhapson-Method
def gamma(d):
    x=1.0000
    for i in range(20):
        x = x-(pow(x,d+1)-x-1)/((d+1)*pow(x,d)-1)
    return x

d=5
n=1000

# m can be any number.
# In the diagram above it is chosen to be exactly sqrt of n, 
# simply to to make the visualization more intuitive 
# so that ideally each cell should have exactly one dot.
m=10

g = gamma(d)
alpha = np.zeros(d)                 
for j in range(d):
    alpha[j] = pow(1/g,j+1) %1
z = np.zeros((n, d))    
c = (np.zeros((n,d)).astype(int)  

for i in range(n):
    z = (0.5 + alpha*(i+1)) %1
    c = (np.floor(m *z)).astype(int)
print(c)

Mong rằng sẽ giúp!


2

Nếu bạn có số lượng không gian hữu hạn, bạn sẽ tốt hơn với việc liệt kê rõ ràng các không gian có thể với thiết kế khối không hoàn chỉnh cân bằng được xây dựng dựa trên chúng. Cuối cùng, các thuộc tính của các chuỗi sai lệch thấp là không có triệu chứng, với các thuộc tính mong muốn đạt được với độ dài của thứ tự trong đó là kích thước của không gian của bạn. Nếu số lượng kết hợp có thể ít hơn số đó, bạn có thể lấy tất cả các kết hợp có thể và đạt được một thiết kế cân bằng với điều đó.N6ss

Cập nhật: đã có một cuốn sách thảo luận về việc sử dụng QMC cho các quy trình Poisson và các thử nghiệm Bernoulli. Có thể bạn sẽ tìm thấy một cái gì đó hữu ích ở đó, mặc dù theo tôi nó là rất xa so với một giá trị tốt cho tiền. Với $ 15, có thể. Tôi thấy nó hơi cẩu thả ở những nơi, thúc đẩy những ý tưởng (đôi khi kỳ lạ) của tác giả thay vì sử dụng những gì được hiểu là phương pháp tốt nhất trong tài liệu.


Câu trả lời chung đẹp, Stask, nhưng nó chỉ thực sự giải quyết các giả định đằng sau câu hỏi của tôi chứ không phải câu hỏi của tôi trực tiếp. Cảm ơn bạn đã chỉ ra BIDB, nhưng tôi vẫn muốn biết liệu trình tự sai lệch thấp có hoạt động theo cách tôi mô tả hay không (đây có thể chỉ là vấn đề làm rõ xung quanh ý nghĩa của bạn bởi "các đặc tính ... là không có triệu chứng).
ness101

Một câu hỏi riêng biệt: BIDB khác với hypercubes Latin trực giao như thế nào? Có vẻ như về cơ bản là cùng một điều (mặc dù có lẽ đến từ các góc độ khác nhau). Ngoài ra, QMC là gì?
ness101
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.