  Quantum computing is evolving so rapidly that it forces us to revisit,
rewrite, and update the foundations of the theory. Basic Quantum Algorithms
revisits the earliest quantum algorithms. The journey began in 1985 with
Deutsch attempting to evaluate a function at two domain points simultaneously.
Then, in 1992, Deutsch and Jozsa created a quantum algorithm that determines
whether a Boolean function is constant or balanced. The following year,
Bernstein and Vazirani realized that the same algorithm could be used to
identify a specific Boolean function within a set of linear Boolean functions.
In 1994, Simon introduced a novel quantum algorithm that determined whether a
function was one-to-one or two-to-one exponentially faster than any classical
algorithm for the same problem. That same year, Shor developed two
groundbreaking quantum algorithms for integer factoring and calculating
discrete logarithms, posing a threat to the widely used cryptography methods.
In 1995, Kitaev proposed an alternative version of Shor's algorithms that
proved valuable in numerous other applications. The following year, Grover
devised a quantum search algorithm that was quadratically faster than its
classical equivalent. With an emphasis on the circuit model, this work provides
a detailed description of all these remarkable algorithms.
