adapted to scrreprt
This commit is contained in:
parent
1c0c98eddf
commit
9d8fea39cc
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in New Issue
Block a user