Search NKS | Online
141 - 150 of 681 for Novo Curso De Direito Civil - Vol. 1 - Parte Geral - 26ª EdGagliano, Pablo StolzeSaraiva Jur
Implementation [of causal networks]
Given a list of successive positions of the active cell, as from Map[Last, MAEvolveList[rule, init, t]] (see page 887 ), the network can be generated using
MAToNet[list_] := Module[{u, j, k}, u[_] = ∞ ; Reverse[ Table[j = list 〚 i 〛 ; k = {u[j - 1], u[j], u[j + 1]}; u[j - 1] = u[j] = u[j + 1] = i; i k, {i, Length[list], 1, -1}]]]
where nodes not yet found by explicit evolution are indicated by ∞ .
The number of black cells on row t is given by 2^DigitCount[t, 2, 1] , where DigitCount[t, 2, 1] is plotted on page 902 . The positions of the black cells are given by (and this establishes the connection with the picture on page 117 )
Fold[Flatten[{#1 - #2, #1 + #2}] &, {0}, 2^DigitPositions[t]]
DigitPositions[n_] := Flatten[Position[Reverse[IntegerDigits[n, 2]], 1]] - 1
The actual pattern generated by rule 90 corresponds to the coefficients in PolynomialMod[Expand[(1/x + x) t ], 2] (see page 1091 ); the color of a particular cell is thus given by Mod[Binomial[t, (n + t)/2], 2] /; EvenQ[n + t] .
… In this pattern, the color of a particular cell can be obtained directly from the digit sequences for t and n by 1 - Sign[BitAnd[-t, n]] or (see page 583 )
With[{d = Ceiling[Log[2, Max[t, n] + 1]]}, If[FreeQ[ IntegerDigits[t, 2, d] - IntegerDigits[n, 2, d], -1], 1, 0]]
Universal cellular automaton
The rules for the universal cellular automaton are
{{_, 3, 7, 18, _} 12, {_, 5, 7 | 8, 0, _} 12, {_, 3, 10, 18, _} 16, {_, 5, 10 | 11, 0, _} 16, {_, 5, 8, 18, _} 7, {_, 5, 14, 0 | 18, _} 12, {_, _, 8, 5, _} 7, {_, _, 14, 5, _} 12, {_, 5, 11, 18, _} 10, {_, 5, 17, 0 | 18, _} 16, {_, _, x : (11 | 17), 5, _} x - 1, {_, 0 | 9 | 18, x : (7 | 10 | 16), 3, _} x + 1, {_, 0 | 9 | 18, 12, 3, _} 14, {_, _, 0 | 9 | 18, 7 | 10 | 12 | 16, x : (3 | 5)} 8 - x, {_, _, _, 8 | 11 | 14 | 17, x : (3 | 5)} 8 - x, {_, 13, 4, _, x : (0 | 18)} x, {18, _, 4, _, _} 18, {_, _, 18, _, 4} 18, {0, _,4, _, _} 0, {_, _, 0, _, 4} 0, {4, _, 0 | 18, 1, _} 3, {4, _, _, _, _} 4, {_, _, 4, _, _} 9, {_, 4, 12, _, _} 7, {_, 4, 16, _, _} 10, {x : (0 | 18), _, 6, _, _} x, {_, 2, 6, 15, x : (0 | 18)} x, {_, 12 | 16, 6, 7, _} 0, {_, 12 | 16, 6, 10, _} 18, {_, 9, 10, 6, _} 16, {_, 9, 7, 6, _} 12, {9, 15, 6, 7, 9} 0, {9, 15, 6, 10, 9} 18, {9, _, 6, _, _} 9, {_, 6, 7, 9, 12 | 16} 12, {_, 6, 10, 9, 12 | 16} 16, {12 | 16, 6, 7, 9, _} 12, {12 | 16, 6, 10, 9, _} 16, {6, 13, _, _, _} 9, {6, _, _, _, _} 6, {_, _, 9, 13, 3} 9, {_, 9, 13, 3, _} 15, {_, _, _, 15, 3} 3, {_, 3, 15, 0 | 18, _} 13, {_, 13, 3, _, 0 | 18} 6, {x : (0 | 18), 15, 9, _, _} x, {_, 6, 13, _, _} 15, {_, 4, 15, _, _} 13, {_, _, _, 15, 6} 6, {_, _, 2, 6, 15} 1, {_, _, 1, 6, _} 2, {_, 1, 6, _, _} 9, {_, 3, 2, _, _} 1, {3, 2, _, _, _} 3, {_, _, 3, 2, _} 3, {_, 1, 9, 1, 6} 6, {_, _, 9, 1, 6} 4, {_, 4, 2, _, _} 1, {_, _, _, _, x : (3 | 5)} x, {_, _, 3 | 5, _, x : (0 | 18)} x, {_, _, x : (1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17), _, _} x, {_, _, 18, 7 | 10, 18} 18, {_, _, 0, 7 | 10, 0} 0, {_, _, 0 | 18, _, _} 9, {_, _, x_, _, _} x}
where the numbers correspond to the icons shown in the main text according to
The block in the initial conditions for the universal cellular automaton corresponding to a cell with color a is given by
Flatten[{Transpose[{Join[{4, 18(1 - a), 6}, Table[9, {2 2 r + 1 - 3}]], 10 - 3 rtab}], Table[{9, 1}, {r}], 9, 13}]
where r is the range of the rule to be emulated ( r = 1 for elementary rules) and rtab is the list of outcomes for that rule (starting with the outcome for {1, 1, (1) ...} ). In general, there are 2 2 r + 1 cases in the rule to be emulated; each block in the universal cellular automaton is 2 (2 2 r + 1 + r + 1) cells wide, and each step in the rule to be emulated corresponds to (3 r + 2) 2 2 r + 1 + 3 r 2 + 7 r + 3 steps in the evolution of the universal cellular automaton.
Lucas numbers
Lucas numbers Lucas[n] satisfy the same recurrence relation f[n_] := f[n - 1] + f[n - 2] as Fibonacci numbers, but with the initial conditions f[1] = 1 ; f[2] = 3 . Among the relations satisfied by Lucas numbers are:
• Lucas[n_] := Fibonacci[n - 1] + Fibonacci[n + 1]
• GoldenRatio n (Lucas[n] + Fibonacci[n] √ 5 )/2
The initial condition {1, 0, 1} with all cells 0 on the previous step yields a structure that repeats but only every 666 steps. The initial condition {{0, 1, 1}, {1, 0, 0}} yields a pattern that grows sporadically for 3774 steps, then breaks into two repetitive structures.
., {1, 1}, 1, ___} (in the alternative form of page 888 ). For any input x one can test whether the machine will ever halt using
u[{Reverse[IntegerDigits[x, 2]], 0}]
u[list_] := v[Split[Flatten[list]]]
v[{a_, b_: {}, c_: {}, d_: {}, e_: {}, f_: {}, g___}] := Which[a == {1} || First[a] 0, True, c {}, False, EvenQ[Length[b]], u[{a, 1 - b, c, d, e, f, g}], EvenQ[Length[c]], u[{a, 1 - b, c, 1, Rest[d], e, f, g, 0}], e {} || Length[d] ≥ Length[b] + Length[a] - 2, True, EvenQ[Length[e]], u[{a, b , c, d, f, g}], True, u[{a, 1 - b, c, 1 - d, e, 1, Rest[f], g, 0}]]
This test takes at most n/3 recursive steps, even though the original machine can take of order n 2 steps to halt.
The program for the register machine on page 99 can then be given as
{i[1], d[2, 1], i[2], d[1, 3], d[2, 1]}
where i[_] represents an increment instruction, and d[_, _] a decrement jump.
With this setup, the evolution of any register machine can be implemented using the functions (a typical initial condition is {1, {0, 0}} )
RMStep[prog_, {n_Integer, list_List}] := If[n > Length[prog], {n, list}, RMExecute[prog 〚 n 〛 , {n, list}]]
RMExecute[i[r_], {n_, list_}] := {n + 1, MapAt[(# + 1)&, list, r]}
RMExecute[d[r_, m_], {n_, list_}] := If[list 〚 r 〛 > 0, {m, MapAt[(# - 1)&, list, r]}, {n + 1, list}]
RMEvolveList[prog_, init:{_Integer, _List}, t_Integer] := NestList[RMStep[prog, #]&, init, t]
The total number of possible programs of length n using k registers is (k (1 + n)) n .
[Cellular automaton state] network properties
The number of nodes and connections at step t > 1 are: rule 108: 8 , 13 ; rule 128: 2t , 2t + 2 ; rule 132: 2t + 1 , 3t + 3 ; rule 160: (t + 1) 2 , (t + 1)(t + 3) ; rule 184: 2t , 3t + 1 . For rule 126 the first few cases are
{{1, 2}, {3, 5}, {13, 23}, {106, 196}, {2866, 5474}}
and for rule 110 they are
{{1,2}, {5, 9}, {20, 38}, {206, 403}, {1353, 2666}}
The maximum size of network that can possibly be generated after t steps of cellular automaton evolution is 2 k 2 r t - 1 . … The k = 2 , r = 2 totalistic rule with code 20 gives a network with 65535 nodes after just 1 step.
Implementation [of 2D cellular automata]
An n × n array of white squares with a single black square in the middle can be generated by
PadLeft[{{1}}, {n, n}, 0, Floor[{n, n}/2]]
For the 5-neighbor rules introduced on page 170 each step can be implemented by
CAStep[rule_, a_] := Map[rule 〚 10 - # 〛 &, ListConvolve[{{0, 2, 0}, {2, 1, 2}, {0, 2, 0}}, a, 2], {2}]
where rule is obtained from the code number by IntegerDigits[code, 2, 10] .
… In d dimensions with k colors, 5-neighbor rules generalize to (2d + 1) -neighbor rules, with
CAStep[{rule_, d_}, a_] := Map[rule 〚 -1 - # 〛 &, a + k AxesTotal[a, d], {d}]
AxesTotal[a_, d_] := Apply[Plus, Map[RotateLeft[a, #] + RotateRight[a, #]&, IdentityMatrix[d]]]
with rule given by IntegerDigits[code, k, k(2d(k - 1) + 1)] .
9-neighbor rules generalize to 3 d -neighbor rules, with
CAStep[{rule_, d_}, a_] := Map[rule 〚 -1 - # 〛 &, a + k FullTotal[a, d], {d}]
FullTotal[a_, d_] := Array[RotateLeft[a, {##}] &, Table[3, {d}], -1, Plus] - a
with rule given by IntegerDigits[code, k, k((3 d - 1)(k - 1) + 1)] .
In 3 dimensions, the positions of black cells can conveniently be displayed using
Graphics3D[Map[Cuboid[-Reverse[#]] &, Position[a, 1]]]
Rest[list]/#1) &, Apply[ ExtendedGCD, Drop[list, -1]]]}, {Mod[ α , #], #} &[ Fold[GCD[#1, If[#1 0, #2, Mod[#2, #1]]] &, 0, ListCorrelate[{ α , -1}, list]]]]
With slightly more effort both x and {a, m} can be found just from First[IntegerDigits[list, 2, p]] .