Modified figure to be clearer; Moved footnote into text
This commit is contained in:
parent
af45d0ce19
commit
c1364f1615
@ -27,7 +27,7 @@ the \ac{ML} decoding problem:%
|
|||||||
%
|
%
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
\hat{\boldsymbol{c}}_{\text{\ac{MAP}}} &= \argmax_{\boldsymbol{c} \in \mathcal{C}}
|
\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)\\
|
\right)\\
|
||||||
\hat{\boldsymbol{c}}_{\text{\ac{ML}}} &= \argmax_{\boldsymbol{c} \in \mathcal{C}}
|
\hat{\boldsymbol{c}}_{\text{\ac{ML}}} &= \argmax_{\boldsymbol{c} \in \mathcal{C}}
|
||||||
f_{\boldsymbol{Y} \mid \boldsymbol{C}} \left( \boldsymbol{y} \mid \boldsymbol{c}
|
f_{\boldsymbol{Y} \mid \boldsymbol{C}} \left( \boldsymbol{y} \mid \boldsymbol{c}
|
||||||
@ -35,7 +35,7 @@ the \ac{ML} decoding problem:%
|
|||||||
.\end{align*}%
|
.\end{align*}%
|
||||||
%
|
%
|
||||||
The goal is to arrive at a formulation, where a certain objective function
|
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*}
|
\begin{align*}
|
||||||
\text{minimize}\hspace{2mm} &g\left( \tilde{\boldsymbol{c}} \right)\\
|
\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}),
|
to a spatial representation (figure \ref{fig:dec:spatial}),
|
||||||
where the codewords are some of the edges of a hypercube.
|
where the codewords are some of the edges of a hypercube.
|
||||||
The goal is to find the point $\tilde{\boldsymbol{c}}$,
|
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
|
% Figure showing decoding space
|
||||||
@ -162,8 +162,6 @@ which minimizes the objective function $g\left( \cdot \right) $.
|
|||||||
|
|
||||||
\caption{Different representations of the decoding problem}
|
\caption{Different representations of the decoding problem}
|
||||||
\end{figure}
|
\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}
|
%Especially for the continuous variable in LP decoding}
|
||||||
|
|
||||||
As solving integer linear programs is generally NP-hard, this decoding problem
|
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:
|
A technique called \textit{relaxation} is applied:
|
||||||
relaxing the constraints, thereby broadening the considered domain
|
relaxing the constraints, thereby broadening the considered domain
|
||||||
(e.g. by lifting the integer requirement).
|
(e.g. by lifting the integer requirement).
|
||||||
@ -253,35 +251,58 @@ This consideration leads to constraints, that can be described as follows
|
|||||||
,\end{align*}%
|
,\end{align*}%
|
||||||
\todo{Explicitly state that the first relaxation is essentially just lifing the integer
|
\todo{Explicitly state that the first relaxation is essentially just lifing the integer
|
||||||
requirement}%
|
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
|
neighboring variable nodes
|
||||||
of check node $j$
|
of check node $j$ (i.e., the relevant components of $\boldsymbol{c}$ for parity-check $j$).
|
||||||
\footnote{For example, if the $j$th row of the parity-check matrix
|
For example, if the $j$th row of the parity-check matrix
|
||||||
$\boldsymbol{H}$ was $\boldsymbol{h}_j =
|
$\boldsymbol{H}$ was $\boldsymbol{h}_j =
|
||||||
\begin{bmatrix} 0 & 1 & 0 & 1 & 0 & 1 & 0 \end{bmatrix}$,
|
\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}
|
\begin{bmatrix}
|
||||||
0 & 1 & 0 & 0 & 0 & 0 & 0 \\
|
0 & 1 & 0 & 0 & 0 & 0 & 0 \\
|
||||||
0 & 0 & 0 & 1 & 0 & 0 & 0 \\
|
0 & 0 & 0 & 1 & 0 & 0 & 0 \\
|
||||||
0 & 0 & 0 & 0 & 0 & 1 & 0 \\
|
0 & 0 & 0 & 0 & 0 & 1 & 0 \\
|
||||||
\end{bmatrix} $ (example taken from \cite[Sec. II, A]{efficient_lp_dec_admm}).}
|
\end{bmatrix}
|
||||||
(i.e., the relevant components of $\boldsymbol{c}$ for parity-check $j$)
|
.\end{align*}%
|
||||||
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.}%
|
|
||||||
.
|
|
||||||
|
|
||||||
In figure \ref{fig:dec:poly}, the two relaxations are compared for an
|
In figure \ref{fig:dec:poly}, the two relaxations are compared for an
|
||||||
examplary code.
|
examplary code, which is described by the generator and parity-check matrices%
|
||||||
Figure \ref{fig:dec:poly:exact} shows the codeword polytope
|
%
|
||||||
$\text{poly}\left( \mathcal{C} \right) $, i.e., the constraints for the
|
\begin{align}
|
||||||
equivalent linear program to exact \ac{ML} decoding - only valid codewords are
|
\boldsymbol{G} =
|
||||||
feasible solutions.
|
\begin{bmatrix}
|
||||||
Figure \ref{fig:dec:poly:local} shows the local codeword polytope of each check
|
0 & 1 & 1
|
||||||
node.
|
\end{bmatrix} \label{eq:lp:example_code_def_gen} \\[1em]
|
||||||
Their intersection, the relaxed codeword polytope $\overline{Q}$, is shown in
|
\boldsymbol{H} =
|
||||||
figure \ref{fig:dec:poly:relaxed}.%
|
\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
|
% Left side - codeword polytope
|
||||||
%
|
%
|
||||||
|
|
||||||
\begin{subfigure}[b]{0.49\textwidth}
|
\begin{subfigure}[b]{0.35\textwidth}
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
\begin{subfigure}{\textwidth}
|
\begin{subfigure}{\textwidth}
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
@ -305,7 +326,64 @@ figure \ref{fig:dec:poly:relaxed}.%
|
|||||||
draw, circle, inner sep=0pt, minimum size=4pt]
|
draw, circle, inner sep=0pt, minimum size=4pt]
|
||||||
|
|
||||||
\tdplotsetmaincoords{60}{25}
|
\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
|
% Cube
|
||||||
|
|
||||||
\coordinate (p000) at (0, 0, 0);
|
\coordinate (p000) at (0, 0, 0);
|
||||||
@ -356,12 +434,12 @@ figure \ref{fig:dec:poly:relaxed}.%
|
|||||||
% Right side - relaxed polytope
|
% Right side - relaxed polytope
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
\begin{subfigure}[b]{0.49\textwidth}
|
\begin{subfigure}[b]{0.55\textwidth}
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
\begin{subfigure}{\textwidth}
|
\begin{subfigure}{\textwidth}
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
\begin{minipage}{0.5\textwidth}
|
\begin{minipage}{0.5\textwidth}
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
@ -369,7 +447,7 @@ figure \ref{fig:dec:poly:relaxed}.%
|
|||||||
draw, circle, inner sep=0pt, minimum size=4pt]
|
draw, circle, inner sep=0pt, minimum size=4pt]
|
||||||
|
|
||||||
\tdplotsetmaincoords{60}{25}
|
\tdplotsetmaincoords{60}{25}
|
||||||
\begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords]
|
\begin{tikzpicture}[scale=0.9, transform shape, tdplot_main_coords]
|
||||||
% Cube
|
% Cube
|
||||||
|
|
||||||
\coordinate (p000) at (0, 0, 0);
|
\coordinate (p000) at (0, 0, 0);
|
||||||
@ -433,7 +511,7 @@ figure \ref{fig:dec:poly:relaxed}.%
|
|||||||
draw, circle, inner sep=0pt, minimum size=4pt]
|
draw, circle, inner sep=0pt, minimum size=4pt]
|
||||||
|
|
||||||
\tdplotsetmaincoords{60}{25}
|
\tdplotsetmaincoords{60}{25}
|
||||||
\begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords]
|
\begin{tikzpicture}[scale=0.9, transform shape, tdplot_main_coords]
|
||||||
% Cube
|
% Cube
|
||||||
|
|
||||||
\coordinate (p000) at (0, 0, 0);
|
\coordinate (p000) at (0, 0, 0);
|
||||||
@ -499,14 +577,14 @@ figure \ref{fig:dec:poly:relaxed}.%
|
|||||||
\centering
|
\centering
|
||||||
|
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
\draw (-2, 0) -- (2, 0);
|
\draw[densely dashed] (-2, 0) -- (2, 0);
|
||||||
\draw (-2, 0.5) -- (-2, 0);
|
\draw[densely dashed] (-2, 0.5) -- (-2, 0);
|
||||||
\draw (2, 0.5) -- (2, 0);
|
\draw[densely dashed] (2, 0.5) -- (2, 0);
|
||||||
|
|
||||||
\node (intersection) at (0, -0.5) {Intersection};
|
\node (intersection) at (0, -0.5) {Intersection};
|
||||||
|
|
||||||
\draw (0, 0) -- (intersection);
|
\draw[densely dashed] (0, 0) -- (intersection);
|
||||||
\draw[->] (intersection) -- (0, -1);
|
\draw[densely dashed, ->] (intersection) -- (0, -1);
|
||||||
\end{tikzpicture}
|
\end{tikzpicture}
|
||||||
|
|
||||||
\vspace{2mm}
|
\vspace{2mm}
|
||||||
@ -517,7 +595,7 @@ figure \ref{fig:dec:poly:relaxed}.%
|
|||||||
draw, circle, inner sep=0pt, minimum size=4pt]
|
draw, circle, inner sep=0pt, minimum size=4pt]
|
||||||
|
|
||||||
\tdplotsetmaincoords{60}{25}
|
\tdplotsetmaincoords{60}{25}
|
||||||
\begin{tikzpicture}[scale=0.8, transform shape, tdplot_main_coords]
|
\begin{tikzpicture}[scale=0.9, transform shape, tdplot_main_coords]
|
||||||
% Cube
|
% Cube
|
||||||
|
|
||||||
\coordinate (p000) at (0, 0, 0);
|
\coordinate (p000) at (0, 0, 0);
|
||||||
@ -570,17 +648,25 @@ figure \ref{fig:dec:poly:relaxed}.%
|
|||||||
\label{fig:dec:poly:relaxed}
|
\label{fig:dec:poly:relaxed}
|
||||||
\end{subfigure}
|
\end{subfigure}
|
||||||
\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
|
\caption{Visualization of the codeword polytope and the relaxed codeword
|
||||||
polytope for the code defined by the parity check matrix $\boldsymbol{H} =
|
polytope of the code described by equations (\ref{eq:lp:example_code_def_gen})
|
||||||
\begin{bmatrix}
|
and (\ref{eq:lp:example_code_def_par})}
|
||||||
1 & 1 & 1\\
|
|
||||||
0 & 1 & 1
|
|
||||||
\end{bmatrix}$}
|
|
||||||
\label{fig:dec:poly}
|
\label{fig:dec:poly}
|
||||||
\end{figure}%
|
\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;
|
vertices with fractional values;
|
||||||
these represent erroneous non-codeword solutions to the linear program and
|
these represent erroneous non-codeword solutions to the linear program and
|
||||||
correspond to the so-called \textit{pseudo-codewords} introduced in
|
correspond to the so-called \textit{pseudo-codewords} introduced in
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user