We shall show the fitness of classical reversible computing programs [bennett:1985:sciam]
(where fitness is given by Hamming distance from an ideal answer) is Normally distributed. If the score is normalised so that the maximum score (fitness) is 1 and the minimum is 0, then the mean is 0.5 and the standard deviation is. (Where is the number of input bits and is the number of output bits.)
Almost all genetic programming has used traditional computing instructions, such as add, subtract, multiple, or, and. These instruction sets are not reversible. I.e., in general, it is impossible given a program and its output, to unambiguously reconstruct the program’s input. This is because most of the primitive operations themselves are irreversible. However genetic programming can evolve reversible programs composed of reversible primitives.
A number of reversible gates have been proposed [ICALP::Toffoli1980, FreTof82] which can be connected in a linear sequence to give a reversible gate array, which we will treat as a reversible computer program. At present the driving force behind the interest in reversible computing is the hope that reversible gates can be implemented as quantum gates, leading to quantum coherent circuits and quantum computing. Reversible computing has also been proposed for safety critical applications and for low power consumption or low heat dissipation.
In the absence of counter measures, most traditional computer programs degrade information. I.e. knowledge about their inputs is progressively lost as they are executed. This means, most programs produce the same output regardless of their input [langdon:2002:foga]. Suppose a program has input bits and output bits, there are possible functions it could implement. However a long program is almost certain to implement one of the constants. That is, the fraction of functions actually implemented is tiny as the programs get longer and worse, the fraction of interesting functions tends to zero. This is due to the inherent irreversibility of traditional computing primitives.
In the next section we describe reversible computing in more detail. In reversible computing there is also a distribution of functions which programs tend to as they get longer. Instead of it being dominated by constants, every reversible function is equally likely (cf. Section 3). Convergence to this limit is tested in Section 5 on the Boolean 6 Multiplexor problem (described in Section 4). Section 5 shows convergence to the large program limit can be rapid. Despite the low density of solutions, evolutionary search is effective at finding them (Section 6). Initial results suggest, CCNOT and traditional computing primitives are similarly amenable to evolutionary search.
2 Reversible Computing Circuits
A reversible computer can be treated as an array of parallel wires leading from the inputs and constants to the outputs and garbage. In normal operation the garbage outputs are treated as rubbish and discarded by the end of the program.
Connected across the wires are reversible gates. Each gate has as many inputs as it has outputs. The gates are reversible, in the sense that it is possible to unambiguously identify their inputs given their outputs (see Figure 1). The simplest reversible gate is the identity, i.e. a direct connection from input to output. Also NOT is reversible, since given its output we know what its input must have been. Similarly a gate which swaps its inputs is also reversible (see Figure 2).
We will mainly be concerned with the
(CCNOT, Toffoli) gate.
Unless all of its control lines are true,
the CCNOT gate passes all of its inputs directly to
However if they are all set,
CCNOT inverts the controlled line.
CCNOT is complete in the sense,
given sufficient CCNOT gates and additional
constant inputs and rubbish outputs,
a reversible circuit
equivalent to any Boolean function from inputs to outputs
(excluding constants and rubbish)
can be constructed.
Since CCNOT can invert 1,
the additional inputs can all be 1.
Note a single CCNOT gate
(plus a constant zero,
e.g. provided by using another CCNOT gate to invert a one)
can implement the identify function.
In C code
data[A] = (data[C] & data[B]) ^ data[A];
While it is not necessary for the number of lines set to true, to remain constant across the circuit from left to right, a reversible computer must implement a permutation. To explain what we mean by this, consider the left hand side (of wires) as an bit number. There are up to possible left hand patterns. Similarly there are up to possible right hand patterns. The computer provides a mapping from left hand number to right hand number. For the mapping to be reversible, its range and domain must be the same size and a number can only appear once on the right hand side (range), i.e. the mapping must be a permutation. If all possible numbers are used, only of the possible mappings are reversible. For large , this means only about 1 in mappings are permutations and hence are reversible.
The computation remains reversible up until the garbage bits are discarded. It is at this point that information is lost. It is the deletion of information which means the computation must consume energy and release it as heat. By carefully controlling the deletion of these rubbish bits, it has been suggested that reversible computers will require less energy than irreversible computers. Present day circuits do not approach the lower bound on energy consumption suggested by their irreversibility. I.e. they require much more energy to operate gates, drive connecting wires, etc. than the theoretical bound on energy consumption due to information lost as they run.
However in the near term, energy consumption is interesting both for ultra-low power consumption, e.g. solar powered computing, and also because the energy released inside the computing circuit has to be removed as heat. The only way heat is removed at present is by making the centre of the circuit hotter and allowing heat to diffuse down the temperature gradient to the cooler boundaries of the circuit. (Active heat pumps within the circuit have been considered. Electronic refrigerators could be based upon the Peltier electro thermodynamic effect). Even today cooling circuits is a limiting factor on their operation. Increasing circuit clock speeds, despite continued reduction in circuit size, mean heat removal will be an increasing concern.
[Bishop97] describes a single channel reversible system for a safety critical control application. By running the system forwards and then backwards and comparing the original inputs with those returned by traversing the system twice, he demonstrated the system was able to detect test errors injected into the system during its operation. (High reliability systems often use comparison between multiple channels to detect errors.)
3 Distribution of Large Reversible Circuits
As with a complete reversible circuit, the action of a single reversible gate across wires can be treated as a permutation mapping one bit number to another. Following [langdon:fogp],[langdon:2002:crlp],[langdon:2002:foga], we can treat the sequence of permutations from the start of the circuit to its end as a sequence of state transitions. The state being the current permutation. We restrict ourselves to just those permutations which can be implemented, i.e. states that can be reached. Each gate changes the current permutation (state) to the next. We can describe the action of a gate by a square matrix of zeros and ones. Each row contains exactly one one. The position of the one indicates the permutation on the output of the gate for each permutation on the input side of the gate. (Note the matrix is row stochastic). Now each gate is reversible. I.e. given a permutation on its output side, there can only be one permutation on its input side. This means each column of the matrix also contains exactly one one. (I.e. the matrix is column as well as row stochastic, i.e. it is double stochastic). We will have multiple ways of connecting our gates or even multiple types of gate, however each matrix will be double stochastic and therefore so too will be the average matrix. Since we only consider implementable permutations, the average matrix is fully connected. If a single gate can implement the identity function, the matrix must have a non zero diagonal element. This suppresses cycling in the limit. If we choose gates at random, the sequence of permutations is also random. Since the next permutation depends only on the current permutation and the gate, the sequence of permutations is a Markov process. The Markov transition matrix is the average of each of the gate matrices, which is fully connected, acyclic and double stochastic. This means as the number of randomly chosen gates increases each of the Markov states becomes equally likely [feller:1957:ipta]. I.e. in the limit of large circuits each possible permutation is equally likely.
When there are many randomly connected gates and the total number of lines is large, not only is each possible permutation equally likely but (since our reversible gates are complete) all bit output patterns are possible. Further we will assume that we can treat each output bit as being equally likely to be on as off and almost independent of the others. If fitness is defined by running the program on every input (i.e. running it times) and summing the number of output bits that match a target ( Hamming distance) then
follows the Binomial distribution. This means most programs have a fitness near the average and the chance of finding a solution is . While small, this is finite, whereas with irreversible gates (and no write protection of inputs) almost all programs do not solve any non trivial problem [langdon:2002:foga].
We can also use the known uniform distribution to calculate the expected RMS error. Supposeof the possible fitness cases are run, the expected average squared error is . Where is the total number of permutations, is the input for the test, required answer and is the permutation of . As we can approximate the average behaviour of over cases by over cases. So the expected average squared error is . If only a few tests with small values are run (i.e. and ) then the expected root mean squared error is bounded by
On the other hand if exhaustive testing is carried out and the target values are uniformly spread in the range then and .
4 6 Multiplexor
The six multiplexor problem has often been used as a benchmark problem. Briefly the problem is to find a circuit which has two control lines (giving a total of four possible combinations) which are used to switch the output of the circuit to one of the four input lines, cf. Figure 3. The fitness of a circuit is the number () of times the actual output matches the output given by the truth table. Note fitness is given by number of bits in common between the actual truth table implemented by a program and a given truth table (Hamming distance).
5 Density of 6 Multiplexor Solutions
We measured111 In all the six multiplexor experiments we used speed up techniques based on those described in [poli:1999:aigp3]. the distribution of fitness of randomly chosen CCNOT programs with 0, 1 and 6 additional wires at a variety of lengths, cf. Figures 5–10. These experiments confirm that there is a limiting fitness distribution and it is Binomial. Further, cf. Figure 9, the difference between the actual distribution and the limiting distribution falls rapidly with program length. Also we do not need many spare wires (one is sufficient) to be close to the theoretical wide circuit limit. Only without any spare lines does the limit differ from theory.
There are no CCNOT solutions to the six multiplexor problem with less than five gates. One of the smallest solution is shown in Figure 11. Notice this does not use any additional wires. While the multiplexor can be solved by CCNOT without additional storage, with six lines only even fitness scores are possible. This also means, even in the limit of long programs, there is a bias towards higher fitness, increasing the mean fitness from 32 to 32.5, cf. Figures 5, 5, 8 and 10.
It is clear that CCNOT has a nice bias for solving the six multiplexor problem. On average small circuits have above average fitness and in particular (at least with six lines) the chance of solving the problem is far higher for small programs than in the limit of large programs.
6 Hill Climbing and Evolutionary Solution of the Six Multiplexor Problem
Section 3 tells us how many solutions there are but not how easy they are to find. To investigate this we carried out hill climbing and population based search on the minimal circuit and a larger circuit. Our results are summarised in Table 1.
|6 lines||5 CCNOT||0/||10||4/||10|
|12 lines||20 CCNOT||1/||10||10/||10|
Firstly we compare random search with these two more sophisticated search techniques. Figure 10 shows the chance of solving the six multiplexor by random search of CCNOT circuits. From the first solutions composed of 5 gates and no spare lines, the chance rises from about to a peak of about at 10 gates, and then falls towards the theoretical (non zero) limit of as the circuit size increases. (No solutions were found in more than 10,000,000 trials with either one or six spare lines.)
A local hill climber was run ten times. It mutated exactly one CCNOT gate of the five in the six wire circuit and retained the mutant only if its fitness was better. In seven runs a fitness level of 56 was reached. In two of the seven runs the hill climber reached fitness 56 significantly222All significance tests in Section 6 use a 5% two tailed test. faster than random search could be expected to. In seven of the remaining runs there is no significant difference between the hill climber and random search. (However random search always has a chance of solving the problem. While the hill climber was stuck at local optima and could never proceed.) In the remaining run, the hill climber took significantly longer to reach fitness level 48.
Our hill climber found one solution in ten runs, when the number of CCNOT gates was increased to 20 and six spare lines were added. Six of the runs attained a score of 56, two runs 48 and the last 52. None of these nine runs first reached its final fitness level significantly faster or slower than random search might be expected to. Except again random search might improve, whereas the hill climber was stuck at local optima and could never proceed. (Each 20 CCNOT 12 wire program has or neighbours, so our hill climber will take on average no more than 4185 attempts to try them all, cf. The Coupon Collector’s problem [feller:1957:ipta, page 284]. All runs had many more trials than this.)
In contrast the search space turns out to be very friendly to evolutionary search. Using the same mutation operator and a population of 500 (see also Table 2) in four out of ten runs minimal solutions to the six multiplexor were found. (I.e. five CCNOT without spare wires). These solutions took between 20 and 100 generations. In the remaining six runs fitness level 56 was reached (in five cases significantly faster than random search). Introducing six spare wires and extending the circuits from five to 20 CCNOT makes the problem significantly easier. Ten out of ten runs (with the same population size etc.) found solutions. The solutions were found after 30–220 generations. This is significantly better than hill climbing and population search of the smaller circuit size.
|Objective:||Find a reversible function whose output is the same as the Boolean 6 multiplexor function|
|Inputs:||D0 D1 D2 D3 A0 A1 (plus either 0 or 6 “true” constants)|
|Fitness cases:||All the combinations of the 6 Boolean arguments|
|Fitness:||number of correct answers|
|Selection:||Tournament group size of 7, non elitist, generational|
|Program size:||5 or 20 CCNOT (Toffoli) reversible gates|
|Parameters:||100% mutation (Exactly one CCNOT gate is randomly chosen. One of its three wires is chosen at random, and replaced by a randomly chosen, different, but legal, wire.)|
|Termination:||fitness=64 or maximum number of generations G = 500|
The effort [koza:book, page 194] required to find a non-minimal reversible solution to the six multiplexor using a population approach (87,000) is somewhat similar to that required by genetic programming to find a non-reversible one [koza:book, Table 25.2]. In other words, using CCNOT with spare lines has not been shown to be uncompetitive with existing approaches.
It is important to realise the limiting distribution results hold in general for reversible computing. Not just for the six multiplexor or similar problems and for any reversible gate, not just the Toffoli (CCNOT) gate. An interesting extension would be quantum computing. Random matrices theory may give a formal bound on the size of circuits needed to approach the limiting distribution.
The benchmark can be solved with no spare wires. Indeed [ICALP::Toffoli1980, page 636] describes a set of gates for which no more than spare wires are needed for any finite reversible function. However allowing modest increases in the size of solution by allowing more gates and spare wires appears to make the fitness landscape more evolvable. I.e. easier for evolutionary search to find solutions. It is not clear whether additional gates or wires or both is primarily responsible. In our example at least, and we suggest perhaps to other problems, insisting upon minimal solutions rather than sufficient solutions, which may be bigger, makes the problem unnecessarily hard.
While NFL [ieee-ec:Wolpert+Macready:1997] applies to reversible computing, we expect evolutionary search also to be better than hill climbing and random search when used with other reversible gates, such as the Fredkin gate, on this and similar problems.
The number of programs or circuits of a given size increases exponentially with circuit size. Thus average behaviour across all programs is dominated by the behaviour of the longest programs. Almost all of these will behave as the limiting distribution suggest. Thus considering only the limiting distribution is sufficient to describe the vast majority of programs.
Where spare wires are included, for most programs, the Binomial distribution can be approximated by a Normal distribution with the same mean and variance. I.e. where fitness is given by a Hamming distance, the average fitness isand the variance is . If we normalise fitness to the range , then the mean becomes 0.5 and the standard deviation is . Even with modest numbers of input and output wires, the Hamming fitness distribution becomes a needle, with almost all programs having near average fitness.
In non-trivial problems and rapidly become too large to allow exhaustive testing. However the limiting distribution still applies. In the limit the chance of a random program passing non-exhaustive testing is given by the number of bits which are checked. I.e. if tests are run and only a precision answer is needed, the chance of passing a test case is . The chance of passing all the test cases is . But note that, randomly passing the test cases gives no confidence that the program will generalise. If an additional independent test is added, the chance of randomly passing it is only [langdon:fogp]. In contrast general solutions have been evolved via limited numbers of test cases by genetic programming [langdon:book] suggesting GP has a useful bias for problems of interest.
|Fitness function||Mean||Standard Deviation||Perfect Solutions|
|RMS (small T)|
|RMS (large no. tests)|
As with traditional computing, as reversible circuits get bigger the distribution of their functionality converges to a limit. Therefore their fitness distribution must also tend to a limit. Table 3 summarises the limit (with many wires) for fitness functions based on Hamming distance and root mean error squared. In the limit, every implementable permutation is equally likely. Note, unlike traditional computing, in the limit there is a finite chance of finding a solution.
Experiments on the six multiplexor problem have found solutions, including minimal solutions, cf. Figure 11. These experiments suggest the fitness landscape is amenable to evolutionary search, particularly if non-minimal solutions are allowed. Which in turn suggests the use of variable length evolution. Performance with CCNOT (Toffoli) gates is similar to that of genetic programming with non reversible programs. Simple hill climbing is liable to become trapped at sub optima, particularly if constrained to search for minimal solutions.
We suggest that the common emphasis on minimal solutions is misplaced. These examples provide additional evidence that requiring tiny solutions hurts evolvability (and other search techniques). There may only be one smallest program but there are exponentially many larger solutions.