ba-thesis/latex/presentations/midterm/sections/theoretical_background.tex

251 lines
10 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\section{Theoretical Background}%
\label{sec:Theoretical Background}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Motivation}%
\label{sub:Motivation}
\begin{frame}[t]
\frametitle{Motivation}
\begin{itemize}
\item The general [ML] decoding problem for linear codes and the general problem
of finding the weights of a linear code are both NP-complete. \cite{ml_np_hard_proof}
\item The standard message-passing algorithms used for decoding [LDPC and turbo codes]
are often difficult to analyze. \cite{feldman_thesis}
\item The iterative messagepassing algorithms preffered in practice do not guarantee
optimality and may fail to decode correctly when the graph contains cycles
\cite{ldpc_conv}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Presumptions}%
\label{sub:Presumptions}
\begin{frame}[t]
\frametitle{Presumptions: Channel \& Modulation}
\tikzstyle{mapper} = [rectangle, minimum width=1.5cm, minimum height=0.7cm,
rounded corners=0.1cm, text centered, draw=black, fill=KITgreen!80]
\begin{figure}[htpb]
\centering
\begin{tikzpicture}[scale=1, transform shape]
\node (in) {$c\left[ k \right] $};
\node[mapper, right=0.5cm of in] (bpskmap) {Mapper};
\node[right=1.5cm of bpskmap,
draw, circle, inner sep=0pt, minimum size=0.5cm] (add) {$+$};
\node[right=0.5cm of add] (out) {$y\left[ k \right] $};
\node[below=0.5cm of add] (noise) {$n\left[ k \right] $};
\node at ($(bpskmap.east)!0.5!(add.west) + (0,0.3cm)$) {$x\left[ k \right] $};
\draw[->] (in) -- (bpskmap);
\draw[->] (bpskmap) -- (add);
\draw[->] (add) -- (out);
\draw[->] (noise) -- (add);
\end{tikzpicture}
\end{figure}
\begin{itemize}
\item All simulations are performed with BPSK Modulation:
\begin{align*}
x\left[ k \right] = \left( -1 \right)^{c\left[ k \right] },
\hspace{5mm} \boldsymbol{c} \in \mathbb{F}_2^n,
\hspace{2mm} k\in \left\{ 1, \ldots, n \right\}
\end{align*}
\item The used channel model is AWGN:
\begin{align*}
\boldsymbol{y} = \boldsymbol{x} + \boldsymbol{n},
\hspace{5mm}\boldsymbol{n}\sim \mathcal{N}
\left(0,\frac{1}{2}\left(\frac{k}{n}\frac{E_b}{N_0}\right)^{-1}\right),
\hspace{2mm} \boldsymbol{y}, \boldsymbol{n} \in \mathbb{R}^n
\end{align*}
\item All-zeros assumption:
\begin{align*}
\boldsymbol{c} = 0
\end{align*}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{LP Decoding}%
\label{sub:LP Decoding}
\begin{frame}[t]
\frametitle{LP Decoding}
\begin{minipage}[c]{0.6\linewidth}
\begin{itemize}
\item Codeword Polytope:
\begin{align*}
\text{poly}\left( \mathcal{C} \right) =
\left\{
\sum_{\boldsymbol{c}\in\mathcal{C}}\lambda_{\boldsymbol{c}}
\boldsymbol{c} : \lambda_{\boldsymbol{c}} \ge 0,
\sum_{\boldsymbol{c}\in\mathcal{C}}\lambda_{\boldsymbol{c}} = 1
\right\},
\hspace{5mm} \lambda_{\boldsymbol{c}} \in \mathbb{R}
\end{align*}
\item Cost Function:
\begin{align*}
\sum_{i=1}^{n} \gamma_i c_i,
\hspace{5mm}\gamma_i = \log\left(
\frac{P\left( Y=y_i | C=0 \right) }{P\left( Y=y_i | C=1 \right) } \right)
\end{align*}
\item LP Formulation of ML Decoding:
\begin{align*}
&\text{minimize } \sum_{i=1}^{n} \gamma_i f_i \\
&\text{subject to } \boldsymbol{f}\in\text{poly}\left( \mathcal{C} \right)
\end{align*}
\end{itemize}
\end{minipage}%
\hfill%
\begin{minipage}[c]{0.4\linewidth}
\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);
% Codeword Polytope
\draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 0, 2);
\draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 2, 0);
\draw[line width=1pt, color=KITblue] (0, 0, 0) -- (0, 2, 2);
\draw[line width=1pt, color=KITblue] (2, 0, 2) -- (2, 2, 0);
\draw[line width=1pt, color=KITblue] (2, 0, 2) -- (0, 2, 2);
\draw[line width=1pt, color=KITblue] (0, 2, 2) -- (2, 2, 0);
% 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=0cm of c011] {$\left( 0, 1, 1 \right) $};
% f
\node[color=KITgreen, fill=KITgreen,
draw, circle, inner sep=0pt, minimum size=4pt] (f) at (0.7, 0.7, 1) {};
\node[color=KITgreen, right=0cm of f] {$\boldsymbol{f}$};
\end{tikzpicture}
\caption{$\text{poly}\left( \mathcal{C} \right)$ for $n=3$}
\end{figure}
\end{minipage}
\end{frame}
\begin{frame}[t]
\frametitle{LP Relaxation}
\begin{minipage}[c]{0.6\linewidth}
\begin{itemize}
\item Set of all variable nodes incident to a check node:
\begin{align*}
N\left( j \right) \equiv \left\{
i | i\in \mathcal{I},
\boldsymbol{H}_{j,i} = 1
\right\},
j \in \mathcal{J}
\end{align*}
\begin{align*}
S \subseteq N\left( j \right), \left| S \right| \text{odd}
\end{align*}
\item Relaxed polytope representation:
\begin{align*}
\sum_{i\in \left( N\left( j \right) \setminus S\right) } f_i
+ \sum_{i\in S} \left( 1 - f_i \right) \ge 1
\end{align*}
``$\boldsymbol{f}$ is separated by at least one bitflip
from all illegal configurations''
\end{itemize}
\end{minipage}%
\hfill%
\begin{minipage}[c]{0.4\linewidth}
\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);
% Codeword Polytope
\draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 0, 2);
\draw[line width=1pt, color=KITblue] (0, 0, 0) -- (2, 2, 0);
\draw[line width=1pt, color=KITblue] (0, 0, 0) -- (0, 2, 2);
\draw[line width=1pt, color=KITblue] (2, 0, 2) -- (2, 2, 0);
\draw[line width=1pt, color=KITblue] (2, 0, 2) -- (0, 2, 2);
\draw[line width=1pt, color=KITblue] (0, 2, 2) -- (2, 2, 0);
% Polytope Annotations
\node[codeword, color=KITred] (c111) at (2, 2, 2) {};% {$\left( 0, 0, 0 \right) $};
\node[codeword, color=KITred] (c001) at (0, 0, 2) {};% {$\left( 1, 0, 1 \right) $};
\node[codeword, color=KITred] (c100) at (2, 0, 0) {};% {$\left( 1, 1, 0 \right) $};
\node[codeword, color=KITred] (c010) at (0, 2, 0) {};% {$\left( 0, 1, 1 \right) $};
\node[color=KITred, left=0cm of c111] {$\left( 1, 1, 1 \right) $};
\node[color=KITred, right=0cm of c001] {$\left( 0, 0, 1 \right) $};
\node[color=KITred, right=0.35cm of c100] {$\left( 1, 0, 0 \right) $};
\node[color=KITred, below=0cm of c010] {$\left( 0, 1, 0 \right) $};
\end{tikzpicture}
\caption{Relaxed polytope for $n=3$}
\end{figure}
\end{minipage}
\todo{How is this a relaxation and not just an alternative formulation?
We have just switched out valid codewords for invalid ones}
\todo{Is LP Relaxation relevant as theoretical background?}
\end{frame}