Theorists have shown that reversible computers can do anything that normal computers can do, via the simple expedient of saving all the information (such as intermediate results) that a normal computer would throw away ([1], [5]). Unfortunately, this approach simply transforms the problem of how to get rid of unwanted heat into the problem of how to get rid of unwanted information. The memory capacity of any computer is limited, just like its heat capacity, and actively sending all unwanted information outside the computer presents logistical problems analogous to those involved in active cooling. Therefore, we would prefer to compute in a way that produces less of this ``garbage data'' in the first place.
Bennett [2] has shown that any algorithm can be transformed into a form that produces garbage data at a rate that decreases steadily as the algorithm runs, so that the total accumulation of garbage data is only a logarithmic function of run time, and is thus reasonable to store. However, Bennett's technique suffers from the drawback that the run time t of the algorithm is multiplied by a polynomial factor of ; can be made arbitrarily small, but only at the cost of exponentially increasing space [4].