数学自动机规则功能在mathematica / notebook源,模式,替代品中

时间:2011-01-10 01:32:44

标签: wolfram-mathematica

我是从Cellular Automata Mathematica文件中找到的,什么是模式和替代品?

在这段代码中,Pattern意味着什么:

CellularAutomaton[{ { 0, Blank[], 3} -> 0, 
                        { Blank[], 2, 3} -> 3, 
                        { 1, 1, 3 }      -> 4, 
                        { Blank[], 1, 4} -> 4, 
                        { Alternatives[1, 2] << 1 or 2 >>, 3, Blank[]} -> 5, 
                        { Pattern[$CellContext`p, Alternatives[0, 1]], 4, Blank[]} -> 7 - $CellContext`p, 
                        { 7, 2, 6} -> 3, 
                        { 7, Blank[], Blank[]} -> 7,  
                        { Blank[], 7, Pattern[$CellContext`p, Alternatives[1, 2]]} -> $CellContext`p, 
                        { Blank[], Pattern[$CellContext`p, Alternatives[5, 6]], Blank[]} -> 7 - $CellContext`p, 
                        { Alternatives[5, 6], Pattern[$CellContext`p, Alternatives[1, 2]], Blank[]} -> 7 - $CellContext`p, 
                        { Alternatives[5, 6], 0, 0} -> 1, 
                        { Blank[], Pattern[$CellContext`p, Alternatives[1, 2]], Blank[]} -> $CellContext`p, 
                        { Blank[],  Blank[], Blank[]} -> 0}, {

1 个答案:

答案 0 :(得分:2)

您正在明确定义Cellular Automaton。

每行定义一个进化规则。

您可以找到相关信息here

阅读代码的一些提示:

Blank[] is the blank pattern "_" that matches any expression  

Pattern[] is Mathematica construct for pattern matching  

Alternatives[a,b,c] is the full form for a | b| c ... any of "a, b or c"  

Pattern[p, Alternatives[a, b]] names as p the matched expr (a or b)  

修改

因此,作为一个例子,以下自动机是等价的:

CellularAutomaton[{
   {1, 0} -> 1,
   {1, 1} -> 0,
   {0, 1} -> 1,
   {0, 0} -> 1},
  {0, 1, 0}, 10]  

CellularAutomaton[{
   {1, Pattern[t, Alternatives[1, 0]]} -> Abs[1 - t],
   {0, 1} -> 1,
   {0, 0} -> 1
   }, {0, 1, 0}, 10]  

注意:该示例仅供您简化对所发布代码的理解。有更好的方法来定义这个自动机。