update
This commit is contained in:
@@ -5,4 +5,45 @@
|
||||
url = "https://en.wikipedia.org/w/index.php?title=Signal-to-noise_ratio&oldid=1334458479",
|
||||
note = "[Online; accessed 16-February-2026]"
|
||||
}
|
||||
|
||||
@misc{ enwiki:convolutional,
|
||||
author = "{Wikipedia contributors}",
|
||||
title = "Convolutional code --- {Wikipedia}{,} The Free Encyclopedia",
|
||||
year = "2026",
|
||||
url = "https://en.wikipedia.org/w/index.php?title=Convolutional_code&oldid=1353119167",
|
||||
note = "[Online; accessed 6-July-2026]"
|
||||
}
|
||||
@misc{ enwiki:gilbert-varshamov,
|
||||
author = "{Wikipedia contributors}",
|
||||
title = "Gilbert–Varshamov bound --- {Wikipedia}{,} The Free Encyclopedia",
|
||||
year = "2025",
|
||||
url = "https://en.wikipedia.org/w/index.php?title=Gilbert%E2%80%93Varshamov_bound&oldid=1329330572",
|
||||
note = "[Online; accessed 7-July-2026]"
|
||||
}
|
||||
@misc{ enwiki:hamming-distance,
|
||||
author = "{Wikipedia contributors}",
|
||||
title = "Hamming distance --- {Wikipedia}{,} The Free Encyclopedia",
|
||||
year = "2025",
|
||||
url = "https://en.wikipedia.org/w/index.php?title=Hamming_distance&oldid=1320319980",
|
||||
note = "[Online; accessed 7-July-2026]"
|
||||
}
|
||||
@misc{ enwiki:cyclic,
|
||||
author = "{Wikipedia contributors}",
|
||||
title = "Cyclic code --- {Wikipedia}{,} The Free Encyclopedia",
|
||||
year = "2026",
|
||||
url = "https://en.wikipedia.org/w/index.php?title=Cyclic_code&oldid=1362628486",
|
||||
note = "[Online; accessed 7-July-2026]"
|
||||
}
|
||||
@misc{ enwiki:crc,
|
||||
author = "{Wikipedia contributors}",
|
||||
title = "Cyclic redundancy check --- {Wikipedia}{,} The Free Encyclopedia",
|
||||
year = "2026",
|
||||
url = "https://en.wikipedia.org/w/index.php?title=Cyclic_redundancy_check&oldid=1360762341",
|
||||
note = "[Online; accessed 7-July-2026]"
|
||||
}
|
||||
@misc{ enwiki:reed-solomon,
|
||||
author = "{Wikipedia contributors}",
|
||||
title = "Reed–Solomon error correction --- {Wikipedia}{,} The Free Encyclopedia",
|
||||
year = "2026",
|
||||
url = "https://en.wikipedia.org/w/index.php?title=Reed%E2%80%93Solomon_error_correction&oldid=1360527569",
|
||||
note = "[Online; accessed 7-July-2026]"
|
||||
}
|
||||
|
||||
112
correction.tex
112
correction.tex
@@ -18,7 +18,9 @@
|
||||
\usepackage[style=ieee, backend=biber, maxnames=1, minnames=1]{biblatex}
|
||||
\addbibresource{correction.bib}
|
||||
|
||||
\newcommand{\red}[1]{\textcolor{red}{#1}}
|
||||
\newacronym{snr}{SNR}{signal-to-noise ratio}
|
||||
\newacronym{crc}{CRC}{Cyclic Redundancy Check}
|
||||
|
||||
|
||||
|
||||
@@ -39,7 +41,7 @@ i.e. more errors per intended information will require more effort to retain the
|
||||
\[ \mathrm{SNR} = \frac{P_{signal}}{P_{noise}} \]
|
||||
In an analog system, one might attempt to simply increase transmission power $P_{signal}$
|
||||
as is done for example in professional audio equipment.
|
||||
This would however require the modification of the transmission channel itself, which is not possible for e.g. wireless transmissions.
|
||||
This would however require the modification of the transmission channel itself, which is only feasible to a certain degree.
|
||||
|
||||
In a digital system, we could understand \acrshort{snr} as the probability of a bit being flipped in transit.
|
||||
For example, if a binary message is sent electronically, with a 1 being represented by a voltage of one volt
|
||||
@@ -55,24 +57,24 @@ However, there generally remains a chance that an intended 1 will be received as
|
||||
In this digital system, we can improve communication reliability by using a coding scheme that is tolerant of errors.
|
||||
As a naive approach, we will simply transmit our message multiple times.
|
||||
This is called a \textit{repetition code}, where the receiver will perform a majority vote over the received bits,
|
||||
resulting in the following
|
||||
resulting in error detection for 2 bits used, and error correction for 3+ bits used.
|
||||
|
||||
\begin{figure}[H]
|
||||
\begin{minipage}{.5\textwidth}
|
||||
\begin{tabular}{c|ccc}
|
||||
recieved & 0 & \textcolor{red}{1} & 2 \\
|
||||
received & 0 & \textcolor{red}{1} & 2 \\
|
||||
\hline
|
||||
read & 0 & ERR & 1 \\
|
||||
\end{tabular}
|
||||
|
||||
\begin{tabular}{c|cccccccc}
|
||||
recieved & 0 & \textcolor{red}{1} & \textcolor{red}{2} & 3 \\
|
||||
received & 0 & \textcolor{red}{1} & \textcolor{red}{2} & 3 \\
|
||||
\hline
|
||||
read & 0 & 0 & 1 & 1 \\
|
||||
\end{tabular}
|
||||
|
||||
\begin{tabular}{c|cccccccc}
|
||||
recieved & 0 & \textcolor{red}{1} & \textcolor{red}{2} & \textcolor{red}{3} & 4 \\
|
||||
received & 0 & \textcolor{red}{1} & \textcolor{red}{2} & \textcolor{red}{3} & 4 \\
|
||||
\hline
|
||||
read & 0 & 0 & ERR & 1 & 1 \\
|
||||
\end{tabular}
|
||||
@@ -106,11 +108,99 @@ resulting in the following
|
||||
|
||||
|
||||
|
||||
\section{Hamming Condition}
|
||||
theorems: Hamming condition, Varsham-Gilbert
|
||||
Shannon-Hartley
|
||||
Convolutional Code
|
||||
Reed-Solomon
|
||||
CRC
|
||||
\subsection{Mathematical Bounds}
|
||||
In general, the amount of errors a code can detect or correct
|
||||
is determined by the Hamming distance $h$ defined as the number of positions in which neighboring strings (code words) differ.
|
||||
|
||||
"Karolin" and "Kerstin" differ in 3 letters and thus have a Hamming distance of $h=3$, just as the binary example.
|
||||
In general, a code is said to have a Hamming distance of $h$ if it is the minimal pairwise distance of all codewords.
|
||||
Given a Hamming distance of $h$, $(h-1)$ errors can be detected, to correct $r$ errors a minimum distance of $h\geq 2r+1$ is required.
|
||||
This is analogous to the repetition code already shown in \autoref{tab:detection-correction},
|
||||
as the length of our repetition code is directly equivalent to the hamming distance.
|
||||
|
||||
The Hamming distance of a code is then defined as the minimum pairwise distance between any two code words.
|
||||
From it, minimal detection and correction capabilities follow according to the above rules.
|
||||
\cite{enwiki:hamming-distance}
|
||||
|
||||
Given a $q$-ary code with length $n$ and minimum Hamming distance $d$, the Gilbert-Varshamov bound provides a bound for the size of
|
||||
the resulting code, i.e. the number of available code words given the conditions.
|
||||
Let $\mathcal{A}_q(n,d)$ be the maximum possible size of said code, then the Gilbert-Varshamov bound consists of
|
||||
$q^n$ as the number of total possible code words in a $q$-ary code of length n, divided by
|
||||
$\sum_{j=0}^{d-1} \binom{n}{j} (q-1)^j$, the size of a ball created around a code word by the required Hamming distance.
|
||||
\cite{enwiki:gilbert-varshamov}
|
||||
The ball is the geometric interpretation of the space created around each used code word by requiring a minimal hamming distance,
|
||||
i.e. requiring that no code word lie closer within the vector space.
|
||||
|
||||
\begin{figure}[h]
|
||||
\begin{minipage}{.3\textwidth}
|
||||
\begin{tabular}{c|c}
|
||||
karolin & 0111 \\
|
||||
k\red{e}r\red{st}in & 0\red{000}
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\begin{minipage}{.3\textwidth}
|
||||
\[
|
||||
\mathcal{A}_q(n,d) \geq \frac{q^n}{\sum_{j=0}^{d-1} \binom{n}{j} (q-1)^j}
|
||||
\]
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\section{Block Codes}
|
||||
% NOTE fact-check
|
||||
Block codes are \textit{memoryless}, meaning that each block is encoded independently using a static dictionary.
|
||||
|
||||
\subsection{Cyclic Redundancy Check}
|
||||
A \acrfull{crc} is a method of detecting (correcting) errors by interpreting the information to be sent as a polynomial.
|
||||
They are particularly suited for the type of burst error common in storage media such as DVDs.
|
||||
Typically an $n$-bit \acrshort{crc} can detect any error burst of length $n$,
|
||||
with a chance of also detecting longer error bursts of approximately $1-2^{-n}$.
|
||||
|
||||
Specification of a \acrshort{crc} code requires definition of a so-called \textit{generator polynomial}.
|
||||
It is used as the divisor in a polynomial division taking the message as the dividend.
|
||||
The remainder of $n$ bits is then appended to the message, thus requiring a generator polynomial of degree $n$ for the calculation.
|
||||
Because the division is calculated in a finite (also known as galois) field, so the operation can be performed
|
||||
bitwise-parallel, reducing to a simple bitwise \verb|XOR| in the binary case.
|
||||
|
||||
One of the simplest error-detection systems besides a repetition code, the parity bit, is in fact a 1-bit \acrshort{crc}.
|
||||
Using the generator polynomial $g=x+1$ of degree 1 results in the well-known pattern of extending the code words to achieve
|
||||
an even number of 1s.
|
||||
\cite{enwiki:crc}
|
||||
|
||||
\begin{figure}[H]
|
||||
|
||||
\begin{minipage}{0.7\textwidth}
|
||||
To calculate the \acrshort{crc}-1, the message $100$ is first extended by $n$ 0s to $1000$.
|
||||
It is then divided by the generator polynomial $g=x+1 \equiv (11_2)$, leaving a remainder of $1$.
|
||||
Thus, the code word that should be transmitted is $1001$.
|
||||
As a result, any 1-bit flip will be detected, allowing the receiver to request retransmission of the message.
|
||||
\end{minipage}
|
||||
\hspace{1cm}
|
||||
\begin{minipage}{0.2\textwidth}
|
||||
\begin{verbatim}
|
||||
1000 : 11 = 111
|
||||
:11
|
||||
=010
|
||||
:11
|
||||
=010
|
||||
:11
|
||||
=1
|
||||
\end{verbatim}
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Reed-Solomon}
|
||||
Similar to \acrshort{crc}, a Reed-Solomon code also interprets the message as a polynomial.
|
||||
This polynomial of degree $k-1$ is uniquely identified by $k$ evaluation points.
|
||||
By transmitting $n>k$ points, a Reed-Solomon code can detect $t=n-k$ errors or locate and correct up to $\lfloor t/2 \rfloor$ errors.
|
||||
|
||||
Formally, the message will be $(a_1,a_2,...,a_k)$ coefficients of a polynomial
|
||||
\[
|
||||
f(x) = a_1 + a_2 x + a_3 x^2+...+a_k x^{k-1} = \sum_{i=1}^{k} a_i x^{i-1}
|
||||
\]
|
||||
\cite{enwiki:reed-solomon}
|
||||
|
||||
\section{Convolutional Codes}
|
||||
|
||||
\printbibliography
|
||||
\end{document}
|
||||
|
||||
Reference in New Issue
Block a user