Fortunately, the primitive ERASE is not absolutely essential in computation. To see why, consider what is required to compute arbitrary functions using reversible logic (where the primitive ERASE is forbidden). Landauer showed how any function could be made one-to-one by keeping a copy of the input:
Here the parentheses represent an ordered set of values, in this case, two. Extra ``slots'' will be added (or removed) as required in our discussion below.
How can this trick be used to perform reversible logic? One solution, known as the Toffoli gate, is shown in Fig. 4 [8,10,11]. The output of this gate may be decomposed into various gates:
where represents an AND gate, represents an XOR gate and represents a NOT gate. We see that this gate is universal, because it performs AND, XOR, NOT or FANOUT depending on its inputs. A combination of many such gates could then be used for any computation and would still be reversible.
Fig. 4 Three-input three-output universal reversible Toffoli gate. This gate is clearly reversible since a second application of it retrieves the original input.
As noted by Landauer, this procedure leads to an immediate problem because of the absence of the primitive ERASE. The more gates we employ, the more ``junk'' bits we accumulate: At each gate we must save input bits in order to preserve reversibility. In other words a computer built out of reversible logic instead of conventional, irreversible logic gates would behave like
with many extra junk bits .
Bennett solved this problem by showing that the junk bits could be reversibly erased at intermediate steps with minimal run-time and memory costs [12,13]. The spirit of Bennett's solution may be understood in terms of the following procedure:
where denotes uncomputing f, as opposed to computing . First, f is computed, producing both junk bits and the desired output. Then the FANOUT gate is applied to duplicate the output. Finally, we uncompute the original function f by running its computation backwards. This procedure removes the junk bits and the original output. The duplicate, however, remains!
This completes our discussion of the construction of classical, reversible computers. We have found that reversibility does not bar the logical design of computing machines. Before mapping these ideas to quantum systems, however, we introduce some elementary quantum mechanical notation.