diff options
author | Nunigan <michael.schmid2@ost.ch> | 2021-07-31 12:39:37 +0200 |
---|---|---|
committer | Nunigan <michael.schmid2@ost.ch> | 2021-07-31 12:39:37 +0200 |
commit | 36d594e1694bce2d69b88667c249f5028fdf22a2 (patch) | |
tree | 2f20e014a5e7ca28caa343643be49956b43f1145 /buch/papers/reedsolomon/idee.tex | |
parent | added corrections from prof mueller (diff) | |
parent | Merge pull request #58 from Kuehnee/master (diff) | |
download | SeminarMatrizen-36d594e1694bce2d69b88667c249f5028fdf22a2.tar.gz SeminarMatrizen-36d594e1694bce2d69b88667c249f5028fdf22a2.zip |
Merge branch 'master' of https://github.com/AndreasFMueller/SeminarMatrizen
Diffstat (limited to '')
-rw-r--r-- | buch/papers/reedsolomon/idee.tex | 117 |
1 files changed, 70 insertions, 47 deletions
diff --git a/buch/papers/reedsolomon/idee.tex b/buch/papers/reedsolomon/idee.tex index 39adbbf..41e0d4c 100644 --- a/buch/papers/reedsolomon/idee.tex +++ b/buch/papers/reedsolomon/idee.tex @@ -1,21 +1,30 @@ % -% teil1.tex -- Beispiel-File für das Paper -% -% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil +% idee.tex -- Polynom Idee % \section{Idee \label{reedsolomon:section:idee}} \rhead{Problemstellung} +Um beim Datenübertragen Fehler zu erkennen, könnte man die Daten jeweils doppelt senden, +und so jeweilige Fehler zu erkennen. +Doch nur schon um Fehler zu erkennen werden überproportional viele Daten doppelt und dreifach gesendet. +Der Reed-Solomon-Code macht dies auf eine andere, clevere Weise. Das Problem liegt darin Informationen, Zahlen, zu Übertragen und Fehler zu erkennen. -Beim Reed-Solomon-Code kann man nicht nur Fehler erkennen, +Speziell beim Reed-Solomon-Code kann man nicht nur Fehler erkennen, man kann sogar einige Fehler korrigieren. +Der Unterschied des Fehler erkennen und korrigiren, ist das beim Erkennen nur die Frage beantwortet wird: Ist die Übertragung fehlerhaft oder nicht? +Beim Korrigieren werden Fehler erkannt und dann zusätzlich noch den original Wert rekonstruieren. +Auch eine Variante wäre die Daten nach einer Fehlerhaften sendung, nochmals zum senden auffordern(auch hier wird doppelt und dreifach gesendung), +was bei Reed-Solomon-Code-Anwendungen nicht immer sinnvoll ist. +Anwendungen finden sind im Abchnitt \externaldocument{papers/reedsolomon/anwendungen} +\ref{reedsolomon:section:anwendung} beschrieben. +\subsection{Polynom-Ansatz +\label{reedsolomon:section:polynomansatz}} \rhead{Polynom-Ansatz} -Eine Idee ist aus den Daten -ein Polynom zu bilden. -Diese Polynomfunktion bei bestimmten Werten, ausrechnet und diese Punkte dann überträgt. -Nehmen wir als beisbiel die Zahlen \textcolor{blue}{2}, \textcolor{blue}{1}, \textcolor{blue}{5}, +Eine Idee ist, aus den Daten ein Polynom zu bilden. +Diese Polynomfunktion bei bestimmten Werten errechnet und diese Punkte dann überträgt. +\begin{beispiel} Nehmen wir die Zahlen \textcolor{blue}{2}, \textcolor{blue}{1}, \textcolor{blue}{5}, welche uns dann das Polynom \begin{equation} p(x) @@ -24,49 +33,64 @@ p(x) \label{reedsolomon:equation1} \end{equation} ergeben. -Übertragen werden nun die Werte an den stellen 1, 2, 3\dots 7 dieses Polynomes. +Übertragen werden nun die \textcolor{darkgreen}{grünen Werte} +dieses \textcolor{blue}{blauen Polynomes} an den Stellen 1, 2, 3\dots 7 dieses Polynomes. Grafisch sieht man dies dann in Abbildung \ref{fig:polynom}, -mit den Punkten, $p(1),p(2),...,p(7) = (\textcolor{green}{8}, -\textcolor{green}{15}, \textcolor{green}{26}, -\textcolor{green}{41}, \textcolor{green}{60}, -\textcolor{green}{83}, \textcolor{green}{110})$ -Wenn ein Fehler sich in die Übertragung eingeschlichen hatt, muss der Leser/Empfänger diesen erkennen und das Polynom rekonstruieren. -Der Leser/Empfänger weiss, den Grad des Polynoms und dessen Werte übermittelt wurden. +mit den Punkten, $p(1),p(2),...,p(7) = (\textcolor{darkgreen}{8}, +\textcolor{darkgreen}{15}, \textcolor{darkgreen}{26}, +\textcolor{darkgreen}{41}, \textcolor{darkgreen}{60}, +\textcolor{darkgreen}{83}, \textcolor{darkgreen}{110})$ +Wenn ein Fehler sich in die Übertragung eingeschlichen hat, muss der Leser/Empfänger diesen erkennen und das Polynom rekonstruieren. +Der Leser/Empfänger weiss, den Grad des Polynoms und dessen \textcolor{darkgreen}{Werte} übermittelt wurden. +Die Farbe blau brauchen wir für die \textcolor{blue}{Daten} welche wir mit der Farbe grün \textcolor{darkgreen}{Übermitteln}. +\end{beispiel} -\subsection{Beispiel} -Für das Beispeil aus der Gleichung \eqref{reedsolomon:equation1}, -ist ein Polynome zweiten Grades durch drei Punkte eindeutig bestimmbar. -Hat es Fehler in der Übertragunge gegeben,(Bei Abbildung \ref{fig:polynom}\textcolor{red}{roten Punkte}) kann man diese erkennen, -da alle Punkte, die korrekt sind, auf dem Polynom liegen müssen. -(Bei Abbildung \ref{fig:polynom}\textcolor{green}{grünen Punkte}) +\begin{beispiel} +Ein Polynome zweiten Grades ist durch drei Punkte eindeutig bestimmbar. +Hat es Fehler in der Übertragunge gegeben,in der Abbilbung \ref{fig:polynom} die \textcolor{red}{roten Punkte}). +Erkennt man diese Fehler, da alle korrekten Punkte auf der Parabel liegen müssen. +Die \textcolor{darkgreen}{grünen Punkte} bestimmen die Parabel, und die Fehler können zu den +\textcolor{gray}{Orginalpunkte} rekonstruiert werden. Ab wie vielen Fehler ist das Polynom nicht mehr erkennbar beim Übertragen von 7 Punkten? Bei 2 Fehlern kann man noch eindeutig bestimmen, dass das Polynom mit 4 Punkten, -gegenüber dem mit 5 Punkten falsch liegt.\ref{fig:polynom} -Werden es mehr Fehler kann nur erkennt werden, dass das Polynom nicht stimmt. +gegenüber dem mit 5 Punkten falsch liegt. \ref{fig:polynom} +Werden es mehr Fehler kann nur erkannt werden, dass das Polynom nicht stimmt. Das orginale Polynom kann aber nicht mehr gefunden werden. -Dafür sind mehr übertragene Werte nötig. +Da andere Polynome oder das Konkurrenzpolynom, grau gestrichelt in Abbildung \ref{fig:polynom}, das orginal fehlleitet. +Um das Konkurrenzpolynom auszuschliessen, währen mehr \textcolor{darkgreen}{Übertragungspunkte} nötig. +\end{beispiel} -\begin{figure} +\begin{figure}%[!ht] \centering - %\includegraphics[width=0.5\textwidth]{papers/reedsolomon/images/polynom2} - \input{papers/reedsolomon/images/polynom2.tex} - \caption{Polynom $p(x)$ \eqref{reedsolomon:equation1}} + %\includegraphics[width=\textwidth]{papers/reedsolomon/figures/polynom2} + \input{papers/reedsolomon/tikz/polynomraw.tex} + \caption{Polynom $p(x)$ von der Gleichung\eqref{reedsolomon:equation1}} \label{fig:polynom} \end{figure} -\section{Fehlerbestimmung -\label{reedsolomon:section:Fehlerbestimmmung}} -So wird ein Muster indentifiziert, welches genau vorherbestimmen kann, -wie gross das Polynom sein muss und wie viele Übertragungspunkte gegeben werden müssen. -Um zu bestimmen wie viel Fehler erkennt und korriegiert werden können. -Die Anzahl Zahlen (Daten, ab hier verwenden wir das Wort Nutzlast), -die Entschlüsselt werden sollen, brauchen die gleiche Anzahl an Polynomgraden, beginnend bei Grad 0. ( \( k-1 \) ) -Für die Anzahl an Übertragungspunkte, muss bestimmt werden wieviel Fehler erkennt und korrigiert werden sollen. -Mit Hilfe der Tabelle, sieht man das es bei $t$ Fehlern und $k$ Nutzlast Zahlen, -$k+2t$ Punkte übertragen werden müssen. +\section{Fehlerkorekturstellen bestimmen +\label{reedsolomon:section:Fehlerkorrekturstellen}} +Um zu bestimmen wieviel zusätzliche \textcolor{darkgreen}{Übertragungspunkte} notwendig sind, um die Fehler zu korrigieren, +muss man zuerst wissen, wieviel \textcolor{blue}{Daten} gesendet und wieviel \textcolor{red}{Fehler} erkennt werden sollen. +Die Anzahl \textcolor{blue}{Daten} (ab hier verwenden wir das Wort Nutzlast), die als Polynomkoeffizente $k$ übergeben werden, +brauchen die gleiche Anzahl an Polynomkoeffizententräger, beginnend bei Grad 0 somit ergibt sich der Polynomgrad mit $k-1$. +Für die Anzahl der Fehler $t$, welche korrigiert werden können, gehen wir zum Beispiel. +\begin{beispiel} von den Polynom \ref{reedsolomon:equation1} in, welchem wir \textcolor{darkgreen}{7 Übertragungspunkte} senden. +Durch 3 Punkte wird das Polyom eindeutig bestimmt, nun haben wir mehrere Konkurrenzpolynome, doch mit maximal 2 Fehler liegen auf einem Konkurrenzpolynom, +maximal 4 Punkte und auf unserem orginal 5 Punkte. Ansonsten hatt es mehr Fehler oder unser Konkurrenzpolynom ist das gleiche wie das Original. +Somit können wir nun bestimmen, dass von den \textcolor{darkgreen}{7 Übertragungspunkten$u$} bis zu 2 Fehler korrigiert werden können und 4 Übertragungspunkte zusätzlich gesendet werden müssen. +\end{beispiel} +Man könnte auch dies in der Tabelle \ref{tab:fehlerkorrekturstellen} erkennen, doch mit dieser Gleichung +\begin{equation} + \frac{\textcolor{darkgreen}{u}-\textcolor{blue}{k}}{\textcolor{red}{t}} + =2 + \label{reedsolomon:equation2} +\end{equation} +zeigt sich, dass es $k+2t$ Übertragungspunkte braucht. -\begin{center} - \begin{tabular}{ c c c } +\begin{table} + \centering + \begin{tabular}{ c c | c} \hline Nutzlas & Fehler & Übertragen \\ \hline @@ -77,12 +101,11 @@ $k+2t$ Punkte übertragen werden müssen. $k$ & $t$ & $k+2t$ Werte eines Polynoms vom Grad $k-1$ \\ \hline \end{tabular} -\end{center} + \caption{ Fehlerkorrekturstellen Bestimmung.} + \label{tab:fehlerkorrekturstellen} +\end{table} -Ein toller Nebeneffekt ist das dadurch auch $2t$ Fehler erkannt werden. -Um zurück auf unser Beispiel zu kommen, -können von den 7 Übertragungspunkten bis zu $2t = 2\cdot2 = 4 $ Punkten falsch liegen -und es wird kein eindeutiges Polynom zweiten Grades erkannt, und somit die Nutzlast Daten als fehlerhaft deklariert. -Um aus den Übertragenen Zahlen wieder die Nutzlastzahlen zu bekommen könnte man eine Polynominterpolation anwenden, -doch die Punkte mit Polynominterpolation zu einem Polynom zu rekonstruieren ist schwierig und Fehleranfällig. +Ein Nebeneffekt ist, dass dadurch auch $2t$ Fehler erkannt werden können, nicht aber korrigiert. +Um aus den übertragenen Zahlen wieder die Nutzlastzahlen zu bekommen könnte man eine Polynominterpolation anwenden, +doch die Punkte mit Polynominterpolation zu einem Polynom zu rekonstruieren ist schwierig und fehleranfällig. |