FIVE -BIT CODING IN ELEMENTARY CELLULAR AUTOMATA

(Four shades of zero, decomposition method)

Google translate article in English

Ссылка для ознакомления с элементарными клеточными автоматами, и с правилом 30 Стивена Вольфрама в частности. http://mathworld.wolfram.com/ElementaryCellularAutomaton.html

Правило 30 определяет следующее состояние клетки таким образом:

\\Pari/GP code:
{M=matrix(15,31);
M[1,16]=1;
for(i=2,15, for(j=2, 30, if(M[i-1,j-1]==1&&M[i-1,j]==1&&M[i-1,j+1]==1, M[i,j]=0);
if(M[i-1,j-1]==1&&M[i-1,j]==1&&M[i-1,j+1]==0, M[i,j]=0);
if(M[i-1,j-1]==1&&M[i-1,j]==0&&M[i-1,j+1]==1, M[i,j]=0);
if(M[i-1,j-1]==1&&M[i-1,j]==0&&M[i-1,j+1]==0, M[i,j]=1);
if(M[i-1,j-1]==0&&M[i-1,j]==1&&M[i-1,j+1]==1, M[i,j]=1);
if(M[i-1,j-1]==0&&M[i-1,j]==1&&M[i-1,j+1]==0, M[i,j]=1);
if(M[i-1,j-1]==0&&M[i-1,j]==0&&M[i-1,j+1]==1, M[i,j]=1);
if(M[i-1,j-1]==0&&M[i-1,j]==0&&M[i-1,j+1]==0, M[i,j]=0) ));
}

Добавим к правилу 30 следующие значения:

0={0, 5, 6, 7} ; 1={1, 2, 3, 4}

0={0, 5, 6, 7} ; 1={1, 2, 3, 4}

Вместо 0 и 1 в следующем шаге будем записывать десятичное значение трех соседних клеток. Получим такую картину:

{N=matrix(15,31);
N[1,16]=1;
for(i=2,15, for(j=2, 30, if(M[i-1,j-1]==1&&M[i-1,j]==1&&M[i-1,j+1]==1, N[i,j]=7);
if(M[i-1,j-1]==1&&M[i-1,j]==1&&M[i-1,j+1]==0, N[i,j]=6);
if(M[i-1,j-1]==1&&M[i-1,j]==0&&M[i-1,j+1]==1, N[i,j]=5);
if(M[i-1,j-1]==1&&M[i-1,j]==0&&M[i-1,j+1]==0, N[i,j]=4);
if(M[i-1,j-1]==0&&M[i-1,j]==1&&M[i-1,j+1]==1, N[i,j]=3);
if(M[i-1,j-1]==0&&M[i-1,j]==1&&M[i-1,j+1]==0, N[i,j]=2);
if(M[i-1,j-1]==0&&M[i-1,j]==0&&M[i-1,j+1]==1, N[i,j]=1);
if(M[i-1,j-1]==0&&M[i-1,j]==0&&M[i-1,j+1]==0, N[i,j]=0) ));
}

Начало последовательности центральной вертикальной колонны : {1, 2, 7, 4, 3, 2, 7, 0, 4, 3, 6, 5, 5, 1, 7, 4, 2, 6, ….. }

С новыми значениями мы имеем 8^3=512 состояний клетки для следующего шага, но реальные из них только 2^5=32 , так как для последующего состояния трех последовательных ячеек нужно учитывать пять последовательных ячеек нынешнего состояния :

252 - possible for N[i, j] ; N[i, j+1]; N[i, j+2] :
      i         j
      23       1012
      24       1014
      29       996
      30       1012
      30       1023
      32       1020
      ...       ...

222 - impossible.

32 возможных состояния трех соседних клеток :

