From 9d8fea39cc9f439beecc17924cb7d34623aa1185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kn=C3=BCttel?= Date: Sun, 29 Mar 2020 12:43:03 +0200 Subject: [PATCH] adapted to scrreprt --- thesis/chapters/appendix.tex | 10 +++++----- thesis/chapters/conclusion.tex | 2 +- thesis/chapters/implementation.tex | 28 +++++++++++++-------------- thesis/chapters/introduction.tex | 2 +- thesis/chapters/quantum_computing.tex | 14 +++++++------- thesis/chapters/stabilizer.tex | 28 +++++++++++++-------------- thesis/main.tex | 2 +- 7 files changed, 43 insertions(+), 43 deletions(-) diff --git a/thesis/chapters/appendix.tex b/thesis/chapters/appendix.tex index ef0fd48..45410a8 100644 --- a/thesis/chapters/appendix.tex +++ b/thesis/chapters/appendix.tex @@ -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 diff --git a/thesis/chapters/conclusion.tex b/thesis/chapters/conclusion.tex index b396201..f32a2a7 100644 --- a/thesis/chapters/conclusion.tex +++ b/thesis/chapters/conclusion.tex @@ -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 diff --git a/thesis/chapters/implementation.tex b/thesis/chapters/implementation.tex index df726af..89575fd 100644 --- a/thesis/chapters/implementation.tex +++ b/thesis/chapters/implementation.tex @@ -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 diff --git a/thesis/chapters/introduction.tex b/thesis/chapters/introduction.tex index 5d9240a..84c0b74 100644 --- a/thesis/chapters/introduction.tex +++ b/thesis/chapters/introduction.tex @@ -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 diff --git a/thesis/chapters/quantum_computing.tex b/thesis/chapters/quantum_computing.tex index 341f6f5..803cc23 100644 --- a/thesis/chapters/quantum_computing.tex +++ b/thesis/chapters/quantum_computing.tex @@ -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 diff --git a/thesis/chapters/stabilizer.tex b/thesis/chapters/stabilizer.tex index 1bc348e..e253dcc 100644 --- a/thesis/chapters/stabilizer.tex +++ b/thesis/chapters/stabilizer.tex @@ -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 diff --git a/thesis/main.tex b/thesis/main.tex index eebef85..d7b7cf8 100644 --- a/thesis/main.tex +++ b/thesis/main.tex @@ -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}