\chapter{Decoding Techniques}%
\label{chapter:decoding_techniques}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Decoding using Optimization Methods}%
\label{sec:dec:Decoding using Optimization Methods}

%
% TODOs
%

\begin{itemize}
    \item General methodology
\end{itemize}

%
% Figure showing decoding space
%

\begin{figure}[H]
    \centering

    \tikzstyle{codeword} = [color=KITblue, fill=KITblue,
                            draw, circle, inner sep=0pt, minimum size=4pt]

    \tdplotsetmaincoords{60}{245}
    \begin{tikzpicture}[scale=1, transform shape, tdplot_main_coords]
        % Cube

        \draw[dashed] (0, 0, 0) -- (2, 0, 0);
        \draw[dashed] (2, 0, 0) -- (2, 0, 2);
        \draw[] (2, 0, 2) -- (0, 0, 2);
        \draw[] (0, 0, 2) -- (0, 0, 0);

        \draw[] (0, 2, 0) -- (2, 2, 0);
        \draw[] (2, 2, 0) -- (2, 2, 2);
        \draw[] (2, 2, 2) -- (0, 2, 2);
        \draw[] (0, 2, 2) -- (0, 2, 0);

        \draw[] (0, 0, 0) -- (0, 2, 0);
        \draw[dashed] (2, 0, 0) -- (2, 2, 0);
        \draw[] (2, 0, 2) -- (2, 2, 2);
        \draw[] (0, 0, 2) -- (0, 2, 2);

        % Polytope Annotations

        \node[codeword] (c000) at (0, 0, 0) {};% {$\left( 0, 0, 0 \right) $};
        \node[codeword] (c101) at (2, 0, 2) {};% {$\left( 1, 0, 1 \right) $};
        \node[codeword] (c110) at (2, 2, 0) {};% {$\left( 1, 1, 0 \right) $};
        \node[codeword] (c011) at (0, 2, 2) {};% {$\left( 0, 1, 1 \right) $};

        \node[color=KITblue, right=0cm of c000] {$\left( 0, 0, 0 \right) $};
        \node[color=KITblue, above=0cm of c101] {$\left( 1, 0, 1 \right) $};
        \node[color=KITblue, left=0cm of c110] {$\left( 1, 1, 0 \right) $};
        \node[color=KITblue, left=-0.1cm of c011] {$\left( 0, 1, 1 \right) $};

        % f

        \node[color=KITgreen, fill=KITgreen,
              draw, circle, inner sep=0pt, minimum size=4pt] (f) at (0.9, 0.7, 1) {};
        \node[color=KITgreen, right=0cm of f] {$\boldsymbol{f}$};
    \end{tikzpicture}

    \caption{Hypercube ($n=3$) and valid codewords for a single parity-check code}
\end{figure}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{LP Decoding using ADMM}%
\label{sec:dec:LP Decoding using ADMM}

\begin{itemize}
    \item Equivalent ML optimization problem
    \item LP relaxation
    \item ADMM as a solver
\end{itemize}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Proximal Decoding}%
\label{sec:dec:Proximal Decoding}

\begin{itemize}
    \item Formulation of optimization problem
    \item Proximal gradient method as a solver
\end{itemize}