0) 000      8) 240    16) 400    24) 640
1) 001      9) 241    17) 401    25) 641
2) 012     10) 252    18) 412    26) 652
3) 013     11) 253    19) 413    27) 653
4) 124     12) 364    20) 524    28) 764
5) 125     13) 365    21) 525    29) 765
6) 136     14) 376    22) 536    30) 776
7) 137     15) 377    23) 537    31) 777
{L=matrix(15,31);
L[1,16]=1;
for(i=2,15, for(j=2, 30, 
if(N[i-1,j-1]==0&&N[i-1,j]==0&&N[i-1,j+1]==0, L[i,j]=0);
if(N[i-1,j-1]==0&&N[i-1,j]==0&&N[i-1,j+1]==1, L[i,j]=1);
if(N[i-1,j-1]==0&&N[i-1,j]==1&&N[i-1,j+1]==2, L[i,j]=2);
if(N[i-1,j-1]==0&&N[i-1,j]==1&&N[i-1,j+1]==3, L[i,j]=3);
if(N[i-1,j-1]==1&&N[i-1,j]==2&&N[i-1,j+1]==4, L[i,j]=4);
if(N[i-1,j-1]==1&&N[i-1,j]==2&&N[i-1,j+1]==5, L[i,j]=5);
if(N[i-1,j-1]==1&&N[i-1,j]==3&&N[i-1,j+1]==6, L[i,j]=6);
if(N[i-1,j-1]==1&&N[i-1,j]==3&&N[i-1,j+1]==7, L[i,j]=7); 
if(N[i-1,j-1]==2&&N[i-1,j]==4&&N[i-1,j+1]==0, L[i,j]=8);
if(N[i-1,j-1]==2&&N[i-1,j]==4&&N[i-1,j+1]==1, L[i,j]=9);
if(N[i-1,j-1]==2&&N[i-1,j]==5&&N[i-1,j+1]==2, L[i,j]=10);
if(N[i-1,j-1]==2&&N[i-1,j]==5&&N[i-1,j+1]==3, L[i,j]=11);
if(N[i-1,j-1]==3&&N[i-1,j]==6&&N[i-1,j+1]==4, L[i,j]=12);
if(N[i-1,j-1]==3&&N[i-1,j]==6&&N[i-1,j+1]==5, L[i,j]=13);
if(N[i-1,j-1]==3&&N[i-1,j]==7&&N[i-1,j+1]==6, L[i,j]=14);
if(N[i-1,j-1]==3&&N[i-1,j]==7&&N[i-1,j+1]==7, L[i,j]=15);
if(N[i-1,j-1]==4&&N[i-1,j]==0&&N[i-1,j+1]==0, L[i,j]=16);
if(N[i-1,j-1]==4&&N[i-1,j]==0&&N[i-1,j+1]==1, L[i,j]=17);
if(N[i-1,j-1]==4&&N[i-1,j]==1&&N[i-1,j+1]==2, L[i,j]=18);
if(N[i-1,j-1]==4&&N[i-1,j]==1&&N[i-1,j+1]==3, L[i,j]=19);
if(N[i-1,j-1]==5&&N[i-1,j]==2&&N[i-1,j+1]==4, L[i,j]=20);
if(N[i-1,j-1]==5&&N[i-1,j]==2&&N[i-1,j+1]==5, L[i,j]=21);
if(N[i-1,j-1]==5&&N[i-1,j]==3&&N[i-1,j+1]==6, L[i,j]=22);
if(N[i-1,j-1]==5&&N[i-1,j]==3&&N[i-1,j+1]==7, L[i,j]=23);
if(N[i-1,j-1]==6&&N[i-1,j]==4&&N[i-1,j+1]==0, L[i,j]=24);
if(N[i-1,j-1]==6&&N[i-1,j]==4&&N[i-1,j+1]==1, L[i,j]=25);
if(N[i-1,j-1]==6&&N[i-1,j]==5&&N[i-1,j+1]==2, L[i,j]=26);
if(N[i-1,j-1]==6&&N[i-1,j]==5&&N[i-1,j+1]==3, L[i,j]=27);
if(N[i-1,j-1]==7&&N[i-1,j]==6&&N[i-1,j+1]==4, L[i,j]=28);
if(N[i-1,j-1]==7&&N[i-1,j]==6&&N[i-1,j+1]==5, L[i,j]=29);
if(N[i-1,j-1]==7&&N[i-1,j]==7&&N[i-1,j+1]==6, L[i,j]=30);
if(N[i-1,j-1]==7&&N[i-1,j]==7&&N[i-1,j+1]==7, L[i,j]=31)));
}

Начало последовательности центральной вертикальной колонны : { 1, 0, 4, 14, 25, 23, 4, 30, 16, 25, 7, 12, 11, 26, 19, 14, 24, 5, 29, 1, 1, 9, 30, 1, 3, 22, 4, 15, 8, 28, 3, 22, 5, 29, … }

Этот метод декомпозиции элементарных клеточных автоматов может быть использован для генерации псевдослучайных натуральных чисел со значениями от нуля до тридцати одного, также для исследования и анализа элементарных клеточных автоматов.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Design a site like this with WordPress.com
Get started