% vim: ft=tex
\section{Quantum Computing}

\subsection{Qbits and Gates}
\subsubsection{Single Qbits}

\begin{definition}
    A qbit is a two level quantum mechanical system, i.e. it has the eigenbasis
    $ \{\ket{\uparrow} \equiv \ket{1}, \ket{\downarrow} \equiv \ket{0}\} $
    with $\braket{\uparrow}{\downarrow} = 0$. In the folling this basis will be called
    the $Z$ basis in analogy to the conventions used in spin systems. For some computations
    it can be useful to have component vectors, $\ket{\uparrow} \equiv \left(\begin{array}{c} 0 \\ 1\end{array} \right)$ and 
    $\ket{\downarrow} \equiv \left(\begin{array}{c} 1 \\ 0 \end{array} \right)$
    are used in these cases.
\end{definition}

A gate acting on a qbit is a unitary operator $G \in SU(2)$. One can show that
$\forall G \in SU(2)$ $G$ can be approximated arbitrarily good as a product of unitary generator matrices
\cite[Chapter 4.3]{kaye_ea2007}\cite[Chapter 2]{marquezino_ea_2019},
common choices for the generators are $ X, H, R_{\phi}$ and $Z, H, R_{\phi}$ with 
\label{ref:singleqbitgates}

\begin{equation}
    \begin{aligned}
    & X := \left(\begin{array}{cc} 0 & 1 \\ 1 & 0\end{array}\right) \\
    & Z := \left(\begin{array}{cc} 1 & 0 \\ 0 & -1\end{array}\right) \\
    & H := \frac{1}{\sqrt{2}}\left(\begin{array}{cc} 1 & 1 \\ 1 & -1\end{array}\right) \\
    & R_{\phi} := \left(\begin{array}{cc} 1 & 0 \\ 0 & \exp(i\phi)\end{array}\right)\\
    & I := \left(\begin{array}{cc} 1 & 0 \\ 0 & 1\end{array}\right) \\
    \end{aligned}
\end{equation}

Note that $X = HZH$ and $Z = R_{\pi}$, so the set of $H, R_\phi$ is sufficient. 
Further note that the basis vectors are chosen s.t. $Z\ket{0} = +\ket{0}$ and $Z\ket{1} = -\ket{1}$,
transforming to the other Pauli eigenstates is done using $H$ and $SH$:

\begin{equation}
    S = R_{\frac{\pi}{2}} = \left(\begin{array}{cc} 1 & 0 \\ 0 & i\end{array}\right)
\end{equation}
\begin{equation}
    S H Z H^\dagger S^\dagger = S X S^\dagger = Y
\end{equation}

The following states are the $\pm 1$ eigenstates of the $X$, $Y$, $Z$ operators
and will be used in some calculations later.

\begin{equation}
    \begin{aligned}
        &\ket{+_X} \equiv \ket{+} := \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) \\
        &\ket{-_X} \equiv \ket{-} := \frac{1}{\sqrt{2}} (\ket{0} - \ket{1}) \\
        &\ket{+_Y} := \frac{1}{\sqrt{2}} (\ket{0} + i\ket{1}) \\
        &\ket{-_Y} := \frac{1}{\sqrt{2}} (\ket{0} - i\ket{1}) \\
        &\ket{+_Z} := \ket{0} \\ 
        &\ket{-_Z} := \ket{1} \\
    \end{aligned}
\end{equation}

\subsubsection{Many Qbits}
\label{ref:many_qbits}

\begin{postulate}
    A $N$ qbit quantum mechanical state is the tensor product\cite[Definition 14.3]{wuest1995} of the $N$ single qbit 
states.
\end{postulate}

Let $\ket{0}_s := \left(\begin{array}{c} 1 \\ 0 \end{array} \right)$ and $\ket{1}_s := \left(\begin{array}{c} 0 \\ 1 \end{array} \right)$
be the basis of the one-qbit systems. Then two-qbit basis states are

\begin{equation}
    \ket{0} := \ket{0b00} := \ket{0}_s \otimes \ket{0}_s :=  \left(\begin{array}{c} 1 \\ 0 \\ 0 \\ 0 \end{array} \right)
\end{equation}
\begin{equation}
    \ket{1} := \ket{0b01} := \ket{0}_s \otimes \ket{1}_s :=  \left(\begin{array}{c} 0 \\ 1 \\ 0 \\ 0 \end{array} \right)
\end{equation}
\begin{equation}
    \ket{2} := \ket{0b10} := \ket{1}_s \otimes \ket{0}_s :=  \left(\begin{array}{c} 0 \\ 0 \\ 1 \\ 0 \end{array} \right)
\end{equation}
\begin{equation}
    \ket{3} := \ket{0b11} := \ket{1}_s \otimes \ket{1}_s :=  \left(\begin{array}{c} 0 \\ 0 \\ 0 \\ 1 \end{array} \right)
\end{equation}

The $N$ qbit basis states can then be constructed in a similar manner. 
A general $N$ qbit state can then be written as a superposition of the 
integer states:

\begin{equation}
    \ket{\psi} = \sum\limits_{i = 0}^{2^N - 1} c_i \ket{i} 
\end{equation}
\begin{equation}
    \sum\limits_{i = 0}^{2^N - 1} |c_i|^2 = 1
\end{equation}

The states $\ket{i}$ for $i = 0, ..., 2^{n}-1$ are called integer states. Note
that integer states are eigenstates of the $Z$ operators. The computational basis
is $\{\ket{i_0} \otimes ... \otimes \ket{i_{n-1}} | i_0, ..., i_{n-1} = 0, 1\}$.

