adapted to scrreprt

This commit is contained in:
Daniel Knüttel 2020-03-29 12:43:03 +02:00
parent 1c0c98eddf
commit 9d8fea39cc
7 changed files with 43 additions and 43 deletions

View File

@ -1,7 +1,7 @@
% vim: ft=tex
\section{Appendix}
\chapter{Appendix}
\subsection{Source Code for the Benchmarks}
\section{Source Code for the Benchmarks}
\label{ref:code_benchmarks}
The benchmarks used in \ref{ref:performance} are done using this code. Note
@ -25,7 +25,7 @@ The code used to benchmark the three regimes is analogous and not included here.
\lstinputlisting[title={Code for Measuring and Computing the Execution Time and Statistics}, language=Python, breaklines=true]{../performance/measure_circuit.py}
\subsection{Complete Graphical States from the Three Regimes}
\section{Complete Graphical States from the Three Regimes}
\label{ref:complete_graphs}
Because the whole graphs are barely percetible windows have been used
@ -54,7 +54,7 @@ Figure \ref{fig:graph_intermediate_regime_full} and Figure \ref{fig:graph_high_l
\label{fig:graph_high_linear_regime_full}
\end{figure}
\subsection{Code to Generate the Example Graphs}
\section{Code to Generate the Example Graphs}
\label{ref:code_example_graphs}
This code has been used to generate the example graphs used in
@ -66,7 +66,7 @@ code is converted to an image using
\lstinputlisting[title={Code used to Generate the Example Graphs}, language=Python, breaklines=true]{../performance/regimes/graph_intermediate_regime.py}
\subsection{Code to Benchmark \lstinline{ufunc} Gates against Python}
\section{Code to Benchmark \lstinline{ufunc} Gates against Python}
\label{ref:benchmark_ufunc_py}
It has been mentioned several times that the implementation using

View File

@ -1,5 +1,5 @@
% vim: ft=tex
\section{Conclusion and Outlook}
\chapter{Conclusion and Outlook}
As seen in \ref{ref:performance} simulation using stabilizers is exponentially
faster than simulating using state vectors. Using a graphical representation

View File

@ -1,5 +1,5 @@
% vim: ft=tex
\section{Implementation}
\chapter{Implementation}
This chapter discusses how the concepts introduced before are implemented into
a simulator. Futher the infrastructure around the simulation and some tools are
@ -11,9 +11,9 @@ amplitudes. Full access to the state (including intermediate states) has been
priorized over execution speed. To keep the simulation speed as high as
possible under these constraints some parts are implemented in \lstinline{C}.
\subsection{Dense State Vector Simulation}
\section{Dense State Vector Simulation}
\subsubsection{Representation of Dense State Vectors}
\subsection{Representation of Dense State Vectors}
Recalling \eqref{eq:ci} any $n$-qbit state can be represented as a $2^n$
component vector in the integer state basis. This representation has some
@ -50,7 +50,7 @@ the order of $1 \mbox{ GiB}$ which is in the range of usual RAM sizes for
personal computers. For higher qbit numbers moving to high performance
computers and other simulators is necessary.
\subsubsection{Gates}
\subsection{Gates}
Gates on dense state vectors are implemented as NumPy Universal Functions
(ufuncs) \cite{numpy_ufunc} mapping a classical and a quantum state to a new
@ -83,7 +83,7 @@ To allow the implementation of possible hardware related gates the class
\lstinline{GenericGate} takes a unitary $2\times2$ matrix as a NumPy
\lstinline{cdouble} array and builds a gate from it.
\subsubsection{Circuits}
\subsection{Circuits}
\label{ref:pyqcs_circuits}
As mentioned in \ref{ref:quantum_circuits} quantum circuits are central in
@ -160,9 +160,9 @@ Out[2]: (0.7071067811865476+0j)*|0b0>
\end{lstlisting}
%}
\subsection{Graphical State Simulation}
\section{Graphical State Simulation}
\subsubsection{Graphical States}
\subsection{Graphical States}
For the graphical state $(V, E, O)$ the list of vertices $V$ can be stored implicitly
by demanding $V = \{0, ..., n - 1\}$. This leaves two components that have to be stored:
@ -225,7 +225,7 @@ adjacency lists are stored in a length $n$ array.
Using this storage method all operations including searching and toggling edges
inherite their time complexity from the sorted linked list.
\subsubsection{Operations on Graphical States}
\subsection{Operations on Graphical States}
Operations on Graphical States are divided into three classes: Local Clifford
operations, the CZ operation and measurements. The graphical states are
@ -256,7 +256,7 @@ described in \ref{ref:pyqcs_circuits} and provides the method
\lstinline{GraphState.to_naive_state} to convert the graphical state to a dense
vector state.
\subsubsection{Pure C Implementation}
\subsection{Pure C Implementation}
Because python tends to be rather slow \cite{benchmarkgame} and might not run on any architecture
a pure \lstinline{C} implementation of the graphical simulator is also provided.
@ -274,13 +274,13 @@ always done in three steps:
file and writing the sampling results to either a file or \lstinline{stdout}. }
\end{enumerate}
\subsection{Utilities}
\section{Utilities}
To make both using the simulators more convenient and to help with using them
in as scientific or educational context several utilities have been written.
This chapter explains some of them.
\subsubsection{Sampling and Circuit Generation}
\subsection{Sampling and Circuit Generation}
The function \lstinline{pyqcs.sample} provides a simple way to sample from
a state. Copies of the state are made when necessary and the results are
@ -318,7 +318,7 @@ dense vector state. Further it is a way to optimize circuits and later run them
other simulators. Also the circuits can be exported to \lstinline{qcircuit} code
(see below) which is a relatively readable way to represent graphical states.
\subsubsection{Exporting and Flattening Circuits}
\subsection{Exporting and Flattening Circuits}
Circuits can be drawn using the \LaTeX package \lstinline{qcircuit}; all
circuits in this documents use \lstinline{qcircuit}. To visualize the circuits
@ -336,7 +336,7 @@ The function \\
to a list of single gate circuits that can be analyzed or exported easily.
\subsection{Performance}
\section{Performance}
\label{ref:performance}
To test the performance and compare it to the dense vector simulator the python
@ -498,7 +498,7 @@ lengths it is important to account for this virtual performance boost when
comparing with other simulation methods. This explains why the circuit length
in Figure \ref{fig:scaling_qbits_linear} had to be scaled with the qbit number.
\subsection{Future Work}
\section{Future Work}
Although the simulator(s) are in a working state and have been tested there is
still some work that can be done. A noise model helping to teach and analyze

