In the quantum oracle model, we have an oracle that holds an
-bit
input string. Our task is to determine the value of some fixed
Boolean function of the oracle string, using as few oracle queries as
possible. An oracle query is a question of the form: ``What is the
th bit of the oracle string?'' The quantum oracle model is a
special case of Ambainis' more general quantum adversary model
[1], which we describe below.
In the quantum adversary model, we run an algorithm against an oracle
that contains a superposition of inputs. Let
be a subset of the
possible inputs
. Algorithms in the quantum adversary
model will work in the Hilbert space
, where
is the Hilbert space of our
-qubit
memory register, and
is the Hilbert space
spanned by basis vectors
corresponding to the elements of
. We think of
as our algorithm space, and
as our
input space. The tensor product of two vector spaces
and
,
denoted
, is a new vector space spanned by all possible
pairs
of basis vectors
from the first space and
from
the second space. Thus
.
We can represent the basis states of our algorithm space as
, where
consists of
bits,
is a
single bit,
denotes all other bits our quantum algorithm requires.
We define the oracle transformation
as the unitary operator that
takes any eigenstate
to
. The first
bits of the subspace defined by a particular
input
is the index
to the oracle bit
that we
are querying.
is a permutation matrix.
A quantum algorithm that performs
queries is just a sequence of
unitary transformations
The standard oracle query model is just an instance of the quantum
adversary model where the input space is spanned by a single
eigenstate
. In this case a quantum algorithm starts with
the state
, applies
, and then measures the final state. The rightmost
bit of the measured state of the algorithm space is the output of the
algorithm on
. The algorithm computes
in the bounded error
setting if for every input
, the output is
with some constant probability.
The measure of complexity in both the quantum oracle model and quantum
adversary model is the number of oracle queries. It should be noted
that querying the oracle is not always the most time consuming portion
of an algorithm. For example, to factor an
bit integer that the
oracle holds, we can determine the integer in
queries. However,
we must then do
additional steps in the classical
case, or
additional steps in the quantum case to
factor the number using the best known algorithms
[2]. Nonetheless we restrict our attention to the
number of oracle queries required, as it is clearly a lower bound on
the overall running time of the algorithm. Classical bounds for query
complexity are well studied, making comparisons between quantum and
classical oracle query complexity possible.