<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Zyklischer_Code</id>
	<title>Zyklischer Code - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Zyklischer_Code"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Zyklischer_Code&amp;action=history"/>
	<updated>2026-05-23T00:23:25Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Zyklischer_Code&amp;diff=431713&amp;oldid=prev</id>
		<title>2001:16B8:6800:1F00:800E:AB8D:2724:C3D0: /* Beispiele */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Zyklischer_Code&amp;diff=431713&amp;oldid=prev"/>
		<updated>2018-08-13T19:08:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Beispiele&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ein &amp;#039;&amp;#039;&amp;#039;zyklischer Code&amp;#039;&amp;#039;&amp;#039; ist ein in der [[Digitale Signalverarbeitung|digitalen Signalverarbeitung]] und der [[Nachrichtentechnik]] eingesetzter [[Kanalcodierung|Kanalcode]]. Zyklische Codes sind Teil der Gruppe der [[Linearer Code|linearen Codes]] und werden unter anderem zur [[Vorwärtsfehlerkorrektur]] auf [[Kanal (Informationstheorie)|Übertragungskanälen]] oder bei [[Datenspeicher]]n eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Als solcher ist er die Basis für eine Reihe von Verfahren zur Signalübertragung, mit denen der Empfänger einer Nachricht diese auf Fehler prüfen kann, und gegebenenfalls aufgetretene Fehler ohne Rückfrage an den Sender durch die zusätzliche eingebrachte [[Redundanz (Informationstheorie)|Redundanz]] korrigieren kann.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein zyklischer Code &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; ist ein linearer Code, der zusätzlich folgende Eigenschaft hat: Ist &amp;lt;math&amp;gt;(a_0, a_1, \dots, a_{n-1})&amp;lt;/math&amp;gt; ein Codewort von &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt;, dann ist auch &amp;lt;math&amp;gt;(a_1, a_2, \dots, a_{n-1}, a_0)&amp;lt;/math&amp;gt; ein Codewort von &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt;. Daraus folgt, dass auch &amp;lt;math&amp;gt;(a_2, a_3, \dots, a_{n-1}, a_0, a_1), (a_3, a_4, \dots, a_{n-1}, a_0, a_1, a_2), \ldots, (a_{n-1}, a_0, a_1, \ldots, a_{n-2})&amp;lt;/math&amp;gt; Codewörter von &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; sind.&lt;br /&gt;
