diff --git a/src/thesis/chapters/4_decoding_under_dems.tex b/src/thesis/chapters/4_decoding_under_dems.tex index 91c3e58..07b45c7 100644 --- a/src/thesis/chapters/4_decoding_under_dems.tex +++ b/src/thesis/chapters/4_decoding_under_dems.tex @@ -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=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 (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}. 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. -\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 How the locality is leveraged can be understood by considering the decoding process. 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} -with the \acp{cn} of subsequent windows.\\ -\content{Commit VNs} -\content{Benefit of this approach (as stated above: earlier decoding start)} +contribute to decoding, as they are not connected to any \acp{vn} +considered for the subsequent windows. +We call the set of \acp{vn} connected to those \acp{cn} the +\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. 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 syndrome extraction rounds passed over before starting the next window. $W$ controls the size of the windows while $F$ controls the overlap -between windows. - -% Why we look at rows, not columns - +between them. As illustrated in \Cref{fig:windowing_pcm}, $W$ and $F$ control the window dimensions and locactions by defining the related \acp{cn}, 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 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] \centering @@ -481,12 +462,127 @@ and is difficult to predict beforehand. \vspace*{10mm} \caption{ - Visualization of the windowing process on the detector - error matrix. + Visualization of the windowing process on a detector + error matrix generated from the $\llbracket 72, 6, 6 + \rrbracket$ BB code. } \label{fig:windowing_pcm} \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? % \content{Possibly go into the fact that current sliding-window % approaches don't differentiate clearly between the sliding-window