Move figures in chapter 3 inbetween text

This commit is contained in:
2026-04-28 23:45:44 +02:00
parent 87e48b5ac6
commit dc283012ba
4 changed files with 181 additions and 106 deletions

View File

@@ -3,6 +3,11 @@
long=quantum error correction
}
\DeclareAcronym{dem}{
short=DEM,
long=detector error model
}
\DeclareAcronym{bp}{
short=BP,
long=belief propagation

View File

@@ -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},
}

View File

@@ -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.
%

View File

@@ -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.}