Compare commits
22 Commits
final-v1.0
...
163ef926e7
| Author | SHA1 | Date | |
|---|---|---|---|
| 163ef926e7 | |||
| 4da37dbddc | |||
| 6de9cec27e | |||
| 474b1d21da | |||
| 5483a972f9 | |||
| 5d104fbf28 | |||
| 50a10ccb4f | |||
| 569df381ee | |||
| 85771405db | |||
| 5875066581 | |||
| 494a639329 | |||
| e59120b683 | |||
| 267d431542 | |||
| 4e1bd62504 | |||
| ada6e43be3 | |||
| 6ea151ffeb | |||
| 6e2cf5b8ba | |||
| e792141afd | |||
| 1810ec8632 | |||
| 513eb7579f | |||
| 47c725e1fa | |||
| 7d92b54deb |
@@ -302,8 +302,8 @@
|
|||||||
\item Quantum systems are inherently fragile
|
\item Quantum systems are inherently fragile
|
||||||
\item Interacting with the quantum state disturbs it
|
\item Interacting with the quantum state disturbs it
|
||||||
\item Idea: Represent $k\in \mathbb{N} $ \schlagwort{logical
|
\item Idea: Represent $k\in \mathbb{N} $ \schlagwort{logical
|
||||||
qubits} using $n \in \mathbb{N},~n>k$ \schlagwort{physical qubits}
|
qubits} using $n \in \mathbb{N}$ \schlagwort{physical qubits},
|
||||||
\citereferencemanual{Rof19}
|
$n>k$ \citereferencemanual{Rof19}
|
||||||
|
|
||||||
\vspace*{2mm}
|
\vspace*{2mm}
|
||||||
|
|
||||||
@@ -1532,8 +1532,8 @@
|
|||||||
\item \schlagwort{Detector error model} (DEM) combines
|
\item \schlagwort{Detector error model} (DEM) combines
|
||||||
detector error matrix and noise model
|
detector error matrix and noise model
|
||||||
\visible<2->{
|
\visible<2->{
|
||||||
\item Tanner graph of detector error matrix of \ac{bb} code
|
\item Tanner graph of detector error matrix of bivariate
|
||||||
\citereferencemanual{KSW$^+$25}
|
bicycle (\acs{bb}) code \citereferencemanual{KSW$^+$25}
|
||||||
}
|
}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
@@ -1549,21 +1549,25 @@
|
|||||||
|
|
||||||
\vspace*{-5mm}
|
\vspace*{-5mm}
|
||||||
|
|
||||||
\visible<3->{
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
\visible<2->{
|
||||||
\item Challenges
|
\item Challenges
|
||||||
|
}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
\visible<2->{
|
||||||
|
\item Fault tolerance: Additional error locations \\
|
||||||
|
$\implies$ \schlagwort{Increased decoding
|
||||||
|
complexity} \citereferencemanual{GCR24}
|
||||||
|
}
|
||||||
|
\visible<3->{
|
||||||
\item Quantum setting: Degeneracy and short
|
\item Quantum setting: Degeneracy and short
|
||||||
cycles \\
|
cycles \\
|
||||||
$\implies$ \schlagwort{Degraded performance}
|
$\implies$ \schlagwort{Degraded performance}
|
||||||
of belief propagation (BP)
|
of belief propagation (BP)
|
||||||
\citereferencemanual{BBA$^+$15}
|
\citereferencemanual{BBA$^+$15}
|
||||||
\item Fault tolerance: Additional error locations \\
|
|
||||||
$\implies$ \schlagwort{Increased decoding
|
|
||||||
complexity} \citereferencemanual{GCR24}
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
|
||||||
}
|
}
|
||||||
|
\end{itemize}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
\vspace*{8mm}
|
\vspace*{8mm}
|
||||||
|
|
||||||
@@ -1572,9 +1576,8 @@
|
|||||||
S. Koutsioumpas et al., ``Automorphism ensemble decoding of
|
S. Koutsioumpas et al., ``Automorphism ensemble decoding of
|
||||||
quantum LDPC codes,'' \emph{arXiv:2503.01738}, 2025.
|
quantum LDPC codes,'' \emph{arXiv:2503.01738}, 2025.
|
||||||
}
|
}
|
||||||
{GCR24}{A. Gong, S. Cammerer, and J. M. Renes, ``Toward
|
{GCR24}{A. Gong et al., ``Toward low-latency iterative decoding
|
||||||
low-latency iterative decoding of qLDPC codes under
|
of qLDPC codes under circuit-level noise,'' arXiv:2403.18901, 2024.
|
||||||
circuit-level noise,'' arXiv:2403.18901, 2024.
|
|
||||||
}
|
}
|
||||||
{BBA$^+$15}{
|
{BBA$^+$15}{
|
||||||
Z. Babar et al., ``Fifteen years of
|
Z. Babar et al., ``Fifteen years of
|
||||||
@@ -1634,9 +1637,8 @@
|
|||||||
% S. Huang and S. Puri, ``Improved noisy syndrome decoding of
|
% S. Huang and S. Puri, ``Improved noisy syndrome decoding of
|
||||||
% quantum LDPC codes with sliding window,'' \emph{arXiv:2311.03307}, 2023.
|
% quantum LDPC codes with sliding window,'' \emph{arXiv:2311.03307}, 2023.
|
||||||
% }
|
% }
|
||||||
% {GCR24}{A. Gong, S. Cammerer, and J. M. Renes, ``Toward
|
% {GCR24}{A. Gong et al., ``Toward low-latency iterative decoding
|
||||||
% low-latency iterative decoding of qLDPC codes under
|
% of qLDPC codes under circuit-level noise,'' arXiv:2403.18901, 2024.
|
||||||
% circuit-level noise,'' arXiv:2403.18901, 2024.
|
|
||||||
% }
|
% }
|
||||||
% {RWB$^+$20}{
|
% {RWB$^+$20}{
|
||||||
% J. Roffe et al., ``Decoding across the quantum low-density
|
% J. Roffe et al., ``Decoding across the quantum low-density
|
||||||
@@ -1734,9 +1736,8 @@
|
|||||||
S. Huang and S. Puri, ``Improved noisy syndrome decoding of
|
S. Huang and S. Puri, ``Improved noisy syndrome decoding of
|
||||||
quantum LDPC codes with sliding window,'' \emph{arXiv:2311.03307}, 2023.
|
quantum LDPC codes with sliding window,'' \emph{arXiv:2311.03307}, 2023.
|
||||||
}
|
}
|
||||||
{GCR24}{A. Gong, S. Cammerer, and J. M. Renes, ``Toward
|
{GCR24}{A. Gong et al., ``Toward low-latency iterative decoding
|
||||||
low-latency iterative decoding of qLDPC codes under
|
of qLDPC codes under circuit-level noise,'' arXiv:2403.18901, 2024.
|
||||||
circuit-level noise,'' arXiv:2403.18901, 2024.
|
|
||||||
}
|
}
|
||||||
\stopreferencesmanual
|
\stopreferencesmanual
|
||||||
\end{frame}
|
\end{frame}
|
||||||
@@ -2886,7 +2887,8 @@
|
|||||||
\item Most errors due to non-convergence
|
\item Most errors due to non-convergence
|
||||||
\vspace*{10mm}
|
\vspace*{10mm}
|
||||||
\visible<2-> {
|
\visible<2-> {
|
||||||
\item BPGD algorithm \citereferencemanual{YLH+24}
|
\item BP with guided decimation (BPGD)
|
||||||
|
\citereferencemanual{YLH+24}
|
||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
\item Perform $T$ \schlagwort{BP iterations}
|
\item Perform $T$ \schlagwort{BP iterations}
|
||||||
\item Hard decision on \schlagwort{most
|
\item Hard decision on \schlagwort{most
|
||||||
@@ -2906,12 +2908,12 @@
|
|||||||
\vspace*{-10mm}
|
\vspace*{-10mm}
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item $[[882, 24, 18 \le d \le 24]]$ - generalized
|
\item $\llbracket 882, 24, 18 \le d \le 24
|
||||||
hypergraph product (GHP) code, \\
|
\rrbracket$ generalized hypergraph product (GHP) code,
|
||||||
bit-flip noise \citereferencemanual{YLH+24}
|
bit-flip noise \citereferencemanual{YLH+24}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\vspace*{-5mm}
|
% \vspace*{-5mm}
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
@@ -2971,7 +2973,7 @@
|
|||||||
}
|
}
|
||||||
\end{minipage}
|
\end{minipage}
|
||||||
|
|
||||||
\vspace*{2mm}
|
\vspace*{5mm}
|
||||||
|
|
||||||
\addreferencesmanual
|
\addreferencesmanual
|
||||||
{YLH+24}{Hanwen Yao et al. ``Belief propagation decoding of quantum
|
{YLH+24}{Hanwen Yao et al. ``Belief propagation decoding of quantum
|
||||||
@@ -3329,7 +3331,7 @@
|
|||||||
\item Parameters
|
\item Parameters
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item $T = 1$
|
\item $T = 1$
|
||||||
\item $n_\text{iterations} = n$
|
\item $n_\text{iterations} = 3{,}600$
|
||||||
\item $W = 5$
|
\item $W = 5$
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
@@ -3885,9 +3887,8 @@
|
|||||||
\vspace*{15mm}
|
\vspace*{15mm}
|
||||||
|
|
||||||
\addreferencesmanual
|
\addreferencesmanual
|
||||||
{GCR24}{A. Gong, S. Cammerer, and J. M. Renes, ``Toward
|
{GCR24}{A. Gong et al., ``Toward low-latency iterative decoding
|
||||||
low-latency iterative decoding of qLDPC codes under
|
of qLDPC codes under circuit-level noise,'' arXiv:2403.18901, 2024.
|
||||||
circuit-level noise,'' arXiv:2403.18901, 2024.
|
|
||||||
}
|
}
|
||||||
{MSL$^+$25}{
|
{MSL$^+$25}{
|
||||||
S. Miao et al., ``Quaternary neural belief propagation
|
S. Miao et al., ``Quaternary neural belief propagation
|
||||||
@@ -4107,9 +4108,8 @@
|
|||||||
\vspace*{30mm}
|
\vspace*{30mm}
|
||||||
|
|
||||||
\addreferencesmanual
|
\addreferencesmanual
|
||||||
{GCR24}{A. Gong, S. Cammerer, and J. M. Renes, ``Toward
|
{GCR24}{A. Gong et al., ``Toward low-latency iterative decoding
|
||||||
low-latency iterative decoding of qLDPC codes under
|
of qLDPC codes under circuit-level noise,'' arXiv:2403.18901, 2024.
|
||||||
circuit-level noise,'' arXiv:2403.18901, 2024.
|
|
||||||
}
|
}
|
||||||
\stopreferencesmanual
|
\stopreferencesmanual
|
||||||
\end{frame}
|
\end{frame}
|
||||||
@@ -4170,9 +4170,8 @@
|
|||||||
\vspace*{5mm}
|
\vspace*{5mm}
|
||||||
|
|
||||||
\addreferencesmanual
|
\addreferencesmanual
|
||||||
{GCR24}{A. Gong, S. Cammerer, and J. M. Renes, ``Toward
|
{GCR24}{A. Gong et al., ``Toward low-latency iterative decoding
|
||||||
low-latency iterative decoding of qLDPC codes under
|
of qLDPC codes under circuit-level noise,'' arXiv:2403.18901, 2024.
|
||||||
circuit-level noise,'' arXiv:2403.18901, 2024.
|
|
||||||
}
|
}
|
||||||
\stopreferencesmanual
|
\stopreferencesmanual
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|||||||
@@ -8,6 +8,11 @@
|
|||||||
long=belief propagation
|
long=belief propagation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\DeclareAcronym{bpgd}{
|
||||||
|
short=BPGD,
|
||||||
|
long=belief propagation with guided decimation
|
||||||
|
}
|
||||||
|
|
||||||
\DeclareAcronym{nms}{
|
\DeclareAcronym{nms}{
|
||||||
short=NMS,
|
short=NMS,
|
||||||
long=normalized min-sum
|
long=normalized min-sum
|
||||||
@@ -18,6 +23,11 @@
|
|||||||
long=sum-product algorithm
|
long=sum-product algorithm
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\DeclareAcronym{css}{
|
||||||
|
short=CSS,
|
||||||
|
long=Calderbank-Shor-Steane
|
||||||
|
}
|
||||||
|
|
||||||
\DeclareAcronym{llr}{
|
\DeclareAcronym{llr}{
|
||||||
short=LLR,
|
short=LLR,
|
||||||
long=log-likelihood ratio
|
long=log-likelihood ratio
|
||||||
@@ -33,6 +43,11 @@
|
|||||||
long=low-density parity-check
|
long=low-density parity-check
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\DeclareAcronym{qldpc}{
|
||||||
|
short=QLDPC,
|
||||||
|
long=quantum low-density parity-check
|
||||||
|
}
|
||||||
|
|
||||||
\DeclareAcronym{ml}{
|
\DeclareAcronym{ml}{
|
||||||
short=ML,
|
short=ML,
|
||||||
long=maximum likelihood
|
long=maximum likelihood
|
||||||
@@ -77,3 +92,8 @@
|
|||||||
short=PDF,
|
short=PDF,
|
||||||
long=probability density function
|
long=probability density function
|
||||||
}
|
}
|
||||||
|
|
||||||
|
\DeclareAcronym{bb}{
|
||||||
|
short=BB,
|
||||||
|
long=bivariate bicycle
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
|||||||
\chapter{Fundamentals}
|
\chapter{Fundamentals of Classical and Quantum Error Correction}
|
||||||
\label{ch:Fundamentals}
|
\label{ch:Fundamentals}
|
||||||
|
|
||||||
\Ac{qec} is a field of research combining ``classical''
|
\Ac{qec} is a field of research combining ``classical''
|
||||||
@@ -6,8 +6,6 @@ communications engineering and quantum information science.
|
|||||||
This chapter provides the relevant theoretical background on both of
|
This chapter provides the relevant theoretical background on both of
|
||||||
these topics and subsequently introduces the fundamentals of \ac{qec}.
|
these topics and subsequently introduces the fundamentals of \ac{qec}.
|
||||||
|
|
||||||
% TODO: Is an explanation of BP with guided decimation needed in this chapter?
|
|
||||||
% TODO: Is an explanation of OSD needed chapter?
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section{Classical Error Correction}
|
\section{Classical Error Correction}
|
||||||
\label{sec:Classical Error Correction}
|
\label{sec:Classical Error Correction}
|
||||||
@@ -517,6 +515,7 @@ This is precisely the effect that leads to the good performance of
|
|||||||
\ac{sc}-\ac{ldpc} codes in the waterfall region \cite{costello_spatially_2014}.
|
\ac{sc}-\ac{ldpc} codes in the waterfall region \cite{costello_spatially_2014}.
|
||||||
|
|
||||||
\subsection{Iterative Decoding}
|
\subsection{Iterative Decoding}
|
||||||
|
\label{subsec:Iterative Decoding}
|
||||||
|
|
||||||
% Introduction
|
% Introduction
|
||||||
|
|
||||||
@@ -607,21 +606,23 @@ The purpose of this section is to convey these concepts to the reader.
|
|||||||
|
|
||||||
In quantum mechanics, the state of a particle is described by a
|
In quantum mechanics, the state of a particle is described by a
|
||||||
\emph{wave function} $\psi(x,t)$.
|
\emph{wave function} $\psi(x,t)$.
|
||||||
The connection between this function and the observable world
|
Born's statistical interpretation provides a connection between this
|
||||||
is Born's statistical interpretation:
|
function and the observable world:
|
||||||
$\lvert \psi (x,t) \rvert^2$ is the \ac{pdf} of finding a praticle at
|
$\lvert \psi (x,t) \rvert^2$ is the \ac{pdf} of finding a particle at
|
||||||
position $x$ and time $t$ \cite[Sec.~1.2]{griffiths_introduction_1995}.
|
position $x$ and time $t$ \cite[Sec.~1.2]{griffiths_introduction_1995}.
|
||||||
|
Note that this presupposes a normalization of $\psi$ such that
|
||||||
|
$\int_{-\infty}^{\infty} \lvert \psi(x,t) \rvert^2 dx = 1$.
|
||||||
|
|
||||||
% Dirac notation
|
% Dirac notation
|
||||||
|
|
||||||
A lot of the related mathematics can be very elegantly expressed
|
Much of the related mathematics can be very elegantly expressed
|
||||||
using the language of linear algebra.
|
using the language of linear algebra.
|
||||||
The so called Bra-ket or Dirac notation is especially appropriate,
|
The so-called Bra-ket or Dirac notation is especially appropriate,
|
||||||
having been proposed by Paul Dirac in 1939 for the express purpose
|
having been proposed by Paul Dirac in 1939 for the express purpose
|
||||||
of simplifying quantum mechanical notation \cite{dirac_new_1939}.
|
of simplifying quantum mechanical notation \cite{dirac_new_1939}.
|
||||||
Two new symbols are defined, \emph{bra}s $\bra{\cdot}$ and
|
Two new symbols are defined, \emph{bra}s $\bra{\cdot}$ and
|
||||||
\emph{ket}s $\ket{\cdot}$.
|
\emph{ket}s $\ket{\cdot}$.
|
||||||
Kets denote ordinary vectors, while bras denote their Hermitian conjugates.
|
Kets denote column vectors, while bras denote their Hermitian conjugates.
|
||||||
For example, two vectors specified by the labels $a$ and $b$
|
For example, two vectors specified by the labels $a$ and $b$
|
||||||
respectively are written as $\ket{a}$ and $\ket{b}$.
|
respectively are written as $\ket{a}$ and $\ket{b}$.
|
||||||
Their inner product is $\braket{a\vert b}$.
|
Their inner product is $\braket{a\vert b}$.
|
||||||
@@ -630,7 +631,7 @@ Their inner product is $\braket{a\vert b}$.
|
|||||||
|
|
||||||
The connection we will make between quantum mechanics and linear
|
The connection we will make between quantum mechanics and linear
|
||||||
algebra is that we will model the state space of a system as a
|
algebra is that we will model the state space of a system as a
|
||||||
\emph{function space}.
|
\emph{function space}, the Hilbert space $L_2$.
|
||||||
We will represent the state of a particle with wave function
|
We will represent the state of a particle with wave function
|
||||||
$\psi(x,t)$ using the vector $\ket{\psi}$
|
$\psi(x,t)$ using the vector $\ket{\psi}$
|
||||||
\cite[Sec.~3.3]{griffiths_introduction_1995}.
|
\cite[Sec.~3.3]{griffiths_introduction_1995}.
|
||||||
@@ -643,6 +644,17 @@ output \cite[Sec.~3.2.2]{griffiths_introduction_1995}.
|
|||||||
Operators are useful to describe the relations between different
|
Operators are useful to describe the relations between different
|
||||||
quantities relating to a particle.
|
quantities relating to a particle.
|
||||||
An example of this is the differential operator $\partial x$.
|
An example of this is the differential operator $\partial x$.
|
||||||
|
We define the \emph{commutator} of two operators $P_1$ and $P_2$ as
|
||||||
|
\begin{align*}
|
||||||
|
[P_1,P_2] = P_1P_2 - P_2P_1
|
||||||
|
\end{align*}
|
||||||
|
and the \emph{anticommutator} as
|
||||||
|
\begin{align*}
|
||||||
|
[P_1,P_2]_+ = P_1P_2 + P_2P_1
|
||||||
|
.%
|
||||||
|
\end{align*}
|
||||||
|
We say the two operators \emph{commute} iff $[P_1,P_2] = 0$, and they
|
||||||
|
\emph{anti-commute} iff $[P_1,P_2]_+ = 0$.
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%
|
||||||
\subsection{Observables}
|
\subsection{Observables}
|
||||||
@@ -663,8 +675,8 @@ observations \cite[Sec.~3.3]{griffiths_introduction_1995}.
|
|||||||
|
|
||||||
If we know the wave function of a particle, we should be able to
|
If we know the wave function of a particle, we should be able to
|
||||||
compute the expected value $\braket{Q}$ of any observable quantity we wish.
|
compute the expected value $\braket{Q}$ of any observable quantity we wish.
|
||||||
It can be shown that for any $Q$, we can compute a
|
It can be shown that for any $Q$, we can find a
|
||||||
corresponding operator $\hat{Q}$ such that
|
corresponding Hermitian operator $\hat{Q}$ such that
|
||||||
\cite[Sec.~3.3]{griffiths_introduction_1995}
|
\cite[Sec.~3.3]{griffiths_introduction_1995}
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\label{eq:gen_expr_Q_exp}
|
\label{eq:gen_expr_Q_exp}
|
||||||
@@ -689,7 +701,7 @@ formula simplifies to the direct calculation of the expected value.
|
|||||||
|
|
||||||
Let us now examine how the observable operator $\hat{Q}$ relates to
|
Let us now examine how the observable operator $\hat{Q}$ relates to
|
||||||
the determinate states of the observable quantity.
|
the determinate states of the observable quantity.
|
||||||
We begin by translating \autoref{eq:gen_expr_Q_exp} into linear alebra as
|
We begin by translating \autoref{eq:gen_expr_Q_exp} into linear algebra as
|
||||||
\cite[Eq.~3.114]{griffiths_introduction_1995}
|
\cite[Eq.~3.114]{griffiths_introduction_1995}
|
||||||
\begin{align}
|
\begin{align}
|
||||||
\label{eq:gen_expr_Q_exp_lin}
|
\label{eq:gen_expr_Q_exp_lin}
|
||||||
@@ -697,7 +709,7 @@ We begin by translating \autoref{eq:gen_expr_Q_exp} into linear alebra as
|
|||||||
.%
|
.%
|
||||||
\end{align}
|
\end{align}
|
||||||
\autoref{eq:gen_expr_Q_exp_lin} expresses an inherently probabilistic
|
\autoref{eq:gen_expr_Q_exp_lin} expresses an inherently probabilistic
|
||||||
relationhip.
|
relationship.
|
||||||
The determinate states are inherently deterministic.
|
The determinate states are inherently deterministic.
|
||||||
To relate the two, we note that since determinate states should
|
To relate the two, we note that since determinate states should
|
||||||
always yield the same measurement results, the variance of the
|
always yield the same measurement results, the variance of the
|
||||||
@@ -742,6 +754,9 @@ We can use the determinate states for this purpose, expressing the state as%
|
|||||||
c_n := \braket{e_n \vert \psi}
|
c_n := \braket{e_n \vert \psi}
|
||||||
.%
|
.%
|
||||||
\end{align}
|
\end{align}
|
||||||
|
Because of the normalization of the wave function such that
|
||||||
|
$\int_{-\infty}^{\infty} \lvert \psi(x,t) \rvert^2 dx = 1$, we have
|
||||||
|
$\sum_{n=1}^{\infty} \lvert c_n \rvert ^2 = 1$.
|
||||||
Inserting \autoref{eq:determinate_basis} into
|
Inserting \autoref{eq:determinate_basis} into
|
||||||
\autoref{eq:gen_expr_Q_exp_lin} we obtain
|
\autoref{eq:gen_expr_Q_exp_lin} we obtain
|
||||||
% tex-fmt: off
|
% tex-fmt: off
|
||||||
@@ -771,7 +786,7 @@ We can decompose an arbitrary state as $\ket{\psi} = \sum_{n=1}^{\infty} c_n
|
|||||||
\ket{e_n}$, where $\lvert c_n \rvert ^2$ represents the probability
|
\ket{e_n}$, where $\lvert c_n \rvert ^2$ represents the probability
|
||||||
of obtaining a certain measurement value.
|
of obtaining a certain measurement value.
|
||||||
Note that when we speak of an \emph{observable}, we are usually
|
Note that when we speak of an \emph{observable}, we are usually
|
||||||
refering to the operator $\hat{Q}$.
|
referring to the operator $\hat{Q}$.
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%
|
||||||
\subsection{Projective Measurements}
|
\subsection{Projective Measurements}
|
||||||
@@ -837,7 +852,7 @@ These project a vector onto the subspace spanned by $\ket{e_n}$.
|
|||||||
\subsection{Qubits and Multi-Qubit States}
|
\subsection{Qubits and Multi-Qubit States}
|
||||||
\label{subsec:Qubits and Multi-Qubit States}
|
\label{subsec:Qubits and Multi-Qubit States}
|
||||||
|
|
||||||
% The qubit
|
% Intro
|
||||||
|
|
||||||
% TODO: Make sure `quantum gate` is proper terminology
|
% TODO: Make sure `quantum gate` is proper terminology
|
||||||
A central concept for quantum computing is that of the \emph{qubit}.
|
A central concept for quantum computing is that of the \emph{qubit}.
|
||||||
@@ -846,20 +861,35 @@ For classical computers, we alter bits' states using \emph{gates}.
|
|||||||
We can chain multiple of these gates together to build up more complex logic,
|
We can chain multiple of these gates together to build up more complex logic,
|
||||||
such as half-adders or eventually a full processor.
|
such as half-adders or eventually a full processor.
|
||||||
In principle, quantum computers work in a similar fashion, only that
|
In principle, quantum computers work in a similar fashion, only that
|
||||||
instead of bits we use qubits and instead of, e.g. {AND}, OR, and XOR
|
instead of bits we use qubits and instead of, e.g., AND, OR, and XOR
|
||||||
operations we use \emph{quantum gates} \cite[Sec.~1.3]{nielsen_quantum_2010}.
|
operations we use \emph{quantum gates} \cite[Sec.~1.3]{nielsen_quantum_2010}.
|
||||||
We define a qubit to be a component with determinate
|
|
||||||
states $\ket{0}$ and $\ket{1}$.
|
% Qubits and multi-qubit states
|
||||||
The general description of the state $\ket{\psi}$ of a qubit is thus
|
|
||||||
\begin{align}
|
We fix an orthonormal basis of $\mathbb{C}^2$ to be
|
||||||
\label{eq:gen_qubit_state}
|
\begin{align*}
|
||||||
\ket{\psi} = \alpha\ket{0} + \beta\ket{1}, \hspace{5mm} \alpha,
|
\ket{0} =
|
||||||
\beta \in \mathbb{C}
|
\begin{pmatrix}
|
||||||
|
1 \\
|
||||||
|
0
|
||||||
|
\end{pmatrix}, \hspace{5mm}
|
||||||
|
\ket{1} =
|
||||||
|
\begin{pmatrix}
|
||||||
|
0 \\
|
||||||
|
1
|
||||||
|
\end{pmatrix}
|
||||||
.%
|
.%
|
||||||
\end{align}
|
\end{align*}
|
||||||
|
A qubit is defined to be a system with quantum state
|
||||||
% The tensor product and multi-qubit states
|
\begin{align*}
|
||||||
|
\ket{\psi} =
|
||||||
|
\begin{pmatrix}
|
||||||
|
\alpha \\
|
||||||
|
\beta
|
||||||
|
\end{pmatrix}
|
||||||
|
= \alpha \ket{0} + \beta \ket{1}
|
||||||
|
.%
|
||||||
|
\end{align*}
|
||||||
The overall state of a composite quantum system is described using
|
The overall state of a composite quantum system is described using
|
||||||
the \emph{tensor product}, denoted as $\otimes$
|
the \emph{tensor product}, denoted as $\otimes$
|
||||||
\cite[Sec.~2.2.8]{nielsen_quantum_2010}.
|
\cite[Sec.~2.2.8]{nielsen_quantum_2010}.
|
||||||
@@ -869,9 +899,7 @@ Take for example the two qubits
|
|||||||
\ket{\psi_2} = \alpha_2 \ket{0} + \beta_2 \ket{1}
|
\ket{\psi_2} = \alpha_2 \ket{0} + \beta_2 \ket{1}
|
||||||
.%
|
.%
|
||||||
\end{align*}
|
\end{align*}
|
||||||
% TODO: Fix the fact that \psi is used above for the single-qubit
|
We examine the state $\ket{\psi}$ of the composite system.
|
||||||
% case and below for the multi-qubit case
|
|
||||||
We examine the state $\ket{\psi}$ of the composite system as.
|
|
||||||
Assuming the qubits are independent, this is a \emph{product state}
|
Assuming the qubits are independent, this is a \emph{product state}
|
||||||
$\ket{\psi} = \ket{\psi_1}\otimes\ket{\psi_2}$.
|
$\ket{\psi} = \ket{\psi_1}\otimes\ket{\psi_2}$.
|
||||||
When not ambiguous, we may omit the tensor product symbol or even write
|
When not ambiguous, we may omit the tensor product symbol or even write
|
||||||
@@ -893,6 +921,12 @@ We have
|
|||||||
\end{align}
|
\end{align}
|
||||||
We call $\ket{x_0, \ldots, x_n}~, x_i \in \{0,1\}$ the
|
We call $\ket{x_0, \ldots, x_n}~, x_i \in \{0,1\}$ the
|
||||||
\emph{computational basis states} \cite[Sec.~4.6]{nielsen_quantum_2010}.
|
\emph{computational basis states} \cite[Sec.~4.6]{nielsen_quantum_2010}.
|
||||||
|
To additionally simplify set notation, we define
|
||||||
|
\begin{align*}
|
||||||
|
\mathcal{M}^{\otimes n} := \underbrace{\mathcal{M}\otimes \ldots
|
||||||
|
\otimes \mathcal{M}}_{n \text{ times}}
|
||||||
|
.%
|
||||||
|
\end{align*}
|
||||||
|
|
||||||
% Entanglement
|
% Entanglement
|
||||||
|
|
||||||
@@ -902,9 +936,9 @@ An example of such states are the \emph{Bell states}
|
|||||||
\begin{align*}
|
\begin{align*}
|
||||||
\begin{split}
|
\begin{split}
|
||||||
\ket{\psi_{00}} &= \frac{\ket{00} + \ket{11}}{\sqrt{2}} \hspace{15mm}
|
\ket{\psi_{00}} &= \frac{\ket{00} + \ket{11}}{\sqrt{2}} \hspace{15mm}
|
||||||
\ket{\psi_{01}} = \frac{\ket{01} - \ket{10}}{\sqrt{2}} \\
|
\ket{\psi_{01}} = \frac{\ket{01} + \ket{10}}{\sqrt{2}} \\
|
||||||
\ket{\psi_{10}} &= \frac{\ket{00} + \ket{11}}{\sqrt{2}} \hspace{15mm}
|
\ket{\psi_{10}} &= \frac{\ket{01} - \ket{10}}{\sqrt{2}} \hspace{15mm}
|
||||||
\ket{\psi_{11}} = \frac{\ket{01} - \ket{10}}{\sqrt{2}}
|
\ket{\psi_{11}} = \frac{\ket{00} - \ket{11}}{\sqrt{2}}
|
||||||
\end{split}
|
\end{split}
|
||||||
\hspace{4mm}.%
|
\hspace{4mm}.%
|
||||||
\end{align*}
|
\end{align*}
|
||||||
@@ -933,10 +967,10 @@ After examining the modelling of single- and multi-qubit systems,
|
|||||||
we now shift our focus to describing the evolution of their states.
|
we now shift our focus to describing the evolution of their states.
|
||||||
We model state changes as operators.
|
We model state changes as operators.
|
||||||
Unlike classical systems, where there are only two possible states and
|
Unlike classical systems, where there are only two possible states and
|
||||||
thus the only possible state change is a bit-flip, a gerenal qubit
|
thus the only possible state change is a bit-flip, a general qubit
|
||||||
state as shown in \autoref{eq:gen_qubit_state} lives on a continuum of values.
|
state as shown in \autoref{eq:gen_qubit_state} lives on a continuum of values.
|
||||||
We thus technically also have an infinite number of possible state changes.
|
We thus technically also have an infinite number of possible state changes.
|
||||||
Luckily, we can express any operator as a linear combination of the
|
Fortunately, we can express any operator as a linear combination of the
|
||||||
\emph{Pauli operators} \cite[Sec.~2.2]{gottesman_stabilizer_1997}
|
\emph{Pauli operators} \cite[Sec.~2.2]{gottesman_stabilizer_1997}
|
||||||
\cite[Sec.~2.2]{roffe_quantum_2019}
|
\cite[Sec.~2.2]{roffe_quantum_2019}
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
@@ -957,23 +991,31 @@ Luckily, we can express any operator as a linear combination of the
|
|||||||
\begin{array}{c}
|
\begin{array}{c}
|
||||||
Z\text{ Operator} \\
|
Z\text{ Operator} \\
|
||||||
\hline\\
|
\hline\\
|
||||||
\ket{0} \mapsto -\ket{0} \\
|
\ket{0} \mapsto \phantom{-}\ket{0} \\
|
||||||
\ket{1} \mapsto -\ket{1}
|
\ket{1} \mapsto -\ket{1}
|
||||||
\end{array}%
|
\end{array}%
|
||||||
\hspace{10mm}%
|
\hspace{10mm}%
|
||||||
\begin{array}{c}
|
\begin{array}{c}
|
||||||
Y\text{ Operator} \\
|
Y\text{ Operator} \\
|
||||||
\hline\\
|
\hline\\
|
||||||
\ket{0} \mapsto -j\ket{1} \\
|
\ket{0} \mapsto \phantom{-}j\ket{1} \\
|
||||||
\hspace{2.75mm}\ket{1} \mapsto -j\ket{0} \hspace*{1mm}.
|
\hspace{2.75mm}\ket{1} \mapsto -j\ket{0} \hspace*{1mm}.
|
||||||
\end{array}
|
\end{array}
|
||||||
\end{align*}
|
\end{align*}
|
||||||
|
In fact, if we allow for complex coefficients, the $X$ and $Z$
|
||||||
|
operators are sufficient to express any other operator as a linear
|
||||||
|
combination \cite[Sec.~2.2]{roffe_quantum_2019}.
|
||||||
$I$ is the identity operator and $X$ and $Z$ are referred to as
|
$I$ is the identity operator and $X$ and $Z$ are referred to as
|
||||||
\emph{bit-flips} and \emph{phase-flips} respectively.
|
\emph{bit-flips} and \emph{phase-flips} respectively.
|
||||||
We also call these operators \emph{gates}.
|
We call the set $\mathcal{G}_n = \left\{ \pm I,\pm jI, \pm X,\pm jX,
|
||||||
|
\pm Y,\pm jY, \pm Z, \pm jZ \right\}^{\otimes n}$ the \emph{Pauli
|
||||||
|
group} over $n$ qubits.
|
||||||
|
|
||||||
|
In the context of modifying qubit states, we also call operators \emph{gates}.
|
||||||
When working with multi-qubit systems, we can also apply Pauli gates
|
When working with multi-qubit systems, we can also apply Pauli gates
|
||||||
to individual qubits independently, e.g., $I_1 X_2 I_3 Z_4 Y_5$.
|
to individual qubits independently, which we write, e.g., as $I_1 X_2
|
||||||
We often omit the identity operators, instead writing $X_2 Z_4 Y_5$.
|
I_3 Z_4 Y_5$.
|
||||||
|
We often omit the identity operators, instead writing, e.g., $X_2 Z_4 Y_5$.
|
||||||
Other important operators include the \emph{Hadamard} and
|
Other important operators include the \emph{Hadamard} and
|
||||||
\emph{controlled-NOT (CNOT)} gates \cite[Sec.~1.3]{nielsen_quantum_2010}
|
\emph{controlled-NOT (CNOT)} gates \cite[Sec.~1.3]{nielsen_quantum_2010}
|
||||||
\vspace*{-7mm}
|
\vspace*{-7mm}
|
||||||
@@ -1010,20 +1052,51 @@ Other important operators include the \emph{Hadamard} and
|
|||||||
\noindent Many more operators relevant to quantum computing exist, but they are
|
\noindent Many more operators relevant to quantum computing exist, but they are
|
||||||
not covered here as they are not central to this work.
|
not covered here as they are not central to this work.
|
||||||
|
|
||||||
\indent\red{[We only need to consider X and Z errors]
|
|
||||||
\cite[Equation~8]{roffe_quantum_2019}} \\
|
|
||||||
\indent\red{[Explain commuting/anticommuting property of operators]
|
|
||||||
[Journal~p.~46]}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%
|
||||||
\subsection{Quantum Circuits}
|
\subsection{Quantum Circuits}
|
||||||
\label{Quantum Circuits}
|
\label{Quantum Circuits}
|
||||||
|
|
||||||
\noindent\indent\red{[Controlled operations]
|
% Intro
|
||||||
\cite[Sec.~4.3]{nielsen_quantum_2010}} \\
|
|
||||||
\indent\red{[In case this reference is needed: Measurements
|
Using these quantum gates, we can construct \emph{circuits} to manipulate
|
||||||
\cite[Sec.~4.4]{nielsen_quantum_2010}]} \\
|
the states of qubits \cite[Sec.~1.3.4]{nielsen_quantum_2010}.
|
||||||
\indent\red{[General circuit stuff] \cite[Sec.~1.3.4]{nielsen_quantum_2010}}
|
Circuits are read from left to right and each horizontal wire
|
||||||
|
represents a qubit whose state evolves as it passes through
|
||||||
|
successive gates.
|
||||||
|
|
||||||
|
% General notation
|
||||||
|
|
||||||
|
A single line carries a quantum state, while a double line
|
||||||
|
denotes a classical bit, typically used to carry the result of a measurement.
|
||||||
|
A measurement is represented by a meter symbol.
|
||||||
|
In general, gates are represented as labeled boxes placed on one or more wires.
|
||||||
|
An exception is the CNOT gate, where the operation is represented as
|
||||||
|
the symbol $\oplus$.
|
||||||
|
|
||||||
|
% Controlled gates & example
|
||||||
|
|
||||||
|
We can additionally add a control input to a gate.
|
||||||
|
This conditions its application on the state of another qubit
|
||||||
|
\cite[Sec.~4.3]{nielsen_quantum_2010}.
|
||||||
|
The control connection is represented by a vertical line connecting
|
||||||
|
the gate to the corresponding qubit, where a filled dot is placed.
|
||||||
|
A controlled gate applies the respective operation only if the
|
||||||
|
control qubit is in state $\ket{1}$.
|
||||||
|
An example of this is the CNOT gate introduced in
|
||||||
|
\autoref{subsec:Qubits and Multi-Qubit States}, which is depicted in
|
||||||
|
\autoref{fig:cnot_circuit}.
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\begin{quantikz}
|
||||||
|
\lstick{$\ket{\psi}_1$} & \ctrl{1} & \\
|
||||||
|
\lstick{$\ket{\psi}_2$} & \targ{} & \\
|
||||||
|
\end{quantikz}
|
||||||
|
|
||||||
|
\caption{CNOT gate circuit.}
|
||||||
|
\label{fig:cnot_circuit}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section{Quantum Error Correction}
|
\section{Quantum Error Correction}
|
||||||
@@ -1035,11 +1108,11 @@ not covered here as they are not central to this work.
|
|||||||
|
|
||||||
One of the major barriers on the road to building a functioning
|
One of the major barriers on the road to building a functioning
|
||||||
quantum computer is the inevitability of errors during quantum
|
quantum computer is the inevitability of errors during quantum
|
||||||
computation due to the difficulty in sufficiently isolating the
|
computation. These arise due to the difficulty in sufficiently isolating the
|
||||||
qubits from external noise \cite[Intro.]{roffe_quantum_2019}.
|
qubits from external noise \cite[Intro.]{roffe_quantum_2019}.
|
||||||
This isolation is critical for quantum systems, as the constant interactions
|
This isolation is critical for quantum systems, as the constant interactions
|
||||||
with the environment act as small measurements, leading to the
|
with the environment act as small measurements, an effect called
|
||||||
eventual \emph{decoherence} of the quantum state
|
\emph{decoherence} of the quantum state
|
||||||
\cite[Intro.]{gottesman_stabilizer_1997}.
|
\cite[Intro.]{gottesman_stabilizer_1997}.
|
||||||
\ac{qec} is one approach of dealing with this problem, by protecting
|
\ac{qec} is one approach of dealing with this problem, by protecting
|
||||||
the quantum state in a similar fashion to information in classical error
|
the quantum state in a similar fashion to information in classical error
|
||||||
@@ -1047,12 +1120,12 @@ correction.
|
|||||||
|
|
||||||
% The unique challenges of QEC
|
% The unique challenges of QEC
|
||||||
|
|
||||||
The problem setting of \ac{qec} differs slightly from the classical case, as
|
The problem setting of \ac{qec} differs slightly from the classical case.
|
||||||
three main restrictions apply \cite[Sec.~2.4]{roffe_quantum_2019}:
|
Three main restrictions apply \cite[Sec.~2.4]{roffe_quantum_2019}:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item The no-cloning theorem states that it is
|
\item The no-cloning theorem states that it is
|
||||||
impossible to exactly copy the state of one qubit into another.
|
impossible to exactly copy the state of one qubit into another.
|
||||||
\item Qubit are susceptible to more types of errors than
|
\item Qubits are susceptible to more types of errors than
|
||||||
just bit-flips, as we saw in
|
just bit-flips, as we saw in
|
||||||
\autoref{subsec:Qubits and Multi-Qubit States}.
|
\autoref{subsec:Qubits and Multi-Qubit States}.
|
||||||
\item Directly measuring the state of a qubit collapses it onto
|
\item Directly measuring the state of a qubit collapses it onto
|
||||||
@@ -1063,16 +1136,32 @@ three main restrictions apply \cite[Sec.~2.4]{roffe_quantum_2019}:
|
|||||||
% General idea (logical vs. physical gates) + notation
|
% General idea (logical vs. physical gates) + notation
|
||||||
|
|
||||||
Much like in classical error correction, in \ac{qec} information
|
Much like in classical error correction, in \ac{qec} information
|
||||||
is protected by mapping it onto codewords in an expanded space,
|
is protected by mapping it onto codewords in a higher-dimensional space,
|
||||||
thereby introducing redundancy.
|
thereby introducing redundancy.
|
||||||
To this end, $k \in \mathbb{N}$ \emph{logical qubits} are mapped onto
|
To this end, $k \in \mathbb{N}$ \emph{logical qubits} are mapped onto
|
||||||
$n \in \mathbb{N},~n>k$ \emph{physical qubits}.
|
$n \in \mathbb{N}$ \emph{physical qubits}, $n>k$.
|
||||||
We circumvent the no-cloning restriction by not copying the state of
|
We circumvent the no-cloning restriction by not copying the state of any of
|
||||||
the $k$ logical qubits, instead spreading it out over all $n$
|
the $k$ logical qubits, instead spreading the total state out over all $n$
|
||||||
physical ones \cite[Intro.]{calderbank_good_1996}
|
physical qubits \cite[Intro.]{calderbank_good_1996}.
|
||||||
To differentiate a quantum codes from classical ones, we denote a
|
To differentiate quantum codes from classical ones, we denote a
|
||||||
code with parameters $k,n$ and minimum distance $d_\text{min}$ using
|
code with parameters $k,n$ and minimum distance $d_\text{min}$ using
|
||||||
double brackets, as $[[ n,k,d_\text{min} ]]$ \cite[Sec.~4]{roffe_quantum_2019}.
|
double brackets, as $\llbracket n,k,d_\text{min} \rrbracket$
|
||||||
|
\cite[Sec.~4]{roffe_quantum_2019}.
|
||||||
|
|
||||||
|
% The backlog problem
|
||||||
|
|
||||||
|
Another difference between quantum and classical error correction
|
||||||
|
lies in the resource constraints.
|
||||||
|
For \ac{qec}, the most important property is low latency, not, e.g.,
|
||||||
|
low overall computational complexity.
|
||||||
|
This is due to the \emph{backlog problem}
|
||||||
|
\cite[Sec.~II.G.3.]{terhal_quantum_2015}: There are certain gates
|
||||||
|
at which the effect of existing errors on single qubits may be
|
||||||
|
exacerbated by transforming them to multi-qubit errors.
|
||||||
|
We wish to correct the errors before passing qubits through such gates.
|
||||||
|
If the \ac{qec} system is not fast enough, there will be an increasing
|
||||||
|
backlog of information at this point in the circuit, leading to an
|
||||||
|
exponential slowdown in computation.
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%
|
||||||
\subsection{Stabilizer Measurements}
|
\subsection{Stabilizer Measurements}
|
||||||
@@ -1092,8 +1181,8 @@ Consider the two-qubit repetition code
|
|||||||
\underbrace{\ket{11}}_{=:\ket{1}_\text{L}}
|
\underbrace{\ket{11}}_{=:\ket{1}_\text{L}}
|
||||||
.%
|
.%
|
||||||
\end{align*}
|
\end{align*}
|
||||||
We call $\ket{\psi}_L$ the logical state.
|
We call $\ket{\psi}_L$ the logical state, and
|
||||||
We define the \emph{codespace} as $\mathcal{C} := \text{span}\mleft\{
|
we define the \emph{codespace} as $\mathcal{C} := \text{span}\mleft\{
|
||||||
\ket{00}, \ket{11} \mright\}$ and the \emph{error subspace} as
|
\ket{00}, \ket{11} \mright\}$ and the \emph{error subspace} as
|
||||||
$\mathcal{F} := \text{span} \mleft\{\ket{01}, \ket{10} \mright\}$.
|
$\mathcal{F} := \text{span} \mleft\{\ket{01}, \ket{10} \mright\}$.
|
||||||
Note that this code is only able to detect single $X$-type errors.
|
Note that this code is only able to detect single $X$-type errors.
|
||||||
@@ -1132,9 +1221,9 @@ $E\ket{\psi}_\text{L}$ lies in $\mathcal{C}$ or $\mathcal{F}$.
|
|||||||
% non-compromising meausrement of the information
|
% non-compromising meausrement of the information
|
||||||
To do this without directly observing (and thus potentially
|
To do this without directly observing (and thus potentially
|
||||||
collapsing) the logical state $\ket{\psi}_\text{L}$, we prepare an
|
collapsing) the logical state $\ket{\psi}_\text{L}$, we prepare an
|
||||||
ancilla qubit with state $\ket{0}_\text{A}$ and we entangle it with
|
ancilla qubit with state $\ket{0}_\text{A}$ and entangle it with
|
||||||
$\ket{\psi}_\text{L}$ in such a way that the eigenvalue is indicated
|
$\ket{\psi}_\text{L}$ in such a way that the eigenvalue is indicated
|
||||||
by measuring that instead.
|
by measuring the ancilla qubit instead.
|
||||||
More specifically, using a stabilizer measurement circuit as shown in
|
More specifically, using a stabilizer measurement circuit as shown in
|
||||||
\autoref{fig:stabilizer_measurement}, we transform the state of the
|
\autoref{fig:stabilizer_measurement}, we transform the state of the
|
||||||
three-qubit system as
|
three-qubit system as
|
||||||
@@ -1158,62 +1247,13 @@ the ancilla qubit. Similarly, if $E \ket{\psi}_\text{L} \in
|
|||||||
\begin{figure}[t]
|
\begin{figure}[t]
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
\tikzset{
|
% tex-fmt: off
|
||||||
meter/.append style={
|
\begin{quantikz}
|
||||||
draw, rectangle,
|
\lstick[2]{$E\ket{\psi}_\text{L}$} & & \gate[2]{Z_1Z_2} & & & \\
|
||||||
font=\vphantom{A}, minimum width=8mm, minimum height=8mm,
|
& & & & & \\
|
||||||
path picture={
|
\lstick{$\ket{0}_\text{A}$} & \gate{H} & \ctrl{-1} & \gate{H} & \meter{} & \setwiretype{c} \\
|
||||||
\draw[black]
|
\end{quantikz}
|
||||||
([shift={(.1,.3)}]path picture bounding box.south west)
|
% tex-fmt: on
|
||||||
to[bend left=50]
|
|
||||||
([shift={(-.1,.3)}]path picture bounding box.south east);
|
|
||||||
\draw[black,-latex]
|
|
||||||
([shift={(0,.1)}]path picture bounding box.south)
|
|
||||||
-- ([shift={(.3,-.1)}]path picture bounding box.north);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
\begin{tikzpicture}
|
|
||||||
\node[rectangle, minimum width=2cm, minimum height=3cm, draw]
|
|
||||||
(ZZ) {$Z_1Z_2$};
|
|
||||||
|
|
||||||
\coordinate (qi1) at (-3, 1);
|
|
||||||
\coordinate (qi2) at (-3, -1);
|
|
||||||
\coordinate (qi3) at (-3, -3);
|
|
||||||
|
|
||||||
\coordinate (qo1) at (4, 1);
|
|
||||||
\coordinate (qo2) at (4, -1);
|
|
||||||
\coordinate (qo3) at (4, -3);
|
|
||||||
|
|
||||||
\node[rectangle, minimum width=8mm, minimum height=8mm, draw]
|
|
||||||
(H1) at ($(qo3 -| ZZ) + (-2, 0)$) {H};
|
|
||||||
\node[rectangle, minimum width=8mm, minimum height=8mm, draw]
|
|
||||||
(H2) at ($(qo3 -| ZZ) + (2, 0)$) {H};
|
|
||||||
\node[circle, fill] (not) at (H1 -| ZZ) {};
|
|
||||||
\node[meter, right=5mm of H2] (mes) {};
|
|
||||||
|
|
||||||
\draw (qi1) -- (ZZ.west |- qi1);
|
|
||||||
\draw (qi2) -- (ZZ.west |- qi2);
|
|
||||||
|
|
||||||
\draw (qo1) -- (ZZ.east |- qo1);
|
|
||||||
\draw (qo2) -- (ZZ.east |- qo2);
|
|
||||||
|
|
||||||
\draw (qi3) -- (H1) -- (not) -- (H2) -- (mes);
|
|
||||||
|
|
||||||
\draw (not) -- (ZZ);
|
|
||||||
|
|
||||||
\coordinate (qo3u) at ($(qo3) + (0, .5mm)$);
|
|
||||||
\coordinate (qo3d) at ($(qo3) + (0, -.5mm)$);
|
|
||||||
|
|
||||||
\draw (mes.east |- qo3u) -- (qo3u);
|
|
||||||
\draw (mes.east |- qo3d) -- (qo3d);
|
|
||||||
|
|
||||||
\node[left] at (qi3) {$\ket{0}_\text{A}$};
|
|
||||||
\node[left] at ($(qi1)!.5!(qi2)$) {$E\ket{\psi}_\text{L}$};
|
|
||||||
\node[right] at ($(qo1)!.5!(qo2)$) {$E\ket{\psi}_\text{L}$};
|
|
||||||
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
\caption{Stabilizer measurement circuit for the two-qubit repetition code.}
|
\caption{Stabilizer measurement circuit for the two-qubit repetition code.}
|
||||||
\label{fig:stabilizer_measurement}
|
\label{fig:stabilizer_measurement}
|
||||||
@@ -1237,23 +1277,25 @@ E.g., $P_\mathcal{C}$ will eliminate all components of $E
|
|||||||
\ket{\psi}_\text{L}$ that lie in $\mathcal{F}$.
|
\ket{\psi}_\text{L}$ that lie in $\mathcal{F}$.
|
||||||
This process, together with the fact that any coherent error can be
|
This process, together with the fact that any coherent error can be
|
||||||
decomposed into a linear combination of $X$ and $Z$ errors, means
|
decomposed into a linear combination of $X$ and $Z$ errors, means
|
||||||
that it is enough for a \ac{qec} to be able to correct only $X$ and $Z$ errors.
|
that it is sufficient for \ac{qec} to be able to correct only these
|
||||||
|
types of errors.
|
||||||
This effect is referred to as error \emph{digitization}
|
This effect is referred to as error \emph{digitization}
|
||||||
\cite[Sec.~2.2]{roffe_quantum_2019}.
|
\cite[Sec.~2.2]{roffe_quantum_2019}.
|
||||||
|
|
||||||
% The stabilizer group
|
% The stabilizer group
|
||||||
|
|
||||||
Operators such as $Z_1Z_2$ above are called \emph{stabilizers}.
|
Operators such as $Z_1Z_2$ above are called \emph{stabilizers}.
|
||||||
An operator $P_i \in \mathcal{G}_n$ is called a stabilizer of an
|
More generally, an operator $P_i \in \mathcal{G}_n$ is called a stabilizer of an
|
||||||
$[[n, k, d_\text{min}]]$ code $\mathcal{C}$, if
|
$[[n, k, d_\text{min}]]$ code $\mathcal{C}$, if
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item It stabilizes all logical states, i.e.,
|
\item It stabilizes all logical states, i.e.,
|
||||||
$P_i\ket{\psi}_\text{L} = (+1)\ket{\psi}_\text{L} ~\forall~
|
$P_i\ket{\psi}_\text{L} = (+1)\ket{\psi}_\text{L} ~\forall~
|
||||||
\ket{\psi}_\text{L} \in \mathcal{C}$.
|
\ket{\psi}_\text{L} \in \mathcal{C}$.
|
||||||
\item It commutes with all other stabilizers of the code. This
|
\item It commutes with all other stabilizers $P_j$ of the code,
|
||||||
property is important to be able to measure the eigenvalue of
|
i.e., $[P_i, P_j] = 0$.
|
||||||
a stabilizer without disturbing the eigenvectors of the
|
This property is important to be able to measure the
|
||||||
others \cite[Sec.~1.2]{gottesman_stabilizer_1997}.
|
eigenvalue of a stabilizer without disturbing the
|
||||||
|
eigenvectors of the others \cite[Sec.~1.2]{gottesman_stabilizer_1997}.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
Formally, we define the \emph{stabilizer group} $\mathcal{S}$ as
|
Formally, we define the \emph{stabilizer group} $\mathcal{S}$ as
|
||||||
\cite[Sec.~4.1]{roffe_quantum_2019}
|
\cite[Sec.~4.1]{roffe_quantum_2019}
|
||||||
@@ -1291,11 +1333,11 @@ and the stabilizer measurement returns 1.
|
|||||||
|
|
||||||
For classical binary linear block codes, we use $n-k$ parity-checks
|
For classical binary linear block codes, we use $n-k$ parity-checks
|
||||||
to reduce the degrees of freedom introduced by the encoding operation.
|
to reduce the degrees of freedom introduced by the encoding operation.
|
||||||
Effectively, each parity-check defines a local code, splitting the
|
Effectively, each parity-check defines a local code splitting the
|
||||||
vector space in half, with only one half containing valid codewords.
|
vector space in half, with only one part containing valid codewords.
|
||||||
The global code is the intersection of all local codes.
|
The global code is the intersection of all local codes.
|
||||||
We can do the same in the quantum case.
|
We can do the same in the quantum case.
|
||||||
Each split is represented using stabilizer, whose eigenvalues signify
|
Each split is represented using a stabilizer, whose eigenvalues signify
|
||||||
whether a candidate vector lies in the local codespace or local error subspace.
|
whether a candidate vector lies in the local codespace or local error subspace.
|
||||||
It is only a valid codeword if it lies in the codespace of all local codes.
|
It is only a valid codeword if it lies in the codespace of all local codes.
|
||||||
We call codes constructed this way \emph{stabilizer codes}.
|
We call codes constructed this way \emph{stabilizer codes}.
|
||||||
@@ -1305,45 +1347,86 @@ We call codes constructed this way \emph{stabilizer codes}.
|
|||||||
Similar to the classical case, we can use a syndrome vector to
|
Similar to the classical case, we can use a syndrome vector to
|
||||||
describe which local codes are violated.
|
describe which local codes are violated.
|
||||||
To obtain the syndrome, we simply measure the corresponding
|
To obtain the syndrome, we simply measure the corresponding
|
||||||
operators, each using a circuit as explained in
|
operators $P_i$, each using a circuit as explained in
|
||||||
\autoref{subsec:Stabilizer Measurements}.
|
\autoref{subsec:Stabilizer Measurements}.
|
||||||
A full \emph{syndrome extraction circuit} is depicted in \autoref{fig:sec}.
|
Note that this is an abstract representation of the syndrome extraction.
|
||||||
|
For the actual implementation in hardware, we can transform this into
|
||||||
|
a circuit that requires only CNOT and H-gates
|
||||||
|
\cite[Sec.~10.5.8]{nielsen_quantum_2010}.
|
||||||
|
|
||||||
% TODO: Move this further up to the commutativity of operators?
|
% Logical operators
|
||||||
\indent\red{[Fixing the error after finding it
|
|
||||||
\cite[Sec.~10.5.5]{nielsen_quantum_2010}]} \\
|
In order to modify the logical state encoded using the physical
|
||||||
\indent\red{[Logical operators \cite[Sec.~4.2]{roffe_quantum_2019}]} \\
|
qubits, we can use \emph{logical operators} \cite[Sec.~4.2]{roffe_quantum_2019}.
|
||||||
\indent\red{[Measuring logical operators gives yields the outcomes of
|
For each qubit, there are two logical operators, $X_i$ and $Z_j$.
|
||||||
the encoded computations \cite[Sec.~2.6]{derks_designing_2025}]} \\
|
These are operators that
|
||||||
\indent\red{[X and Z measurements can be performed with only CNOT and
|
\begin{itemize}
|
||||||
Hadamard gates \cite[Sec.~10.5.8]{nielsen_quantum_2010}]} \\
|
\item Commute with all the stabilizers in $\mathcal{S}$.
|
||||||
\indent\red{[(?) Stabilizer generators]} \\
|
\item Anti-commute with one another, i.e., $[ \overline{X}_i,
|
||||||
\indent\red{[Parity-check matrix \cite[Sec.~10.5.1]{nielsen_quantum_2010}]}
|
\overline{Z}_i ]_{+} = \overline{X}_i \overline{Z}_i +
|
||||||
|
\overline{Z}_i \overline{X}_i = 0$.
|
||||||
|
\end{itemize}
|
||||||
|
We can also measure these operators to find out the logical state a
|
||||||
|
physical state corresponds to \cite[Sec.~2.6]{derks_designing_2025}.
|
||||||
|
|
||||||
|
% Parity-check matrix
|
||||||
|
|
||||||
|
% TODO: Do I have to introduce before that stabilizers only need X
|
||||||
|
% and Z operators?
|
||||||
|
We can represent stabilizer codes using a \emph{check matrix}
|
||||||
|
\cite[Sec.~10.5.1]{nielsen_quantum_2010}
|
||||||
|
\begin{align*}
|
||||||
|
\bm{H} = \left[
|
||||||
|
\begin{array}{c|c}
|
||||||
|
\bm{H}_X & \bm{H}_Z
|
||||||
|
\end{array}
|
||||||
|
\right]
|
||||||
|
,%
|
||||||
|
\end{align*}
|
||||||
|
with $\bm{H} \in \mathbb{F}_2^{(n-k)\times(2n)}$.
|
||||||
|
This is similar to a classical \ac{pcm} in that it contains $n-k$
|
||||||
|
rows, each describing one constraint. Each constraint restricts an additional
|
||||||
|
degree of freedom of the higher-dimensional space we use to introduce
|
||||||
|
redundancy.
|
||||||
|
In contrast to the classical case, this matrix now has $2n$ columns,
|
||||||
|
as we have to consider both the $X$ and $Z$ type operators that make up
|
||||||
|
the stabilizers.
|
||||||
|
Take for example the Steane code \cite[Eq.~10.83]{nielsen_quantum_2010}.
|
||||||
|
We can describe it using the check matrix
|
||||||
|
\begin{align}
|
||||||
|
\label{eq:steane}
|
||||||
|
\bm{H}_\text{Steane} = \left[
|
||||||
|
\begin{array}{ccccccc|ccccccc}
|
||||||
|
0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
|
0 & 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
|
1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
|
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\
|
||||||
|
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\
|
||||||
|
0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1
|
||||||
|
\end{array}
|
||||||
|
\right]
|
||||||
|
.%
|
||||||
|
\end{align}
|
||||||
|
The first $n$ columns correspond to $X$ operators acting on the
|
||||||
|
corresponding physical qubit, the rest to the $Z$ operators.
|
||||||
|
|
||||||
\begin{figure}[t]
|
\begin{figure}[t]
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
\tikzset{
|
% tex-fmt: off
|
||||||
meter/.append style={
|
\begin{quantikz}
|
||||||
draw, rectangle,
|
\lstick[2]{$E\ket{\psi}_\text{L}$} & & \gate[2]{P_1} & \gate[2]{P_2} & \gate[style={draw=none},2]{\ldots} & \gate[2]{P_{n-k}} & & & \\
|
||||||
font=\vphantom{A}, minimum width=8mm, minimum height=8mm,
|
& & & & & & & & \\
|
||||||
path picture={
|
\lstick{$\ket{0}_{\text{A}_1}$} & \gate{H} & \ctrl{-1} & & & & \gate{H} & \meter{} & \setwiretype{c} \\
|
||||||
\draw[black]
|
\lstick{$\ket{0}_{\text{A}_2}$} & \gate{H} & & \ctrl{-2} & & & \gate{H} & \meter{} & \setwiretype{c} \\
|
||||||
([shift={(.1,.3)}]path picture bounding box.south west)
|
\vdots\setwiretype{n} & & & & & & & & \vdots \\
|
||||||
to[bend left=50]
|
\lstick{$\ket{0}_{\text{A}_{n-k}}$} & \gate{H} & & & & \ctrl{-4} & \gate{H} & \meter{} & \setwiretype{c} \\
|
||||||
([shift={(-.1,.3)}]path picture bounding box.south east);
|
\end{quantikz}
|
||||||
\draw[black,-latex]
|
% tex-fmt: on
|
||||||
([shift={(0,.1)}]path picture bounding box.south)
|
|
||||||
-- ([shift={(.3,-.1)}]path picture bounding box.north);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
\red{Hier könnte Ihre Werbung stehen.}
|
|
||||||
|
|
||||||
\caption{
|
\caption{
|
||||||
\red{Illustration of a general syndrome extraction circuit.
|
Illustration of a full syndrome extraction circuit.
|
||||||
Adapted from \cite[Figure~4]{roffe_quantum_2019}.}
|
Adapted from \cite[Figure~4]{roffe_quantum_2019}.
|
||||||
}
|
}
|
||||||
\label{fig:sec}
|
\label{fig:sec}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
@@ -1352,76 +1435,275 @@ Hadamard gates \cite[Sec.~10.5.8]{nielsen_quantum_2010}]} \\
|
|||||||
\subsection{Calderbank-Shor-Steane Codes}
|
\subsection{Calderbank-Shor-Steane Codes}
|
||||||
\label{subsec:Calderbank-Shor-Steane Codes}
|
\label{subsec:Calderbank-Shor-Steane Codes}
|
||||||
|
|
||||||
|
% Intro
|
||||||
|
|
||||||
Stabilizer codes are especially practical to work with when they can
|
Stabilizer codes are especially practical to work with when they can
|
||||||
handle $X$- and $Z$-type errors independently.
|
handle $X$ and $Z$ type errors independently.
|
||||||
We can then separate the stabilizer generators into some with only
|
As $Z$ errors anti-commute with $X$ operators in the stabilizers and
|
||||||
$Z$ operators and some with only $X$ operators.
|
vice versa, this property translates into being able to split the
|
||||||
|
stabilizers into a subset being made up of only $X$
|
||||||
|
operators and the rest only of $Z$ operators.
|
||||||
|
We call such codes \ac{css} codes.
|
||||||
|
We can see this property in \autoref{eq:steane} in the check matrix
|
||||||
|
of the Steane code.
|
||||||
|
|
||||||
\indent\red{[Z-type operators for X type errors and vice versa ]} \\
|
% Construction
|
||||||
\indent\red{[Construction from two binary linear codes
|
|
||||||
\cite[p.~452,469]{nielsen_quantum_2010}]}
|
|
||||||
|
|
||||||
|
We can exploit this separate consideration of $X$ and $Z$ errors in
|
||||||
|
the construction of \ac{css} codes.
|
||||||
|
We combine two binary linear codes $\mathcal{C}_1$ and
|
||||||
|
$\mathcal{C}_2$, each responsible for correcting one type of error
|
||||||
|
\cite[Sec.~10.5.6]{nielsen_quantum_2010}.
|
||||||
|
Using the dual code of $\mathcal{C}_2$ \cite[Eq.~3.4]{ryan_channel_2009}
|
||||||
|
\begin{align*}
|
||||||
|
\mathcal{C}_2^\perp := \left\{ \bm{x}' \in \mathbb{F}^2 :
|
||||||
|
\bm{x}' \bm{x}^\text{T} = 0 ~\forall \bm{x} \in \mathcal{C}_2 \right\}
|
||||||
|
,%
|
||||||
|
\end{align*}
|
||||||
|
we define $\bm{H}_X := \bm{H}(\mathcal{C}_2^\perp)$ and $\bm{H}_Z
|
||||||
|
:= \bm{H}(\mathcal{C}_1)$, and construct the check matrix as
|
||||||
|
\begin{align*}
|
||||||
|
\left[
|
||||||
|
\begin{array}{c|c}
|
||||||
|
\bm{H}_X & \bm{0} \\
|
||||||
|
\bm{0} & \bm{H}_Z
|
||||||
|
\end{array}
|
||||||
|
\right]
|
||||||
|
.%
|
||||||
|
\end{align*}
|
||||||
|
In order to yield a valid stabilizer code, $\mathcal{C}_1$ and
|
||||||
|
$\mathcal{C}_2$ must satisfy the commutativity condition
|
||||||
|
\begin{align}
|
||||||
|
\label{eq:css_condition}
|
||||||
|
\bm{H}_X \bm{H}_Z^\text{T} = \bm{0}
|
||||||
|
.%
|
||||||
|
\end{align}
|
||||||
|
We can ensure this is the case by choosing them such that
|
||||||
|
$\mathcal{C}_2 \subset \mathcal{C}_1$.
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%
|
||||||
\subsection{Quantum Low-Density Parity-Check Codes}
|
\subsection{Quantum Low-Density Parity-Check Codes}
|
||||||
|
\label{subsec:Quantum Low-Density Parity-Check Codes}
|
||||||
|
|
||||||
|
% Intro
|
||||||
|
|
||||||
|
Various methods of constructing \ac{qec} codes exist
|
||||||
|
\cite{swierkowska_eccentric_2025}.
|
||||||
|
Topological codes, for example, encode information in the features of
|
||||||
|
a lattice and are intrinsically robust against local errors.
|
||||||
|
Among these, the \emph{surface code} is the most widely studied.
|
||||||
|
Another example are concatenated codes, which nest one code within
|
||||||
|
another, allowing for especially simple and flexible constructions
|
||||||
|
\cite[Sec.~3.2]{swierkowska_eccentric_2025}.
|
||||||
|
An area of research that has recently seen more attention is that of
|
||||||
|
quantum \ac{ldpc} (\acs{qldpc}) codes.
|
||||||
|
They have much better encoding efficiency than, e.g., the surface
|
||||||
|
code, scaling up of which would be prohibitively expensive
|
||||||
|
\cite[Sec.~I]{bravyi_high-threshold_2024}.
|
||||||
|
|
||||||
|
% Bivariate Bicycle codes
|
||||||
|
|
||||||
|
A recent addition to the class of \ac{qldpc} codes is that of \ac{bb}
|
||||||
|
codes \cite[Sec.~3]{bravyi_high-threshold_2024}.
|
||||||
|
These are a special type of \ac{css} code, where $\bm{H}_X$ and
|
||||||
|
$\bm{H}_Z$ are constructed from two matrices $\bm{A}$ and $\bm{B}$ as
|
||||||
|
\begin{align*}
|
||||||
|
\bm{H}_X = [\bm{A} \vert \bm{B}]
|
||||||
|
\hspace*{5mm} \text{and} \hspace*{5mm}
|
||||||
|
\bm{H}_Z = [\bm{B}^\text{T} \vert \bm{A}^\text{T}]
|
||||||
|
.%
|
||||||
|
\end{align*}
|
||||||
|
This way, we can guarantee the satisfaction of the commutativity
|
||||||
|
condition (\autoref{eq:css_condition}).
|
||||||
|
To define $\bm{A}$ and $\bm{B}$ we first introduce some additional notation.
|
||||||
|
We denote the identity matrix as $\bm{I_l} \in \mathbb{F}^{l\times l}$ and
|
||||||
|
the \emph{cyclic shift matrix} as $\bm{S_l} \in \mathbb{F}^{l\times
|
||||||
|
l},~S_{l,i,j}= \delta_{i+1,j}$, with $l \in \mathbb{N}$.
|
||||||
|
We further define
|
||||||
|
\begin{align*}
|
||||||
|
x = \bm{S}_l \otimes \bm{I}_m
|
||||||
|
\hspace*{5mm} \text{and} \hspace*{5mm}
|
||||||
|
y = \bm{I}_l \otimes \bm{S}_m
|
||||||
|
.%
|
||||||
|
\end{align*}
|
||||||
|
We can then construct $\bm{A}$ and $\bm{B}$ as bivariate polynomials
|
||||||
|
\begin{align*}
|
||||||
|
\bm{A} = \bm{A}_1 + \bm{A}_2 + \bm{A}_3
|
||||||
|
\hspace*{5mm} \text{and} \hspace*{5mm}
|
||||||
|
\bm{B} = \bm{B}_1 + \bm{B}_2 + \bm{B}_3
|
||||||
|
,%
|
||||||
|
\end{align*}
|
||||||
|
where $\bm{A}_i$ and $\bm{B}_i$ are powers of $\bm{x}$ or $\bm{y}$.
|
||||||
|
\ac{bb} codes have large minimum distance $d_\text{min}$ and high rate,
|
||||||
|
offering a more than 10-fold reduction of encoding overhead over the
|
||||||
|
surface code.
|
||||||
|
Additionally, they posess short-depth syndrome measurement circuits,
|
||||||
|
leading to lower time requirements for the syndrome extraction
|
||||||
|
and thus lower error rates \cite[Sec.~1]{bravyi_high-threshold_2024}.
|
||||||
|
|
||||||
|
% Syndrome-based BP
|
||||||
|
|
||||||
|
As we saw in \autoref{subsec:Stabilizer Measurements}, we work only
|
||||||
|
with the parity information contained in the syndrome, to avoid
|
||||||
|
disturbing the quantum states of individual qubits.
|
||||||
|
This necessitates a modification of the standard \ac{bp} algorithm
|
||||||
|
introduced in \autoref{subsec:Iterative Decoding}
|
||||||
|
\cite[Sec.~3.1]{yao_belief_2024}.
|
||||||
|
Instead of attempting to find the most likely codeword directly, the
|
||||||
|
algorithm will now try to find an error pattern $\hat{\bm{e}} \in
|
||||||
|
\mathbb{F}_2^n$ that satisfies
|
||||||
|
\begin{align*}
|
||||||
|
\bm{H} \hat{\bm{e}}^\text{T} = \bm{s}
|
||||||
|
.%
|
||||||
|
\end{align*}
|
||||||
|
To this end, we initialize the channel \acp{llr} as
|
||||||
|
\begin{align*}
|
||||||
|
\tilde{L}_i = \log{\frac{P(X_i = 0)}{P(X_i = 1)}} = \log{\frac{1
|
||||||
|
- p_i}{p_i}}
|
||||||
|
,%
|
||||||
|
\end{align*}
|
||||||
|
where $p_i$ is the prior probability of error of \ac{vn} $i$.
|
||||||
|
Additionally, we amend the \ac{cn} update to consider the parity
|
||||||
|
indicated by the syndrome, calculating
|
||||||
|
\begin{align*}
|
||||||
|
L_{i\leftarrow j} = 2\cdot (-1)^{s_j} \cdot \tanh^{-1} \left( \prod_{i'\in
|
||||||
|
\mathcal{N}(j)\setminus \{i\}} \tanh \frac{L_{i'\rightarrow j}}{2} \right)
|
||||||
|
.
|
||||||
|
\end{align*}
|
||||||
|
The resulting syndrome-based \ac{bp} algorithm is shown in
|
||||||
|
algorithm \ref{alg:syndome_bp}.
|
||||||
|
|
||||||
\noindent\red{[Constant overhead scaling]} \\
|
|
||||||
\noindent\red{[Scaling of minimum distance with code length]} \\
|
|
||||||
\noindent\red{[Bivariate Bicycle codes]} \\
|
|
||||||
\noindent\red{[Decoding QLDPC codes (syndrome-based BP)]} \\
|
|
||||||
\noindent\red{[Degeneracy -> BP+OSD, BPGD]} \\
|
|
||||||
\noindent\red{[``The task of decoding is therefore to infer, from a
|
|
||||||
measured syndrome, the most likely error coset rather than the exact
|
|
||||||
physical error.''
|
|
||||||
% tex-fmt: off
|
% tex-fmt: off
|
||||||
\cite[Sec.~II~B)]{koutsioumpas_colour_2025}]}%
|
\tikzexternaldisable
|
||||||
|
\begin{algorithm}[t]
|
||||||
|
\caption{Binary syndrome-based belief propagation (BP) algorithm.}
|
||||||
|
\label{alg:syndome_bp}
|
||||||
|
\begin{algorithmic}[1]
|
||||||
|
\State \textbf{Initialize:} $\tilde{L}_i \leftarrow
|
||||||
|
\log \frac{1-p_i}{p_i}$ for all $i \in \mathcal{I}$
|
||||||
|
\State \textbf{Initialize:} $L_{i \rightarrow j} \leftarrow
|
||||||
|
\tilde{L}_i$ for all $i \in \mathcal{I},\, j \in \mathcal{N}_\text{V}(i)$
|
||||||
|
\State \textbf{Initialize:} $\hat{e} \leftarrow \bm{0}$
|
||||||
|
|
||||||
|
\For{$\ell = 1, \ldots, n_\text{iter}$}
|
||||||
|
|
||||||
|
\For{$j \in \mathcal{J}$}
|
||||||
|
\For{$i \in \mathcal{N}_\text{C}(j)$}
|
||||||
|
\State $\displaystyle L_{i \leftarrow j} \leftarrow
|
||||||
|
2\cdot(-1)^{s_j}\cdot\tanh^{-1}
|
||||||
|
\!\left(
|
||||||
|
\prod_{i' \in \mathcal{N}_\text{C}(j)\setminus\{i\}}
|
||||||
|
\tanh\frac{L_{i'\rightarrow j}}{2}
|
||||||
|
\right)$
|
||||||
|
\EndFor
|
||||||
|
\EndFor
|
||||||
|
|
||||||
|
\For{$i \in \mathcal{I}$}
|
||||||
|
\For{$j \in \mathcal{N}_\text{V}(i)$}
|
||||||
|
\State $\displaystyle L_{i \rightarrow j} \leftarrow
|
||||||
|
\tilde{L}_i +
|
||||||
|
\sum_{j' \in \mathcal{N}_\text{V}(i)\setminus\{j\}}
|
||||||
|
L_{i \leftarrow j'}$
|
||||||
|
\EndFor
|
||||||
|
\EndFor
|
||||||
|
|
||||||
|
\For{$i \in \mathcal{I}$}
|
||||||
|
\State $\displaystyle \hat{e}_i \leftarrow
|
||||||
|
\mathbbm{1}\left\{
|
||||||
|
\tilde{L}_i +
|
||||||
|
\sum_{j \in \mathcal{N}_\text{V}(i)} L_{i \leftarrow j} < 0
|
||||||
|
\right\}$
|
||||||
|
\EndFor
|
||||||
|
|
||||||
|
\If{$\bm{H}\hat{\bm{e}}^\text{T} = \bm{s}$}
|
||||||
|
\State \textbf{break}
|
||||||
|
\EndIf
|
||||||
|
|
||||||
|
\EndFor
|
||||||
|
\State \textbf{return} $\hat{\bm{e}}$
|
||||||
|
\end{algorithmic}
|
||||||
|
\end{algorithm}
|
||||||
|
\tikzexternalenable
|
||||||
% tex-fmt: on
|
% tex-fmt: on
|
||||||
\\
|
|
||||||
|
|
||||||
\red{
|
% Degeneracy and short cycles
|
||||||
\textbf{General Notes:}
|
|
||||||
\begin{itemize}
|
Decoding \ac{qldpc} codes poses some unique challenges.
|
||||||
\item Note that there are other codes than stabilizer codes
|
One issue is that of \emph{quantum degeneracy}.
|
||||||
(and research and give some examples), but only
|
Because errors that differ by a stabilizer have the same impact on
|
||||||
stabilizer codes are considered in this work
|
all codewords, there can be multiple minimum-weight solutions to the
|
||||||
\item Degeneracy
|
quantum decoding problem \cite[Sec.~II.C.]{babar_fifteen_2015}
|
||||||
\item The QEC decoding problem (considering degeneracy)
|
\cite[Sec.~V]{roffe_decoding_2020}.
|
||||||
\cite[Sec.~2.3]{yao_belief_2024}
|
This leads to the decoding algorithm getting confused about the
|
||||||
\end{itemize}
|
direction to proceed in \cite[Sec.~5]{yao_belief_2024}.
|
||||||
\textbf{Content:}
|
Another problem is that due to the commutativity property of the stabilizers,
|
||||||
\begin{itemize}
|
quantum codes inherently contain short cycles
|
||||||
\item General context
|
\cite[Sec.~IV.C]{babar_fifteen_2015}.
|
||||||
\begin{itemize}
|
As discussed in \autoref{subsec:Iterative Decoding}, these lead to
|
||||||
\item Why we need QEC (correcting errors due
|
the violation of the independence assumption of the messages passed
|
||||||
to noisy gates)
|
during decoding, impeding performance.
|
||||||
\item Main challenges of QEC compared to classical
|
|
||||||
error correction
|
% BPGD
|
||||||
\item Logical vs physical states, logical vs
|
|
||||||
physical operators
|
The aforementioned issues both manifest themselves as convergence problems
|
||||||
\end{itemize}
|
of the \ac{bp} algorithm, and different ways of modifying the algorithm
|
||||||
\item Stabilizer codes
|
to aid with convergence exist.
|
||||||
\begin{itemize}
|
One approach is to use \ac{bp} with guided decimation (\acs{bpgd})
|
||||||
\item Definition of a stabilizer code
|
\cite[Alg.~1]{yao_belief_2024}.
|
||||||
\item The stabilizer its generators (note somewhere
|
Here, a number $T\in \mathbb{N}$ of \ac{bp} iterations are performed,
|
||||||
that the generators have to commute
|
before \emph{decimating} the most reliable \ac{vn}, i.e., performing
|
||||||
to be able to
|
a hard decision and excluding it from further decoding.
|
||||||
be measured without disturbing each other)
|
This constrains the solution space more and more as the decoding
|
||||||
(Why we need commutativity of the
|
progresses, encouraging the algorithm to converge to one of the
|
||||||
stabilizers [Journal,
|
solutions \cite[Sec.~5]{yao_belief_2024}.
|
||||||
p.~51], [Got97, p.~6])
|
Algorithm \ref{alg:bpgd} shows this process.
|
||||||
\item syndrome extraction circuit
|
Note that as the Tanner graph only has $n$ \acp{vn}, this is a
|
||||||
\item Stabilizer codes are effectively the QM
|
natural constraint on the maximum number of outer iterations of the algorithm.
|
||||||
% TODO: Actually binary linear codes or
|
|
||||||
% just linear codes?
|
% TODO: Explain that setting the channel LLR to infinity is the same
|
||||||
equivalent of binary linear codes (e.g.,
|
% as a hard decision and ignoring the VN in the further decoding
|
||||||
expressible via check matrix)
|
% tex-fmt: off
|
||||||
\item Similar to parity checks, quantum states can be
|
\tikzexternaldisable
|
||||||
more conveniently described using stabilizers
|
\begin{algorithm}[t]
|
||||||
rather than working with the states directly
|
\caption{Belief propagation with guided decimation (BPGD) algorithm.}
|
||||||
\cite[Sec.~10.5.1]{nielsen_quantum_2010}
|
\label{alg:bpgd}
|
||||||
\end{itemize}
|
\begin{algorithmic}[1]
|
||||||
\item Digitization of errors
|
\State \textbf{Initialize:} $\tilde{L}_i \leftarrow
|
||||||
\item CSS codes
|
\log \frac{1-p_i}{p_i}$ for all $i \in \mathcal{I}$
|
||||||
\item Color codes?
|
\State \textbf{Initialize:} $L_{i \rightarrow j} \leftarrow
|
||||||
\item Surface codes?
|
\tilde{L}_i$ for all $i \in \mathcal{I},\, j \in \mathcal{N}_\text{V}(i)$
|
||||||
\end{itemize}
|
\State \textbf{Initialize:} $\hat{e} \leftarrow \bm{0}$
|
||||||
}
|
\State \textbf{Initialize:} $\mathcal{I}' \leftarrow \mathcal{I}$
|
||||||
|
|
||||||
|
\For{$r = 1, \ldots, n$}
|
||||||
|
|
||||||
|
\For{$\ell = 1, \ldots, T$}
|
||||||
|
\State Perform \ac{cn} update
|
||||||
|
\State Perform \ac{vn} update
|
||||||
|
\State $L^\text{total}_i \leftarrow \tilde{L}_i + \sum_{j \in \mathcal{N}_\text{V}(i)} L_{i \leftarrow j}$
|
||||||
|
\EndFor
|
||||||
|
|
||||||
|
\For{$i \in \mathcal{I}$}
|
||||||
|
\State $\displaystyle \hat{e}_i \leftarrow
|
||||||
|
\mathbbm{1}\left\{ L^\text{total}_i \right\}$
|
||||||
|
\EndFor
|
||||||
|
|
||||||
|
\If{$\bm{H}\hat{\bm{e}}^\text{T} = \bm{s}$}
|
||||||
|
\State \textbf{break}
|
||||||
|
\Else
|
||||||
|
\State $i_\text{max} \leftarrow \argmax_{i \in \mathcal{I}'} \lvert L^\text{total}_i \rvert $
|
||||||
|
\If{$L^\text{total}_{i_\text{max}} < 0$}
|
||||||
|
\State $\tilde{L}_{i_\text{max}} \leftarrow -\infty$
|
||||||
|
\Else
|
||||||
|
\State $\tilde{L}_{i_\text{max}} \leftarrow +\infty$
|
||||||
|
\EndIf
|
||||||
|
\State $\mathcal{I}' \leftarrow \mathcal{I}'\setminus\{i_\text{max}\}$
|
||||||
|
\EndIf
|
||||||
|
|
||||||
|
\EndFor
|
||||||
|
\State \textbf{return} $\hat{\bm{e}}$
|
||||||
|
\end{algorithmic}
|
||||||
|
\end{algorithm}
|
||||||
|
\tikzexternalenable
|
||||||
|
% tex-fmt: on
|
||||||
|
|
||||||
|
|||||||
@@ -10,9 +10,435 @@
|
|||||||
\subsection{Detector Error Models}
|
\subsection{Detector Error Models}
|
||||||
\section{Practical Considerations}
|
\section{Practical Considerations}
|
||||||
\subsection{Practical Methodology}
|
\subsection{Practical Methodology}
|
||||||
|
|
||||||
\indent\red{[(?) Figure from presentation, showing where the LER
|
|
||||||
calculation takes place]} \\
|
|
||||||
|
|
||||||
\subsection{Stim}
|
\subsection{Stim}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\newcommand{\xerr}{\gate[style={fill=KITblue!50}]{\phantom{1}}}
|
||||||
|
\newcommand{\xyzerr}{\gate[style={
|
||||||
|
draw=black,
|
||||||
|
fill=KITred,
|
||||||
|
path picture={
|
||||||
|
% tex-fmt: off
|
||||||
|
\fill[KITblue!60]
|
||||||
|
($(path picture bounding box.south west)+(0,0)$)
|
||||||
|
-- ($(path picture bounding box.north west)+(0,0)$)
|
||||||
|
-- ($(path picture bounding box.north west)+(0.28,0)$)
|
||||||
|
-- cycle;
|
||||||
|
\fill[KITorange!60]
|
||||||
|
($(path picture bounding box.north east)+(0,0)$)
|
||||||
|
-- ($(path picture bounding box.south east)+(0,0)$)
|
||||||
|
-- ($(path picture bounding box.south east)+(-0.28,0)$)
|
||||||
|
-- cycle;
|
||||||
|
\fill[KITred!60]
|
||||||
|
($(path picture bounding box.north east)+(0,0)$)
|
||||||
|
-- ($(path picture bounding box.south east)+(-0.28,0)$)
|
||||||
|
-- ($(path picture bounding box.south west)+(0,0)$)
|
||||||
|
-- ($(path picture bounding box.north west)+(0.28,0)$)
|
||||||
|
-- cycle;
|
||||||
|
% tex-fmt: on
|
||||||
|
}
|
||||||
|
}]{\phantom{1}}}
|
||||||
|
|
||||||
|
\begin{subfigure}{0.48\textwidth}
|
||||||
|
\centering
|
||||||
|
% tex-fmt: off
|
||||||
|
\begin{quantikz}[row sep=4mm, column sep=4mm]
|
||||||
|
\lstick[3]{$\ket{\psi}$} & \xyzerr & \ctrl{3} & & & & & \\
|
||||||
|
& \xyzerr & & \ctrl{2} & \ctrl{3} & & & \\
|
||||||
|
& \xyzerr & & & & \ctrl{2} & & \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_1}$} & & \targ{} & \targ{} & & & \meter{} & \setwiretype{c} \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & \meter{} & \setwiretype{c}
|
||||||
|
\end{quantikz}
|
||||||
|
% tex-fmt: on
|
||||||
|
|
||||||
|
\caption{Depolarizing channel.}
|
||||||
|
\end{subfigure}%
|
||||||
|
\begin{subfigure}{0.48\textwidth}
|
||||||
|
\centering
|
||||||
|
% tex-fmt: off
|
||||||
|
\begin{quantikz}[row sep=4mm, column sep=4mm]
|
||||||
|
\lstick[3]{$\ket{\psi}$} & \xerr & \ctrl{3} & & & & & & \\
|
||||||
|
& \xerr & & \ctrl{2} & \ctrl{3} & & & & \\
|
||||||
|
& \xerr & & & & \ctrl{2} & & & \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_1}$} & & \targ{} & \targ{} & & & \xerr & \meter{} & \setwiretype{c} \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & \xerr & \meter{} & \setwiretype{c}
|
||||||
|
\end{quantikz}
|
||||||
|
% tex-fmt: on
|
||||||
|
|
||||||
|
\caption{Phenomenological noise.}
|
||||||
|
\end{subfigure}
|
||||||
|
|
||||||
|
\vspace*{3mm}
|
||||||
|
\centering
|
||||||
|
\begin{subfigure}[c]{0.75\textwidth}
|
||||||
|
\centering
|
||||||
|
% tex-fmt: off
|
||||||
|
\begin{quantikz}[row sep=4mm, column sep=2mm]
|
||||||
|
\lstick[3]{$\ket{\psi}$} & \xyzerr & \ctrl{3} & \xyzerr \wire[d][3]{q} & & & & & & & & & \\
|
||||||
|
& \xyzerr & & & \ctrl{2} & \xyzerr \wire[d][2]{q} & \ctrl{3} & \xyzerr \wire[d][3]{q} & & & & & \\
|
||||||
|
& \xyzerr & & & & & & & \ctrl{2} & \xyzerr \wire[d][2]{q} & & & \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_1}$} & \xyzerr & \targ{} & \xyzerr & \targ{} & \xyzerr & & & & & \xerr & \meter{} & \setwiretype{c} \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_2}$} & \xyzerr & & & & & \targ{} & \xyzerr & \targ{} & \xyzerr & \xerr & \meter{} & \setwiretype{c}
|
||||||
|
\end{quantikz}
|
||||||
|
% tex-fmt: on
|
||||||
|
|
||||||
|
\caption{Circuit-level noise.}
|
||||||
|
\end{subfigure}%
|
||||||
|
\hfill%
|
||||||
|
\begin{subfigure}[c]{0.25\textwidth}
|
||||||
|
\centering
|
||||||
|
% tex-fmt: off
|
||||||
|
\begin{quantikz}[row sep=4mm, column sep=2mm]
|
||||||
|
\setwiretype{n} & \xerr & \gate[style={right, draw=none, xshift=-15mm}]{\text{X error}} \\
|
||||||
|
\setwiretype{n} & \xyzerr & \gate[style={right, draw=none, xshift=-15mm}]{\text{X,Z, or Y error}} \\
|
||||||
|
\setwiretype{n} & \gate{\phantom{1}}\wire[d][1]{q} & \gate[style={right, draw=none, xshift=-15mm},2]{\text{Correlated error}} \\
|
||||||
|
\setwiretype{n} & \gate{\phantom{1}} &
|
||||||
|
\end{quantikz}
|
||||||
|
% tex-fmt: on
|
||||||
|
\end{subfigure}
|
||||||
|
|
||||||
|
\caption{Types of noise models.}
|
||||||
|
\label{fig:Types of noise models.}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\node[rectangle, draw, fill=orange!20, minimum
|
||||||
|
height=2cm, minimum width=2.5cm, align=left] at (0,0)
|
||||||
|
(internal) {Internal\\ Errors};
|
||||||
|
|
||||||
|
\node[signal, draw, fill=orange!20, minimum height=2cm,
|
||||||
|
minimum width=2.5cm, align=left, signal pointer angle=140]
|
||||||
|
at (-2.45, 0) (input) {Input\\ Errors};
|
||||||
|
|
||||||
|
\node at (1.97,0) {\huge =};
|
||||||
|
|
||||||
|
\node[rectangle, draw, fill=orange!20, minimum height=2cm,
|
||||||
|
minimum width=2.5cm, align=left] at (4,0) (output)
|
||||||
|
{Output\\ Errors};
|
||||||
|
|
||||||
|
\node[above] at (input.north) {\small Input State};
|
||||||
|
\node[above] at (internal.north) {\small QEC};
|
||||||
|
\node[above] at (output.north) {\small Output State};
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\caption{Sources of error in a fault-tolerant \ac{qec} system.}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\begin{minipage}{0.5\textwidth}
|
||||||
|
\begin{align*}
|
||||||
|
\bm{H} =
|
||||||
|
\begin{pmatrix}
|
||||||
|
1 & 1 & 0 \\
|
||||||
|
0 & 1 & 1
|
||||||
|
\end{pmatrix}
|
||||||
|
\end{align*}
|
||||||
|
\end{minipage}%
|
||||||
|
\begin{minipage}{0.5\textwidth}
|
||||||
|
% tex-fmt: off
|
||||||
|
\begin{quantikz}%[row sep=4mm, column sep=4mm]
|
||||||
|
\lstick[3]{$\ket{\psi}$} & \ctrl{3} & & & & & \\
|
||||||
|
& & \ctrl{2} & \ctrl{3} & & & \\
|
||||||
|
& & & & \ctrl{2} & & \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_1}$} & \targ{} & \targ{} & & & \meter{} & \setwiretype{c} \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_2}$} & & & \targ{} & \targ{} & \meter{} & \setwiretype{c}
|
||||||
|
\end{quantikz}
|
||||||
|
% tex-fmt: on
|
||||||
|
\end{minipage}%
|
||||||
|
|
||||||
|
\caption{
|
||||||
|
Syndrome extraction circuit for the three-qubit repetition
|
||||||
|
code under bit-flip noise.
|
||||||
|
}
|
||||||
|
\label{fig:}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\begin{minipage}{0.3\textwidth}
|
||||||
|
\centering
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\node{$%
|
||||||
|
\bm{\Omega} =
|
||||||
|
\begin{pmatrix}
|
||||||
|
1 & 1 & 0 \\
|
||||||
|
0 & 1 & 1 \\
|
||||||
|
1 & 1 & 0 \\
|
||||||
|
0 & 1 & 1 \\
|
||||||
|
1 & 1 & 0 \\
|
||||||
|
0 & 1 & 1
|
||||||
|
\end{pmatrix}%
|
||||||
|
$
|
||||||
|
};
|
||||||
|
|
||||||
|
\draw [
|
||||||
|
line width=1pt,
|
||||||
|
decorate,
|
||||||
|
decoration={brace,mirror,amplitude=3mm,raise=5mm}
|
||||||
|
]
|
||||||
|
(1,0.55) -- (1,1.4)
|
||||||
|
node[midway,right,xshift=10mm]{$\text{SE}_1$};
|
||||||
|
|
||||||
|
\draw [
|
||||||
|
line width=1pt,
|
||||||
|
decorate,
|
||||||
|
decoration={brace,mirror,amplitude=3mm,raise=5mm}
|
||||||
|
]
|
||||||
|
(1,-0.4) -- (1,0.45)
|
||||||
|
node[midway,right,xshift=10mm]{$\text{SE}_2\hspace{2mm},$};
|
||||||
|
|
||||||
|
\draw [
|
||||||
|
line width=1pt,
|
||||||
|
decorate,
|
||||||
|
decoration={brace,mirror,amplitude=3mm,raise=5mm}
|
||||||
|
]
|
||||||
|
(1,-1.38) -- (1,-0.5)
|
||||||
|
node[midway,right,xshift=10mm]{$\text{SE}_3$};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{minipage}%
|
||||||
|
\begin{minipage}{0.3\textwidth}
|
||||||
|
\centering
|
||||||
|
\vspace*{-6mm}
|
||||||
|
\begin{gather*}
|
||||||
|
\bm{s} \in \text{span} \mleft\{ \bm{\Omega} \mright\}
|
||||||
|
\end{gather*}
|
||||||
|
\end{minipage}
|
||||||
|
|
||||||
|
\newcommand{\preperr}[1]{
|
||||||
|
\gate[style={fill=blue!20}]{\scriptstyle #1}
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace*{5mm}
|
||||||
|
|
||||||
|
\begin{quantikz}[
|
||||||
|
row sep=4mm, column sep=4mm,
|
||||||
|
wire types={q,q,q,q,q,n,n,n,n},
|
||||||
|
execute at end picture={
|
||||||
|
\draw [
|
||||||
|
line width=1pt,
|
||||||
|
decorate,
|
||||||
|
decoration={brace,amplitude=3mm,raise=9mm}
|
||||||
|
]
|
||||||
|
(\tikzcdmatrixname-4-19.north east)
|
||||||
|
--
|
||||||
|
(\tikzcdmatrixname-5-19.south east)
|
||||||
|
node[midway,right,xshift=14mm]{$\text{SE}_1$};
|
||||||
|
\draw [
|
||||||
|
line width=1pt,
|
||||||
|
decorate,
|
||||||
|
decoration={brace,amplitude=3mm,raise=9mm}
|
||||||
|
]
|
||||||
|
(\tikzcdmatrixname-6-19.north east)
|
||||||
|
--
|
||||||
|
(\tikzcdmatrixname-7-19.south east)
|
||||||
|
node[midway,right,xshift=14mm]{$\text{SE}_2$};
|
||||||
|
\draw [
|
||||||
|
line width=1pt,
|
||||||
|
decorate,
|
||||||
|
decoration={brace,amplitude=3mm,raise=9mm}
|
||||||
|
]
|
||||||
|
(\tikzcdmatrixname-8-19.north east)
|
||||||
|
--
|
||||||
|
(\tikzcdmatrixname-9-19.south east)
|
||||||
|
node[midway,right,xshift=14mm]{$\text{SE}_3$};
|
||||||
|
}
|
||||||
|
]
|
||||||
|
% tex-fmt: off
|
||||||
|
\lstick[3]{$\ket{\psi}$} & \preperr{E_0} & \ctrl{3} & & & & & & \ctrl{5} & & & & & & \ctrl{7} & & & & & \\
|
||||||
|
& \preperr{E_1} & & \ctrl{2} & \ctrl{3} & & & & & \ctrl{4} & \ctrl{5} & & & & & \ctrl{6} & \ctrl{7} & & & \\
|
||||||
|
& \preperr{E_2} & & & & \ctrl{2} & & & & & & \ctrl{4} & & & & & & \ctrl{6} & & \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_1}$} & & \targ{} & \targ{} & & & & & & & & & & & & & & & \meter{} & \setwiretype{c} \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & & & & & & & & & & & & & \meter{} & \setwiretype{c} \\
|
||||||
|
& & & & & & \lstick{$\ket{0}_{\text{A}_3}$} & \setwiretype{q} & \targ{} & \targ{} & & & & & & & & & \meter{} & \setwiretype{c} \\
|
||||||
|
& & & & & & \lstick{$\ket{0}_{\text{A}_4}$} & \setwiretype{q} & & & \targ{} & \targ{} & & & & & & & \meter{} & \setwiretype{c} \\
|
||||||
|
& & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_5}$} & \setwiretype{q} & \targ{} & \targ{} & & & \meter{} & \setwiretype{c} \\
|
||||||
|
& & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_6}$} & \setwiretype{q} & & & \targ{} & \targ{} & \meter{} & \setwiretype{c}
|
||||||
|
% tex-fmt: on
|
||||||
|
\end{quantikz}
|
||||||
|
|
||||||
|
\caption{
|
||||||
|
Repeated syndrome extraction circuit for the three-qubit
|
||||||
|
repetition code under bit flip noise.
|
||||||
|
}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\begin{gather*}
|
||||||
|
\hspace*{-33.3mm}%
|
||||||
|
\begin{array}{c}
|
||||||
|
E_6 \\
|
||||||
|
\downarrow
|
||||||
|
\end{array}
|
||||||
|
\end{gather*}
|
||||||
|
\vspace*{-8mm}
|
||||||
|
\begin{gather*}
|
||||||
|
\bm{\Omega} =
|
||||||
|
\left(
|
||||||
|
\begin{array}{
|
||||||
|
cccccc%
|
||||||
|
>{\columncolor{red!20}}c%
|
||||||
|
cccccccc
|
||||||
|
}
|
||||||
|
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),
|
||||||
|
\hspace*{7mm}
|
||||||
|
\bm{s} \in \text{span} \mleft\{
|
||||||
|
\bm{\Omega} \mright\}
|
||||||
|
\end{gather*}
|
||||||
|
|
||||||
|
\vspace*{5mm}
|
||||||
|
|
||||||
|
\newcommand{\preperr}[1]{
|
||||||
|
\gate[style={fill=blue!20}]{\scriptstyle #1}
|
||||||
|
}
|
||||||
|
\newcommand{\measerr}{\gate[style={fill=blue!20}]{\phantom{1}}}
|
||||||
|
|
||||||
|
\newcommand{\noise}{
|
||||||
|
\gate[style={noisy}]{\text{\small X}}%
|
||||||
|
\setwiretype{n}%
|
||||||
|
\wire[l][1]{q}
|
||||||
|
}
|
||||||
|
\newcommand{\redwire}[1]{
|
||||||
|
\wire[r][#1][style={draw=red, line width=1.5pt}]{q}
|
||||||
|
}
|
||||||
|
\newcommand{\redtarg}{
|
||||||
|
\targ[style={draw=red}]{}%
|
||||||
|
\setwiretype{n}%
|
||||||
|
\wire[l][1]{q}
|
||||||
|
}
|
||||||
|
\newcommand{\redctrl}[1]{
|
||||||
|
\ctrl[style={draw=red,fill=red,line width=1.5pt}]{#1}
|
||||||
|
}
|
||||||
|
\newcommand{\redmeter}{\meter[style={draw=red,fill=red!20}]{}}
|
||||||
|
|
||||||
|
\tikzset{
|
||||||
|
noisy/.style={
|
||||||
|
starburst,
|
||||||
|
starburst point height=2.5mm,
|
||||||
|
fill=red!25, draw=red!85!black,
|
||||||
|
line width=1.5pt,
|
||||||
|
inner xsep=-2pt, inner ysep=-2pt
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
\centering
|
||||||
|
|
||||||
|
% tex-fmt: off
|
||||||
|
\begin{quantikz}[row sep=4mm, column sep=3mm, wire types={q,q,q,q,q,n,n,n,n}]
|
||||||
|
\lstick[3]{$\ket{\psi}$} & \preperr{E_0} & \ctrl{3} & & & & \preperr{E_5} & & \ctrl{5} & & & & \preperr{E_{10}} & & \ctrl{7} & & & & & & \\
|
||||||
|
& \preperr{E_1} & & \ctrl{2} & \ctrl{3} & & \noise\redwire{14} & & & \redctrl{4} & \redctrl{5} & & \preperr{E_{11}} & & & \redctrl{6} & \redctrl{7} & & & & \\
|
||||||
|
& \preperr{E_2} & & & & \ctrl{2} & \preperr{E_7} & & & & & \ctrl{4} & \preperr{E_{12}} & & & & & \ctrl{6} & & & \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_1}$} & & \targ{} & \targ{} & & & & & & & & & & & & & & & \preperr{E_3} & \meter{} & \setwiretype{c} \\
|
||||||
|
\lstick{$\ket{0}_{\text{A}_2}$} & & & & \targ{} & \targ{} & & & & & & & & & & & & & \preperr{E_4} & \meter{} & \setwiretype{c} \\
|
||||||
|
& & & & & & \lstick{$\ket{0}_{\text{A}_3}$} & \setwiretype{q} & \targ{} & \redtarg\redwire{10} & & & & & & & & & \preperr{E_8} & \redmeter\wire[r][1][style={draw=red,double, line width=1.5pt}]{q} & \setwiretype{n} \\
|
||||||
|
& & & & & & \lstick{$\ket{0}_{\text{A}_4}$} & \setwiretype{q} & & & \redtarg\redwire{9} & \targ{} & & & & & & & \preperr{E_9} & \redmeter\wire[r][1][style={draw=red,double, line width=1.5pt}]{q} & \setwiretype{n} \\
|
||||||
|
& & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_5}$} & \setwiretype{q} & \targ{} & \redtarg\redwire{4} & & & \preperr{E_{13}} & \redmeter\wire[r][1][style={draw=red,double, line width=1.5pt}]{q} & \setwiretype{n} \\
|
||||||
|
& & & & & & & & & & & & \lstick{$\ket{0}_{\text{A}_6}$} & \setwiretype{q} & & & \redtarg\redwire{3} & \targ{} & \preperr{E_{14}} & \redmeter\wire[r][1][style={draw=red,double, line width=1.5pt}]{q} & \setwiretype{n}
|
||||||
|
\end{quantikz}
|
||||||
|
% tex-fmt: on
|
||||||
|
|
||||||
|
\caption{
|
||||||
|
Repeated syndrome extraction circuit for the three-qubit
|
||||||
|
repetition code under phenomenological noise.
|
||||||
|
}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\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}}}
|
||||||
|
|
||||||
|
% 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}
|
||||||
|
|
||||||
|
\caption{Construction of detectors from the measurements of a
|
||||||
|
three-qubit repetition code.}
|
||||||
|
\label{fig:Construction of the detectors from the measurements}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\tikzset{
|
||||||
|
gate/.style={
|
||||||
|
draw, %line width=1pt,
|
||||||
|
minimum height=2cm,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
% tex-fmt: off
|
||||||
|
\begin{quantikz}[row sep=2mm, column sep=4mm, wire types={q,q,q,n,n,n}]
|
||||||
|
& \gate[3]{\text{SE}_1} & & \gate[3]{\text{SE}_2} & & \gate[3]{\text{SE}_3} & & \gate[3]{\text{SE}_4} & \\
|
||||||
|
\lstick{$\ket{\psi}$} & & & & & & & & & \setwiretype{n} & \ldots \\
|
||||||
|
& \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} & \\
|
||||||
|
\end{quantikz}
|
||||||
|
% tex-fmt: on
|
||||||
|
|
||||||
|
\caption{Construction of detectors from measurements in the general case.}
|
||||||
|
\end{figure}
|
||||||
|
|||||||
@@ -1,5 +1,407 @@
|
|||||||
\chapter{Decoding under Detector Error Models}
|
\chapter{Decoding under Detector Error Models}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section{Sliding-Window Decoding}
|
\section{Sliding-Window Decoding}
|
||||||
\section{Treating Detector Error Matrices like SC-LDPC Codes}
|
\label{sec:Sliding-Window Decoding}
|
||||||
\section{Soft-Information Aware Sliding-Window Decoding}
|
|
||||||
\section{Numerical Results and Analysis}
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\hspace*{-114mm}%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\draw[decorate, decoration={brace, amplitude=10pt}, line width=1pt]
|
||||||
|
(0,0) -- (3.1,0) node[midway, above=4mm] {Commit region};
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\centering
|
||||||
|
\includegraphics[scale=0.75]{res/72_bb_dem.pdf}
|
||||||
|
|
||||||
|
\vspace*{-25.3mm}
|
||||||
|
|
||||||
|
\hspace*{-98mm}%
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\draw[{Latex}-{Latex}, line width=.7pt] (0, -0.75mm) -- (0, 5mm);
|
||||||
|
\draw[line width=1pt] (-1mm,-0.75mm) -- (3mm,-0.75mm);
|
||||||
|
\draw[line width=1pt] (-1mm,5mm) -- (3mm,5mm);
|
||||||
|
\node[left] at (-2mm,2.125mm) {$\sim W$};
|
||||||
|
|
||||||
|
\draw[{Latex}-{Latex}, line width=.3pt] (6.5cm,1.6mm) -- (6.5cm,5mm);
|
||||||
|
\draw[line width=1pt] (6.5cm,4.9mm) -- (6.5cm,7mm);
|
||||||
|
\node[above] at (6.5cm,7mm) {$\sim F$};
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\vspace*{10mm}
|
||||||
|
|
||||||
|
\caption{
|
||||||
|
Visualization of the windowing process on the detector
|
||||||
|
error matrix.
|
||||||
|
}
|
||||||
|
\label{fig:windowing_pcm}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Warm-Start Sliding-Window Decoding under BP}
|
||||||
|
\label{sec:warm_start_bp}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\tikzset{
|
||||||
|
VN/.style={
|
||||||
|
circle, fill=KITgreen, minimum width=1mm, minimum height=1mm,
|
||||||
|
},
|
||||||
|
CN/.style={
|
||||||
|
rectangle, fill=KITblue, minimum width=1mm, minimum height=1mm,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
\begin{tikzpicture}[node distance = 5mm]
|
||||||
|
\node[VN] (vn00) {};
|
||||||
|
\node[VN, below = of vn00] (vn01) {};
|
||||||
|
\node[VN, below = of vn01] (vn02) {};
|
||||||
|
\node[VN, below = of vn02] (vn03) {};
|
||||||
|
\node[VN, below = of vn03] (vn04) {};
|
||||||
|
|
||||||
|
\coordinate (temp) at ($(vn01)!0.5!(vn02)$);
|
||||||
|
|
||||||
|
\node[CN, left =10mm of temp] (cn00) {};
|
||||||
|
\node[CN, below = of cn00] (cn01) {};
|
||||||
|
|
||||||
|
\draw (vn00) -- (cn00);
|
||||||
|
\draw (vn01) -- (cn00);
|
||||||
|
\draw (vn03) -- (cn00);
|
||||||
|
\draw (vn01) -- (cn01);
|
||||||
|
\draw (vn02) -- (cn01);
|
||||||
|
\draw (vn04) -- (cn01);
|
||||||
|
|
||||||
|
\foreach \i in {1,2,3,4} {
|
||||||
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
||||||
|
|
||||||
|
\node[VN, right = 25mm of vn\prev 0] (vn\i0) {};
|
||||||
|
\node[VN, below = of vn\i0] (vn\i1) {};
|
||||||
|
\node[VN, below = of vn\i1] (vn\i2) {};
|
||||||
|
\node[VN, below = of vn\i2] (vn\i3) {};
|
||||||
|
\node[VN, below = of vn\i3] (vn\i4) {};
|
||||||
|
|
||||||
|
\coordinate (temp) at ($(vn\i1)!0.5!(vn\i2)$);
|
||||||
|
|
||||||
|
\node[CN, left = 10mm of temp] (cn\i0) {};
|
||||||
|
\node[CN, below = of cn\i0] (cn\i1) {};
|
||||||
|
|
||||||
|
\draw (vn\i0) -- (cn\i0);
|
||||||
|
\draw (vn\i1) -- (cn\i0);
|
||||||
|
\draw (vn\i3) -- (cn\i0);
|
||||||
|
\draw (vn\i1) -- (cn\i1);
|
||||||
|
\draw (vn\i2) -- (cn\i1);
|
||||||
|
\draw (vn\i4) -- (cn\i1);
|
||||||
|
}
|
||||||
|
|
||||||
|
\foreach \i in {1,2,3,4} {
|
||||||
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
||||||
|
|
||||||
|
\draw (vn\prev 3) -- (cn\i 0);
|
||||||
|
\draw (vn\prev 4) -- (cn\i 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
\node[
|
||||||
|
draw, inner sep=5mm,line width=1pt,
|
||||||
|
fit=(vn00)(vn04)(cn00)(cn01)(vn20)(vn24)(cn20)(cn21)
|
||||||
|
]
|
||||||
|
(box1) {};
|
||||||
|
\node[
|
||||||
|
draw, dashed, inner sep=5mm, inner ysep=8mm,line width=1pt,
|
||||||
|
fit=(vn10)(vn14)(cn10)(cn11)(vn30)(vn34)(cn30)(cn31)
|
||||||
|
]
|
||||||
|
(box2) {};
|
||||||
|
|
||||||
|
% Marker for W on the bottom
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=-5mm, line width=1pt]box1.south west) -- ++(0,-4mm)
|
||||||
|
coordinate (dim1l);
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=-5mm]box1.south east) -- ++(0,-4mm)
|
||||||
|
coordinate (dim1r);
|
||||||
|
\draw[{Latex}-{Latex}, line width=1pt]
|
||||||
|
([yshift=1mm]dim1l) -- ([yshift=1mm]dim1r)
|
||||||
|
node[midway, below=2pt] {$W$};
|
||||||
|
|
||||||
|
% Marker for F on top
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=3mm]box2.north west) -- ++(0,4mm)
|
||||||
|
coordinate (dim3l);
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=3mm]box2.north west -| box1.north west) -- ++(0,4mm)
|
||||||
|
coordinate (dim3r);
|
||||||
|
\draw[{Latex}-{Latex}, line width=1pt]
|
||||||
|
([yshift=-1mm]dim3l) -- ([yshift=-1mm]dim3r)
|
||||||
|
node[midway, above=2pt] {$F$};
|
||||||
|
|
||||||
|
% Arrow on the top right
|
||||||
|
\draw[-{Latex}, line width=1pt]
|
||||||
|
([yshift=8mm] box1.north east) -- ++(28mm,0);
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\caption{Visualization of the windowing process on the Tanner graph.}
|
||||||
|
\label{fig:windowing_tanner}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\tikzset{
|
||||||
|
VN/.style={
|
||||||
|
circle, fill=KITgreen, minimum width=1mm, minimum height=1mm,
|
||||||
|
},
|
||||||
|
CN/.style={
|
||||||
|
rectangle, fill=KITblue, minimum width=1mm, minimum height=1mm,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
\begin{tikzpicture}[node distance = 5mm]
|
||||||
|
\node[VN] (vn00) {};
|
||||||
|
\node[VN, below = of vn00] (vn01) {};
|
||||||
|
\node[VN, below = of vn01] (vn02) {};
|
||||||
|
\node[VN, below = of vn02] (vn03) {};
|
||||||
|
\node[VN, below = of vn03] (vn04) {};
|
||||||
|
|
||||||
|
\coordinate (temp) at ($(vn01)!0.5!(vn02)$);
|
||||||
|
|
||||||
|
\node[CN, left =10mm of temp] (cn00) {};
|
||||||
|
\node[CN, below = of cn00] (cn01) {};
|
||||||
|
|
||||||
|
\draw (vn00) -- (cn00);
|
||||||
|
\draw (vn01) -- (cn00);
|
||||||
|
\draw (vn03) -- (cn00);
|
||||||
|
\draw (vn01) -- (cn01);
|
||||||
|
\draw (vn02) -- (cn01);
|
||||||
|
\draw (vn04) -- (cn01);
|
||||||
|
|
||||||
|
\foreach \i in {1,2,3,4} {
|
||||||
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
||||||
|
|
||||||
|
\node[VN, right = 25mm of vn\prev 0] (vn\i0) {};
|
||||||
|
\node[VN, below = of vn\i0] (vn\i1) {};
|
||||||
|
\node[VN, below = of vn\i1] (vn\i2) {};
|
||||||
|
\node[VN, below = of vn\i2] (vn\i3) {};
|
||||||
|
\node[VN, below = of vn\i3] (vn\i4) {};
|
||||||
|
|
||||||
|
\coordinate (temp) at ($(vn\i1)!0.5!(vn\i2)$);
|
||||||
|
|
||||||
|
\node[CN, left = 10mm of temp] (cn\i0) {};
|
||||||
|
\node[CN, below = of cn\i0] (cn\i1) {};
|
||||||
|
|
||||||
|
\draw (vn\i0) -- (cn\i0);
|
||||||
|
\draw (vn\i1) -- (cn\i0);
|
||||||
|
\draw (vn\i3) -- (cn\i0);
|
||||||
|
\draw (vn\i1) -- (cn\i1);
|
||||||
|
\draw (vn\i2) -- (cn\i1);
|
||||||
|
\draw (vn\i4) -- (cn\i1);
|
||||||
|
}
|
||||||
|
|
||||||
|
\foreach \i in {1,2,3,4} {
|
||||||
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
||||||
|
|
||||||
|
\draw (vn\prev 3) -- (cn\i 0);
|
||||||
|
\draw (vn\prev 4) -- (cn\i 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
\node[
|
||||||
|
draw, inner sep=5mm,line width=1pt,
|
||||||
|
fit=(vn00)(vn04)(cn00)(cn01)(vn20)(vn24)(cn20)(cn21)
|
||||||
|
]
|
||||||
|
(box1) {};
|
||||||
|
\node[
|
||||||
|
draw, dashed, inner sep=5mm, inner ysep=8mm,line width=1pt,
|
||||||
|
fit=(vn10)(vn14)(cn10)(cn11)(vn30)(vn34)(cn30)(cn31)
|
||||||
|
]
|
||||||
|
(box2) {};
|
||||||
|
|
||||||
|
\draw[KITorange, line width=2pt] (cn10) -- (vn10);
|
||||||
|
\draw[KITorange, line width=2pt] (cn10) -- (vn11);
|
||||||
|
\draw[KITorange, line width=2pt] (cn10) -- (vn13);
|
||||||
|
\draw[KITorange, line width=2pt] (cn11) -- (vn11);
|
||||||
|
\draw[KITorange, line width=2pt] (cn11) -- (vn12);
|
||||||
|
\draw[KITorange, line width=2pt] (cn11) -- (vn14);
|
||||||
|
|
||||||
|
\draw[KITorange, line width=2pt] (vn13) -- (cn20);
|
||||||
|
\draw[KITorange, line width=2pt] (vn14) -- (cn21);
|
||||||
|
|
||||||
|
\draw[KITorange, line width=2pt] (cn20) -- (vn20);
|
||||||
|
\draw[KITorange, line width=2pt] (cn20) -- (vn21);
|
||||||
|
\draw[KITorange, line width=2pt] (cn20) -- (vn23);
|
||||||
|
\draw[KITorange, line width=2pt] (cn21) -- (vn21);
|
||||||
|
\draw[KITorange, line width=2pt] (cn21) -- (vn22);
|
||||||
|
\draw[KITorange, line width=2pt] (cn21) -- (vn24);
|
||||||
|
|
||||||
|
% Marker for W on the bottom
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=-5mm, line width=1pt]box1.south west) -- ++(0,-4mm)
|
||||||
|
coordinate (dim1l);
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=-5mm]box1.south east) -- ++(0,-4mm)
|
||||||
|
coordinate (dim1r);
|
||||||
|
\draw[{Latex}-{Latex}, line width=1pt]
|
||||||
|
([yshift=1mm]dim1l) -- ([yshift=1mm]dim1r)
|
||||||
|
node[midway, below=2pt] {$W$};
|
||||||
|
|
||||||
|
% Marker for F on top
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=3mm]box2.north west) -- ++(0,4mm)
|
||||||
|
coordinate (dim3l);
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=3mm]box2.north west -| box1.north west) -- ++(0,4mm)
|
||||||
|
coordinate (dim3r);
|
||||||
|
\draw[{Latex}-{Latex}, line width=1pt]
|
||||||
|
([yshift=-1mm]dim3l) -- ([yshift=-1mm]dim3r)
|
||||||
|
node[midway, above=2pt] {$F$};
|
||||||
|
|
||||||
|
% Arrow on the top right
|
||||||
|
\draw[-{Latex}, line width=1pt]
|
||||||
|
([yshift=8mm] box1.north east) -- ++(28mm,0);
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\caption{
|
||||||
|
Visualization of the messages used for the
|
||||||
|
initialization of the next window.
|
||||||
|
}
|
||||||
|
\label{fig:messages_tanner}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{Warm-Start Sliding-Window Decoding under BPGD}
|
||||||
|
\label{sec:warm_start_bpgd}
|
||||||
|
|
||||||
|
\begin{figure}[t]
|
||||||
|
\centering
|
||||||
|
|
||||||
|
\tikzset{
|
||||||
|
VN/.style={
|
||||||
|
circle, fill=KITgreen, minimum width=1mm, minimum height=1mm,
|
||||||
|
},
|
||||||
|
CN/.style={
|
||||||
|
rectangle, fill=KITblue, minimum width=1mm, minimum height=1mm,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
\begin{tikzpicture}[node distance = 5mm]
|
||||||
|
\node[VN] (vn00) {};
|
||||||
|
\node[VN, below = of vn00] (vn01) {};
|
||||||
|
\node[VN, below = of vn01] (vn02) {};
|
||||||
|
\node[VN, below = of vn02] (vn03) {};
|
||||||
|
\node[VN, below = of vn03] (vn04) {};
|
||||||
|
|
||||||
|
\coordinate (temp) at ($(vn01)!0.5!(vn02)$);
|
||||||
|
|
||||||
|
\node[CN, left =10mm of temp] (cn00) {};
|
||||||
|
\node[CN, below = of cn00] (cn01) {};
|
||||||
|
|
||||||
|
\draw (vn00) -- (cn00);
|
||||||
|
\draw (vn01) -- (cn00);
|
||||||
|
\draw (vn03) -- (cn00);
|
||||||
|
\draw (vn01) -- (cn01);
|
||||||
|
\draw (vn02) -- (cn01);
|
||||||
|
\draw (vn04) -- (cn01);
|
||||||
|
|
||||||
|
\foreach \i in {1,2,3,4} {
|
||||||
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
||||||
|
|
||||||
|
\node[VN, right = 25mm of vn\prev 0] (vn\i0) {};
|
||||||
|
\node[VN, below = of vn\i0] (vn\i1) {};
|
||||||
|
\node[VN, below = of vn\i1] (vn\i2) {};
|
||||||
|
\node[VN, below = of vn\i2] (vn\i3) {};
|
||||||
|
\node[VN, below = of vn\i3] (vn\i4) {};
|
||||||
|
|
||||||
|
\coordinate (temp) at ($(vn\i1)!0.5!(vn\i2)$);
|
||||||
|
|
||||||
|
\node[CN, left = 10mm of temp] (cn\i0) {};
|
||||||
|
\node[CN, below = of cn\i0] (cn\i1) {};
|
||||||
|
|
||||||
|
\draw (vn\i0) -- (cn\i0);
|
||||||
|
\draw (vn\i1) -- (cn\i0);
|
||||||
|
\draw (vn\i3) -- (cn\i0);
|
||||||
|
\draw (vn\i1) -- (cn\i1);
|
||||||
|
\draw (vn\i2) -- (cn\i1);
|
||||||
|
\draw (vn\i4) -- (cn\i1);
|
||||||
|
}
|
||||||
|
|
||||||
|
\foreach \i in {1,2,3,4} {
|
||||||
|
\pgfmathtruncatemacro{\prev}{\i-1}
|
||||||
|
|
||||||
|
\draw (vn\prev 3) -- (cn\i 0);
|
||||||
|
\draw (vn\prev 4) -- (cn\i 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
\node[
|
||||||
|
draw, inner sep=5mm,line width=1pt,
|
||||||
|
fit=(vn00)(vn04)(cn00)(cn01)(vn20)(vn24)(cn20)(cn21)
|
||||||
|
]
|
||||||
|
(box1) {};
|
||||||
|
\node[
|
||||||
|
draw, dashed, inner sep=5mm, inner ysep=8mm,line width=1pt,
|
||||||
|
fit=(vn10)(vn14)(cn10)(cn11)(vn30)(vn34)(cn30)(cn31)
|
||||||
|
]
|
||||||
|
(box2) {};
|
||||||
|
|
||||||
|
\draw[KITorange, line width=2pt] (cn10) -- (vn10);
|
||||||
|
\draw[KITorange, line width=2pt] (cn10) -- (vn11);
|
||||||
|
\draw[KITorange, line width=2pt] (cn10) -- (vn13);
|
||||||
|
\draw[KITorange, line width=2pt] (cn11) -- (vn11);
|
||||||
|
\draw[KITorange, line width=2pt] (cn11) -- (vn12);
|
||||||
|
\draw[KITorange, line width=2pt] (cn11) -- (vn14);
|
||||||
|
|
||||||
|
\draw[KITorange, line width=2pt] (vn13) -- (cn20);
|
||||||
|
\draw[KITorange, line width=2pt] (vn14) -- (cn21);
|
||||||
|
|
||||||
|
\draw[KITorange, line width=2pt] (cn20) -- (vn20);
|
||||||
|
\draw[KITorange, line width=2pt] (cn20) -- (vn21);
|
||||||
|
\draw[KITorange, line width=2pt] (cn20) -- (vn23);
|
||||||
|
\draw[KITorange, line width=2pt] (cn21) -- (vn21);
|
||||||
|
\draw[KITorange, line width=2pt] (cn21) -- (vn22);
|
||||||
|
\draw[KITorange, line width=2pt] (cn21) -- (vn24);
|
||||||
|
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn10) {};
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn11) {};
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn12) {};
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn13) {};
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn14) {};
|
||||||
|
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn20) {};
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn21) {};
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn22) {};
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn23) {};
|
||||||
|
\node[VN, draw=KITorange, fill=KITorange] at (vn24) {};
|
||||||
|
|
||||||
|
% Marker for W on the bottom
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=-5mm, line width=1pt]box1.south west) -- ++(0,-4mm)
|
||||||
|
coordinate (dim1l);
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=-5mm]box1.south east) -- ++(0,-4mm)
|
||||||
|
coordinate (dim1r);
|
||||||
|
\draw[{Latex}-{Latex}, line width=1pt]
|
||||||
|
([yshift=1mm]dim1l) -- ([yshift=1mm]dim1r)
|
||||||
|
node[midway, below=2pt] {$W$};
|
||||||
|
|
||||||
|
% Marker for F on top
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=3mm]box2.north west) -- ++(0,4mm)
|
||||||
|
coordinate (dim3l);
|
||||||
|
\draw[line width=1pt]
|
||||||
|
([yshift=3mm]box2.north west -| box1.north west) -- ++(0,4mm)
|
||||||
|
coordinate (dim3r);
|
||||||
|
\draw[{Latex}-{Latex}, line width=1pt]
|
||||||
|
([yshift=-1mm]dim3l) -- ([yshift=-1mm]dim3r)
|
||||||
|
node[midway, above=2pt] {$F$};
|
||||||
|
|
||||||
|
% Arrow on the top right
|
||||||
|
\draw[-{Latex}, line width=1pt]
|
||||||
|
([yshift=8mm] box1.north east) -- ++(28mm,0);
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\caption{
|
||||||
|
Visualization of the messages and decimation information used for the
|
||||||
|
initialization of the next window.
|
||||||
|
}
|
||||||
|
\label{fig:messages_decimation_tanner}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|||||||
2
src/thesis/clean_bibliography.sh
Executable file
2
src/thesis/clean_bibliography.sh
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
sed -i "s/Świerkowska/{\\\\'S}wierkowska/" bibliography.bib
|
||||||
|
sed -Ezi "s/\s(abstract|note|urldate|url|keywords|file) = \{[^}]*(\{[^}]*\}[^}]*)*\},?\n//g" bibliography.bib
|
||||||
@@ -6,21 +6,29 @@
|
|||||||
\usepackage{amsfonts}
|
\usepackage{amsfonts}
|
||||||
\usepackage{mleftright}
|
\usepackage{mleftright}
|
||||||
\usepackage{bm}
|
\usepackage{bm}
|
||||||
|
\usepackage{bbm}
|
||||||
\usepackage{tikz}
|
\usepackage{tikz}
|
||||||
\usepackage{xcolor}
|
\usepackage{xcolor}
|
||||||
\usepackage{pgfplots}
|
\usepackage{pgfplots}
|
||||||
\pgfplotsset{compat=newest}
|
\pgfplotsset{compat=newest}
|
||||||
\usepackage{acro}
|
\usepackage{acro}
|
||||||
\usepackage{braket}
|
\usepackage{braket}
|
||||||
|
\usepackage{listings}
|
||||||
|
\usepackage{caption}
|
||||||
% \usepackage[
|
% \usepackage[
|
||||||
% backend=biber,
|
% backend=biber,
|
||||||
% style=ieee,
|
% style=ieee,
|
||||||
% sorting=nty,
|
% sorting=nty,
|
||||||
% ]{biblatex}
|
% ]{biblatex}
|
||||||
\usepackage{todonotes}
|
\usepackage{todonotes}
|
||||||
|
\usepackage{quantikz}
|
||||||
|
\usepackage{stmaryrd}
|
||||||
|
\usepackage{algorithm}
|
||||||
|
\usepackage[noEnd=false]{algpseudocodex}
|
||||||
|
\usepackage{nicematrix}
|
||||||
|
\usepackage{colortbl}
|
||||||
|
|
||||||
\usetikzlibrary{calc, positioning, arrows, fit}
|
\usetikzlibrary{calc, positioning, arrows, fit}
|
||||||
|
|
||||||
\usetikzlibrary{external}
|
\usetikzlibrary{external}
|
||||||
\tikzexternalize
|
\tikzexternalize
|
||||||
|
|
||||||
@@ -28,6 +36,8 @@
|
|||||||
\renewcommand{\todo}[2][]{\tikzexternaldisable\@todo[#1]{#2}\tikzexternalenable}
|
\renewcommand{\todo}[2][]{\tikzexternaldisable\@todo[#1]{#2}\tikzexternalenable}
|
||||||
\makeatother
|
\makeatother
|
||||||
|
|
||||||
|
\setcounter{MaxMatrixCols}{20}
|
||||||
|
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
% Custom commands
|
% Custom commands
|
||||||
|
|||||||
Reference in New Issue
Block a user