From dc283012ba30e8f87b576ce4319e65fa609435a2 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Tue, 28 Apr 2026 23:45:44 +0200 Subject: [PATCH] Move figures in chapter 3 inbetween text --- src/thesis/acronyms.tex | 5 + src/thesis/bibliography.bib | 12 + src/thesis/chapters/2_fundamentals.tex | 2 +- src/thesis/chapters/3_fault_tolerant_qec.tex | 268 +++++++++++-------- 4 files changed, 181 insertions(+), 106 deletions(-) diff --git a/src/thesis/acronyms.tex b/src/thesis/acronyms.tex index 37084a8..5a17126 100644 --- a/src/thesis/acronyms.tex +++ b/src/thesis/acronyms.tex @@ -3,6 +3,11 @@ long=quantum error correction } +\DeclareAcronym{dem}{ + short=DEM, + long=detector error model +} + \DeclareAcronym{bp}{ short=BP, long=belief propagation diff --git a/src/thesis/bibliography.bib b/src/thesis/bibliography.bib index ab2f475..f1a3b09 100644 --- a/src/thesis/bibliography.bib +++ b/src/thesis/bibliography.bib @@ -1070,3 +1070,15 @@ year = {2021}, pages = {605}, } + +@article{chamberland_flag_2018, + title = {Flag fault-tolerant error correction with arbitrary distance codes}, + volume = {2}, + issn = {2521-327X}, + doi = {10.22331/q-2018-02-08-53}, + journal = {Quantum}, + author = {Chamberland, Christopher and Beverland, Michael E.}, + month = feb, + year = {2018}, + pages = {53}, +} diff --git a/src/thesis/chapters/2_fundamentals.tex b/src/thesis/chapters/2_fundamentals.tex index 12d8025..9fa71f6 100644 --- a/src/thesis/chapters/2_fundamentals.tex +++ b/src/thesis/chapters/2_fundamentals.tex @@ -99,7 +99,7 @@ prompting us to define the \ac{pcm} as $\bm{H} \in The \textit{syndrome} $\bm{s} = \bm{H} \bm{v}^\text{T}$ describes which parity checks a candidate codeword $\bm{v} \in \mathbb{F}_2^n$ violates. The representation using the \ac{pcm} has the benefit of providing a -description of the code, the memory complexity of which doesn't grow +description of the code, the memory complexity of which does not grow exponentially with $n$, in contrast to keeping track of all codewords directly. % diff --git a/src/thesis/chapters/3_fault_tolerant_qec.tex b/src/thesis/chapters/3_fault_tolerant_qec.tex index c49b776..7618db3 100644 --- a/src/thesis/chapters/3_fault_tolerant_qec.tex +++ b/src/thesis/chapters/3_fault_tolerant_qec.tex @@ -277,7 +277,47 @@ error locations. \label{fig:pure_syndrome_extraction} \end{figure} -\begin{figure}[t] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Detector Error Models} +\label{sec:Detector Error Models} + +\emph{Detector error models} (\acsp{dem}) constitue a standardized framework for +passing information about a circuit used for \ac{qec} to a decoder. +They are also useful as a theoretical tool to aid in the design of +fault-tolerant \ac{qec} schemes. +E.g., they can be used to easily determine whether a measurement +schedule is fault-tolerant \cite[Example~12]{derks_designing_2025}. + +Other approaches of implementing fault tolerance exist, such as +flag error correction, which uses additional ancilla qubits to detect +potentially damaging high-weight errors \cite[Sec.~1]{chamberland_flag_2018}. +However, \acp{dem} offer some unique advantages +\cite[Sec.~4.2]{derks_designing_2025}: +\begin{itemize} + \item They distinguish between errors based on their effect on + the measurements, not based on their location in the circuit. + This allows for merging equivalent errors, which decreases + decoding complexity. + \item Errors on the data qubits and on the measurements are + treated in a unified manner. This leads to a more powerful + description of the overall circuit. +\end{itemize} +In this work, we only consider the process of decoding under the +\ac{dem} framework. + +% Core idea + +To achieve fault tolerance, the goal we strive towards is to +consider the internal errors in addition to the input errors during +the decoding process. +The core idea behind detector error models is to do this by defining +a new \emph{circuit code} that describes the circuit. +Each \ac{vn} of this new code corresponds to an error location in the +circuit and each \ac{cn} corresponds to a to a syndrome measurement. +% This circuit code, combined with the prior probabilities of error +% given by the noise model, incorporates all information necessary for decoding. + +\begin{figure}[H] \centering \newcommand{\xerr}{\gate[style={fill=KITblue!50}]{\phantom{1}}} @@ -323,7 +363,7 @@ error locations. \label{subfig:bit_flip} \end{minipage} - \vspace*{5mm} + \vspace*{7mm} \begin{minipage}{\textwidth} \centering @@ -341,7 +381,7 @@ error locations. \label{subfig:depolarizing} \end{minipage} - \vspace*{5mm} + \vspace*{7mm} \begin{minipage}{\textwidth} \centering @@ -359,7 +399,7 @@ error locations. \label{subfig:phenomenological} \end{minipage} - \vspace*{5mm} + \vspace*{7mm} \begin{minipage}{\textwidth} \centering @@ -390,50 +430,12 @@ error locations. % tex-fmt: on \end{minipage} + \vspace*{5mm} + \caption{Types of noise models.} \label{fig:noise_model_types} \end{figure} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Detector Error Models} -\label{sec:Detector Error Models} - -\emph{Detector error models} (\acsp{dem}) constitue a standardized framework for -passing information about a circuit used for \ac{qec} to a decoder. -They are also useful as a theoretical tool to aid in the design of -fault-tolerant \ac{qec} schemes. -E.g., they can be used to easily determine whether a measurement -schedule is fault-tolerant \cite[Example~12]{derks_designing_2025}. - -Other approaches of implementing fault tolerance exist, such as -flag error correction, which uses additional ancilla qubits to detect -potentially damaging high-weight errors \cite[Sec.~1]{chamberland_flag_2018}. -However, \acp{dem} offer some unique advantages -\cite[Sec.~4.2]{derks_designing_2025}: -\begin{itemize} - \item They distinguish between errors based on their effect on - the measurements, not based on their location in the circuit. - This allows for merging equivalent errors, which decreases - decoding complexity. - \item Errors on the data qubits and on the measurements are - treated in a unified manner. This leads to a more powerful - description of the overall circuit. -\end{itemize} -In this work, we only consider the process of decoding under the -\ac{dem} framework. - -% Core idea - -To achieve fault tolerance, the goal we strive towards is to -consider the internal errors in addition to the input errors during -the decoding process. -The core idea behind detector error models is to do this by defining -a new \emph{circuit code} that describes the circuit. -Each \ac{vn} of this new code corresponds to an error location in the -circuit and each corresponds to a \ac{cn} to a syndrome measurement. -This circuit code, combined with the prior probabilities of error -given by the noise model, incorporates all information necessary for decoding. - %%%%%%%%%%%%%%%% \subsection{Measurement Syndrome Matrix} \label{subsec:Measurement Syndrome Matrix} @@ -471,7 +473,19 @@ syndrome measurements. We combine these measurements by stacking them in a new vector $\bm{s} \in \mathbb{F}_2^{n_\text{rounds}\cdot(n-k)}$. To accomodate the additional syndrome bits, we extend the -matrix $\bm{\Omega}$ representing the circuit by replicating the rows as well. +matrix $\bm{\Omega}$ representing the circuit by replicating the rows as well: +\begin{align*} + \bm{\Omega} = + \begin{pmatrix} + 1 & 1 & 0 \\ + 0 & 1 & 1 \\ + 1 & 1 & 0 \\ + 0 & 1 & 1 \\ + 1 & 1 & 0 \\ + 0 & 1 & 1 \\ + \end{pmatrix} + .% +\end{align*} Recall that $\bm{\Omega}$ describes which \ac{vn} is connected to which parity check and the syndrome indicates which parity checks are violated. @@ -486,11 +500,38 @@ We introduce new error locations at the respective positions, arriving at the circuit depicted in \autoref{fig:rep_code_multiple_rounds_phenomenological}. For each additional error location, we extend $\bm{\Omega}$ by -appending the corresponding syndrome vector as a column. +appending the corresponding syndrome vector as a column: +\begin{gather*} + \bm{\Omega} = + \left( + \begin{array}{ccccccccccccccc} + 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 + & 0 & 0 & 0 & 0 & 0 \\ + 0 & 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 + & 0 & 0 & 0 & 0 & 0 \\ + 1 & 1 & 0 & 0 & 0 & 1 & 1 & 0 & 1 & 0 + & 0 & 0 & 0 & 0 & 0 \\ + 0 & 1 & 1 & 0 & 0 & 0 & 1 & 1 & 0 & 1 + & 0 & 0 & 0 & 0 & 0 \\ + 1 & 1 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 + & 1 & 1 & 0 & 1 & 0 \\ + 0 & 1 & 1 & 0 & 0 & 0 & 1 & 1 & 0 & 0 + & 0 & 1 & 1 & 0 & 1 + \end{array} + \right) + .% +\end{gather*} +Notice that the first three columns correspond to the original +measurement syndrome matrix, as these columns correspond to the error +locations on the data qubits. \begin{figure}[t] \centering + \newcommand{\preperr}[1]{ + \gate[style={fill=blue!20}]{\scriptstyle #1} + } + \begin{minipage}{0.3\textwidth} \centering \begin{tikzpicture} @@ -540,14 +581,10 @@ appending the corresponding syndrome vector as a column. \end{gather*} \end{minipage} - \newcommand{\preperr}[1]{ - \gate[style={fill=blue!20}]{\scriptstyle #1} - } - \vspace*{5mm} \begin{quantikz}[ - row sep=4mm, column sep=4mm, + row sep=4mm, column sep=3.4mm, wire types={q,q,q,q,q,n,n,n,n}, execute at end picture={ \draw [ @@ -745,23 +782,51 @@ additions on the matrix $\bm{\Omega}$. % How to choose the detectors -% TODO: Give results from current and previous stage mathematical names +% TODO: Fix notation (n used for both number of measurements and +% measurements themselves) +% TODO: Properly define the ranges i and r belong to We still have a degree of freedom in how we choose the detectors. -\ldots +\red{[No way to automate this, NP-complete problem to find detectors +which yield highest sparity]} There is, however, one way of defining the detectors that will prove useful at a later stage. To the measurement results from each syndrome extraction round, we can add the results from the previous round, as illustrated in \autoref{fig:detectors_from_measurements_general}. -\red{[Mathematical notation for measurement combination]} +Concretely, we denote the outcome of the +$i$-th syndrome measurement in round $r$ by $m_i^{(r)} \in \mathbb{F}_2$ +and define +\begin{gather*} + \bm{m}^{(r)} := + \begin{pmatrix} + m_1^{(r)} \\ + \vdots \\ + m_m^{(r)} + \end{pmatrix} + .% +\end{gather*} +Similarly, we denote the the $i$-th detector in round $r$ by +$d_i^{(r)} \in \mathbb{F}_2$ and define +\begin{gather} + \label{eq:measurement_combination} + \bm{d}^{(r)} = + \begin{pmatrix} + d_1^{(r)} \\ + \vdots \\ + d_m^{(r)} + \end{pmatrix} + := \bm{m}^{(r)} + \bm{m}^{(r-1)} + ,% +\end{gather} +where $\bm{m}^{(0)} = \bm{0}$. We again turn our attention to the three-qubit repetition code. In \autoref{fig:rep_code_multiple_rounds_phenomenological} we can see that $E_6$ has occurred and has subsequently tripped the last four measurements. We now take those measurements and combine them according to -\red{[Reference mathematical notation above]}. +\autoref{eq:measurement_combination}. We can see this process graphically in -\autoref{fig:detectors_from_measurements_rep_code} +\autoref{fig:detectors_from_measurements_rep_code}. To understand why this way of defining the detectors is useful, we note that the error $E_6$ in \autoref{fig:rep_code_multiple_rounds_phenomenological} has not only @@ -775,11 +840,24 @@ Each error can only trip syndrome bits that follow it. We can see this in the triangular structure of $\bm{\Omega}$ in \autoref{fig:rep_code_multiple_rounds_phenomenological}. Combining the measurements into detectors according to -\red{[Reference mathematical notation above]}, we are performing row -additions in such a way as to clear the bottom left of the matrix. +\autoref{eq:measurement_combination}, we are performing row additions +in such a way as to clear the bottom left of the matrix. This yields a block-diagonal structure for the detector error matrix $\bm{H}$, as in the example in \autoref{fig:detectors_from_measurements_rep_code}. +\begin{align*} + \bm{H} = + \left( + \begin{array}{ccccccccccccccc} + 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 1 & 0 & 1 + \end{array} + \right) +\end{align*} Note that we exploit the fact that each syndrome measurement round is identical to obtain this structure. @@ -801,7 +879,7 @@ identical to obtain this structure. & \wire[d][3]{c} & & \wire[d][1]{c} & & \wire[d][1]{c} & & \wire[d][1]{c} & \\ & \ctrl[wire=c]{0}\wire[r][1]{c} & \wire[d][1]{c} & \ctrl[vertical wire=c]{1}\wire[r][1]{c} & \wire[d][1]{c} & \ctrl[vertical wire=c]{1}\wire[r][1]{c} & \wire[d][1]{c} & \ctrl[vertical wire=c]{1}\wire[r][1]{c} & \\ & & \wire[r][1]{c} & \targ{}\wire[d][1]{c} & \wire[r][1]{c} & \targ{}\wire[d][1]{c} & \wire[r][1]{c} & \targ{}\wire[d][1]{c} & \\ - & \gate[1]{\bm{D}_1} & & \gate[1]{\bm{D}_2} & & \gate[1]{\bm{D}_3} & & \gate[1]{\bm{D}_4} & \\ + & \gate[1]{\bm{d}^{(1)}} & & \gate[1]{\bm{d}^{(2)}} & & \gate[1]{\bm{d}^{(3)}} & & \gate[1]{\bm{d}^{(4)}} & \\ \end{quantikz} % tex-fmt: on @@ -812,53 +890,33 @@ identical to obtain this structure. \begin{figure}[t] \centering - \hspace*{-5mm} - \begin{minipage}{0.42\textwidth} - \newcommand{\redwire}[1]{ - \wire[r][#1][style={draw=red, line width=1.5pt, double}]{q} - } - \newcommand{\inwire}{ - \wire[l][1][style={draw=red, line width=1.5pt}]{q} - } - \newcommand{\redtarg}{ - \targ[style={draw=red,line width=1.5pt}]{}% - \setwiretype{n}% - } - \newcommand{\redctrl}[1]{ - \ctrl[style={draw=red,fill=red, line width=1.5pt}]{0}% - \wire[d][#1][style={draw=red, line width=1.5pt, double}]{q} - } - \newcommand{\redmeter}{\meter[style={draw=red,fill=red!20}]{}} - \newcommand{\redgate}[1]{\gate[style={draw=red,fill=red!20}]{\textcolor{red}{#1}}} + \newcommand{\redwire}[1]{ + \wire[r][#1][style={draw=red, line width=1.5pt, double}]{q} + } + \newcommand{\inwire}{ + \wire[l][1][style={draw=red, line width=1.5pt}]{q} + } + \newcommand{\redtarg}{ + \targ[style={draw=red,line width=1.5pt}]{}% + \setwiretype{n}% + } + \newcommand{\redctrl}[1]{ + \ctrl[style={draw=red,fill=red, line width=1.5pt}]{0}% + \wire[d][#1][style={draw=red, line width=1.5pt, double}]{q} + } + \newcommand{\redmeter}{\meter[style={draw=red,fill=red!20}]{}} + \newcommand{\redgate}[1]{\gate[style={draw=red,fill=red!20}]{\textcolor{red}{#1}}} - % tex-fmt: off - \begin{quantikz}[row sep=4mm, column sep=3mm, wire types={n,n,n,n,n,n}] - & \meter{}\wire[l][1]{q}\wire[r][1]{c} & \setwiretype{c} & & & \ctrl[vertical wire=c]{2} & & \gate{D_1} \\ - & \meter{}\wire[l][1]{q}\wire[r][1]{c} & \setwiretype{c} & & & & \ctrl[vertical wire=c]{2} & \gate{D_2} \\ - & \redmeter{}\inwire\redwire{6} & & \redctrl{2} & & \targ{} & & \redgate{D_3} \\ - & \redmeter{}\inwire\redwire{6} & & & \redctrl{2} & & \targ{} & \redgate{D_4} \\ - & \redmeter{}\inwire\redwire{2} & & \redtarg\wire[r][4]{c} & & & & \gate{D_5} \\ - & \redmeter{}\inwire\redwire{3} & & & \redtarg\wire[r][3]{c} & & & \gate{D_6} - \end{quantikz} - % tex-fmt: on - \end{minipage}% - \begin{minipage}{0.56\textwidth} - \newcommand\cc{\cellcolor{orange!20}} - - \begin{align*} - \bm{H} = - % tex-fmt: off - \left(\begin{array}{ccccccccccccccc} - 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ - 0 & 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ - \cc{0} & \cc{0} & \cc{0} & \cc{1} & \cc{0} & 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ - \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{1} & 0 & 1 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ - \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{1} & \cc{0} & 1 & 1 & 0 & 1 & 0 \\ - \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{0} & \cc{1} & 0 & 1 & 1 & 0 & 1 - \end{array}\right) - % tex-fmt: on - \end{align*} - \end{minipage} + % tex-fmt: off + \begin{quantikz}[row sep=4mm, column sep=3mm, wire types={n,n,n,n,n,n}] + & \meter{}\wire[l][1]{q}\wire[r][1]{c} & \setwiretype{c} & & & \ctrl[vertical wire=c]{2} & & \gate{D_1} \\ + & \meter{}\wire[l][1]{q}\wire[r][1]{c} & \setwiretype{c} & & & & \ctrl[vertical wire=c]{2} & \gate{D_2} \\ + & \redmeter{}\inwire\redwire{6} & & \redctrl{2} & & \targ{} & & \redgate{D_3} \\ + & \redmeter{}\inwire\redwire{6} & & & \redctrl{2} & & \targ{} & \redgate{D_4} \\ + & \redmeter{}\inwire\redwire{2} & & \redtarg\wire[r][4]{c} & & & & \gate{D_5} \\ + & \redmeter{}\inwire\redwire{3} & & & \redtarg\wire[r][3]{c} & & & \gate{D_6} + \end{quantikz} + % tex-fmt: on \caption{Construction of detectors from the measurements of a three-qubit repetition code.}