16 Commits

13 changed files with 3120 additions and 580 deletions

9
.tmux_session.sh Executable file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
SESSION=$1
tmux send-keys -t "$SESSION:1" "cd ~/workspace/private/ma-thesis/" Enter
tmux send-keys -t "$SESSION:1" "./.setup_local_env.sh" Enter
# tmux send-keys -t "$SESSION:1" "export TEXINPUTS=./lib/cel-slides-template-2025:\$TEXINPUTS" C-m
tmux send-keys -t "$SESSION:1" "trap './.clean_local_env.sh' EXIT" Enter
tmux send-keys -t "$SESSION:1" "nvim" Enter
tmux send-keys -t "$SESSION:1" "\\ll" Enter

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

1436
src/thesis/MA.bib Normal file

File diff suppressed because it is too large Load Diff

19
src/thesis/acronyms.tex Normal file
View File

@@ -0,0 +1,19 @@
\DeclareAcronym{qec}{
short=QEC,
long=quantum error correction
}
\DeclareAcronym{bp}{
short=BP,
long=belief propagation
}
\DeclareAcronym{sc}{
short=SC,
long=spatially coupled
}
\DeclareAcronym{ldpc}{
short=LDPC,
long=low-density parity-check
}

View File

@@ -0,0 +1 @@
\chapter{Introduction}

View File

