\section{Theoretical Background}% \label{sec:Theoretical Background} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Motivation}% \label{sub:Motivation} \begin{frame}[t] \frametitle{Motivation} \begin{itemize} \item General ML decoding problem NP-complete \citereference{BMT78} \item Iterative message–passing algorithms preferred in practice do not guarantee optimality when the graph contains cycles \citereference{KTP19} \item Standard message-passing algorithms difficult to analyze \citereference{FEL03} \end{itemize} \vspace{3.5cm} \addreferences {BMT78}{E. Berlekamp; R. McEliece; H. van Tilborg: \emph{On the inherent intractability of certain coding problems (Corresp.)}. IEEE Transactions on Information Theory 24.3 (May 1978), pp. 384–386.} {KTP19}{Banu Kabakulak; Z. Caner Taşkın; Ali Emre Pusane: \emph{Optimization–based decoding algorithms for LDPC convolutional codes in communication systems}. IISE Transactions 51.10 (2019), pp. 1061–1074.} {FEL03}{Jon Feldman: \emph{Decoding error-correcting codes via linear programming}. PhD thesis. MIT, 2003.} \stopreferences \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{frame}[t] \frametitle{Previous Work} \vspace*{-5mm} \begin{itemize} \item Bachelor's thesis by Yanixa Lu \citereference{Lu22} \end{itemize} \begin{figure}[h] \centering \begin{subfigure}{0.33\textwidth} \centering \fbox{\includegraphics[page=1,width=.6\textwidth]{res/Bachelor_Thesis_Yanxia_Lu}} \end{subfigure}% \begin{subfigure}{0.33\textwidth} \centering \fbox{\includegraphics[page=25,width=.6\textwidth]{res/Bachelor_Thesis_Yanxia_Lu}} \end{subfigure}% \begin{subfigure}{0.33\textwidth} \centering \fbox{\includegraphics[page=60,width=.6\textwidth]{res/Bachelor_Thesis_Yanxia_Lu}} \end{subfigure}% \end{figure} \begin{itemize} \item Analysis of ``Proximal Decoding'' \item Analysis of ``Interior Point Decoding'' \end{itemize} \bigskip \addreference{Lu22}{Yanxia Lu: \emph{Realization of Channel Decoding Using Optimization Techniques}. Bachelor’s Thesis. KIT, 2022.} \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) {$\boldsymbol{c}$}; \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[below=0.5cm of add] (noise) {$\boldsymbol{n}$}; \node[mapper, right=1.5cm of add] (decoder) {Decoder}; \node[mapper, right=1.5cm of decoder] (demapper) {Demapper}; \node[right=0.5cm of demapper] (out) {$\boldsymbol{\hat{c}}$}; \node at ($(bpskmap.east)!0.5!(add.west) + (0,0.3cm)$) {$\boldsymbol{x}$}; \node at ($(add.east)!0.5!(decoder.west) + (0,0.3cm)$) {$\boldsymbol{y}$}; \node at ($(decoder.east)!0.5!(demapper.west) + (0,0.3cm)$) {$\boldsymbol{\hat{x}}$}; \draw[->] (in) -- (bpskmap); \draw[->] (bpskmap) -- (add); \draw[->] (add) -- (decoder); \draw[->] (noise) -- (add); \draw[->] (decoder) -- (demapper); \draw[->] (demapper) -- (out); \end{tikzpicture} \end{figure} \begin{itemize} \item All simulations are performed with BPSK: \begin{align*} \boldsymbol{x} = \left( -1 \right)^{\boldsymbol{c}}, \hspace{5mm} \boldsymbol{c} \in \mathbb{F}_2^n, \hspace{2mm} \boldsymbol{x} \in \left\{ -1, 1 \right\}^n \end{align*} \item The 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} = \boldsymbol{0} \end{align*} \end{itemize} \end{frame} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Optimization as a Decoding Method}% \label{sub:Optimization as a Decoding Method} \begin{frame}[t] \frametitle{Optimization as a Decoding Method} \begin{minipage}[c]{0.6\linewidth} \begin{itemize} \item Reformulate decoding problem as optimization problem \begin{itemize} \item Establish objective function \item Establish constraints \end{itemize} \item Use optimization method to solve the new problem \end{itemize} \vspace{5mm} \begin{itemize} \item Usage of ''$\sim$`` to denote change in domain, e.g. \end{itemize} \vspace*{-2mm} \hspace*{-10mm} \begin{minipage}[c]{\textwidth} \centering \begin{align*} \boldsymbol{x} \in \left\{ -1, 1 \right\}^n &\rightarrow \tilde{\boldsymbol{x}} \in \mathbb{R}^n \\ \boldsymbol{c} \in \left\{ 0, 1 \right\}^n &\rightarrow \tilde{\boldsymbol{c}} \in \left[ 0,1 \right]^n \end{align*} \end{minipage} \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] \tikzstyle{every node}=[font=\normalsize] % 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] {$\tilde{\boldsymbol{c}}$}; \end{tikzpicture} \caption{Hypercube ($n=3$) with valid codewords for single parity-check code} \end{figure} \end{minipage} \end{frame}