Limiting the Evolution of Replicators

by Anders Sandberg

One of the recurrent ideas which crop up in discussions of nanotechnology and other self-replicating technologies is that once you have a replicating machine, it will start to evolve and get out of control ("Life will find a way"). This is actually a fallacy: unless evolution is explicitly supported in the machine it will be quite unlikely, and it is easy to design a replicator that will not evolve under any reasonable timespan.

Evolution occurs if a system fulfills three conditions:

  1. Replication - the system creates copies of itself with properties inherited from the parent system.
  2. Variation - the copies are slightly different from the parent system and each other.
  3. Selection - each individual can create more or fewer copies of itself depending on its properties.
In a replicating system condition 1 is automatically fulfilled. Condition 3 is imposed from the outside, by survival (or failure to survive) in the environment. This is clearly not entirely under human control, although genetic programming methods are based on humans devising a suitable selection function to guide evolution towards a desired goal. Condition 2 is inherent in the system, and is in many ways the easiest to regulate; this is what determines how fast evolution will occur, and if it will occur. If the copying fidelity is high, fewer mutations will occur. By combining copying fidelity with strong selection against most mutations, evolution can be prevented.

Most technological systems today are "brittle": they cannot withstand small changes and will break down (often completely) when mutated. A typical example is most computer languages, where the compiler will respond with a Syntax Error to practically all minor changes of the source code. While genetic algorithms have been discussed for a long time, it was not until a way of encoding them in a "soft" way that allowed mutations without crashing the algorithm appeared that the field started developing; today much work in artificial life community is directed towards understanding how to write softer programs. Brittle is easy and won't evolve, soft is hard.

A Simple Way to Avoid Evolution

A replicator can easily be made evolution-safe in the following way with a minimal overhead: This method makes it very improbable that a mutant will reproduce. If the probability of a one-bit mutation is p, and the check-sum function Sk(P) (where P is the program) detects all changes within Hamming distance H, then the probability of a mutation escaping detection of checksum k is less than pH. If there are n different checksums, then the probability of an undetected mutation is pnH.

If p=1/10, H=10 and n=10, the probability of a mutant surviving is less than 10-100, which means that if there was a replicator for every atom in the visible universe, just one of them would be a mutant.

Note that this scheme is immune to mutations that disable one checksum, all n have to be disabled together in order to make a mutant possible. There can be no build-up of mutations leading to this since even single-bit mutations are fatal.

This scheme demonstrates that it is trivial to make a replicator non-evolving over any reasonable timespan with a relatively small overhead. The checksum methof can be validated and analyzed with relative ease, as opposed to more complex control systems.


Self-replicating systems are the most powerful systems in the known universe. They are able to grow exponentially and to transform their environments completely. This makes them extremely useful and dangerous, and suggests the need to keep control over how they are used (whether done through central authorities or distributed competition is irrelevant). But it is clearly a fallacy to think that any replicator will immediately start to evolve on its own.


Up to the Complexity Page

Up to the Transhuman Page

Anders Main Page

Anders Sandberg / asa@nada.kth.se