diff --git a/latex/presentations/final/sections/decoding_algorithms.tex b/latex/presentations/final/sections/decoding_algorithms.tex index 29f76a8..396fb0f 100644 --- a/latex/presentations/final/sections/decoding_algorithms.tex +++ b/latex/presentations/final/sections/decoding_algorithms.tex @@ -220,6 +220,550 @@ return $\boldsymbol{\hat{c}}$ \end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame}[t] + \frametitle{LP Relaxation} + + \vspace*{-1cm} + + \begin{gather*} + \boldsymbol{G} = + \begin{bmatrix} + 0 & 1 & 1 + \end{bmatrix} \hspace{1cm} + \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{gather*}% + + \vspace*{-1cm} + + \begin{figure}[H] + \centering + + \begin{subfigure}[c]{0.4\textwidth} + \centering + + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.9, 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:lp:poly:exact_ilp} + \end{subfigure}% + \begin{subfigure}[c]{0.16\textwidth} + \centering + \begin{tikzpicture} + \node (relaxation) at (0, 0) {Relaxation}; + + \draw (-1.5, 0) -- (relaxation); + \draw[->] (relaxation) -- (1.5, 0); + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}[c]{0.4\textwidth} + \centering + + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.9, 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 Edges + + \draw[line width=1pt, color=KITblue] (c000) -- (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) $}; + \end{tikzpicture} + + \caption{Codeword polytope $\text{poly}\left( \mathcal{C} \right) $} + \label{fig:lp:poly:exact} + \end{subfigure} + \end{figure} + +\end{frame} + +\begin{frame}[t] + \frametitle{LP Relaxation} + + \vspace*{-8mm} + + \begin{figure}[H] + \centering + + \begin{subfigure}[c]{0.48\textwidth} + \centering + + \begin{minipage}{\textwidth} + \centering + + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.7, 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] (c101) at (p101) {}; + \node[codeword] (c110) at (p110) {}; + \node[codeword] (c011) at (p011) {}; + + % Polytope Edges & Faces + + \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] (c011) -- (c110); + + \fill[KITblue, opacity=0.15] (p000) -- (p101) -- (p011) -- cycle; + \fill[KITblue, opacity=0.15] (p000) -- (p110) -- (p101) -- cycle; + \fill[KITblue, opacity=0.15] (p110) -- (p011) -- (p101) -- cycle; + + % Polytope Annotations + + \node[color=KITblue, below=0cm of c000] {$\left( 0, 0, 0 \right) $}; + \node[color=KITblue, right=0.07cm 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, align=center] at (-4,1) + {$j=1$\\ $\left( c_1 + c_2+ c_3 = 0 \right) $}; + \end{tikzpicture} + \end{minipage} + + \vspace{5mm} + + \begin{minipage}{\textwidth} + \centering + + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.7, 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 & Faces + + \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); + + \fill[KITblue, opacity=0.2] (p000) -- (p100) -- (p111) -- (p011) -- cycle; + + % 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) $}; + + \node[color=KITblue, align=center] at (-4,1) + {$j=2$\\ $\left(c_2 + c_3 = 0\right)$}; + \end{tikzpicture} + \end{minipage} + + \caption{Local codeword polytopes of the check nodes} + \label{fig:lp:poly:local} + \end{subfigure}% + \begin{subfigure}[c]{0.18\textwidth} + \centering + \begin{tikzpicture} + \draw[densely dashed] (0, -2) -- (0, 2); + \draw[densely dashed] (-0.5, -2) -- (0, -2); + \draw[densely dashed] (-0.5, 2) -- (0, 2); + + \node (intersection) at (1.5, 0) {Intersection}; + + \draw[densely dashed] (0, 0) -- (intersection); + \draw[densely dashed, ->] (intersection) -- (3,0); + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}[c]{0.32\textwidth} + \centering + + \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=0.9, 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[pseudocodeword] (cpseudo) at (2, 1, 1) {}; + + % Polytope Edges & Faces + + \draw[line width=1pt, color=KITblue] (c000) -- (c011); + \draw[line width=1pt, color=KITred] (cpseudo) -- (c000); + \draw[line width=1pt, color=KITred] (cpseudo) -- (c011); + + \fill[KITred, opacity=0.2] (p000) -- (p011) -- (2,1,1) -- cycle; + + % 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=KITred, right=0cm of cpseudo] + {$\left( 1, \frac{1}{2}, \frac{1}{2} \right) $}; + \end{tikzpicture} + + \caption{Relaxed codeword polytope $\overline{Q}$} + \label{fig:lp:poly:relaxed} + \end{subfigure} + \end{figure} +\end{frame} + + +\begin{frame}[t] + \frametitle{LP Relaxation} + + \begin{figure}[H] + \centering + + \begin{subfigure}[c]{0.2\textwidth} + \centering + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.8, 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) $}; + + \node at (3, -2) {$\mathcal{C}$}; + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}[c]{0.18\textwidth} + \centering + \begin{tikzpicture} + \node (relaxation) at (0, 0) {Relaxation}; + + \draw (-1.5, 0) -- (relaxation); + \draw[->] (relaxation) -- (1.5, 0); + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}[c]{0.2\textwidth} + \centering + \tikzstyle{codeword} = [color=KITblue, fill=KITblue, + draw, circle, inner sep=0pt, minimum size=4pt] + \tdplotsetmaincoords{60}{25} + \begin{tikzpicture}[scale=0.8, 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 Edges + + \draw[line width=1pt, color=KITblue] (c000) -- (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 at (3, -2) {$\text{poly}\left(\mathcal{C}\right)$}; + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}[c]{0.18\textwidth} + \centering + \begin{tikzpicture} + \node (relaxation) at (0, 0) {Relaxation}; + + \draw (-1.5, 0) -- (relaxation); + \draw[->] (relaxation) -- (1.5, 0); + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}[c]{0.2\textwidth} + \centering + \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=0.8, 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[pseudocodeword] (cpseudo) at (2, 1, 1) {}; + + % Polytope Edges & Faces + + \draw[line width=1pt, color=KITblue] (c000) -- (c011); + \draw[line width=1pt, color=KITred] (cpseudo) -- (c000); + \draw[line width=1pt, color=KITred] (cpseudo) -- (c011); + + \fill[KITred, opacity=0.2] (p000) -- (p011) -- (2,1,1) -- cycle; + + % 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=KITred, right=0cm of cpseudo] + {$\left( 1, \frac{1}{2}, \frac{1}{2} \right) $}; + + \node at (3, -2) {$\overline{Q}$}; + \end{tikzpicture} + \end{subfigure}% + + + \end{figure} + +\end{frame} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\begin{frame}[t] % \frametitle{LP Relaxation}