From 474b1d21da68a8939ce6ed57569938402973fb57 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Sat, 25 Apr 2026 16:00:19 +0200 Subject: [PATCH] Add Tanner graph windowing figure --- src/thesis/chapters/3_fault_tolerant_qec.tex | 117 ++++++++++++++++++- 1 file changed, 111 insertions(+), 6 deletions(-) diff --git a/src/thesis/chapters/3_fault_tolerant_qec.tex b/src/thesis/chapters/3_fault_tolerant_qec.tex index 5333e75..04c8669 100644 --- a/src/thesis/chapters/3_fault_tolerant_qec.tex +++ b/src/thesis/chapters/3_fault_tolerant_qec.tex @@ -409,17 +409,122 @@ \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); + \draw[line width=1pt] (-1mm,5mm) -- (3mm,5mm); \node[left] at (-2mm,2.125mm) {$\sim W$}; - 1 + \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$}; + \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.} - \label{fig:Visualization of the windowing process} + \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}