\begin{definition}
For a single qbit gate $U$ and a qbit $j = 0, 1, ..., n - 1$ 

    \begin{equation}
        U_j := \left(\bigotimes\limits_{i = 0}^{j - 1} I\right) 
                \otimes U 
                \otimes \left(\bigotimes\limits_{i = j + 1}^{n - 1} I \right)
    \end{equation}
is the $U$ gate acting on qbit $j$.
\end{definition}

\begin{definition}\label{def:CU}
    For two qbits $i,j = 0, 1, ..., n - 1$, $i \neq j$ and a gate $U_i$ acting on $i$
    the controlled version of $U$ is defined by
    \begin{equation}
        \begin{aligned}\label{eq:CU}
            CU_{i, j} &:= &\ket{0}\bra{0}_j\otimes I_i 
                        + \ket{1}\bra{1}_j \otimes U_i \\
                    &:= &\left(\bigotimes\limits_{l < j} I\right) 
                            \otimes \ket{0}\bra{0} 
                            \otimes \left(\bigotimes\limits_{j < l < i} I\right) 
                            \otimes I 
                            \otimes \left(\bigotimes\limits_{j > l} I \right)\\
                        & &+ \left(\bigotimes\limits_{l < j} I\right) 
                            \otimes \ket{1}\bra{1} 
                            \otimes \left(\bigotimes\limits_{j < l < i} I\right) 
                            \otimes U 
                            \otimes \left(\bigotimes\limits_{j > l} I \right)\\
        \end{aligned}
    \end{equation}

    where without loss of generality $j < i$; the other case is analogous.

    In particular for $X, Z$:
    \begin{equation}\label{eq:CX_pr}
        CX(i, j) = \ket{0}\bra{0}_j\otimes I_i + \ket{1}\bra{1}_j \otimes X_i 
    \end{equation}
    \begin{equation}\label{eq:CZ_pr}
        CZ(i, j) = \ket{0}\bra{0}_j\otimes I_i + \ket{1}\bra{1}_j \otimes Z_i 
    \end{equation}

\end{definition}

In Definition \ref{def:CU} $i$ is called the act-qbit and $j$ the control-qbit. In words
$CU$ applies the gate $U$ to the act-qbit if the control-qbit is in its $\ket{1}$ state.

One can show that the gates in \ref{ref:singleqbitgates} together with an entanglement gate, such as $CX$ or $CZ$ are enough
to generate an arbitrary $N$ qbit gate\cite[Chapter 4.3]{kaye_ea2007}\cite{barenco_ea_1995}.
The matrix representation of $CX$ and $CZ$ for two qbits is given by (this is quickly verified by applying the
matrices to the basis states)

\begin{equation}
    CX_{1, 0} = \left(\begin{array}{cccc} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 1\\ 0 & 0 & 1 & 0 \end{array}\right)
\end{equation}
\begin{equation}
    CZ_{1, 0} = \left(\begin{array}{cccc} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & -1 \end{array}\right)
\end{equation}

\subsubsection{Measurements}

\begin{postulate}
    Let 
    $$\ket{\psi} = \alpha\ket{\phi_1} \otimes \ket{1}_j + \beta\ket{\phi_0} \otimes \ket{0}_j$$ 
    be a  $n$ qbit state
    where $\ket{1}_j, \ket{0}_j$ denote the $j$-th qbit state and $|\alpha|^2 + |\beta|^2 = 1$. 
    Then the measurement of the $j$-th qbit will yield 
    $$\ket{\phi_1} \otimes \ket{1}_j$$ 
    with probability $|\alpha|^2$ and 
    $$\ket{\phi_0} \otimes \ket{0}_j$$
    with probability $|\beta|^2$.  This is called collapse of the wave function.
\end{postulate}

Measuring a qbit will also yield a classical result $0$ or $1$ with the respective probabilities.
Measurements are always performed in the computational basis, i.e. for a qbit
$i$ $Z_i$ is measured. With the eigenstate of the $+1$ eigenvalue being the $\ket{0}$
and $\ket{1}$ for the $-1$ eigenvalue of $Z$.

\begin{corrolary}
    In general the measurement of a qbit is not invertible, in particular it cannot be represented as a
    unitary operator.
\end{corrolary}

\begin{proof}
    The measuerment in not injective: Measuring both
    $\ket{0}$ and $\frac{1}{\sqrt{2}}(\ket{0} + \ket{1})$ (can) map to $\ket{0}$.

    Any unitary matrix $U$ has the inverse $U^\dagger \equiv U^{-1}$.
\end{proof}

As a measurement is not unitary it is not a gate as in the definition above. 
In the following discussion the term \textit{measurement gate} will be used from time
to time as a measurement can be treated similarely while doing numerics. 


\subsection{Quantum Circuits}

As mentioned in \ref{ref:many_qbits} one can approximate an arbitrary $n$
qbit gate $U$ as a product of some single qbit gates and either $CX$ or $CZ$.
Writing (possibly huge) products of matrices is quite unpractical and very much
unreadable. To address this problem quantum circuits have been introduced.
These represent the qbits as a horizontal line, a gate acting on a qbit is
a box with a name on the respective line. Quantum circuits are read from
left to right. This means that a gate $U_i = Z_i X_i H_i$ has the
circuit representation

\[
\Qcircuit @C=1em @R=.7em {
& \gate{H} & \gate{X} & \gate{Z} &\qw \\
}
\]

The controlled gates (such as $CX$ and $CZ$) have a vertical line from the control qbit to
the gate, for instance the circuit for $CZ_{2, 1}CX_{2,0}$ is

\[
\Qcircuit @C=1em @R=.7em {
& \qw & \ctrl{2} & \qw & \qw &\qw \\
& \qw & \qw & \qw & \ctrl{1} &\qw \\
& \qw & \gate{X} & \qw & \gate{Z} &\qw \\
}
\]

\subsection{Quantum Algorithms}


