--- title: "Bernstein-Vazirani algorithm" sort_title: "Bernstein-Vazirani algorithm" date: 2021-05-01 categories: - Quantum information - Algorithms layout: "concept" --- In quantum information, the **Bernstein-Vazirani algorithm** proves the supremacy of quantum computers over classical deterministic or probabilistic computers. It is extremely similar to the [Deutsch-Jozsa algorithm](/know/concept/deutsch-jozsa-algorithm/), and even uses the same circuit. It solves a very artificial problem: we are given a "black box" function $$f(x)$$ that takes an $$N$$-bit $$x$$ and returns a single bit, which we are promised is the lowest bit of the bitwise dot product of $$x$$ with an unknown $$N$$-bit string $$s$$: $$\begin{aligned} f(x) = s \cdot x \:\:(\bmod \: 2) = (s_1 x_1 + s_2 x_2 + \:...\: + s_N x_N) \:\:(\bmod \: 2) \end{aligned}$$ The goal is to find $$s$$. To solve this problem, a classical computer would need to call $$f(x)$$ exactly $$N$$ times with $$x = 2^n$$ for $$n \in \{ 0, ..., N \!-\! 1\}$$. However, the Bernstein-Vazirani algorithm allows a quantum computer to do it with only a single query. It uses the following circuit: Where $$U_f$$ is a phase oracle, whose action is defined as follows, where $$\Ket{x} = \Ket{x_1} \cdots \Ket{x_N}$$: $$\begin{aligned} \Ket{x} \quad \to \boxed{U_f} \to \quad (-1)^{f(x)} \Ket{x} = (-1)^{s \cdot x} \Ket{x} \end{aligned}$$ That is, it introduces a phase flip based on the value of $$f(x)$$. For an example implementation of such an oracle, see the Deutsch-Jozsa algorithm: its circuit is identical to this one, but describes $$U_f$$ in a different (but equivalent) way. Starting from the state $$\Ket{0}^{\otimes N}$$, applying the [Hadamard gate](/know/concept/quantum-gate/) $$H$$ to all qubits yields: $$\begin{aligned} \Ket{0}^{\otimes N} \quad \to \boxed{H^{\otimes N}} \to \quad \Ket{+}^{\otimes N} = \frac{1}{\sqrt{2^N}} \sum_{x = 0}^{2^N - 1} \Ket{x} \end{aligned}$$ This is an equal superposition of all candidates $$\Ket{x}$$, which we feed to the oracle: $$\begin{aligned} \frac{1}{\sqrt{2^N}} \sum_{x = 0}^{2^N - 1} \Ket{x} \quad \to \boxed{U_f} \to \quad \frac{1}{\sqrt{2^N}} \sum_{x = 0}^{2^N - 1} (-1)^{s \cdot x} \Ket{x} \end{aligned}$$ Then, thanks to the definition of the Hadamard transform, a final set of $$H$$-gates leads us to: $$\begin{aligned} \frac{1}{\sqrt{2^N}} \sum_{x = 0}^{2^N - 1} (-1)^{s \cdot x} \Ket{x} \quad \to \boxed{H^{\otimes N}} \to \quad \Ket{s} = \Ket{s_1} \cdots \Ket{s_N} \end{aligned}$$ Which, upon measurement, gives us the desired binary representation of $$s$$. For comparison, the Deutsch-Jozsa algorithm only cares whether $$s = 0$$ or $$s \neq 0$$, whereas this algorithm is interested in the exact value of $$s$$. ## References 1. J.S. Neergaard-Nielsen, *Quantum information: lectures notes*, 2021, unpublished. 2. S. Aaronson, *Introduction to quantum information science: lecture notes*, 2018, unpublished.