I played around with fuzzy logics and noticed, how they could be applied on cellular automata. Now I wonder wether fuzzy starting conditions would give boring results of uncertainity or if the usual patterns still show up.
To translate generic boolean logics into probabilty-based fuzzy ones, I *think*, you gotta take the boolean truth table and translate it as follows:
x is the probabilty of a boolean operation to return 1.
1-x is the probability of a boolean operation to not return 1, e.g. to return not 1 which happens to be 0.
so if you have the truth-table of and, for instance:
x y | and
0 0 | 0 =>
(1-x)(1-y)0 1 | 0 =>
(1-x)y1 0 | 0 =>
x(1-y)1 1 | 1 =>
xythe probabilty, that and returns 0 would be
(1-x)(1-y)+
(1-x)*y+
x*(1-y)=
1-xythe more important probability, that and returns 1 simply is
x*yIf you compare those results, you can immediately see, that the results are negations of each other.
the list of all possible two-variable operations of probabilities of boolean variables are:
0(x,y) = 0
NOr(x,y) = (1-x)(1-y)
NotYImpliesX(x,y) = (1-x)y
NotX(x,y) = 1-x
NotXImpliesY(x,y) = x(1-y)
NotY(x,y) = 1-y
XOr(x,y) = x+y-2xy
NAnd(x,y) = 1-xy
And(x,y) = xy
Equivalent(x,y) = 1-x-y+2xy
Y(x,y) = y
XImpliesY(x,y) = 1-y+xy
X(x,y) = x
YImpliesX(x,y) = 1-x+xy
Or(x,y) = x+y-xy
1(x,y) = 1
Obviously, some of those are trivial but this contains all possible 2 variable booleans.
Here is a full plot-list for x,y from 0 to 1, which obviously is the important field of solutions, as probabilities beyond 0 or 1 aren't quite a definied case...
http://www.wolframalpha.com/input/?i=plot+0%2C+%281-x%29%281-y%29%2C+%281-x%29*y%2C+1-x%2C+x*%281-y%29%2C+1-y%2C+x%2By-2*x*y%2C1-x*y%2Cx*y%2C1-x-y%2B2*x*y%2Cy%2C1-y%2Bx*y%2Cx%2C1-x%2Bx*y%2Cx%2By-x*y%2C1%2Cx%3D0...1%2Cy%3D0...1Now the list of 3-variable Booleans contains 256 possible operations, most of which are unnamed and many of which are trivial copies of the 1- and 2-variable case.
However, it shouldn't be too hard to translate a three-to-one-CA into a probability-based approach...
00011110, rule 30, would be
x y z | 30
0 0 0 | 0
0 0 1 | 1 => (1-x)(1-y)z
0 1 0 | 1 => (1-x)y(1-z)
0 1 1 | 1 => (1-x)yz
1 0 0 | 1 => x(1-y)(1-z)
1 0 1 | 0
1 1 0 | 0
1 1 1 | 0
_____ _______________ (Summing it up)
2xyz-2xy-2xz+x-yz+y+z
=
(2x-1)(y-1)z-2xy+x+y, (simplifying)
which returns 0 or 1 correctly for "pure probabilities", e.g. 0/1 Input and else gives the probability of returning 1 as above.
Now I wonder, wether this ends in an uninteresting behaviour or gives a continuous version of the nice odd pattern rule 30 usually results in.