View File

@ -1,5 +1,5 @@
% vim: ft=tex
\section{Introduction}
\chapter{Introduction}
Quantum computing has been a rapidly growing field over the last years with
many companies and institutions working on building and using quantum computers

View File

@ -1,13 +1,13 @@
% vim: ft=tex
\section{Quantum Computing}
\chapter{Quantum Computing}
This chapter gives an introduction to binary quantum computing
and some basic properties of quantum systems such as measurement
and time evolution. It is based on \cite{nielsen_chuang_2010}
but introduces a notation that will often be different.
\subsection{Qbits and Gates}
\subsubsection{Single Qbits}
\section{Qbits and Gates}
\subsection{Single Qbits}
\begin{definition}
A qbit is a two-level quantum mechanical system \cite{nielsen_chuang_2010}, i.e. it has the eigenbasis
@ -66,7 +66,7 @@ and will be used in some calculations later:
\end{aligned}
\end{equation}
\subsubsection{Many-Qbit Systems}
\subsection{Many-Qbit Systems}
\label{ref:many_qbits}
\begin{postulate}
@ -172,7 +172,7 @@ The matrix representation of $CX$ and $CZ$ for two qbits is given by
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}
\subsection{Measurements}
\begin{postulate}
Let
@ -207,7 +207,7 @@ In the following discussion the term \textit{measurement gate} will be used from
to time as a measurement can be treated similarly while doing numerics.
\subsection{Quantum Circuits}
\section{Quantum Circuits}
\label{ref:quantum_circuits}
As mentioned in \ref{ref:many_qbits} one can approximate an arbitrary $n$-qbit
@ -245,7 +245,7 @@ Several qbits can be abbreviated by writing a slash on the qbit line:
\]
\subsection{Quantum Algorithms}
\section{Quantum Algorithms}
\label{ref:quantum_algorithms}
The great hope behind quantum computing is that it will speed up some

View File

