did some work

This commit is contained in:
2019-11-01 19:07:45 +01:00
parent f834babb45
commit c2a01d0c19
9 changed files with 1382 additions and 83 deletions

View File

@@ -4,7 +4,8 @@ bibtex=bibtex
chapters = chapters/introduction.tex \
chapters/naive_simulator.tex \
chapters/introduction_qc.tex
chapters/introduction_qc.tex \
chapters/graph_simulator.tex
all: main.pdf

View File

@@ -1,11 +1,130 @@
\section{The graph Simulator}
\section{The Graph Simulator}
\subsection{Introduction to the Graph Formalism}
The first step towards the simulation in the graph formalism has been
the discovery of the stabilizer states and stabilizer circuits \cite{gottesman2009}\cite{gottesman1997}.
They led to the faster simulation using stabilizer tableaux\cite{gottesman_aaronson2008} and later
to the graph formalism .
to the graph formalism\cite{schlingenmann2001}\cite{andersbriegel2005}\cite{vandennest_ea2004}.
The following discussion eludicates the graph formalism and explains how the graph simulator works.
Some parts will be kept short as they can be looked up in \cite{andersbriegel2005}.
\begin{definition}
\begin{equation}
p \in P_n \Rightarrow p = \bigotimes\limits_{i=0}^n p_i \\
\forall i: p_i \in P := \{\pm 1, \pm i\} \cdot \{I, X, Y, Z\}
\end{equation}
Where $X = \left(\begin{array}{cc} 0 & 1 \\ 1 & 0\end{array}\right)$,
$Y = \left(\begin{array}{cc} 0 & i \\ -i & 0\end{array}\right)$ and
$Z = \left(\begin{array}{cc} 1 & 0 \\ 0 & -1\end{array}\right)$ are the Pauli matrices and
$I$ is the identity.
\end{definition}
\begin{definition}
Let $p_i \in P_n \forall i = 1, ..., n$, $[p_i, p_j] = 0 \forall i,j$ be commuting multi-local Pauli operators.
Then a $n$ qbit state $\ket{\psi}$ is called a stabilizer state iff
\begin{equation}
\forall i: p_i\ket{\psi} = +1\ket{\psi}
\end{equation}
\end{definition}
%A $n$ qbit graph or stabilizer state is a $+1$ eigenstate of some $ p \in P_n$ where $P_n$ is the Pauli group\cite{andersbriegel2005}.
\begin{definition}
\begin{equation}
C_n := \{U \in SU(2) | UpU^\dagger \in P_n \forall p \in P_n\}
\end{equation}
is called the Clifford group on $n$ qbits.
$C_1 =: C_L$ is called the local Clifford group.
\end{definition}
One can show that the Clifford group $C_n$ can be generated using the elements of $C_L$ acting on all qbits and
the controlled phase gate $CZ$ between all qbits\cite{andersbriegel2005}. It is worth noting that the $CX$ gate can be
generated using $CZ$ and $C_L$ gates.
\begin{lemma}
Let $a \in C_L$ then $\forall \phi \in [0, 2\pi)$ also $\exp(i\phi)a \in C_L$.
\textbf{Note}: This is also true for $C_n \forall n >= 1$.
\end{lemma}
\begin{proof}
Let $a' := \exp(i\phi)a$. $a' \in C_L$ iff $a'pa^{\prime\dagger} \in P \forall p \in P$.
\begin{equation}
\begin{aligned}
a'pa^{\prime\dagger} &= (\exp(i\phi)a)p(\exp(i\phi)a)^\dagger \\
& = \exp(i\phi)ap\exp(-i\phi)a^\dagger \\
& = \exp(i\phi)\exp(-i\phi) apa^\dagger \\
& = apa^\dagger \in P
\end{aligned}
\end{equation}
\end{proof}
\begin{lemma}
One cannot measure phases by projecting states.
\end{lemma}
\begin{proof}
Let $\ket{\psi}$ be a state, $\ket{\varphi}\bra{\varphi}$ a projector. $\ket{\psi'} := \exp(i\phi)\ket{\psi}$ for some $\phi \in [0, 2\pi)$.
\begin{equation}
\begin{aligned}
\bra{\psi'}\ket{\varphi}\bra{\varphi}\ket{\psi'} &= \exp(-i\phi)\bra{\psi}\ket{\varphi}\bra{\varphi}\exp(i\phi)\ket{\psi} \\
& = \exp(-i\phi)\exp(i\phi)\bra{\psi}\ket{\varphi}\bra{\varphi}\ket{\psi} \\
& = \bra{\psi}\ket{\varphi}\bra{\varphi}\ket{\psi}
\end{aligned}
\end{equation}
\end{proof}
\begin{definition}
A phase $\phi \in [0, 2\pi)$ is called qbit-global, if for some qbit states $\ket{\psi}, \ket{\varphi}$ $\ket{\psi} = \exp(i\phi)\ket{\varphi}$.
\end{definition}
\begin{lemma}
When entangling qbits via projections one can disregard qbit-global phases.
Two qbits are entangled via projection, if for some single qbit gates $M,N$
and two orthonormal states $\ket{a}, \ket{b}$
\begin{equation}
C^{M,N}(i,j) = \ket{a}\bra{a}_j \otimes M_i + \ket{b}\bra{b}_j \otimes N_i
\end{equation}
\textbf{Remark.}
In particular when entangling states using $CX$ and $CZ$ one can disregard qbit-global phases.
This is immideatly clear when recalling \eqref{eq:CX_pr} and \eqref{eq:CZ_pr}.
\end{lemma}
\begin{proof}
Let $\alpha, \beta \in [0, 2\pi)$ be some phases, $\ket{\psi}, \ket{\varphi}, \ket{\psi'} := \exp(i\alpha)\ket{\psi}, \ket{\varphi'} := \exp(i\beta)\ket{\varphi}$ some single qbit states,
$M, N, \ket{a}, \ket{b}, C^{M,N}(i,j)$ as defined above.
\begin{equation}
\begin{aligned}
C^{M,N}(1, 0) (\ket{\psi'}\otimes\ket{\varphi'}) & = \ket{a}\braket{a}{\varphi'}\otimes M\ket{\psi'} + \ket{b}\braket{b}{\varphi'} \otimes N\ket{\psi'} \\
& = \exp(i\beta)\ket{a}\braket{a}{\varphi}\otimes\exp(i\alpha)M\ket{\phi} + \exp(i\beta)\ket{b}\braket{b}{\varphi}\otimes\exp(i\alpha)N\ket{\phi}\\
& = \exp(i(\beta + \alpha))(\ket{a}\braket{a}{\varphi}\otimes M\ket{\psi} + \ket{b}\braket{b}{\varphi} \otimes N\ket{\psi})\\
& = \exp(i(\beta + \alpha))C^{M,N}(1, 0) (\ket{\psi}\otimes\ket{\varphi})
\end{aligned}
\end{equation}
Where $\exp(i(\beta + \alpha))$ is a multi-qbit-global phase which can be (following the above argumentation) disregarded.
\end{proof}
\begin{corrolary}
One can disregard global phases of elements of the $C_L$ group.
\end{corrolary}
\begin{proof}
As it has been shown above a quantum computer cannot measure global phases. Also
the entanglement gates $CX, CZ$ map qbit-global phases to multi-qbit-global phases which cannot
be measured. It has been shown above that one can choose the $C_L$ operators such that they do not yield
a phase.
\end{proof}
\subsection{Graph Storage}
@@ -14,3 +133,11 @@ in simulation performance and a lower memory requirement. The simulation of
at least $10^6$ qbits on a common desktop computer should be possible\cite{andersbriegel2005}.
Therefore one has to take care when choosing a representation of the graph state.
The following
FIXME
\subsection{Usage}
FIXME
\subsection{Performance}
FIXME

View File

@@ -2,6 +2,7 @@
\section{Introduction to Binary Quantum Computing}
\subsection{Single Qbits}
\label{ref:singleqbitsystems}
A qbit is a two-level quantum mechanical system $ \{\ket{\uparrow} \equiv \ket{1}, \ket{\downarrow} \equiv \ket{0}\} $
with $\braket{\uparrow}{\downarrow} = 0$. One can associate
@@ -14,10 +15,18 @@ $\forall G \in U(2)$ $G$ can be arbitrarily good as a product of unitary generat
common choices for the generators are $ X, H, R_{\phi}$ and $Z, H, R_{\phi}$ with
\label{ref:singleqbitgates}
$$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)$$
\begin{equation}
X := \left(\begin{array}{cc} 0 & 1 \\ 1 & 0\end{array}\right)
\end{equation}
\begin{equation}
Z := \left(\begin{array}{cc} 1 & 0 \\ 0 & -1\end{array}\right)
\end{equation}
\begin{equation}
H := \frac{1}{\sqrt{2}}\left(\begin{array}{cc} 1 & 1 \\ 1 & -1\end{array}\right)
\end{equation}
\begin{equation}
R_{\phi} := \left(\begin{array}{cc} 1 & 0 \\ 0 & \exp(i\phi)\end{array}\right)
\end{equation}
\subsection{$N$ Qbit Systems}
\label{ref:nqbitsystems}
@@ -30,29 +39,60 @@ states. The $N$ qbit operators are the tensor product of the $N$ single qbit ope
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
$$ \ket{0} := \ket{0b00} := \ket{0}_s \otimes \ket{0}_s := \left(\begin{array}{c} 1 \\ 0 \\ 0 \\ 0 \end{array} \right)$$
$$ \ket{1} := \ket{0b01} := \ket{0}_s \otimes \ket{1}_s := \left(\begin{array}{c} 0 \\ 1 \\ 0 \\ 0 \end{array} \right)$$
$$ \ket{2} := \ket{0b10} := \ket{1}_s \otimes \ket{0}_s := \left(\begin{array}{c} 0 \\ 0 \\ 1 \\ 0 \end{array} \right)$$
$$ \ket{3} := \ket{0b11} := \ket{1}_s \otimes \ket{1}_s := \left(\begin{array}{c} 0 \\ 0 \\ 0 \\ 1 \end{array} \right)$$
\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
basis states:
$$ \ket{\psi} = \sum\limits_{i = 0}^{2^N - 1} c_i \ket{i} $$
$$ \sum\limits_{i = 0}^{2^N - 1} |c_i|^2 = 1$$
\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}
FIXME: rewrite this.
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}.
The matrix representation of $CX$ and $CZ$ for two qbits is given by
$$ 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)$$
$$ 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)$$
\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}
Where $1$ is the act-qbit and $0$ the control-qbit. In words $CX$ ($CZ$) apply an $X$ ($Z$) gate on the act-qbit,
if the control-qbit is set.
The following notation\cite{dahlberg_ea2019} can be more handy when discussing more qbits:
\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}
Where $i$ is the act-qbit, $j$ the control-qbit and $I_i$, $Z_i$ are the identity and Pauli $Z$ gate
operating on qbit i.
\subsection{Measurement}
\begin{postulate}
@@ -75,4 +115,6 @@ Measuring a qbit will also yield a classical result $0$ or $1$ with the respecti
\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}

