A typical corewars evolver has a population of
probably not more than a hundred, often many less, and
results are expected after just a few hundred rounds.
Now my off-the-cuff thought is that this is way
smaller and way faster than real biological systems.
I am guessing the complexity of the average corewar/
coreworld program is also considerably lower than even
the simpliest virus.
How large are the populations in coreworld would typically
be?
I was wondering what kind of population size, warrior
complexity, and time scale would you need to more
accurately match real-world evolution?
~ 2 ^ n unit volumes (femtoliters = a cube of water one micron on each
side)
~ 2 ^ m qubits per unit volume (each qubit is associated with one line
of coreworld redcode)
~ 2 ^ t elementary operations per unit of time (a day, during which new
patterns arise during fluctuations and brownian motion occurs)
~2 ^ s "space-time crystals" (the world is deterministic, the term is
by Toffoli [2])
With these parameters a real biosphere might be simulated by:
n = 110 (a torus of water wrapped around the "earth" 220 000km x 1000km
x 1 km where the real earth oceans are 80000km x 4000km x 4km or so).
m = 10 (1024 qubits, a femto liter has billions of water molecules and
could disolve quite a bit of "dry mass"; also "happens" to imply a
coresize of 8192 but coresize can fluctuate away from this value)
t = 16 (65536 cycles per day, on average; this is incomparable and
obviously far smaller than "actual" elementary operations of real
molecular systems but redcode is possible quite a bit more expressive.
eg it's easy to do a lot of "replication" in 65536 cycles - given that
every >0 privilege location executes in parallel every 1 of 4 cycles
and 3 of 4 if they expend some privilege during execution. Variation
in this parameter is roughly equivilent to temperature.)
s = 1024 (2^1024 space time crystals implies there are many, many,.
many possible coreworlds and far in excess of the other parameters
combined but still a finite number. Not every possible world occurs.)
===
Given a QVM and initial parameters (m,n,s, t) the QVM has a size "l" in
bits and produces output Sigma [Tau] at time Tau. for all Tau up to
some max Tau (say 2 ^ 40 ~ 4 billion years) (ideally, for each of the
2^1024 space-time crystals!)
The QVM implies interesting time space trade-offs. Each Sigma [Tau]
is completely specified by the initial conditions but we need expensive
real world CPU time to compute these Sigma [Tau], so, the Sigma [Tau]
are valuable in the sense that they cost real money to compute and
therefore it's better to just keep them around.
The length of each Sigma [Tau] is the most compact description of the
biosphere (at that time Tau) given minimal computational effort. (More
space, less time.)
I believe the QVM will show open-ended evolution (because of the
Quantum histories) in the sense that the length of Sigma [Tau] could
increase without bound (lots more explanation needed here).
As I build the quantum virtual machine I will be able to experimentally
explore worlds with much more modest values of m,n, s, t and
theoretically explore worlds with larger values of these parameters.
In the long run, it should be possible to use the proof techniques of
modern cryptography to prove things about our QVM and, maybe, real
evolving worlds.
I'd love questions, I know this remains incredibly confusing...
--ASW
[1] http://science.fiction.org
[2] http://www.research.ibm.com/journal/rd/481/toffoli.html
A petri dish might make a more manageable model! Does evolution happen
in a noticable way in a real petri dish?
How do you address the mating of warriors, and fact that not every
digital piece of simulation space might be occupied etc?
Roughly 2^(m+n=120)*bytes per qubit where (~64 bytes per qubit
consists of instruction field, a field, b field, privilege field, tag),
so, 2^128 bytes to simulate one "spacetime crystal" + quantum
histories. The non-locality introduced by the QIP forces operations to
be partially serialized so we can't really get full parallism. Each
of the 2^120 locations can be updated independently every cycle (t=16)
so 2^136 ops per day for (say 4 billion years).
A grand total of 2 ^176 ops on 2^128 bytes. To simulate the earth's
biosphere (in this =rough= aproximation.)
A small population of evolving bacteria over, say, 300 generations in a
few mililiters of water would provide a proportionally easier
simulation task (and something actually done in this lab) but there are
not so many "evolutionary" events in such an experiment.
Definitely there is hope that a quantum coreworld after say, only,
2^10 ops on 2^8 bytes could show interesting evolution.
The details of how new motifs (warriors) enter the world during a
simulation are a little tricky to explain without some more pictures.
I took a few hints from Joonas and Fizmo when we met in Berlin. And
also from Barkley. Basiclly a Coreworld is one big toroidal tank of
water (with individual sub-regions farmed out to different processors
but interaction between the sub-regions occurs during fluctuations when
new motifs enter the world) As for sub-regions that are empty these
"complete" faster so if we have a few hundred processors but a few
thousand sub-regions then the empty sub-regions can be computed very
fast.
The simulations let us investigate particular spacetime crystals under
different parameters. The goal is to make generalizations--by
mathetmatical proof-- about how variations in these parameters will
affect evolutionary outcomes.
Am I making some sense?
Thanks again for asking!
--ASW
Should have read:
2^40 ops on 2^30 bytes could show interesting evolution.