Puncte:1

Lungimea minimă a ciclului pentru automatul Rule 30 cu comutare de biți

drapel br

A regula 30 automatul celular produce rezultate haotice dintr-o regulă foarte simplă și, prin urmare, poate fi folosit ca un generator pseudo-aleatoriu (dar nu unul sigur criptografic).

Una dintre probleme este că există „găuri negre”, de exemplu, vectorul constant de 0 biți este mapat cu el însuși, iar vectorul constant 1 este mapat la constanta 0.

Acest lucru poate fi reparat folosind o comutare simplă (prin XOR) a bitului 0 (bitul din dreapta); acest este o implementare simplă în C.

Întrebare. „Regula 30 cu comutare de biți” are durata minimă a ciclului de? ${\cal O}(2^n)$ Unde $n$ este lungimea vectorilor de biți?

poncho avatar
drapel my
Pentru $n=32$, am găsit un ciclu de lungime 6923; Nu stiu daca este cel mai mic posibil...
Dominic van der Zypen avatar
drapel br
Mulțumesc pentru acest mod concis de a-l descrie @fgrieu ! Doar un lucru mic, cred că trebuie să schimbați $\lll$ și $\ggg$, deoarece regula descrisă în [Wikipedia](https://en.wikipedia.org/wiki/Rule_30) este „left_cell XOR (central_cell) SAU right_cell)", și veți obține celula din stânga „aliniată deasupra” celulei centrale (de origine) printr-o deplasare / rotație **dreapta**, dacă nu mă înșel, și invers. Deci poate este $$u_{n+1} := \big((u_n \ggg 1) \oplus (u_n \lor (u_n \lll 1))\big) \; \oplus c$$ - dar cred că, pentru considerente de lungime a perioadei, nu face o diferență.
Dominic van der Zypen avatar
drapel br
Mulțumesc @poncho - presupun că cele mai mici cicluri sunt prea mici...
ThomasM avatar
drapel sk
Nu este un răspuns la întrebare, dar ați putea asigura o lungime mare a ciclului prin XORing cu un contor: $$u_{j+1}= (u_j \ggg 1) \oplus (u_j \vee (u_j \lll 1)) \oplus j$$
Dominic van der Zypen avatar
drapel br
Punct bun @ThomasM -> Într-adevăr, am încercat un lucru similar: la fiecare pas, un bit este inversat într-o poziție diferită, foarte asemănătoare cu ceea ce propuneți! Formula pentru aceasta ar fi $$u_{j+1} = u_j \oplus (1 \lll j).$$ [This](https://github.com/dominiczypen/Bit_inverse_feedback_shift_register/blob/main/bfsr.c ) este o implementare simplă. Într-adevăr, perioadele sunt destul de lungi, posibil ${\cal O}(2^n)$.
Puncte:1
drapel ng

Cu convenția din implementare de referință, recurența este $$u_{j+1}:=c\oplus(u_j\lll1)\oplus(u_j\vee(u_j\ggg1))$$ Unde $c$ este $n$-bit constant cu toți biții la $0$ cu excepția celui din dreapta (altfel spus $c=0^{n-1}\mathbin\|1$ ), $\oplus$ este XOR pe biți, $\vee$ este pe biți SAU, $\lll$ și $\ggg$ sunt rotații la stânga și la dreapta ale $n$-bit bistring înaintea operatorului cu numărul de biți de după.

Dacă inversăm direcția deplasărilor, aceasta oglindește pur și simplu maparea de biți (circulară), deci nu schimbă structura ciclului.


„Regula 30 cu comutare de biți” are durata minimă a ciclului de? ${\cal O}(2^n)$ Unde $n$ este lungimea vectorilor de biți?

Nu, deoarece pentru impar $n$ există un ciclu minim de lungime unu. Acest punct fix are o expresie binară o alternanță de $\frac{n+1}2\ 1$ și $\frac{n-1}2\ 0$ (în hexadecimal: 55â¦55 pentru $n\bmod 4=3$ sau 15â¦55 pentru $n\bmod 4=1$). În cele ce urmează ne limităm astfel la par $n$.

Explorând mic $n$ nu prezintă nicio dovadă în legătură cu afirmația: lungimea minimă a ciclului este adesea $3$, și nu pare să explodeze vertiginos.

 n lungime început
 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

Pentru o funcție aleatorie, dimensiunea așteptată a ciclului pornind de la un punct aleator este aproape de $\sqrt{\pi2^n/8}=\mathcal O(2^{n/2})$; vezi Flajolet&Odlyzko's Statistici de cartografiere aleatoare. Cel mai mic ciclu este de obicei mult mai mic (deși nu știu distribuția așteptată). Astfel, lungimea ciclului revendicată ar fi oarecum o surpriză.

Pe de altă parte, funcția are difuzie foarte lentă, deci este foarte departe de o funcție aleatorie.

Iată un grafic pentru $n=14$. Graficul pentru n=14

poncho avatar
drapel my
„Astfel, lungimea ciclului revendicată ar fi oarecum o surpriză.”; este că am găsit un ciclu de lungime 6923? Ei bine, acesta este cel mai mic ciclu pe care l-am văzut; Am văzut și cicluri de lungimi 166839, 223545, 423038 și 1143461. Amintiți-vă, $\mathcal{O}(2^{n/2})$ este pentru un ciclu dintr-un punct aleatoriu; cel mai mic ciclu poate fi considerabil mai mic.
Dominic van der Zypen avatar
drapel br
Frumos răspuns, mulțumesc pentru efort, fgrieu!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.