@@ -0,0 +1,321 @@
\chapter{Fundamentals}
\label{ch:Fundamentals}
\Ac{qec} is a field of research combining ``classical''
communications engineering and quantum information science.
This chapter provides the relevant theoretical background on both of
these topics and subsequently introduces the the fundamentals of \ac{qec}.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Classical Error Correction}
\label{sec:Classical Error Correction}
% TODO: Maybe rephrase: The core concept is not the realization, its's the
% thing itself
The core concept underpinning error correcting codes is the
realization that a finite amount of redundancy, introduced
deliberately and systematically to information before its
tranmission, can be utilized to reduce the error rate of a
communications system considerably.
This idea has been expanded upon significantly since it was first
brought forward by Claude Shannon in 1948 \cite{shannon_mathematical_1948}.
In this section, we explore the concepts of ``classical'' (as in non-quantum)
error correction that are central to this work.
We start by looking at different ways of encoding information,
first considering binary linear block codes in general and then \ac{ldpc} and
\ac{sc}-\ac{ldpc} codes.
Finally, we pivot to the decoding process, specifically the \ac{bp}
algorithm.
% TODO: Is an explanation of BP with guided decimation needed here?
% TODO: Is an explanation of OSD needed here?
\subsection{Binary Linear Block Codes}
\red{
\begin{itemize}
\item Note that binary linear codes are not the only coding
scheme out there
\end{itemize}
}
Binary linear block codes split the information to be protected into
separate blocks.
Each block is encoded, transmitted, and decoded separately.
The encoding step introduces redundancy by mapping \textit{data words} of
length $k \in \mathbb{N}$ onto \textit{codewords} of length $n \in \mathbb{N}$
with $n > k$.
The number of words stays the same, but they are mapped into an
expanded Hilbert space where they are ``further appart'', giving rise
to the error correcting properties of the coding scheme.
Figure \ref{fig:Diagram of a transmission system} visualizes the
entire communication process.
A data word $\bm{u}\in \mathbb{F}_2^k$ is mapped onto a codeword $\bm{x}
\in \mathbb{F}_2^n$. This is passed on to a transmitter, which
interacts with the physical channel.
A receiver acquires the message $\bm{y} \in \mathbb{R}^n$ and
forwards it to a decoder.
Finally, the decoder is responsible for obtaining an estimate
$\hat{\bm{u}} \in \mathbb{F}_2^k$ of the original codeword from the
received message.
\vspace{10mm}
For linear codes, this encoding process can be described as%
%
\begin{align*}
\bm{x} = \bm{u}\bm{G},
\end{align*}%
%
using a generator matrix $\bm{G} \in \mathbb{F}_2^{k\times n}$.
% We call the set of all codewords the codespace $\mathcal{C}$.
% $\mathcal{C} = \left\{ \bm{x} \in \mathbb{F}_2^n :
% \bm{H}\bm{x}^\text{T} = \bm{0} \right\}$.
\begin{figure}[H]
\centering
\begin{tikzpicture}
\node[] (in) {$\bm{u}$};
\node[rectangle, draw=black, right=of in] (enc) {Encoder};
\node[rectangle, draw=black, right=of enc] (tra) {Transmitter};
\node[rectangle, draw=black, right=of tra] (cha) {Channel};
\node[rectangle, draw=black, right=of cha] (rec) {Receiver};
\node[rectangle, draw=black, right=of rec] (dec) {Decoder};
\node[right=of dec] (out) {$\hat{\bm{u}}$};
\draw[-{latex}] (in) -- (enc);
\draw[-{latex}] (enc) -- (tra);
\draw[-{latex}] (tra) -- (cha);
\draw[-{latex}] (cha) -- (rec);
\draw[-{latex}] (rec) -- (dec);
\draw[-{latex}] (dec) -- (out);
\end{tikzpicture}
\caption{Diagram of a transmission system}
\label{fig:Diagram of a transmission system}
\end{figure}
\red{
\textbf{Topics to cover}
\begin{itemize}
\item Parity checks and describing a code by $H$ rather than
$\mathcal{C}$
\item G, H, notation
\item Minimum distance, [] - notation
\item The syndrome
\item The decoding problem
\item Soft vs. Hard information
\end{itemize}
}
\red{
\textbf{General Notes:}
\begin{itemize}
\item Make sure all coding concepts used later on have been
introduced (e.g., code rate?)
\end{itemize}
}
\subsection{Low-Density Parity-Check Codes}
\red{
\begin{itemize}
\item Core concept (Large $n$ with manageable complexity)
\item Tanner graphs, VNs and CNs
\end{itemize}
}
\subsection{Spatially-Coupled LDPC Codes}
\red{
\begin{itemize}
\item Core idea
\item Mathematical description (H)
\end{itemize}
}
\subsection{Belief Propagation}
\red{
\begin{itemize}
\item Core idea
\item BP for SC-LDPC codes
\end{itemize}
}
\section{Quantum Mechanics and Quantum Information Science}
\label{sec:Quantum Mechanics and Quantum Information Science}
% TODO: Should the brief intro to QC be made later on or here?
%%%%%%%%%%%%%%%%
\subsection{Core Concepts and Notation}
\label{subsec:Notation}
\ldots can be very elegantly expressed using the language of
linear algebra.
\todo{Mention that we model the state of a quantum mechanical system
as a vector}
The so called Bra-ket or Dirac notation is especially appropriate,
having been proposed by Paul Dirac in 1939 for the express purpose
of simplifying quantum mechanical notation \cite{dirac_new_1939}.
Two new symbols are defined, \emph{bra}s $\bra{\cdot}$ and
\emph{ket}s $\ket{\cdot}$.
Kets denote ordinary vectors, while bras denote their Hermitian conjugates.
For example, two vectors specified by the labels $a$ and $b$
respectively are written as $\ket{a}$ and $\ket{b}$.
Their inner product is $\braket{a\vert b}$.
\red{\textbf{Tensor product}}
\red{\ldots
\todo{Introduce determinate state or use a different word?}
Take for example two systems with the determinate states $\ket{0}$
and $\ket{1}$. In general, the state of each can be written as the
superposition%
%
\begin{align*}
\alpha \ket{0} + \beta \ket{1}
.%
\end{align*}
%
Combining these two sytems into one, the overall state becomes%
%
\begin{align*}
&\mleft( \alpha_1 \ket{0} + \beta_1 \ket{1} \mright) \otimes
\mleft( \alpha_2 \ket{0} + \beta_2 \ket{1} \mright) \\
= &\alpha_1 \alpha_2 \ket{0} \ket{0}
+ \alpha_1 \alpha_2 \ket{0} \ket{1}
+ \beta_1 \alpha_2 \ket{1} \ket{0}
+ \beta_1 \beta_2 \ket{1} \ket{1}
% =: &\alpha_{00} \ket{00}
% + \alpha_{01} \ket{01}
% + \alpha_{10} \ket{10}
% + \alpha_{11} \ket{11}
.%
\end{align*}%
%
\ldots When not ambiguous in the context, the tensor product
symbol may be omitted, e.g.,
\begin{align*}
\ket{0} \otimes \ket{0} = \ket{0}\ket{0}
.%
\end{align*}
}
As we will see, the core concept that gives quantum computing its
power is entanglement. When two quantum mechanical systems are
entangled, measuring the state of one will collapse that of the other.
Take for example two subsystems with the overall state
%
\begin{align*}
\ket{\psi} = \frac{1}{\sqrt{2}} \mleft( \ket{0}\ket{0} +
\ket{1}\ket{1} \mright)
.%
\end{align*}
%
If we measure the first subsystem as being in $\ket{0}$, we can
be certain that a measurement of the second subsystem will also yield $\ket{0}$.
Introducing a new notation for entangled states, we can write%
%
\begin{align*}
\ket{\psi} = \frac{1}{\sqrt{2}} \left( \ket{00} + \ket{11} \right)
.%
\end{align*}
%
\subsection{Projective Measurements}
\label{subsec:Projective Measurements}
% TODO: Write
%%%%%%%%%%%%%%%%
\subsection{Quantum Gates}
\label{subsec:Quantum Gates}
\red{
\textbf{Content:}
\begin{itemize}
\item Bra-ket notation
\item The tensor product
\item Projective measurements (the related operators,
eigenvalues/eigenspaces, etc.)
\begin{itemize}
\item First explain what an operator is
\end{itemize}
\item Abstract intro to QC: Use gates to process qubit
states, similar to classical case
\item X, Z, Y operators/gates
\item Hadamard gate (+ X and Z are the same thing in differt bases)
\item Notation of operators on multi-qubit states
\item The Pauli, Clifford and Magic groups
\end{itemize}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Quantum Error Correction}
\label{sec:Quantum Error Correction}
\red{
\textbf{Content:}
\begin{itemize}
\item General context
\begin{itemize}
\item Why we want QC
\item Why we need QEC (correcting errors due to noisy gates)
\item Main challenges of QEC compared to classical
error correction
\end{itemize}
\item Stabilizer codes
\begin{itemize}
\item Definition of a stabilizer code
\item The stabilizer its generators (note somewhere
that the generators have to commute to be able to
be measured without disturbing each other)
\item syndrome extraction circuit
\item Stabilizer codes are effectively the QM
% TODO: Actually binary linear codes or just linear codes?
equivalent of binary linear codes (e.g.,
expressible via check matrix)
\end{itemize}
\item Digitization of errors
\item CSS codes
\item Color codes?
\item Surface codes?
\item Fault tolerant error correction (gates with which we do
error correction are also noisy)
\begin{itemize}
\item Transversal operations
\item \dots
\end{itemize}
\item Circuit level noise
\item Detector error model
\begin{itemize}
\item Columns of the check matrix represent different
possible error patterns $\rightarrow$ Check matrix
doesn't quite correspond to the codewords we used
initially anymore, but some similar structure ist
still there (compare with syndrome)
\end{itemize}
\end{itemize}
\textbf{General Notes:}
\begin{itemize}
\item Give a brief overview of the history of QEC
\item Note (and research if this is actually correct) that QC
was developed on an abstract level before thinking of
what hardware to use
\item Note that there are other codes than stabilizer codes
(and research and give some examples), but only
stabilizer codes are considered in this work
\item Degeneracy
\item The QEC decoding problem (considering degeneracy)
\end{itemize}
}
\subsection{Stabilizer Codes}
\subsection{CSS Codes}
\subsection{Quantum Low-Density Parity-Check Codes}

