From 047e4f40091f5b4b8cc2ff4169873bd5aaf71a0d Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Sun, 19 Feb 2023 15:45:15 +0100 Subject: [PATCH] Made polytope example figure more understandable --- latex/thesis/chapters/decoding_techniques.tex | 275 +++++++++--------- 1 file changed, 136 insertions(+), 139 deletions(-) diff --git a/latex/thesis/chapters/decoding_techniques.tex b/latex/thesis/chapters/decoding_techniques.tex index cfc4788..f72ecf3 100644 --- a/latex/thesis/chapters/decoding_techniques.tex +++ b/latex/thesis/chapters/decoding_techniques.tex @@ -270,8 +270,8 @@ Figure \ref{fig:dec:poly:exact} shows the codeword polytope $\text{poly}\left( \mathcal{C} \right) $, i.e. the constraints for the equivalent linear program to exact \ac{ML} decoding - only valid codewords are feasible solutions. -Figures \ref{fig:dec:poly:local1} and \ref{fig:dec:poly:local2} show the local -codeword polytopes of each check node. +Figure \ref{fig:dec:poly:local} shows the local codeword polytope of each check +node. Their intersection, the relaxed codeword polytope $\overline{Q}$, is shown in figure \ref{fig:dec:poly:relaxed}. It can be seen that the relaxed codeword polytope $\overline{Q}$ introduces @@ -302,35 +302,9 @@ The resulting formulation of the relaxed optimization problem is the following:% % Left side - codeword polytope % - \begin{subfigure}[c]{0.45\textwidth} + \begin{subfigure}[b]{0.49\textwidth} \centering - \begin{subfigure}{\textwidth} - \centering - - \begin{align*} - \boldsymbol{H} &= - \begin{bmatrix} - 1 & 1 & 1\\ - 0 & 1 & 1 - \end{bmatrix}\\[1em] - \mathcal{C} &= \left\{ - \begin{bmatrix} - 0\\ - 0\\ - 0 - \end{bmatrix}, - \begin{bmatrix} - 0\\ - 1\\ - 1 - \end{bmatrix} - \right\} - \end{align*} - - \caption{Definition of the visualized code} - \label{fig:dec:poly:code_def} - \end{subfigure} \\[7em] \begin{subfigure}{\textwidth} \centering @@ -338,7 +312,7 @@ The resulting formulation of the relaxed optimization problem is the following:% draw, circle, inner sep=0pt, minimum size=4pt] \tdplotsetmaincoords{60}{25} - \begin{tikzpicture}[scale=1, transform shape, tdplot_main_coords] + \begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords] % Cube \coordinate (p000) at (0, 0, 0); @@ -389,143 +363,162 @@ The resulting formulation of the relaxed optimization problem is the following:% % Right side - relaxed polytope % % - \begin{subfigure}[c]{0.45\textwidth} + \begin{subfigure}[b]{0.49\textwidth} \centering \begin{subfigure}{\textwidth} \centering - - \tikzstyle{codeword} = [color=KITblue, fill=KITblue, - draw, circle, inner sep=0pt, minimum size=4pt] + + \begin{minipage}{0.5\textwidth} + \centering + + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] - \tdplotsetmaincoords{60}{25} - \begin{tikzpicture}[scale=1, transform shape, tdplot_main_coords] - % Cube + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords] + % Cube - \coordinate (p000) at (0, 0, 0); - \coordinate (p001) at (0, 0, 2); - \coordinate (p010) at (0, 2, 0); - \coordinate (p011) at (0, 2, 2); - \coordinate (p100) at (2, 0, 0); - \coordinate (p101) at (2, 0, 2); - \coordinate (p110) at (2, 2, 0); - \coordinate (p111) at (2, 2, 2); + \coordinate (p000) at (0, 0, 0); + \coordinate (p001) at (0, 0, 2); + \coordinate (p010) at (0, 2, 0); + \coordinate (p011) at (0, 2, 2); + \coordinate (p100) at (2, 0, 0); + \coordinate (p101) at (2, 0, 2); + \coordinate (p110) at (2, 2, 0); + \coordinate (p111) at (2, 2, 2); - \draw[] (p000) -- (p100); - \draw[] (p100) -- (p101); - \draw[] (p101) -- (p001); - \draw[] (p001) -- (p000); + \draw[] (p000) -- (p100); + \draw[] (p100) -- (p101); + \draw[] (p101) -- (p001); + \draw[] (p001) -- (p000); - \draw[dashed] (p010) -- (p110); - \draw[] (p110) -- (p111); - \draw[] (p111) -- (p011); - \draw[dashed] (p011) -- (p010); + \draw[dashed] (p010) -- (p110); + \draw[] (p110) -- (p111); + \draw[] (p111) -- (p011); + \draw[dashed] (p011) -- (p010); - \draw[dashed] (p000) -- (p010); - \draw[] (p100) -- (p110); - \draw[] (p101) -- (p111); - \draw[] (p001) -- (p011); + \draw[dashed] (p000) -- (p010); + \draw[] (p100) -- (p110); + \draw[] (p101) -- (p111); + \draw[] (p001) -- (p011); - % Polytope Vertices + % Polytope Vertices - \node[codeword] (c000) at (p000) {}; - \node[codeword] (c101) at (p101) {}; - \node[codeword] (c110) at (p110) {}; - \node[codeword] (c011) at (p011) {}; + \node[codeword] (c000) at (p000) {}; + \node[codeword] (c101) at (p101) {}; + \node[codeword] (c110) at (p110) {}; + \node[codeword] (c011) at (p011) {}; - % Polytope Edges + % Polytope Edges - \draw[line width=1pt, color=KITblue] (c000) -- (c101); - \draw[line width=1pt, color=KITblue] (c000) -- (c110); - \draw[line width=1pt, color=KITblue] (c000) -- (c011); + \draw[line width=1pt, color=KITblue] (c000) -- (c101); + \draw[line width=1pt, color=KITblue] (c000) -- (c110); + \draw[line width=1pt, color=KITblue] (c000) -- (c011); - \draw[line width=1pt, color=KITblue] (c101) -- (c110); - \draw[line width=1pt, color=KITblue] (c101) -- (c011); + \draw[line width=1pt, color=KITblue] (c101) -- (c110); + \draw[line width=1pt, color=KITblue] (c101) -- (c011); - \draw[line width=1pt, color=KITblue] (c011) -- (c110); + \draw[line width=1pt, color=KITblue] (c011) -- (c110); - % Polytope Annotations + % Polytope Annotations - \node[color=KITblue, below=0cm of c000] {$\left( 0, 0, 0 \right) $}; - \node[color=KITblue, right=0.17cm of c101] {$\left( 1, 0, 1 \right) $}; - \node[color=KITblue, right=0cm of c110] {$\left( 1, 1, 0 \right) $}; - \node[color=KITblue, above=0cm of c011] {$\left( 0, 1, 1 \right) $}; + \node[color=KITblue, below=0cm of c000] {$\left( 0, 0, 0 \right) $}; + \node[color=KITblue, right=0.17cm of c101] {$\left( 1, 0, 1 \right) $}; + \node[color=KITblue, right=0cm of c110] {$\left( 1, 1, 0 \right) $}; + \node[color=KITblue, above=0cm of c011] {$\left( 0, 1, 1 \right) $}; + \end{tikzpicture} + \end{minipage}% + \begin{minipage}{0.5\textwidth} + \centering + + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords] + % Cube + + \coordinate (p000) at (0, 0, 0); + \coordinate (p001) at (0, 0, 2); + \coordinate (p010) at (0, 2, 0); + \coordinate (p011) at (0, 2, 2); + \coordinate (p100) at (2, 0, 0); + \coordinate (p101) at (2, 0, 2); + \coordinate (p110) at (2, 2, 0); + \coordinate (p111) at (2, 2, 2); + + \draw[] (p000) -- (p100); + \draw[] (p100) -- (p101); + \draw[] (p101) -- (p001); + \draw[] (p001) -- (p000); + + \draw[dashed] (p010) -- (p110); + \draw[] (p110) -- (p111); + \draw[] (p111) -- (p011); + \draw[dashed] (p011) -- (p010); + + \draw[dashed] (p000) -- (p010); + \draw[] (p100) -- (p110); + \draw[] (p101) -- (p111); + \draw[] (p001) -- (p011); + + % Polytope Vertices + + \node[codeword] (c000) at (p000) {}; + \node[codeword] (c011) at (p011) {}; + \node[codeword] (c100) at (p100) {}; + \node[codeword] (c111) at (p111) {}; + + % Polytope Edges + + \draw[line width=1pt, color=KITblue] (c000) -- (c011); + \draw[line width=1pt, color=KITblue] (c000) -- (c100); + \draw[line width=1pt, color=KITblue] (c100) -- (c111); + \draw[line width=1pt, color=KITblue] (c111) -- (c011); + + % Polytope Annotations + + \node[color=KITblue, below=0cm of c000] {$\left( 0, 0, 0 \right) $}; + \node[color=KITblue, above=0cm of c011] {$\left( 0, 1, 1 \right) $}; + \node[color=KITblue, below=0cm of c100] {$\left( 1, 0, 0 \right) $}; + \node[color=KITblue, above=0cm of c111] {$\left( 1, 1, 1 \right) $}; + \end{tikzpicture} + \end{minipage} + + \begin{tikzpicture} + \node[color=KITblue, align=center] at (-2,0) + {$j=1$\\ $\left( c_1 + c_2+ c_3 = 0 \right) $}; + \node[color=KITblue, align=center] at (2,0) + {$j=2$\\ $\left(c_2 + c_3 = 0\right)$}; \end{tikzpicture} - - \caption{Local codeword polytope of check node\\ $j=1$ - $\left( c_1 + c_2 + c_3 = 0 \right)$} - \label{fig:dec:poly:local1} - \end{subfigure} \\[1em] - \begin{subfigure}{\textwidth} - \centering - - \tikzstyle{codeword} = [color=KITblue, fill=KITblue, - draw, circle, inner sep=0pt, minimum size=4pt] - \tdplotsetmaincoords{60}{25} - \begin{tikzpicture}[scale=1, transform shape, tdplot_main_coords] - % Cube - - \coordinate (p000) at (0, 0, 0); - \coordinate (p001) at (0, 0, 2); - \coordinate (p010) at (0, 2, 0); - \coordinate (p011) at (0, 2, 2); - \coordinate (p100) at (2, 0, 0); - \coordinate (p101) at (2, 0, 2); - \coordinate (p110) at (2, 2, 0); - \coordinate (p111) at (2, 2, 2); - - \draw[] (p000) -- (p100); - \draw[] (p100) -- (p101); - \draw[] (p101) -- (p001); - \draw[] (p001) -- (p000); - - \draw[dashed] (p010) -- (p110); - \draw[] (p110) -- (p111); - \draw[] (p111) -- (p011); - \draw[dashed] (p011) -- (p010); - - \draw[dashed] (p000) -- (p010); - \draw[] (p100) -- (p110); - \draw[] (p101) -- (p111); - \draw[] (p001) -- (p011); - - % Polytope Vertices - - \node[codeword] (c000) at (p000) {}; - \node[codeword] (c011) at (p011) {}; - \node[codeword] (c100) at (p100) {}; - \node[codeword] (c111) at (p111) {}; - - % Polytope Edges - - \draw[line width=1pt, color=KITblue] (c000) -- (c011); - \draw[line width=1pt, color=KITblue] (c000) -- (c100); - \draw[line width=1pt, color=KITblue] (c100) -- (c111); - \draw[line width=1pt, color=KITblue] (c111) -- (c011); - - % Polytope Annotations - - \node[color=KITblue, below=0cm of c000] {$\left( 0, 0, 0 \right) $}; - \node[color=KITblue, above=0cm of c011] {$\left( 0, 1, 1 \right) $}; - \node[color=KITblue, below=0cm of c100] {$\left( 1, 0, 0 \right) $}; - \node[color=KITblue, above=0cm of c111] {$\left( 1, 1, 1 \right) $}; - \end{tikzpicture} - - \caption{Local codeword polytope of check node\\ $j=2$ - $\left( c_2 + c_3 = 0\right)$} - \label{fig:dec:poly:local2} + \caption{Local codeword polytopes of the check nodes} + \label{fig:dec:poly:local} \end{subfigure}\\[1em] \begin{subfigure}{\textwidth} \centering + \begin{tikzpicture} + \draw (-2, 0) -- (2, 0); + \draw (-2, 0.5) -- (-2, 0); + \draw (2, 0.5) -- (2, 0); + + \node (intersection) at (0, -0.5) {Intersection}; + + \draw (0, 0) -- (intersection); + \draw[->] (intersection) -- (0, -1); + \end{tikzpicture} + + \vspace{2mm} + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, draw, circle, inner sep=0pt, minimum size=4pt] \tikzstyle{pseudocodeword} = [color=KITred, fill=KITred, draw, circle, inner sep=0pt, minimum size=4pt] \tdplotsetmaincoords{60}{25} - \begin{tikzpicture}[scale=1, transform shape, tdplot_main_coords] + \begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords] % Cube \coordinate (p000) at (0, 0, 0); @@ -578,7 +571,11 @@ The resulting formulation of the relaxed optimization problem is the following:% \end{subfigure} \caption{Visualization of the codeword polytope and the relaxed codeword - polytope} + polytope for the code defined by the parity check matrix $\boldsymbol{H} = + \begin{bmatrix} + 1 & 1 & 1\\ + 0 & 1 & 1 + \end{bmatrix}$} \label{fig:dec:poly} \end{figure}% %