1.2 KiB
The first quantum algorithm we will look at is the Bernstein-Vazirani algorithm.
Given a secret s \in \{0,1\}^n and the function f : \{0,1\}^n \rightarrow \{0,1\} defined as f(x) = x * s
* denotes the inner product of two bitstrings here
For Bitstrings x and y of length n the inner product x * y is x_1y_1 + ... + x_ny_n mod 2
The goal is to find the secret s using as few queries of f as possible.
So as few evaluations of f as possible.
We will look at a quantum algorithm that will find s with only one evaluation of f.
!
The top wire consists of n qubits in state 0. \ket{0}^n = \ket{0} \otimes ... \otimes \ket{0}
The bottom wire is in state 1.
Both wires together are in state \ket{0^n1} = \ket{0}^n \otimes \ket{1}
First, we apply the Hadamard gate on all qubits. The resulting state is calculated as follows:
!
We are now in superposition between all classical possibilities on the top wire
and in \ket{-} on the bottom wire.
Next we apply the unitary U_f on both wires.
The Unitary is defined as:
U_f \ket{x,y} = \ket{x,y \otimes f(x)}
This unitary applies the function f to the bottom wire y.
It can be calculated as follows:
!