Điểm:1

Độ dài chu kỳ tối thiểu cho máy tự động theo Quy tắc 30 với chuyển đổi bit

lá cờ br

Một quy tắc 30 máy tự động di động tạo ra đầu ra hỗn loạn từ một quy tắc rất đơn giản và do đó có thể được sử dụng như một bộ tạo giả ngẫu nhiên (nhưng không phải một mật mã an toàn).

Một trong những vấn đề là có "lỗ đen", ví dụ, vectơ bit 0 không đổi được ánh xạ tới chính nó và vectơ 1 không đổi được ánh xạ tới hằng số 0.

Điều này có thể được sửa chữa bằng cách sử dụng một chuyển đổi đơn giản (thông qua XOR) của bit 0 (bit ngoài cùng bên phải); cái này là một thực hiện đơn giản trong C.

Câu hỏi. "Quy tắc 30 với chuyển đổi bit" có độ dài chu kỳ tối thiểu là ${\cal O}(2^n)$ ở đâu $n$ là độ dài của các vectơ bit?

poncho avatar
lá cờ my
Với $n=32$, tôi tìm thấy một chu kỳ có độ dài 6923; Tôi không biết nếu nó là nhỏ nhất có thể ...
Dominic van der Zypen avatar
lá cờ br
Cảm ơn vì cách mô tả ngắn gọn này @fgrieu! Chỉ một điều nhỏ thôi, tôi nghĩ người ta phải hoán đổi $\lll$ và $\ggg$, như quy tắc được mô tả trong [Wikipedia](https://en.wikipedia.org/wiki/Rule_30) là "left_cell XOR (Central_cell HOẶC ô bên phải)" và bạn nhận được ô bên trái "được căn chỉnh phía trên" ô ở giữa (gốc) thông qua dịch chuyển/xoay vòng **phải**, nếu tôi không nhầm và ngược lại. Vậy có thể là $$u_{n+1} := \big((u_n \ggg 1) \oplus (u_n \lor (u_n \lll 1))\big) \; \oplus c$$ - nhưng tôi đoán, khi xem xét về độ dài của khoảng thời gian, nó không tạo ra sự khác biệt.
Dominic van der Zypen avatar
lá cờ br
Cảm ơn @poncho - Tôi cho rằng điều đó làm cho chu kỳ nhỏ nhất trở nên quá nhỏ...
ThomasM avatar
lá cờ sk
Không phải là câu trả lời cho câu hỏi, nhưng bạn có thể đảm bảo độ dài chu kỳ cao bằng cách XORing với bộ đếm:$$u_{j+1}= (u_j \ggg 1) \oplus (u_j \vee (u_j \lll 1)) \oplus j$$
Dominic van der Zypen avatar
lá cờ br
Điểm hay @ThomasM -> Tôi thực sự đã thử một điều tương tự: ở mỗi bước, một bit bị đảo ngược ở một vị trí khác, rất giống với những gì bạn đề xuất! Công thức cho điều này sẽ là $$u_{j+1} = u_j \oplus (1 \lll j).$$ [This](https://github.com/dominiczypen/Bit_inverse_feedback_shift_register/blob/main/bfsr.c ) là một thực hiện đơn giản. Thật vậy, các khoảng thời gian khá dài, có thể là ${\cal O}(2^n)$.
Điểm:1
lá cờ ng

Với quy ước trong Thực hiện tham khảo, sự lặp lại là $$u_{j+1}:=c\oplus(u_j\lll1)\oplus(u_j\vee(u_j\ggg1))$$ ở đâu $c$$n$-bit không đổi với tất cả các bit tại $0$ ngoại trừ ngoài cùng bên phải (nói cách khác $c=0^{n-1}\mathbin\|1$ ), $\oplus$ là XOR theo bit, $\vee$ theo chiều bit HOẶC, $\lll$$\ggg$ là phép quay trái và phải của $n$-bit bistring trước toán tử bằng số bit sau.

Nếu chúng ta hoàn nguyên hướng dịch chuyển, điều đó chỉ phản ánh ánh xạ bit (tròn), do đó không thay đổi cấu trúc chu trình.


"Quy tắc 30 với chuyển đổi bit" có độ dài chu kỳ tối thiểu là ${\cal O}(2^n)$ ở đâu $n$ là độ dài của các vectơ bit?

Không, vì lẻ $n$ có một chu kỳ tối thiểu có độ dài một. Điểm cố định đó có biểu thức nhị phân xen kẽ $\frac{n+1}2\ 1$$\frac{n-1}2\ 0$ (trong hệ thập lục phân: 55â¦55$n\bmod 4=3$ hoặc 15â¦55$n\bmod 4=1$). Do đó, trong phần sau đây, chúng tôi giới hạn ở mức thậm chí $n$.

khám phá nhỏ $n$ cho thấy không có bằng chứng đối với tuyên bố: độ dài chu kỳ tối thiểu thường là $3$, và dường như không tăng vọt.

 n chiều dài bắt đầu
 2 2 0x0
 4 5 0x1
 6 3 0x03
 8 6 0x14
10 3 0x07C
12 5 0x42F
14 7 0x035D
16 33 0x2D34
18 3 0x03E43
20 27 0x00A28
22 3 0x07C87C
24 4 0x102040
26 14 0x0ABB343
28 5 0x2D1E5A3
30 3 0x03E43E43
32 7 0x1B3AFA05
34 3 0x07C87C87C
36 13 0x0217F5A73

Đối với một chức năng ngẫu nhiên, kích thước dự kiến ​​của chu kỳ bắt đầu từ một điểm ngẫu nhiên gần bằng $\sqrt{\pi2^n/8}=\mathcal O(2^{n/2})$; xem Flajolet&Odlyzko's Thống kê ánh xạ ngẫu nhiên. Chu kỳ nhỏ nhất thường nhỏ hơn nhiều (mặc dù tôi không biết phân phối dự kiến). Do đó, độ dài chu kỳ được tuyên bố sẽ hơi bất ngờ.

Mặt khác, hàm này có độ khuếch tán rất chậm, do đó khác xa với hàm ngẫu nhiên.

Đây là một biểu đồ cho $n=14$. Vẽ đồ thị cho n=14

poncho avatar
lá cờ my
"Do đó, độ dài chu kỳ được tuyên bố sẽ hơi bất ngờ."; đó có phải là phát hiện của tôi về một chu kỳ có độ dài 6923 không? Chà, đó là chu kỳ nhỏ nhất mà tôi thấy; Tôi cũng thấy các chu kỳ có độ dài 166839, 223545, 423038 và 1143461. Hãy nhớ rằng, $\mathcal{O}(2^{n/2})$ dành cho một chu kỳ từ một điểm ngẫu nhiên; chu kỳ nhỏ nhất có thể nhỏ hơn đáng kể.
Dominic van der Zypen avatar
lá cờ br
Câu trả lời hay, cảm ơn vì nỗ lực của bạn, fgrieu!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.