DMUG-Archiv 2010

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: (Verständnis?) Problem mit Gewichten bei Zellularen Automaten

Hallo Michael,

in der Hilfe steht geschrieben:

CellularAutomaton[{n,k},\[Ellipsis]] is equivalent to CellularAutomaton[{n,{k,{k^2,k,1}}},\[Ellipsis]].

mit Begründung aus ref/tutorial:
--
For a general cellular automaton rule, each digit of the rule number specifies what color a different possible neighborhood of 2r+1 cells should yield. To find out which digit corresponds to which neighborhood, one effectively treats the cells in a neighborhood as digits in a number. For an r=1 cellular automaton, the number is obtained from the list of elements neig in the neighborhood by neig.{k^2,k,1}.
--

Mit anderen Worten, eine Nachbarschaft (Vorgängerreihe) {1, 1, 1}
hat bei 2 Farben und Range 1 die Position {1, 1, 1}.{4, 2, 1} = 7 im Nummerierungsschema, eine Nachbarschaft {1, 0, 1} hat die Position {1, 0, 1}.{4, 2, 1} = 5 im Nummerierungsschema der zellularen Automaten. Und Rule 128 = 2^7 = 1*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^0 ist diejenige, die bei zwei Farben und Range 1 der Nachbarschaft 7 = {1, 1, 1} die Farbe 1 und allen anderen Nachbarschaften die Farbe 0 zuweist.

Also, mit Gewichten {1, 1, 1} nummerieren Sie bei zwei Farben und Range 1

{1, 1, 1}.{1, 1, 1} = 3
{1, 1, 0}.{1, 1, 1} = 2
{1, 0, 1}.{1, 1, 1} = 2
{1, 0, 0}.{1, 1, 1} = 1
{0, 1, 1}.{1, 1, 1} = 2
{0, 1, 0}.{1, 1, 1} = 1
{0, 0, 1}.{1, 1, 1} = 1
{0, 0, 0}.{1, 1, 1} = 0

nur 4 Nachbarschaften und deshalb sind mit diesen Gewichten die Regeln 0 bis einschliesslich 15 = 2^4 - 1 adressierbar. Oder mit wiederum anderen Worten

In[103]:= Clear[gamerCAWCount]
gamerCAWCount[k_Integer?NonNegative (* Anzahl Farben *),
  r_Integer?NonNegative (* Range *),
  w_List (* weights *) ] :=
 k^Length[Union[Tuples[Range[k] - 1, 2 r + 1] . w]] - 1 /;
  VectorQ[w, NonNegative] && Length[w] == 2 r + 1

In[105]:= gamerCAWCount[2, 1, {4, 2, 1}]
Out[105]= 255

In[108]:= gamerCAWCount[2, 1, {1, 1, 1}]
Out[108]= 15

In[109]:= gamerCAWCount[3, 1, {1, 1, 1}]
Out[109]= 2186

In[111]:= gamerCAWCount[2, 2, {1, 1, 1, 1, 1}]
Out[111]= 63

Gruss
Udo.

-------------
ArrayPlot[CellularAutomaton[{30,
   {2,
    {4, 2, 1}}}, (* hier die Gewichte  der Nachbarzellen *)
  {{0, 0, 0, 1, 0, 0}, 0}, 50]]
-------------
Dies ergibt identischem Output wie die oben angegebene Anweisung.
Frage: Wieso stehen hier die Gewichte {4,2,1}. Ich würde erwarten, daß bei Gewichten {1,1,1} derselbe Output wie oben erzeugt wird. Tut er aber nicht, stattdessen gibt es eine Fehlermeldung:

-------------
CellularAutomaton::"rsize" : ""The specified rule number "\30" is greater
than the largest possible rule number ("15")."
-------------



Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html