@ -1,6 +1,6 @@
% vim: ft=tex
\section{The Stabilizer Formalism}
\chapter{The Stabilizer Formalism}
The stabilizer formalism was originally introduced by Gottesman
\cite{gottesman1997} for quantum error correction and is a useful tool to
@ -14,9 +14,9 @@ can be simulated in polynomial time on a classical machine
\cite{gottesman2008}. This performance has since been improved to $n\log(n)$
time on average \cite{andersbriegel2005}.
\subsection{Stabilizers and Stabilizer States}
\section{Stabilizers and Stabilizer States}
\subsubsection{Local Pauli Group and Multilocal Pauli Group}
\subsection{Local Pauli Group and Multilocal Pauli Group}
\begin{definition}
\begin{equation}
@ -44,7 +44,7 @@ directly from its definition via the tensor product.
%Further are $p \in P_n$ hermitian and have the eigenvalues $\pm 1$ for
%$p \neq \pm I$, $+1$ for $p = I$ and $-1$ for $p = -I$.
\subsubsection{Stabilizers}
\subsection{Stabilizers}
The discussion below follows the argumentation given in \cite{nielsen_chuang_2010}.
@ -103,7 +103,7 @@ In the following discussions $\langle S^{(i)} \rangle_{i=0, ..., n-1}$ will be
used as the required properties of a set of stabilizers that can be studied on
its generators.
\subsubsection{Stabilizer States}
\subsection{Stabilizer States}
\label{ref:stab_states}
One important basic insight from quantum mechanics is that hermitian operators
@ -143,7 +143,7 @@ In the following discussions for $n$ qbits a set $S = \langle S^{(i)}
\rangle_{i=1,...,n}$ of $n$ independent stabilizers will be assumed.
\subsubsection{Dynamics of Stabilizer States}
\subsection{Dynamics of Stabilizer States}
\label{ref:dynamics_stabilizer}
Consider a $n$ qbit state $\ket{\psi}$ that is the $+1$ eigenstate of $S
@ -219,7 +219,7 @@ have to be modified, each being just the tensor product of $n$ Pauli matrices.
This has led to the simulation using stabilizer tableaux
\cite{gottesman_aaronson2008}\cite{CHP}.
\subsubsection{Measurements on Stabilizer States} \label{ref:meas_stab}
\subsection{Measurements on Stabilizer States} \label{ref:meas_stab}
Interestingly also measurements are dynamics covered by the stabilizers
\cite{nielsen_chuang_2010}. When an observable $g_a \in \{\pm X_a, \pm Y_a,
@ -292,12 +292,12 @@ and $s=0$ are obtained with probability $\frac{1}{2}$ and after choosing a $j
\cite{nielsen_chuang_2010}.
\end{proof}
\subsection{The VOP-free Graph States}
\section{The VOP-free Graph States}
This section will discuss the vertex operator (VOP)-free graph states. Why they
are called vertex operator-free will be clear in the following section about
graph states.
\subsubsection{VOP-free Graph States}
\subsection{VOP-free Graph States}
\begin{definition} \label{def:graph} The tuple $(V, E)$ is called a graph iff
$V$ is a set of vertices with $|V| = n \in \mathbb{N}$ elements. In the
@ -446,7 +446,7 @@ graph.
%of $K_G^{(i)}$ and $\ket{\tilde{G}}$.
\end{proof}
\subsubsection{Dynamics of the VOP-free Graph States}
\subsection{Dynamics of the VOP-free Graph States}
This representation gives an immediate result to how the stabilizers $\langle
K_G^{(i)} \rangle_i$ change under the $CZ$ gate: When applying $CZ_{i,j}$ on $G
@ -550,7 +550,7 @@ $\langle\left\{K_G^{(i)} \middle| i \notin n_a\right\} \cup \left\{K_{G'}^{(i)}
Therefore the associated graph is changed as given in the third equation.
\end{proof}
\subsection{Graph States}
\section{Graph States}
The definition of a VOP-free graph state above raises an obvious question: Can
any stabilizer state be described using just a graph? The answer is straight
@ -567,7 +567,7 @@ $C_L$ and $CZ$ can be applied to a general graph state
required to map a stabilizer state to a VOP-free graph state \cite{andersbriegel2005}.
}.
\subsubsection{Graph States and Vertex Operators}
\subsection{Graph States and Vertex Operators}
\label{ref:g_states_vops}
\begin{definition}
@ -639,7 +639,7 @@ operation on graph states \cite{andersbriegel2005}.
\end{equation}
\subsubsection{Dynamics of Graph States}
\subsection{Dynamics of Graph States}
\label{ref:dynamics_graph}
So far the graphical representation of stabilizer states is just another way to
@ -774,7 +774,7 @@ that the graphical representation of a stabilizer state is indeed able to
represent any stabilizer state. If one wants to do computations using this
formalism it is however also necessary to perform measurements.
\subsubsection{Measurements on Graph States}
\subsection{Measurements on Graph States}
\label{ref:meas_graph}
This is adapted from \cite{andersbriegel2005}; measurement results and updating

View File

@ -1,4 +1,4 @@
\documentclass[a4paper,12pt,numbers=noenddot,egregdoesnotlikesansseriftitles]{scrartcl}
\documentclass[a4paper,12pt,numbers=noenddot]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{amssymb, amsthm}