The basic unit of classical deterministic information is the ``bit''.
A bit is an abstract entity or ``system'' that can be in one of the
two states symbolized by
and
. At this point, the
symbols for the two states have no numeric meaning. That is why
we have used a font different from that for the numbers
and
. By making a clear distinction between the bit
and its states we emphasize that a bit should be
physically realized as a system or device whose states correspond to
the ideal bit's states. For example, if you are reading this primer
on paper, the system used to realize a bit is a reserved location on
the surface, and the state depends on the pattern of ink (
or
) in that location. In a computer, the device realizing a
bit can be a combination of transistors and other integrated circuit
elements with the state of the bit determined by the distribution of
charge.
In order to make use of information it must be possible to manipulate
(or ``process'') the states of information units. The elementary
operations that can be used for this purpose are called ``gates''. Two
one-bit gates are the
and the
gates. Applying
the
gate to a bit has the effect of ``flipping'' the state
of the bit. For example, if the initial state of the bit is
, then the state after applying
is
. We can present the effect of the gate in
the following form:
![]() |
(1) |
![]() |
(2) |
Information units can be combined to represent more information. Bits
are typically combined into sequences. The states of such a sequence
are symbolized by strings of state symbols for the constituent bits.
For example a two-bit sequence can be in one of the following
four states:
and
. The different bits are distinguished by their
position in the sequence.
The one-bit gates can be applied to any bit in a sequence.
For example, the
gate applied to the second bit
of a three-bit sequence in the state
changes
the state to
.
One-bit gates act independently on each bit. To compute with multiple
bits, we need gates whose action can correlate the states of two or
more bits. One such gate is the
(``not and'') gate, which
acts on two bits in a bit sequence. Its effect is to set the state of
the first bit to
if both the first and the second bit are
, otherwise it sets it to
. Here is what happens
when
is applied to two consecutive bits:
![]() |
(3) |
Other operations on bit sequences include adding a new bit to the
beginning (
) or end (
) of a bit sequence.
The new bit is always initialized to
. It is also possible
to discard the first or last bit, regardless of its state. Versions
of these operations that are conditional on the state of another bit
may also be used. An example is the conditional append operation: ``if
the
'th bit is in the state
then append a bit.''
The gates just introduced suffice for implementing arbitrary state transformations of a given bit sequence. Instructions for applying gates in a particular order are called a ``circuit''. An important part of investigations in information processing is to determine the minimum resources required to perform information processing tasks. For a given circuit, the two primary resources are the number of gates and the total number of bits used. The ``circuit complexity'' of a desired transformation is the minimum number of gates needed to implement it.
The model of computation defined by the ability to apply gates in a fixed sequence is called the ``circuit model''. Classical computation extends the circuit model by providing a means for repeating blocks of instructions indefinitely or until a desired condition is achieved. In principle, it is possible to conceive of a general purpose computer as a device that repeatedly applies the same circuit to the beginnings of several bit sequences. In this introduction, we take for granted a traditional programmable computer based on classical information. Thus a ``quantum algorithm'' is a program written for such a computer with additional instructions for applying gates to quantum information. The computational power of this model is equivalent to that of other general purpose models of quantum computation, such as quantum Turing machines [7].
For an introduction to algorithms and their analysis, see [8]. A useful textbook on computational complexity with an introduction to classical computation and computational machine models is [9].