View File

@@ -8,15 +8,46 @@ such an algorithm is essential for education.
\subsection{Simulator Core}
Recalling \ref{ref:nqbitsystems} an arbitrary state $\ket{\psi}$ can be written as such:
Recalling \ref{ref:nqbitsystems} an arbitrary $N$ qbit state $\ket{\psi}$ can be written as such:
$$ \ket{\psi} = \sum\limits_{i = 0}^{2^N - 1} c_i \ket{i} $$
\begin{equation}
\ket{\psi} = \sum\limits_{i = 0}^{2^N - 1} c_i \ket{i}
\end{equation}
Which yields $2^N$ coefficients $c_i = \braket{\psi}{i}$. These coefficients are used to
store the quantum mechanical state of the simulator and are stored in numpy arrays \cite{numpy_array}.
store the quantum mechanical state of the simulator and are stored in NumPy arrays \cite{numpy_array}.
They can be modified and viewed without overhead
using python and allow fast modification using so-called NumPy ufuncs\cite{numpy_ufunc}.
A simulator state also contains a classical state which is a length $N$ integer array containing
the measured classical bits with a default value of $-1$.
The gates are implemented as NumPy ufuncs which allows
The gates are implemented as NumPy ufuncs which allows an efficient
manipulation of NumPy arrays using C code. Every gate maps a length $2^N$
\lstinline[basicstyle=\ttfamily, language=Python]{numpy.cdouble} and a length
$N$ \lstinline[basicstyle=\ttfamily, language=Python]{numpy.int8} array to
a length $2^N$ \lstinline[basicstyle=\ttfamily,
language=Python]{numpy.cdouble}, a length $N$ \lstinline[basicstyle=\ttfamily,
language=Python]{numpy.int8} and a \lstinline[basicstyle=\ttfamily,
language=Python]{numpy.uint64} scalar. The \lstinline[basicstyle=\ttfamily,
language=Python]{numpy.cdouble} arrays are the quantum mechanical state before
and after the gate; the \lstinline[basicstyle=\ttfamily,
language=Python]{numpy.int8} arrays are the respective classical states and the
\lstinline[basicstyle=\ttfamily, language=Python]{numpy.uint64} scalar has
a logical one at every bit that has been measured.
\subsection{Implemented Gates}
As stated in \ref{ref:singleqbitsystems} and \ref{ref:nqbitsystems} a just a small set of gates is required to
approximate an arbitrary unitary matrix arbitrarily good. In principle just the $X$, $R_\phi$, $H$ and $CNOT$ gate
would be sufficient for a simulator. As however both $X$ and $Z$ are often used in practice FIXME: CITATION NEEDED
$X$, $Z$, $R_\phi$, $H$ and $CNOT$ are implemented. They can be accessed using
\lstinline[basicstyle=\ttfamily]{pyqcs.X}, \lstinline[basicstyle=\ttfamily]{pyqcs.Z}, \lstinline[basicstyle=\ttfamily]{pyqcs.R},
\lstinline[basicstyle=\ttfamily]{pyqcs.H} and \lstinline[basicstyle=\ttfamily]{pyqcs.C}.
\subsection{Usage}
FIXME
\subsection{Performance}
FIXME