&lt;br /&gt;
== Polynomiale Darstellung ==&lt;br /&gt;
Zyklische Codes der Länge &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; lassen sich als [[Ideal (Ringtheorie)|Ideale]] des [[Ring (Algebra)|Rings]] &amp;lt;math&amp;gt;R:=\mathbb F_q[x]/(x^n-1)&amp;lt;/math&amp;gt; beschreiben. Die Zeichen eines Codewortes &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; werden dabei als Koeffizienten eines Polynomes &amp;lt;math&amp;gt;a(x)&amp;lt;/math&amp;gt; betrachtet:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(a_0,a_1,a_2,\dots,a_{n-1}) \leftrightarrow a_0 + a_1 x + a_2 x^2 + \dots + a_{n-1} x^{n-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Elemente des Rings &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; sind [[Restklasse]]n von Polynomen bezüglich der [[Polynomdivision]] durch &amp;lt;math&amp;gt;x^n-1&amp;lt;/math&amp;gt;. Jede Restklasse hat ein ausgezeichnetes Element vom Grad kleiner &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, welches zur Bezeichnung der Restklasse verwendet wird: &amp;lt;math&amp;gt;a(x)=a_0+a_1x+\dots+a_{n-1}x^{n-1}&amp;lt;/math&amp;gt;. Multiplikation mit &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; und Reduktion modulo &amp;lt;math&amp;gt;x^n-1&amp;lt;/math&amp;gt; führen auf das Polynom&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x\,a(x) \mod x^n-1=a_{n-1}+a_0 x+\dots +a_{n-2}x^{n-1}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
das gerade die zyklisch verschobene Koeffizientenfolge besitzt. Die Eigenschaft zyklisch zu sein bedeutet also im Polynomring, dass der Code &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; gegen Multiplikation mit &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; und somit mit [[Monom]]en beliebigen Grades abgeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Da der Code &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; auch linear ist, also Vielfache und Summen von Codewörtern enthält, ergibt sich, dass mit einem Polynom &amp;lt;math&amp;gt;a(x)&amp;lt;/math&amp;gt; auch die Koeffizientenfolgen aller Polynome &amp;lt;math&amp;gt;b(x)a(x) \mod x^n-1&amp;lt;/math&amp;gt; im Code enthalten sind, der Code also einem Ideal im Ring entspricht.&lt;br /&gt;
&lt;br /&gt;
Da &amp;lt;math&amp;gt;\mathbb F_q[x]&amp;lt;/math&amp;gt; ein [[Hauptidealring]] ist, wird das Ideal, das von &amp;lt;math&amp;gt;(x^n-1)&amp;lt;/math&amp;gt; und den Polynomen, die Codewörtern entsprechen, erzeugt wird, schon von einem darin enthaltenen Polynom &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; kleinsten Grades erzeugt (Erzeugerpolynom). Dieses ist immer ein Teiler von &amp;lt;math&amp;gt;(x^n-1)&amp;lt;/math&amp;gt;. Kennt man also alle Teilerpolynome von &amp;lt;math&amp;gt;(x^n-1)&amp;lt;/math&amp;gt;, so kennt man auch alle zyklischen linearen Codes in &amp;lt;math&amp;gt;\mathbb F_q^n&amp;lt;/math&amp;gt;. Besonderes Interesse genießen die Codes, die den [[Irreduzibles Polynom|irreduziblen]] Faktoren entsprechen.&lt;br /&gt;
&lt;br /&gt;
== Codierung und Decodierung ==&lt;br /&gt;
=== Codierung ===&lt;br /&gt;
Das Erzeugerpolynom &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; habe den Grad &amp;lt;math&amp;gt;n-k&amp;lt;/math&amp;gt;. Der Code hat dann die Dimension &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Ein Klartextwort &amp;lt;math&amp;gt;w\leftrightarrow w(x)=w_0+\dots+w_{k-1} x^{k-1}&amp;lt;/math&amp;gt; wird entweder durch Multiplikation oder durch Division zu einem Codewort &amp;lt;math&amp;gt;c(x)&amp;lt;/math&amp;gt; codiert:&lt;br /&gt;
&lt;br /&gt;
;Multiplikation&lt;br /&gt;
Die Multiplikation mit &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; ist die offensichtliche Methode: &amp;lt;math&amp;gt;c(x)=w(x)\cdot g(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Division&lt;br /&gt;
Der Ring &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; ist ein [[Euklidischer Ring]] bezüglich der Polynomdivision. Daher sind in der Gleichung &amp;lt;math&amp;gt;w(x)\cdot x^{n-k} = q(x)\cdot g(x) + r(x)&amp;lt;/math&amp;gt; die Polynome &amp;lt;math&amp;gt;q(x)&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;r(x)&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;\text{Grad}(r(x))&amp;lt;\text{Grad}(g(x))&amp;lt;/math&amp;gt; eindeutig bestimmt (&amp;lt;math&amp;gt;r(x)&amp;lt;/math&amp;gt; wird mittels Polynomdivision berechnet). Das Wort &amp;lt;math&amp;gt;w(x)&amp;lt;/math&amp;gt; wird dann nach &amp;lt;math&amp;gt;c(x) = w(x) \cdot x^{n-k} - r(x) &amp;lt;/math&amp;gt; codiert.&lt;br /&gt;
&lt;br /&gt;
Vorteil dieses Verfahrens ist einerseits, dass die Informationssymbole/Informationsbits direkt als Klartext im Codewort stehen. Weiterhin ist die schaltungstechnische Realisierung dieses Verfahren für Binärcodes sehr einfach (siehe [[#Realisierungen|unten]]).&lt;br /&gt;
&lt;br /&gt;
=== Decodierung ===&lt;br /&gt;
Ein empfangenes Wort &amp;lt;math&amp;gt;b(x)&amp;lt;/math&amp;gt; wird durch &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; dividiert. Ist der Rest gleich Null, war &amp;lt;math&amp;gt;b(x)&amp;lt;/math&amp;gt; bereits aus dem Code. Ist der Rest ungleich Null, dann trat bei der Übertragung ein Fehler auf. Der Rest entspricht dabei dem [[Syndromdecodierung|Syndrom]], das Wort kann dann mit Hilfe einer Syndromtabelle decodiert werden.&lt;br /&gt;
&lt;br /&gt;
Schaltungstechnisch bedeutet dies, dass für die Codierung mittels Division und die Decodierung – im Großen und Ganzen – die gleichen Schaltungen verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
== Realisierungen ==&lt;br /&gt;
[[Datei:Hamming Encoder cyclic.PNG|mini|hochkant=1.5|Zyklischer Codegenerator in Form eines LFSR]]&lt;br /&gt;
Der Vorteil von zyklischen Codes in praktischen Anwendungen, wie [[Digitaltechnik|digitalen Schaltungen]], besteht in der Möglichkeit, diese Codes mit [[Linear rückgekoppeltes Schieberegister|linear rückgekoppelten Schieberegistern]] (LFSR) erzeugen zu können.&lt;br /&gt;
&lt;br /&gt;
In nebenstehender Abbildung ist zur Veranschaulichung ein zyklischer [[Hamming-Code|(15,11)-Hamming Encoder]] mit dem Generatorpolynom &amp;#039;&amp;#039;z&amp;#039;&amp;#039;&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&amp;amp;nbsp;+&amp;amp;nbsp;&amp;#039;&amp;#039;z&amp;#039;&amp;#039;&amp;amp;nbsp;+&amp;amp;nbsp;1 dargestellt. Im Encoder werden die Nutzdatenbits &amp;#039;&amp;#039;d&amp;#039;&amp;#039; als serieller Datenstrom in der Mitte oben eingelesen und rechts das Codewort &amp;#039;&amp;#039;c&amp;#039;&amp;#039; seriell ausgegeben. Die Schalter befinden sich zunächst in Stellung &amp;#039;&amp;#039;A&amp;#039;&amp;#039;: Damit werden im Codewort zunächst die Datenbits direkt ausgegeben und gleichzeitig in das LFSR geschoben. Sind alle Datenbits eines Datenwortes eingelesen, wechseln die beiden Schalter in Stellung &amp;#039;&amp;#039;B&amp;#039;&amp;#039;: Es wird nun bitweise der Inhalt des LFSR ausgegeben, der den Prüfstellen &amp;#039;&amp;#039;p&amp;#039;&amp;#039; entspricht. Sind alle Prüfstellen ausgegeben, wiederholt sich der Vorgang. Zur Vereinfachung sind die nötigen Taktleitungen und Synchronisationschaltungen in der Schaltskizze nicht dargestellt.&lt;br /&gt;
&lt;br /&gt;
Die Decodierung von zyklischen Code auf Empfängerseite kann mittels LFSR erfolgen, wobei meist eine [[Syndromdecodierung]] zur Anwendung kommt.&lt;br /&gt;
&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
Neben den erwähnten zyklischen [[Hamming-Code#Zyklischer_Hamming-Code|Hamming-Code]]s gibt es spezielle zyklischen Varianten der [[Reed-Solomon-Code]]s, die unter anderem im Datenformat der [[CD-ROM]] Anwendung finden. Wiederum ein Spezialfall der letztgenannten sind die Codes, die bei der [[Zyklische Redundanzprüfung|zyklischen Redundanzprüfung]] (CRC) zur Fehlererkennung verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Literaturquellen ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 |Autor = [[Martin Bossert]]&lt;br /&gt;
 |Titel = Kanalcodierung&lt;br /&gt;
 |Auflage=2. vollständig neubearbeitete und erweiterte&lt;br /&gt;
 |Verlag = Teubner |Ort=Stuttgart |Jahr = 1998 |Seiten = |ISBN = 3-519-16143-5 |Kommentar=&amp;#039;&amp;#039;Informationstechnik&amp;#039;&amp;#039;&lt;br /&gt;
}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 |Autor = Todd K. Moon&lt;br /&gt;
 |Titel = Error Correction Coding. Mathematical Methods and Algorithms&lt;br /&gt;
 |Verlag = Wiley-Interscience |Ort=Hoboken NJ |Jahr = 2005 |ISBN = 0-471-64800-0&lt;br /&gt;
}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 |Autor = Harm Pralle&lt;br /&gt;
 |Titel = Codierungstheorie, Vorlesungsskript&lt;br /&gt;
 |Verlag = Technische Universität Braunschweig  |Jahr = 2005&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Nachrichtentechnik]]&lt;br /&gt;
[[Kategorie:Kodierungstheorie]]&lt;/div&gt;</summary>
		<author><name>2001:16B8:6800:1F00:800E:AB8D:2724:C3D0</name></author>
	</entry>
</feed>