View File

@@ -0,0 +1,13 @@
\chapter{Fault Tolerant QEC}
\section{Fault Tolerance}
\section{Noise Models}
\subsection{Depolarizing Channel}
\subsection{Phenomenological Noise}
\subsection{Circuit-Level Noise}
\section{Detector Error Models}
\subsection{Measurement Syndrome Matrix}
\subsection{Detector Error Matrix}
\subsection{Detector Error Models}
\section{Practical Considerations}
\subsection{Practical Methodology}
\subsection{Stim}

View File

@@ -0,0 +1,5 @@
\chapter{Decoding under Detector Error Models}
\section{Sliding-Window Decoding}
\section{Treating Detector Error Matrices like SC-LDPC Codes}
\section{Soft-Information Aware Sliding-Window Decoding}
\section{Numerical Results and Analysis}

View File

@@ -0,0 +1 @@
\chapter{Conclusion and Outlook}

66
src/thesis/main.tex Normal file
View File

@@ -0,0 +1,66 @@
\documentclass[dvipsnames]{report}
\usepackage[a4paper,left=3cm,right=3cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{float}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mleftright}
\usepackage{bm}
\usepackage{tikz}
\usepackage{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{acro}
\usepackage{braket}
\usepackage[
backend=biber,
style=ieee,
sorting=nty,
]{biblatex}
\usepackage{todonotes}
\usetikzlibrary{calc, positioning, arrows}
%
%
% Custom commands
%
%
\newcommand{\red}[1]{\textcolor{red}{#1}}
%
%
% Acronyms
%
%
\input{acronyms.tex}
\addbibresource{src/thesis/MA.bib}
%
%
% Content
%
%
\title{Fault Tolerant Quantum Error Correction}
% \subtitle{Master's Thesis}
\author{Andreas Tsouchlos}
\begin{document}
\maketitle
\tableofcontents
\newpage
\input{chapters/1_introduction.tex}
\input{chapters/2_fundamentals.tex}
\input{chapters/3_fault_tolerant_qec.tex}
\input{chapters/4_decoding_under_dems.tex}
\input{chapters/5_conclusion_and_outlook.tex}
\printbibliography
\end{document}