diff --git a/src/thesis/chapters/3_fault_tolerant_qec.tex b/src/thesis/chapters/3_fault_tolerant_qec.tex index 8a77b35..f3b5578 100644 --- a/src/thesis/chapters/3_fault_tolerant_qec.tex +++ b/src/thesis/chapters/3_fault_tolerant_qec.tex @@ -45,8 +45,8 @@ \centering % tex-fmt: off \begin{quantikz}[row sep=4mm, column sep=4mm] - & \xyzerr & \ctrl{3} & & & & & \\ - \lstick{$\ket{\psi}$} & \xyzerr & & \ctrl{2} & \ctrl{3} & & & \\ + \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} @@ -59,8 +59,8 @@ \centering % tex-fmt: off \begin{quantikz}[row sep=4mm, column sep=4mm] - & \xerr & \ctrl{3} & & & & & & \\ - \lstick{$\ket{\psi}$} & \xerr & & \ctrl{2} & \ctrl{3} & & & & \\ + \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} @@ -76,8 +76,8 @@ \centering % tex-fmt: off \begin{quantikz}[row sep=4mm, column sep=2mm] - & \xyzerr & \ctrl{3} & \xyzerr \wire[d][3]{q} & & & & & & & & & \\ - \lstick{$\ket{\psi}$} & \xyzerr & & & \ctrl{2} & \xyzerr \wire[d][2]{q} & \ctrl{3} & \xyzerr \wire[d][3]{q} & & & & & \\ + \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} @@ -358,7 +358,7 @@ % tex-fmt: on \caption{ - Repeated syndrome extraction circuit for the two-qubit + Repeated syndrome extraction circuit for the three-qubit repetition code under phenomenological noise. } \end{figure} @@ -442,397 +442,3 @@ \caption{Construction of detectors from measurements in the general case.} \end{figure} - -\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} - -\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} - -\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} - diff --git a/src/thesis/chapters/4_decoding_under_dems.tex b/src/thesis/chapters/4_decoding_under_dems.tex index f83ba5e..b3c4fa8 100644 --- a/src/thesis/chapters/4_decoding_under_dems.tex +++ b/src/thesis/chapters/4_decoding_under_dems.tex @@ -1,5 +1,407 @@ \chapter{Decoding under Detector Error Models} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Sliding-Window Decoding} -\section{Treating Detector Error Matrices like SC-LDPC Codes} -\section{Soft-Information Aware Sliding-Window Decoding} -\section{Numerical Results and Analysis} +\label{sec:Sliding-Window Decoding} + +\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} + diff --git a/src/thesis/main.tex b/src/thesis/main.tex index b8a2ffb..6326e8a 100644 --- a/src/thesis/main.tex +++ b/src/thesis/main.tex @@ -100,11 +100,11 @@ \tableofcontents \cleardoublepage -% \input{chapters/1_introduction.tex} -% \input{chapters/2_fundamentals.tex} +\input{chapters/1_introduction.tex} +\input{chapters/2_fundamentals.tex} \input{chapters/3_fault_tolerant_qec.tex} -% \input{chapters/4_decoding_under_dems.tex} -% \input{chapters/5_conclusion_and_outlook.tex} +\input{chapters/4_decoding_under_dems.tex} +\input{chapters/5_conclusion_and_outlook.tex} % \appendix % \listoffigures