Rewrite VN and CN set definition text; Fix earlier TODOs

This commit is contained in:
2026-05-01 16:43:16 +02:00
parent c555151b9d
commit 635c0aab18

View File

@@ -146,7 +146,7 @@ Each of these windows is then decoded separately.
\node[literature, below right=1mm and -12mm of qldpc] (huang) {\cite{huang_improved_2023},\cite{huang_increasing_2024}}; \node[literature, below right=1mm and -12mm of qldpc] (huang) {\cite{huang_improved_2023},\cite{huang_increasing_2024}};
\node[literature, below=of huang] (gong) {\cite{gong_toward_2024}}; \node[literature, below=of huang] (gong) {\cite{gong_toward_2024}};
\node[literature, below=of gong] (kang) {\cite{kang_quits_2025}}; \node[literature, below=of gong] (kang) {\cite{kang_quits_2025}};
\coordinate (code-anchor) at ($(code.south) + (-2mm,0)$); \coordinate (code-anchor) at ($(code.south) + (-2mm,0)$);
\coordinate (top-anchor) at ($(top.south) + (-5mm,0)$); \coordinate (top-anchor) at ($(top.south) + (-5mm,0)$);
@@ -397,19 +397,25 @@ This block-diagonal structure introduces some locality in the
interdependence between \acp{vn} and \acp{cn}. interdependence between \acp{vn} and \acp{cn}.
For each local set of \acp{vn}, there is only a local set of connected \acp{cn}. For each local set of \acp{vn}, there is only a local set of connected \acp{cn}.
We exploit this fact by cutting the matrix into overlapping windows. We exploit this fact by cutting the matrix into overlapping windows.
\Cref{fig:windowing_pcm} depicts this process. \Cref{fig:windowing_pcm} depicts this process using the $\llbracket
72, 6, 6 \rrbracket$ BB code as an example.
% High-level overview % High-level overview
How the locality is leveraged can be understood by considering the How the locality is leveraged can be understood by considering the
decoding process. decoding process.
After decoding a window, there is a subset of \acp{cn} that no longer After decoding a window, there is a subset of \acp{cn} that no longer
contribute to the decoding process, as they do not share any \acp{vn} contribute to decoding, as they are not connected to any \acp{vn}
with the \acp{cn} of subsequent windows.\\ considered for the subsequent windows.
\content{Commit VNs} We call the set of \acp{vn} connected to those \acp{cn} the
\content{Benefit of this approach (as stated above: earlier decoding start)} \emph{commit region} and we wish to commit them before moving to the
next window, i.e., fix the values we estimate for the corresponding bits.
As mentioned above, the benefit of this sequential sliding-window
decoding approach
is that the decoding process can begin as soon as the syndrome
measurements for the first window are complete.
% W and F % W and F and why we look at rows, not columns
There are two degrees of freedom in how we perform the windowing. There are two degrees of freedom in how we perform the windowing.
The \emph{window size} $W \in \mathbb{N}$ represents the number of The \emph{window size} $W \in \mathbb{N}$ represents the number of
@@ -417,10 +423,7 @@ syndrome extraction rounds lumped into one window.
The \emph{step size} $F \in \mathbb{N}$ represents the number of The \emph{step size} $F \in \mathbb{N}$ represents the number of
syndrome extraction rounds passed over before starting the next window. syndrome extraction rounds passed over before starting the next window.
$W$ controls the size of the windows while $F$ controls the overlap $W$ controls the size of the windows while $F$ controls the overlap
between windows. between them.
% Why we look at rows, not columns
As illustrated in \Cref{fig:windowing_pcm}, $W$ and $F$ control the As illustrated in \Cref{fig:windowing_pcm}, $W$ and $F$ control the
window dimensions and locactions by defining the related \acp{cn}, window dimensions and locactions by defining the related \acp{cn},
not the \acp{vn}. not the \acp{vn}.
@@ -429,28 +432,6 @@ by the choice of the underlying code and the number of syndrome
measurement rounds, the number of \acp{vn} depends on the noise model measurement rounds, the number of \acp{vn} depends on the noise model
and is difficult to predict beforehand. and is difficult to predict beforehand.
% How we get the corresponding rows and columns
\content{How we get the rows}
\content{Explain how we get the columns once we know the rows}
\content{\textbf{General note}: Mathematical definitions where possible}
% Syndrome update
\content{Explain commit region}
\content{Why we need to update the syndrome}
\content{How we update the syndrome}
\content{\textbf{General note}: Mathematical definitions where possible}
% Complete process
\content{(?) Proper algorithm definition?}
\content{1. Decode window}
\content{2. Commit VN estimates}
\content{3. Update syndrome}
\content{4. Decode next window}
\content{(?) Explicitly mention we don't reuse existing messages?}
\begin{figure}[t] \begin{figure}[t]
\centering \centering
@@ -481,12 +462,127 @@ and is difficult to predict beforehand.
\vspace*{10mm} \vspace*{10mm}
\caption{ \caption{
Visualization of the windowing process on the detector Visualization of the windowing process on a detector
error matrix. error matrix generated from the $\llbracket 72, 6, 6
\rrbracket$ BB code.
} }
\label{fig:windowing_pcm} \label{fig:windowing_pcm}
\end{figure} \end{figure}
% Notation recap
We briefly reintroduce the notation important for the definition of the windows.
We use the variables $n,m \in \mathbb{N}$ to describe the number of
\acp{vn} and \acp{cn} respectively.
We index the \acp{vn} using the variable $i \in \mathcal{I} := \left\{
1,\ldots,n \right\}$ and the \acp{cn} using the variable $j \in
\mathcal{J} := \left\{ 1, \ldots, m \right\}$.
Finally, we call $\mathcal{N}_\text{V}(i) = \left\{ i\in \mathcal{I}:
\bm{H}_{j,i} = 1 \right\}$ and $\mathcal{N}_\text{C}(j) := \left\{ j
\in \mathcal{J} : \bm{H}_{j,i} = 1 \right\}$ the neighborhoods of the
corresponding nodes.
In this case, we take $\bm{H} \in \mathbb{F}_2^{m\times n}$ to be the
check matrix of the underlying code, from which the \ac{dem} was generated.
% How we get the corresponding rows
We begin by describing the sets of \acp{cn} relevant to each window.
For indexing, we use the variable $\ell \in \left\{
0,\ldots,n_\text{win} - 1 \right\}$, where $n_\text{win} \in \mathbb{N}$
is the number of windows.
Because we defined the step size $F$ as the number of syndrome
extraction rounds to skip, the first \ac{cn} of window $\ell$ should have index
$\ell F m$.
Similarly, because of the way we defined the step size $W$, the
number of \acp{cn} should be $Wm$ for all but the last window.
The number of \acp{cn} in the last window may differ if there are
not enough \acp{cn} left to completely fill it.
We thus define%
\footnote{
Note that the inequality is written in terms of $j-1$, not just $j$.
This is done to transform between zero-based and one-based indexing.
}
\red{
\begin{align*}
\mathcal{J}_\text{win}^{(\ell)}
&:= \left\{ j\in \mathcal{J}:~ \ell F m \le j - 1 < (\ell F +
W)\cdot m \right\} \\[2mm]
& \hspace{30mm} \text{and} \\[2mm]
\mathcal{J}_\text{commit}^{(\ell)}
&:= \left\{ j\in \mathcal{J}:~ \ell F m \le j - 1 < (\ell + 1)\cdot
F m \right\}
.%
\end{align*}
}%
$\mathcal{J}_\text{win}^{(\ell)}$ is the set of all \acp{cn} in the
window while $\mathcal{J}_\text{commit}^{(\ell)}$ is the set of \acp{cn}
that do not contribute to the next window and whose neighboring
\acp{vn} will thus be comitted.
% How we get the corresponding columns
We can now turn our attention to defining the sets of \acp{vn} relevant
to each window.
We first introduce a helper function $i_\text{max} :
\mathcal{P}(\mathbb{N}) \mapsto \mathbb{N}$, which takes a set of
\ac{cn} indices and returns the largest neighboring \ac{vn} index.
We define
\begin{align*}
i_\text{max}\left( \mathcal{S} \right) := \max \left\{ i\in
\mathcal{N}_\text{C}(j) : j\in \mathcal{S} \right\}
.
\end{align*}
The commit region of window $\ell$ should include all of the \acp{vn}
neighboring any of the \acp{cn} in $\mathcal{J}_\text{commit}^{(\ell)}$.
Consequently, the maximum index of the \acp{vn} we consider should be
$i_\text{max}(\mathcal{J}_\text{commit}^{\ell})$.
Additionally, the set of \acp{vn} comitted in the next window should
start immediately afterwards.
We thus define
\red{
\begin{align*}
\mathcal{I}_\text{commit}^{(\ell)}
&:= \left\{i \in \mathcal{I} :~
i_\text{max}\left( \mathcal{J}_\text{commit}^{(\ell-1)} \right)
< i - 1 \le
i_\text{max}\left( \mathcal{J}_\text{commit}^{(\ell)} \right)
\right\}\\[2mm]
& \hspace{39mm} \text{and} \\[2mm]
\mathcal{I}_\text{win}^{(\ell)}
&:= \left\{i \in \mathcal{I} :~
i_\text{max}\left( \mathcal{J}_\text{commit}^{(\ell-1)} \right)
< i - 1 \le
i_\text{max}\left( \mathcal{J}_\text{win}^{(\ell)} \right)
\right\}
.%
\end{align*}
}%
Note that we have
\begin{align*}
\bigcup_{\ell=0}^{n_\text{win}-1}
\mathcal{I}_\text{commit}^{(\ell)} = \mathcal{I}
\end{align*}
and after decoding all windows we will therefore have committed all \acp{vn}.
% Syndrome update
\content{Explain commit region}
\content{Why we need to update the syndrome}
\content{How we update the syndrome}
\content{\textbf{General note}: Mathematical definitions where possible}
% Complete process
\content{(?) Proper algorithm definition?}
\content{1. Decode window}
\content{2. Commit VN estimates}
\content{3. Update syndrome}
\content{4. Decode next window}
\content{(?) Explicitly mention we don't reuse existing messages?}
\content{Definition for last window is different}
\content{Double-check all definitions}
% TODO: Do I need this? % TODO: Do I need this?
% \content{Possibly go into the fact that current sliding-window % \content{Possibly go into the fact that current sliding-window
% approaches don't differentiate clearly between the sliding-window % approaches don't differentiate clearly between the sliding-window