Building Grover's search algorithm
Let's take our first bite into Grover's search algorithm, one of the more straightforward quantum algorithms for solving an actual problem using quantum computing, namely finding information in an indexed but unsorted database. As we discussed in A quick interlude on classical search, Grover is expected to be quadratically faster than its classical counterpart.
In Qiskit Terra, we can create an implementation of Grover that uses a phase-kickback oracle combined with another neat trick: phase amplification. Phase amplification increases the amplitude of the correct phase-shifted answer and thereby increases the probability of that outcome when you measure your circuit.
First, we create a so-called oracle function, which is designed to take as input a set of qubits in initial superposition and switch the phase of the correct answer by , while leaving the phase of the incorrect answers alone. The oracle circuit is what is called...