Let us consider a set \({\cal S} = \left\lbrace  \vert j \rangle  | j = 0, 1, \cdots ,N-1 \right\rbrace \)  with \(\langle j_1 \vert  j_2 \rangle = \delta _{j_1 j_2}\) .
Grover's algorithm[1]}, [2]} is a quantum algorithm, which tries to find a particular quantum state \(\vert \psi _G \rangle  \in {\cal S}\) .
Grover's algorithm consists of three unitary transformations called superposition, oracle, and diffuser. The superposition transforms the initial state \(\vert 0 \rangle ^{\otimes n}\)  to
a superposed state, where all states in \({\cal S}\)  are superposed with equal probability amplitude. This can be achieved by making use of the Hadamard gate
\(H = \frac{1}{\sqrt{2}} \left( \begin{array}{cc}1 & 1 \\1 & -1\end{array} \right).\) 