View File

@@ -62,8 +62,32 @@
@article{
gottesman_aaronson2008,
title={Improved Simulation of Stabilizer Circuits}
title={Improved Simulation of Stabilizer Circuits},
year=2008,
author={Daniel Gottesman, Scott Aaronson}
author={Daniel Gottesman, Scott Aaronson},
note={https://arxiv.org/abs/quant-ph/0406196v5}
}
@article{
schlingenmann2001,
title={Stabilizer codes can be realized as graph codes},
year=2001,
author={D. Schlingemann},
note={https://arxiv.org/abs/quant-ph/0111080v1}
}
@article{
vandennest_ea2004,
title={Graphical description of the action of local Clifford transformations on graph states},
year=2004,
author={Maarten Van den Nest et al.},
note={PhysRevA.69.022316}
}
@article{
dahlberg_ea2019,
title={Counting single-qubit Clifford equivalent graph states is \#P-Complete},
year=2019,
author={Axel Dahlberg et al.},
note={https://arxiv.org/abs/1907.08024v1}
}

View File

@@ -9,12 +9,16 @@
\usepackage{geometry}
\usepackage{enumerate}
\usepackage{physics}
\usepackage{listings}
\geometry{left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}
\newtheorem{definition}{Definition}
\newtheorem{postulate}{Postulate}
\newtheorem{corrolary}{Corrolary}
\newtheorem{lemma}{Lemma}
\numberwithin{equation}{section}
\title{Development of an Extensible Quantum Computing
Simulator with a Focus on Simulation in the Graph Formalism }
@@ -42,6 +46,8 @@ Simulator with a Focus on Simulation in the Graph Formalism }
\include{chapters/naive_simulator}
\include{chapters/graph_simulator}
%\backmatter
\bibliographystyle{unsrt}