From c1364f16158727ae976e1ac951611994aa617752 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Wed, 8 Mar 2023 10:54:49 +0100 Subject: [PATCH] Modified figure to be clearer; Moved footnote into text --- latex/thesis/chapters/decoding_techniques.tex | 180 +++++++++++++----- 1 file changed, 133 insertions(+), 47 deletions(-) diff --git a/latex/thesis/chapters/decoding_techniques.tex b/latex/thesis/chapters/decoding_techniques.tex index 64db19f..b15dc54 100644 --- a/latex/thesis/chapters/decoding_techniques.tex +++ b/latex/thesis/chapters/decoding_techniques.tex @@ -27,7 +27,7 @@ the \ac{ML} decoding problem:% % \begin{align*} \hat{\boldsymbol{c}}_{\text{\ac{MAP}}} &= \argmax_{\boldsymbol{c} \in \mathcal{C}} - P \left(\boldsymbol{C} = \boldsymbol{c} \mid \boldsymbol{Y} = \boldsymbol{y} + P \left(\boldsymbol{c} \mid \boldsymbol{Y} = \boldsymbol{y} \right)\\ \hat{\boldsymbol{c}}_{\text{\ac{ML}}} &= \argmax_{\boldsymbol{c} \in \mathcal{C}} f_{\boldsymbol{Y} \mid \boldsymbol{C}} \left( \boldsymbol{y} \mid \boldsymbol{c} @@ -35,7 +35,7 @@ the \ac{ML} decoding problem:% .\end{align*}% % The goal is to arrive at a formulation, where a certain objective function -$g \left( \cdot \right) $ must be minimized under certain constraints:% +$g : \mathbb{R}^n \rightarrow \mathbb{R}^n $ must be minimized under certain constraints:% % \begin{align*} \text{minimize}\hspace{2mm} &g\left( \tilde{\boldsymbol{c}} \right)\\ @@ -51,7 +51,7 @@ Tanner graph representation with \acp{VN} and \acp{CN} (as shown in figure \ref{ to a spatial representation (figure \ref{fig:dec:spatial}), where the codewords are some of the edges of a hypercube. The goal is to find the point $\tilde{\boldsymbol{c}}$, -which minimizes the objective function $g\left( \cdot \right) $. +which minimizes the objective function $g$. % % Figure showing decoding space @@ -162,8 +162,6 @@ which minimizes the objective function $g\left( \cdot \right) $. \caption{Different representations of the decoding problem} \end{figure} -\todo{Rename $c$ to e.g. $h$ or remove it completely?} - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -222,7 +220,7 @@ decoding is the following:% %Especially for the continuous variable in LP decoding} As solving integer linear programs is generally NP-hard, this decoding problem -has to be approximated by one with looser constraints. +has to be approximated by a problem with looser constraints. A technique called \textit{relaxation} is applied: relaxing the constraints, thereby broadening the considered domain (e.g. by lifting the integer requirement). @@ -253,35 +251,58 @@ This consideration leads to constraints, that can be described as follows ,\end{align*}% \todo{Explicitly state that the first relaxation is essentially just lifing the integer requirement}% -where $\boldsymbol{T}_j$ is the \textit{transfer matrix}, which selects the +where $\mathcal{P}_{d_j}$ is the \textit{check polytope}, the convex hull of all +binary vectors of length $d_j$ with even parity% +\footnote{Essentially $\mathcal{P}_{d_j}$ is the set of vectors that satisfy +parity-check $j$, but extended to the continuous domain.}% +and $\boldsymbol{T}_j$ is the \textit{transfer matrix}, which selects the neighboring variable nodes -of check node $j$ -\footnote{For example, if the $j$th row of the parity-check matrix +of check node $j$ (i.e., the relevant components of $\boldsymbol{c}$ for parity-check $j$). +For example, if the $j$th row of the parity-check matrix $\boldsymbol{H}$ was $\boldsymbol{h}_j = \begin{bmatrix} 0 & 1 & 0 & 1 & 0 & 1 & 0 \end{bmatrix}$, -the transfer matrix would be $\boldsymbol{T}_j = +the transfer matrix would be \cite[Sec. II, A]{efficient_lp_dec_admm} +% +\begin{align*} +\boldsymbol{T}_j = \begin{bmatrix} 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ -\end{bmatrix} $ (example taken from \cite[Sec. II, A]{efficient_lp_dec_admm}).} -(i.e., the relevant components of $\boldsymbol{c}$ for parity-check $j$) -and $\mathcal{P}_{d_j}$ is the \textit{check polytope}, the convex hull of all -binary vectors of length $d_j$ with even parity% -\footnote{Essentially $\mathcal{P}_{d_j}$ is the set of vectors that satisfy -parity-check $j$, but extended to the continuous domain.}% -. +\end{bmatrix} +.\end{align*}% +% In figure \ref{fig:dec:poly}, the two relaxations are compared for an -examplary code. -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. -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}.% +examplary code, which is described by the generator and parity-check matrices% +% +\begin{align} +\boldsymbol{G} = + \begin{bmatrix} + 0 & 1 & 1 + \end{bmatrix} \label{eq:lp:example_code_def_gen} \\[1em] +\boldsymbol{H} = + \begin{bmatrix} + 1 & 1 & 1\\ + 0 & 1 & 1 + \end{bmatrix} \label{eq:lp:example_code_def_par} +\end{align}% +% +and has only two possible codewords: +% +\begin{align*} +\mathcal{C} = \left\{ \begin{bmatrix} 0 & 0 & 0 \end{bmatrix}, + \begin{bmatrix} 0 & 1 & 1 \end{bmatrix} \right\} +.\end{align*} +% +Figure \ref{fig:dec:poly:exact_ilp} shows the domain of exact \ac{ML} decoding. +The first relaxation, onto the codeword polytope $\text{poly}\left( \mathcal{C} \right) $, +is shown in figure \ref{fig:dec:poly:exact}; +this constitues the constraints for the equivalent linear program to exact \ac{ML} decoding. +$\text{poly}\left( \mathcal{C} \right) $ is further relaxed onto the relaxed codeword polytope +$\overline{Q}$, shown in figure \ref{fig:dec:poly:relaxed}. +Figure \ref{fig:dec:poly:local} shows how $\overline{Q}$ is formed by intersecting the +local codeword polytopes of each check node. % % % @@ -295,9 +316,9 @@ figure \ref{fig:dec:poly:relaxed}.% % Left side - codeword polytope % - \begin{subfigure}[b]{0.49\textwidth} + \begin{subfigure}[b]{0.35\textwidth} \centering - + \begin{subfigure}{\textwidth} \centering @@ -305,7 +326,64 @@ figure \ref{fig:dec:poly:relaxed}.% draw, circle, inner sep=0pt, minimum size=4pt] \tdplotsetmaincoords{60}{25} - \begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords] + \begin{tikzpicture}[scale=0.9, 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) {}; + + % 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) $}; + \end{tikzpicture} + + \caption{Set of all codewords $\mathcal{C}$} + \label{fig:dec:poly:exact_ilp} + \end{subfigure}\\[1em] + \begin{subfigure}{\textwidth} + \centering + + \begin{tikzpicture} + \node (relaxation) at (0, 0) {Relaxation}; + + \draw (0, 0.61) -- (relaxation); + \draw[->] (relaxation) -- (0, -0.7); + \end{tikzpicture} + + \vspace{4mm} + + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.9, transform shape, tdplot_main_coords] % Cube \coordinate (p000) at (0, 0, 0); @@ -356,12 +434,12 @@ figure \ref{fig:dec:poly:relaxed}.% % Right side - relaxed polytope % % - \begin{subfigure}[b]{0.49\textwidth} + \begin{subfigure}[b]{0.55\textwidth} \centering - + \begin{subfigure}{\textwidth} \centering - + \begin{minipage}{0.5\textwidth} \centering @@ -369,7 +447,7 @@ figure \ref{fig:dec:poly:relaxed}.% draw, circle, inner sep=0pt, minimum size=4pt] \tdplotsetmaincoords{60}{25} - \begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords] + \begin{tikzpicture}[scale=0.9, transform shape, tdplot_main_coords] % Cube \coordinate (p000) at (0, 0, 0); @@ -433,7 +511,7 @@ figure \ref{fig:dec:poly:relaxed}.% draw, circle, inner sep=0pt, minimum size=4pt] \tdplotsetmaincoords{60}{25} - \begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords] + \begin{tikzpicture}[scale=0.9, transform shape, tdplot_main_coords] % Cube \coordinate (p000) at (0, 0, 0); @@ -499,14 +577,14 @@ figure \ref{fig:dec:poly:relaxed}.% \centering \begin{tikzpicture} - \draw (-2, 0) -- (2, 0); - \draw (-2, 0.5) -- (-2, 0); - \draw (2, 0.5) -- (2, 0); + \draw[densely dashed] (-2, 0) -- (2, 0); + \draw[densely dashed] (-2, 0.5) -- (-2, 0); + \draw[densely dashed] (2, 0.5) -- (2, 0); \node (intersection) at (0, -0.5) {Intersection}; - \draw (0, 0) -- (intersection); - \draw[->] (intersection) -- (0, -1); + \draw[densely dashed] (0, 0) -- (intersection); + \draw[densely dashed, ->] (intersection) -- (0, -1); \end{tikzpicture} \vspace{2mm} @@ -517,7 +595,7 @@ figure \ref{fig:dec:poly:relaxed}.% draw, circle, inner sep=0pt, minimum size=4pt] \tdplotsetmaincoords{60}{25} - \begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords] + \begin{tikzpicture}[scale=0.9, transform shape, tdplot_main_coords] % Cube \coordinate (p000) at (0, 0, 0); @@ -570,17 +648,25 @@ figure \ref{fig:dec:poly:relaxed}.% \label{fig:dec:poly:relaxed} \end{subfigure} \end{subfigure} - + + \vspace*{-2.5cm} + \hspace*{-0.1\textwidth} + \begin{tikzpicture} + \draw[->] (0,0) -- (2.5, 0); + \node[above] at (1.25, 0) {Relaxation}; + + % Dummy node to make tikzpicture slightly larger + \node[below] at (1.25, 0) {}; + \end{tikzpicture} + \vspace{2.5cm} + \caption{Visualization of the codeword polytope and the relaxed codeword - polytope for the code defined by the parity check matrix $\boldsymbol{H} = - \begin{bmatrix} - 1 & 1 & 1\\ - 0 & 1 & 1 - \end{bmatrix}$} + polytope of the code described by equations (\ref{eq:lp:example_code_def_gen}) + and (\ref{eq:lp:example_code_def_par})} \label{fig:dec:poly} \end{figure}% % -It can be seen that the relaxed codeword polytope $\overline{Q}$ introduces +\noindent It can be seen that the relaxed codeword polytope $\overline{Q}$ introduces vertices with fractional values; these represent erroneous non-codeword solutions to the linear program and correspond to the so-called \textit{pseudo-codewords} introduced in