Diskussion:Hamming-Code/Archiv

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 13 Jahren von PeterFrankfurt in Abschnitt Artikel Länge
Zur Navigation springen Zur Suche springen

Überschüssige Information

"In den 1940er Jahren arbeitete Richard Hamming ... an einem Computer ... welcher mit fehleranfälligen elektromechanischen Relais mit zwei Maschinenzyklen pro Sekunde ausgestattet war"

Das englische Original (?) verzichtet auf den Hinweis der Fehleranfälligkeit der Relais. Auch wenn das stimmen mag, warum wird ausgerechnet an dieser Stelle, in einem Artikel über Fehlerkorrekturverfahren, auf eine Fehleranfälligkeit hingewiesen, die mit dem Thema nichts zu tun hat? Der Leser wird dadurch doch auf die falsche Fährte gelockt, es ginge um die Korrektur der Relais. -- 89.61.156.238 10:58, 23. Sep. 2008 (CEST)


Der Artikel ist absolut unverständlich und unvollständig

Beispiel: Erzeugung eines (7,4) Hamming-Codewortes Nutzdaten : 1 0 0 1 Prüfbit 1 : 1 0 1 => 0 Prüfbit 2 : 1 0 1 => 0 Prüfbit 3 : 1 0 0 => 1

das folgt nicht aus der vorhergehenden theorie!

gruss, seb


So, hab jetzt etwas umformuliert, schaut mal, ob man die unverständlich-Markierung löschen kann. Der Abschnitt zur Erzeugung ist natürlich auch noch verbesserungswürdig, ich komme nur gerade nicht dazu. Galaxy07 00:49, 22. Nov 2004 (CET)

Wie kommt es, dass in der deutschen Wikipedia oefter mit mathematischen Formeln um sich geworfen wird, waehrend die englische Wikipedia ganz verstaendlich erklaert, ohne spezielle Kenntnisse vorauszusetzen? Diese Matrix zum Beispiel ist ja ganz interessant fuer bestimmte Leute, die was damit anfangen koennen aber wenn ich mal eben einen Hamming-Code in C implementieren will, dann hilft mir das auch nicht weiter. Ja, ich kann ziemlich gut jammern. Und wenn das jemand bemerken sollte, komme ich wieder und schreib den Artikel um! :) --84.185.205.104 07:53, 1. Sep 2005 (CEST)

juhuuu! --Ariser 09:04, 1. Sep 2005 (CEST)

Beispiel

Kann es sein, dass das angegebene Beispiel falsch ist? Ich bin der Meinung das bei einem (7,4) Code zuerst die beiden Prüfbits p1 und p2 gesetzt werden und dann das erste Datenbit d1 danach kommt dann das dritte Prüfbit p3 und zum Schluß die drei letzten Datenbits d2, d3 und d4. --Fischkopp 22:46, 26. Feb. 2007 (CET)

Ein (7,4) Code wäre also so aufgebaut p1p2d1p3d2d3d4 wobei pi die Prüfbits und di die Datenbits sind. --Fischkopp 23:23, 26. Feb. 2007 (CET)
So habs geändert. Dürfte jetzt hoffentlich stimmen. --Fischkopp 23:56, 26. Feb. 2007 (CET)

Reihenfolge der Bits

Was macht denn die Reihenfolge der Bits bei den Hammingcodes aus? Am Einfachsten finde ich, die Paritätsbits einfach ans Ende des Codeworts zu hängen. Dadurch ist die Systematik einfacher zu sehen und auch die Generator- und Prüfmatrix werden einfacher, da links bzw. unten immer die Einheitsmatrix steht. M.E. ändert die Reihenfolge der bits nichts an der Hamming-Eigenschaft... --Crazor

Es ist wohl bei allen Hamming-Codes so definiert das auf den Positionen die eine Potenz von 2 darstellen die Prüfbits liegen und an den anderen Stellen die Datenbits liegen. Das hat wohl damit was zu tun das der Hamming-Abstand groß genug ist und die Position bei der ein Fehler Auftritt einfach ermittelbar ist. --Fischkopp 17:38, 28. Feb. 2007 (CET)

Die Reihenfolge bzw. Anordnung der Prüfbits (Paritybits) im Codewort ist reine Konvention und ansich beliebig. Es wird damit nichts an der Codeeigenschaft geändert. Es muss nur zwischen Sender und Empfänger entsprechend abgestimmt sein. Es gibt auch übliche Verwendungen des Hamming-Codes wo die Parity-Bits von einem Codewort allesamt am Ende eines Datenwortes angehängt werden. Beispielsweise bei Turbo-Product-Codes welche auf (erweiterten) Hamming-Code pro Zeile/Spalte als inneren Code basieren.

Der Grund ist für die Anordnung der Paritybits am Ende eines Codewortes anstatt auf Stellen der Potenzen von 2 ist auch simpel und ist in Gründen von effizienter Implementierung zu sehen: Entsprechende Codewörter am Ende lassen sich leicht seriell in digitalen Hardware-Schaltungen (z.b. ASICs, FPGAs) mit minimaler Latenz (nur ein Clk-Zyklus) realisieren. Dabei wird der serielle Datenstrom (bitweise) eines Datenwortes durch ein entsprechende LFSR geschoben, gleichzeitig dieser serielle Datenstrom als Teil des Codewortes ausgegeben. Am Ende des Datenwortes wird dann der Inhalt des LFSR seriell ausgegeben ("rausgeshiftet"), komplettiert somit das vollständige Codewort, und somit sind die die Hamming-Bits immer am Ende des Codewortes. Die Herleitung dieses LFSR (dessen Rückkoppelstellen) ergibt sich direkt von dem Generatorpolynom welches dem jeweiligen Hamming-Code (dessen Codewortlänge) zugrunde liegt. Für jeden Hamming-Code (Länge) gibt es genau ein entsprechendes Generatorpolynom welches alle Paritybits repräsentiert und direkt als ein LFSR entsprechender Länge mit minimalen Schaltungsaufwand realisiert werden kann. --wdwd 18:42, 13. Jul. 2007 (CEST)

Review vom August 2007

Nach umfangreicher Umarbeitung bzw. Neugestaltung dieses Artikels wäre ich für Rückmeldungen dankbar. Insbesondere ob es dazu irgendwelche inhaltlichen Anmerkungen gibt, das Verständnis dieses nicht so alltäglichen Lemmas gegeben ist, ob vielleicht noch wesentliche Punkte fehlen. --wdwd 15:16, 26. Jul. 2007 (CEST)

Hallo wdwd,

als absoluter Laie auf dem Gebiet habe ich einfach mal begonnen, den Artikel zu lesen. Du hast dir sehr viel Mühe gegeben, damit auch jemand wie ich den Artikel lesen und verstehen kann. Allerdings hat der Artikel eine Menge an Füllwörtern und Doppelungen, die den Lesefluss stören und den Artikel "holprig" wirken lassen. Beispielsweise kann bei den Überschriften unter 3. (mit Ausnahme von 3.4) jedesmal "des Hamming-Code" entfallen. Ebenso bei 4. Mir fehlt übrigens "5. Praktische Anwendung", da könntest du einfach 3.4 nehmen, dann wäre 3.4.1 nicht mehr die einzige dritte Gliederungsebene. Beispiele für verbesserungsbedürftige Sätze: "Hingegen außerhalb der Bürozeiten und am Wochenende, dann wann Richard Hamming großteils arbeitete," "Die einzelnen Codewörter weisen bei dem Hamming-Code einen Hamming-Abstand von drei auf." "Im konkreten Fall des (7,4)-Hamming-Code zur Verdeutlichung". Ich hoffe, du kannst mit meiner Kritik etwas anfangen. --88.70.73.156 10:32, 28. Jul. 2007 (CEST)

Das mit der Gliederung und Überschriften ist ein guter Hinweis. Vielleicht wäre 3.4.1 auch als praktisches Anwendungsbeispiel auszugliedern, ist notiert. Manche Absätze sind wohl wirklich noch etwas holprig formuliert. Das rührt, ausser von meiner Unvollkommenheit :), auch daher, dass ich bewusst versucht habe dieses Thema mit minimalen mathematischen Formeleinsatz zu beschreiben. Gerade auch die Codierungstheorie neigt dazu eher wenig anschaulich bestimmte Themen darzustellen. Danke für die Hinweise, --wdwd 16:27, 28. Jul. 2007 (CEST)
Hallo wdwd, ich war mal so frei schonmal ein wenig zu schleifen. Ändere einfach zurück, was Dir nicht gefällt, ist nur ein Vorschlag. Noch so’n paar Details:
Den Abschnitt „Berechnung der Parity-Stellen“ find ich noch etwas unglücklich:
„Im Regelfall wird vereinbarungsgemäss eine gerade Parität für alle Kontrollstellen gewählt: Ist die Summe der logischen-1 der in die jeweilige Kontrollstelle eingerechneten Datenbitstellen eine gerade Anzahl, ist das jeweilige Parity-Bit logisch-0, andernfalls logisch-1.“—Versteht wahrscheinlich nur ein versierter Bitschubser, mir ist jedenfalls nicht wirklich klar, was der Satz eigentlich sagen will.
„Die Auswahl, welche Datenbitstelle in welchen Parity-Bit einbezogen wird, muss verschiedene Kriterien erfüllen, wie unter anderem, dass die Zeilen der Prüfmatrix H zueinander linear unabhängig sind.“—Wo kommt nun H her und welcher Zusammenhang besteht zwischen Zeilenrang von H und der getroffenen Auswahl? Ähnliches gilt für G. Wer nicht weiss, was die beiden Matrizen zu sagen haben, kann nur raten.
„In das erste Parity-Bit p1 werden nur jene Datenbits einbezogen, welche um eine Bitstelle weiter rechts stehen, und ein Bit umfassen.“—Weiter rechts als was? Betrifft auch die anderen Sätze dieses Absatzes. Wenn Du das präzisierst, wird es wahrscheinlich auch schon ein Stück „entholpert“.
Mir ist aufgefallen, dass einige Begriffe nicht so richtig konsistent verwendet werden: Mal ist’s Prüfmatrix, mal Kontrollmatrix. Empfänger und Decoder werden an einer Stelle gleich gesetzt, umgekehrt wird aber vom „Encoder im Sender“ geredet. Sind eventuell auch noch andere Begriffe, „(Daten-)block“ und „(Daten-)wort“ etwa. Bitte nochmal drübergehen, das Hin- und Herhopsen zwischen verschiedenen Begriffen verwirrt (imo) den Leser nur unnötig. Später vielleicht noch mehr, ich brauch erstmal Frühstück. ;) Viele Grüße, —mnh·· 12:43, 28. Jul. 2007 (CEST)
Mnh, finde Deine Änderung durchaus sinnvoll. Das mit den Konsistenz mancher Begriffe (Decoder/Empfänger, Encoder/Sender,...) muss ich in der Tat noch aufräumen. Kontrollmatrix vs Prüfmatrix finde ich nicht so schlecht, da es ansich die selbe Matrix beschreibt und auch in der Fachliteratur nicht nur einheitliche Begriffe dafür existieren. Die unterschiedlichen Begriffe vermeiden indirekt den Eindruck, dass es nur einen "richtigen" Ausdruck dafür gäbe. Die Absätze um die Berechnung der Parity-Stellen sind wirklich noch gewisse Baustellen. Danke auch Dir für Deine Hinweise --wdwd 16:27, 28. Jul. 2007 (CEST)

So, hab mich noch ein wenig am Artikel vergangen. Ein weiteres Detail: „In realen Nachrichtensystemen liegen am Decoder die einzelnen empfangenen Codewörter und deren Stellen im Regelfall nicht direkt als binäre Bits vor, sondern nach der Umsetzung mittels Analog-Digital-Umsetzer des Empfangsignals als ein quantisiertes Sample welches mehrere unterschiedlich hohe Stufen des analogen Signales abbildet. Durch Einbindung dieser zusätzlichen Information pro Symbol in die Decodierung wie wahrscheinlich ein bestimmtes empfangenes Symbol eher logisch-'1' oder eher logisch-'0' entspricht, dies wird auch als Soft Decision bezeichnet, können in Kombination von iterativen Decodierprozessen bessere Ergebnisse erzielt werden. “—Öh, Bahnhof, Züge? Das kann man bestimmt klarer formulieren, die Sätze sind doch ziemlich lang und es steckt ’ne Menge drin. Also: was genau spuckt die ADU-Vorschaltung da aus? Mangels Kenntnissen mal geraten: liegen die Eingangsspannungen zwischen den für „0“ und „1“ festgelegten Pegeln und der Decoder versucht iterativ, aus diesen logischen „fast-0“- und „eher-1“-Werten ein gültiges Codewort zu bauen? Falls ich damit halbwegs richtig liege, würd ich den Abschnitt eher so formulieren:

„In realen Nachrichtensystemen erhält der Decoder die einzelnen Codewörter im Regelfall nicht als binäre, sondern analoge Signale. Diese werden von einem vorgeschalteten Analog-Digital-Umsetzer zunächst quantifiziert. Die entstehenden Abstufungen des Signals zwischen logisch-0 und logisch-1 werden vom Decoder als Wahrscheinlichkeiten aufgefasst und das Codewort anhand dieser iterativ konstruiert. Diese Verfahrensweise wird als Soft-Decision bezeichnet und bewirkt einen höheren Codegewinn.“

Sofern’s stimmt, empfind ich das als leichter verständlich. Viele Grüße, —mnh·· 02:48, 1. Aug. 2007 (CEST)

Korrekturleistung

Du behauptest in Hamming-Code#Korrekturleistung: Eine andere Form des Versagens tritt bei drei Übertragungsfehlern auf: Hier erkennt der Decoder das fehlerhafte Codewort als gültig an.

Das ist so leider falsch! Einfaches Gegenbeispiel: Gegeben sei ein (5,2)-Hamming-Code. Das Wort 00000 wird an drei Stellen gestört, sodass 11010 entsteht. Dieses fehlerhafte Codewort wird erkannt, kann aber nicht korrigiert werden, wird aber definitiv nicht als gültig anerkannt. Dieses Phänomen tritt immer auf, wenn die Codewörter eine Länge kleiner als 2^k-1 haben und alle Kontrollbits gestört werden. D.h., man kann für ein beliebig großes s immer einen Hamming-Code erstellen, sodass s Fehler erkannt, nicht korrigiert, aber auch nicht (fälschlicherweise) als gültig anerkannt werden! --Blieb 11:23, 11. Aug. 2007 (CEST)

Nun, es gibt verschiedene Abwandlungen von Blockcodes (welche ein sehr grosses Gebiet aufspannen) und welche manchmal leider fälschlich als Hamming-Code bezeichnet werden, aber nicht im eigentlichen Sinne Hamming-Codes sind. Wie Du selbst schreibst, tritt dieser Effekt nur auf, wenn die Länge des Codewortes kleiner als 2^k-1 ist: Bei Hamming-Codes, und vielleicht ist das im Artikel noch nicht deutlich genug dargestellt, kann das Codewort nicht kleiner 2^k-1 sein, sondern es ist bei gewählten k immer exakt 2^k-1 lang. Und k muss ganzzahlig und grösser 1 sein. Also (5,2) ist kein möglicher Hamming-Code sondern (möglicherweise) irgendein ein anderer Blockcode, mit anderen Bildungsgesetz und folglich auch ganz anderen Korrekturleistungen. Es ist nicht jeder (N,n)-Code (wobei N und n beliebige pos. ganzzahlige Werte sein können) ein Hamming-Code. Hamming-Codes sind nur ein Teilbereich der Blockcodes. (wie hoffentlich im Artikel auch klar genug dargestellt).
Vorallem, da bei einem Hamming-Code die beiden Werte (N,n) einen fixen Bezug zueinander haben, also nicht unabhängig voneinander gewählt werden können. Das ist ja "der Gag" am Hamming-Code. Beispiele für Hamming-Codes sind somit (7,4) oder (15,11) aber nicht (5,2). Der (5,2) ist auch kein perfekter Code, wie Du schon selbst schreibst, somit ist auch schon damit gezeigt: Das ist kein Hamming-Code. (Hamming-Codes sind immer perfekt, steht meiner Meinung auch hinreichend klar im Artikel - als gute Literatur dazu, ist aber nicht ganz leicht verdaulich, ist der Bossert zu empfehlen. Quelle ist im Artikel angegeben)
Nur noch als Randbermerkung, ohne direkten Bezug zu Deiner Anmerkung: Den Punkt Codeverkürzung wo Stellen des Codewortes wegfallen (als Gegenstück zum erweiterten Hamming-Code, wo eine Codeerweiterung stattfindet) hab ich absichtlich weggelassen, da verkürzte Codes bei Block-Codes im Regelfall nur eine untergeordnete Rolle spielen. Add: Hab's dazugegeben. Könnte man aber noch als Spezialfall dazu nehmen, z.b. gibt die Firma Xilinx in einer ihrer Applikationsnoten als ECC für Speicher (http://www.xilinx.com/bvdocs/appnotes/xapp645.pdf) einen erweiterten, verkürtzten (72,64) Hamming-Code an, welcher aus einem erweiterten (128,120) Hamming-Code als Basis durch Verkürzung der Codewortstellen (und Datenbitstellen) gebildet wird. Bei diesen reduzierten Hamming-Code ist aber dann das Verhältnis von Datenbits zu Kontrollbits nicht optimal (minimal) sondern es ist im Codewort ein grösserer Overhead (Redundanz) vorhanden, welche aber nicht für die Decodierungsleistung verwendet werden kann. Der Grund liegt darin, das der RAM-Speicher eben wie in diesem Fall eine Datenbreite von 72 Bit aufweist und somit das Codewort auf diese Grösse hin angepasst sein muss. Vielleicht sollte ich solche speziellen Anwendungsfälle von Hamming-Codes noch in den Artikel reinnehmen, oder ist das zu verwirrend?
In der Hoffnung nicht zu sehr verwirrend zu sein und die Grenze von den Hamming-Code als solchen einigermassen klar dargestellt zu haben. --wdwd 21:34, 11. Aug. 2007 (CEST)
Sorry, das mit der exakten Länge von 2^k-1 habe ich überlesen. Ein Grund mag sein, dass ich Haming-Codes nur in der Form von beliebiger Anzahl von Datenbits kenne. So etwas schwingt dann immer im Hinterkopf mit...
Der Abschnitt über den verkürzten Hamming-Code trägt jetzt sicher zur Verständlichung bei.
Um ehrlich zu sein, verstehe ich die Notwendigkeit der (N,n)-Notation nicht wirklich. Die Anzahl der Parity-Bits ergibt sich ja eindeutig aus der Anzahl der datentragenden Bits (auch beim verkürzten Hamming-Code). Damit ist doch N eigentlich redundant, weil eindeutig durch n bestimmt. Findet sich diese Notation durchgängig in der Literatur? --Blieb 18:39, 12. Aug. 2007 (CEST)
Die (N,n)-Notation ist in der Literatur üblich, manchmal auch als (N,k) bezeichnet, wobei k dabei die Rolle von n übernimmt. Das sind aber nur andere Notationen. Teilweise werden in der Literatur auch Hamming-Codes mit (N,n,d) bezeichnet, wobei d die Mindestdistanz kennzeichnet - welche bei Hamming immer 3 ist. Dazu kommt, dass nicht immer klar zwischen "klassischen" Hamming-Codes und seinen Modifikationen wie den erweiterten Hamming-Code unterschieden wird. (Hamming-Code ist z.b. ein perfeker Code mit Codewortlängen zu Zweierpotenzen minus 1, während der erweiterte Hamming-Code nicht mehr perfekt ist und nur Codewörter mit Längen von Zweierpotenzen aufweist) Mir erscheint es daher sinnvoll, die (N,n)-Schreibweise zwecks leichteren Verständnis beizubehalten, auch wenn sie in diesem Fall redundante Information in sich trägt.--wdwd 19:27, 12. Aug. 2007 (CEST)

Archivierung LW-Kand. vom 4. September 2007 (erfolgreich)

Der Hamming-Code bezeichnet in der Kodierungstheorie einen von Richard Hamming entwickelten linearen, fehlerkorrigierenden Blockcode welcher in der digitalen Signalverarbeitung und der Nachrichtentechnik zur gesicherten Datenübertragung oder Datenspeicherung Verwendung findet.

Nach umfangreicher Überarbeitung und konstruktiven Review-Prozess stelle ich als Hauptautor den Hamming-Code zur Wahl. Vielleicht ist mir eine möglichst allgemeinverständliche Darstellung dieses eher theoretischen Themenbereiches gelungen.--wdwd 09:34, 28. Aug. 2007 (CEST)

Pro Glückwunsch, Wdwd! Angemessen lang, gut strukturiert, hervorragend verlinkt. Trockener Stil, wie ihn diejenigen lieben, die lieber mit Unix-Man-Pages als mit für-Dummies-Büchern arbeiten. Das Kapitel über die Berechnung der Parity-Stellen hätte ich gerne noch etwas klarer. Ziemlich viele fehlende Kommata. --- Grundsätzliches Problem mit diesem Abstimmungsverfahren: wie sollen hier innerhalb einer Woche genügend Leser herkommen, die sich ein inhaltliches Urteil zutrauen? -- Frau Holle 22:23, 28. Aug. 2007 (CEST)

  • Vielleicht liegts daran, dass Mittagspause ist, aber ich scheitere schon bei der Geschichte. Wie kann eine Lochkarte einen Lesefehler aufweisen? Meine Sichtweise: Eine Lochkarte wird eingelesen und wenn sie schadhaft ist, verursacht sie einen Lesefehler. Oder ist das Techsprech? Korrekturlesen würde nicht schaden, besonders die (fehlende) Kommasetzung trägt nicht gerade zur Erleichterung des Verständnisses bei. Griensteidl 12:42, 29. Aug. 2007 (CEST)
Ist wohl (unscharfes) "Techsprech". Habs versucht es klarer zu formulieren.--wdwd 09:25, 30. Aug. 2007 (CEST)

Pro Eine Ecke der Informationstheorie, zwar nicht ganz Omatauglich, aber mit einfachen Grundkenntnissen der Mathematik verständlich. Da ist schon eine ansprechende Leistung erfolgreich in den Artikel umgesetzt. Zu weiteren Prädikaten der Exzellenz fehlt leider noch diverses Hintergrundmaterial, aber dieser Schritt läßt auf weitere hoffen. --SonniWP2 21:26, 29. Aug. 2007 (CEST)

  • Pro gut strukturierter, verständlich und gut geschriebener Artikel. Für mich nach erfolgreich abgeschlossener Kandidatur hier ein legitimier Kandidat für die KEA. – Wladyslaw [Disk.] 10:46, 30. Aug. 2007 (CEST)

Pro nicht nur der Artikel, den sogar ich verstehen kann, als auch die Argumente der Vorredner überzeugen mich und lassen mich zustimmen! --M.Birklein 15:21, 31. Aug. 2007 (CEST)

Abwartend Zwei naive Fragen:

Lass mich mit einer Gegenfrage antworten: Wo wäre es sinnvoll, mehrfach den Begriff Komplexität einzubauen? Der Hamming-Code zählt zu den eher einfachen Codes. Eventuell kommt deswegen der Begriff Komplexität nur einmal vor. Komplex sind dann auch meist der (Hamming)-Decoder, verglichen mit den Encodern - Und nicht ganz zufällig kommt die einmalige Erwähnungen des Begriffes Komplexität auch in dem Abschnitt über Decoder vor.
Hamming-Coder/Decoder werden eher selten in Software realisiert, sondern meist direkt in (digitalen) elektronischen Schaltungen. Parity-Berechnungen, LFSR-Strukturen und dgl. mehr, meist verbunden mit entsprechend hohem Datendurchsatz wie es bei Kanalcodern öfter anzutreffen ist, lassen sich effizienter (=mit geringeren Taktraten) in Hardware realisieren. Aus diesem Grund sind in dem Artikel die praktischen Anwendungsbeispiele aus dem Bereich der Hardware bzw. eher "Hardware-nahe" gewählt.--wdwd 17:50, 2. Sep. 2007 (CEST)
Artikel ist lesenswert (Version)--Ticketautomat 00:39, 5. Sep. 2007 (CEST)

Bilder eingefügt

Ich habe 4 Codetafeln eingefügt. Die Bildunterschriften bedürfen noch einer Verbesserung (eine Kurzbeschreibung des Hamming-Codes). Ich finde den Artikel ohne meine Codetafeln völlig unverständlich und kompliziert. --stefan 14:40, 24. Nov. 2007 (CET)

Nun, Teile des von Dir neuen Kapitels sind redudant (z.b. dass der Code auf Parity-Bits basiert steht gleich am Anfang im Abschnitt: Aufbau des Codes). Wozu nochmal und was ist daran unverständlich?
Und vor allem Teile im neuen Kapitel sind schlicht inhaltlich falsch, was nun schon stört: So ist die kürzeste Blocklänge eines Hamming Code nicht 7 sondern 3 Bit, wie unter anderem aus der Tabelle unter Aufbau hervorgeht. Auch Aussagen wie "Die Paritätsbits sind nicht am Ende, hinter den Informationsbits angeordnet" sind nicht allgemein gültig, und sind im Artikel später auch erklärt: Stichwort was ist ein separierbarer Hamming-Code und was hat es mit der Anordnung der Paritätsbit an bestimmten Stellen im Codewort im Kontext mit dem Syndromwert und dessen Umsetzung bei der Decodierung auf sich. Ist die Erklärung im Artikel dazu wirklich unverständlich oder nur zu lange und daher nicht gelesen?
Du hast aber recht, dass vor allem die Einleitung doch etwas kurz ist. Punkto OMA-Tauglichkeit schrammt der Text auch. Habe daher einen Teil Deines Abschnittes in die Einleitung verschoben, in der Hoffnung dass es so ein wenig verständlicher ist.
Den restlichen Abschnitt habe mir wegen der Redundanz bzw. vor allem der inhaltlichen Fehler wegen erlaubt zu entfernen.--wdwd 16:15, 24. Nov. 2007 (CET)

Eigenschaften des Hamming-Codes

Eigenschaften
Stellenzahl 2k-1, k ≥ 2 und ganzzahlig
Gewicht 3
Maximaldistanz 3
Hamming-Distanz 3
Redundanz ld(2k-1) - ld(2k-k-1)

Der Aiken-Code (und andere Codes) haben diese nette Tabelle, in der die Eigenschaften kurz zusammengefaßt sind. Ich vermute, dass auch für den Hamming-Code eine solche Tabelle angebracht wäre, kenne aber nicht die Eigenschaften. Man könnte es ja konkret für den 7,4-Hamming-Code angeben. --stefan 14:43, 24. Nov. 2007 (CET)

Ja, gute Idee. Fügst Du diese Tabelle ein? --wdwd 16:20, 24. Nov. 2007 (CET)
Hab mal die Tabelle für den Hamming-Code angepasst.--wdwd 16:51, 24. Nov. 2007 (CET)

Abschnitt: Einfache Erklärung eingefügt

Ich finde auch, so wie einige andere Leser vor mir, das der Artikel ziemlich schwer zu lesen ist

(Zitate:

  • Der Artikel ist absolut unverständlich
  • Diese Matrix zum Beispiel ist ja ganz interessant für bestimmte Leute, die was damit anfangen können, aber wenn ich mal eben einen Hamming-Code in C implementieren will, dann hilft mir das auch nicht weiter.
  • Ich bin gut in Mathe und Informatik, wollte etwas über die Hamming-Codes herrausfinden und bin kläglich gescheitert.
  • Hab mir als Informatik-Crack das mehrmals durchlesen müssen!)

Deshalb habe ich mir erlaubt eine Einfache Erklärung noch vor den Abschnitt Geschichte zu schreiben. Denn ohne diesen Abschnitt läuft der interessierte Leser sofort gegen eine Wand. Kostprobe aus dem 1. Satz (die Geschichte überspringt der eilige Leser meist): "Binäre Hamming-Codes über das Galois-Feld mit der Charakteristik zwei ... ". Ihr lieben Mathematiker, seid ihr euch überhaupt bewußt, dass so ein Satz jeden außerhalb eurer Fachschaft erschlägt? --stefan 15:54, 24. Nov. 2007 (CET)

Hi Stefan,
bitte siehe oben. Es ist toll, wenn Du zur weiteren Verbesserung des Artikels beitragen willst. Aber bitte bitte, mach den Inhalt nicht kaputt. Vor allem wenn Du Dich, nach eigener Aussage, gut in Mathe in Informatik auskennst und Du Dich auch als "Informatik-Crack" bezeichnest, verwundert es dann doch, wenn Dir da noch nie ein GF(2) oder Galois-Feld als Begriff über den Weg gelaufen ist. Und Dir diese Ausdrücke sooo völlig unverständlich sind. Das Galois-Feld ist natürlich nichts alltägliches, keine Frage, aber diese Begriffe sind mit entsprechenden Wikilinks versehen, wo der interessierte Leser sich weiter informieren kann.--wdwd 16:35, 24. Nov. 2007 (CET)
Hi Wdwd. Die obigen vier Punkte habe ich als Zitat aus Diskussionsbeiträgen anderer Autoren gekennzeichnet. Ich bin dagegen Laie. Und gerade deshalb empört mich die Betriebsblindheit der Mathematiker. Wie ich mit meinem Abschnitt "Einfache Erklärung" bewiesen habe, kommt man für eine einfache einleitende Erklärung auch ohne Galois-Feld aus. Klaus Beuth: "Digitaltechnik - Elektronik 4", Vogel Buchverlag, 2001, ISBN 3-8023-1744-6 kommt bei seiner kurzen Erklärung des Hamming-Codes auch ohne Galois-Feld und mathemathische Grundlagen aus. Ich finde deshalb, dass mein Abschnitt, den du wieder entfernt hast, im Artikel stehen sollte. Er mag ihn vielleicht etwas von dem hohen Niveau nehmen, das er unbestreitbar hat. Aber er erleichtert das Verständnis erheblich. Und damit sind wir bei dem philosophischen Problem, welches Niveau die Wiki haben soll. Euch Mathematikern ist nicht mal bewußt, wie unbrauchbar die meisten eurer Matheartikel für Nichtmathematiker sind. Nichts gegen eine exakte und knappe mathematische Sprache. Aber was stört es denn in einer Enzyklopädie wie der Wikipedia auch noch eine allgemeinverständliche Erklärung dazu zu schreiben. Und ich wette, dass ich das als Laie besser kann, als ein betriebsblind gewordener Mathematiker. Womit wir schon wieder beim philosophischen Thema sind, was die Wikipedia genau werden soll. So, wie Hamming-Code ohne meinen Abschnitt "Einfache Erklärung" geschrieben ist, handelt es sich nur um einen Artikel für eine Fachenzyklopädie. Ich stelle den von dir gelöschten Abschnitt mal hier auf die Diskussionsseite rein und bitte andere Autoren um ihre Meinung.--stefan 23:43, 24. Nov. 2007 (CET)
Hi Stefan,
Ok, das waren Zitate von Dir, sorry das hab ich übersehen. Aber dann bedenke, dass sich jene obigen Zitate die Du erwähnt hast auf eine alte Version des Artikels vor dem August 2007 beziehen, also noch vor der umfangreichen Überarbeitung. Referenziere dann bitte nicht diese Kommentare auf den aktuellen Artikelinhalt. Sondern, siehe Versionsgeschichte des Artikels, auf den damaligen Stand des Artikels. (und da ist obige Kritik durchaus angebracht)
Bin selber alles andere als ein Mathematiker und auch nicht so besonders sattelfest in der Zahlentheorie, aber eine einfache Erklärung macht nur Sinn, wenn sie auch inhaltlich passt. Wie ich zwei Abschnitte weiter oben bereits beschrieben habe, sind in Deinem Abschnitt wesentliche inhaltliche Fehler bzw. Aussagen welche nicht zutreffen. Das ergibt keine Verständnis sondern nur weitere Fragen und Unklarheiten. Der Artikel kommt generell mit einem Minimum mit mathematischen Formeln und zahlentheoretischen Hintergrund aus und versucht die nicht ganz einfachen Zusammenhänge primär textuell zu beschreiben. Wobei es sicher noch Verbesserungspotential gibt. Aber eines muss der Inhalt, auch ein einfacher Inhalt, als Kriterium erfüllen: Er muss inhaltlich passen.
Natürlich kommt man bei der Erklärung ansich auch ohne Galois-Felder aus. So wie in dem von Dir erwähnten Vogel-Fachbuch. Das Galois-Feld wird auch nur einmalig eher am Anfang erwähnt, fast nur so gestreift, und dann nie mehr wieder im Artikel. Ansich braucht einem die einmalige Erwähnung von Galois-Feldern auch nicht weiter zu empören: man kann entweder den Wikilink folgen und nachlesen oder es einfach überspringen. Der Leser wird, auch wenn er nicht weiss was Galois-Felder sind und auch nicht bereit ist dieses Wissen zu erlangen, keinen wesentlichen Verlust dadurch erleiden.
Es geht bei diesem Satz mit dem Galois-Feld nur darum, und Du hast mit Deiner Kritik recht denn das steht nicht drinnen, dass es nicht nur binäre Hamming-Codes, sondern auch nicht-binäre Hamming-Codes gibt. Welche beispielsweise mit dreiwertigen oder noch mehr Zuständen pro Stelle arbeiten. Und jene nicht-binären Hamming-Codes werden nun im Artikel, auch der Einfachhheit und um das Volumen nicht zu sprengen, gar nicht erwähnt. Daher diese Einschränkung auf binäre Hamming-Codes gleich ganz am Anfang, damit es nacher z.b. bei den Tabelleninhalten (nur 0er und 1er als Inhalt) und auch bei der Syndrombestimmung passt. Wenn es also nur daran "krankt" wird sich eine verständlichere Formulierung und Erklärung, was es mit der Einschränkungun auf GF(2) auf sich hat, sicher finden lassen.-- wdwd 11:14, 25. Nov. 2007 (CET)

Hi Wdwd,
OK, ich bin schon wieder etwas ruhiger geworden. Ich hatte deine Aufzählung meiner Fehler im Diskussionsabschnitt "Bilder eingefügt" gestern nicht gesehen. Fehler sind natürlich nicht akzeptabel. Aber die könnte ich (oder wie) ja beheben. Ich wollte eigentlich nur meine Bilder für Codetabellen unterbringen. Und bin dann über die extreme Erklärung des Hamming-Codes gestolpert. Ein bis zehn Bilder zur Illustration je Matheartikel halte ich aber für angebracht. Allerdings bin ich kalt überrascht worden, dass es verschiedene Versionen des Hamming-Codes gibt. Da ließen sich doch prima einige Beispiele als Codetabelle darstellen. Könntest du mir hier die Tabelle für den kürzesten 3-Bit-Hamming code hinschreiben? Ich konnte es nicht im Artikel finden. Meine Absicht im Abschnitt "Einfache Erklärung" war, bei Null anzufangen. Also auch mit zwei Sätzen (redundant) noch mal das Paritätsbit zu erklären. --stefan 15:32, 25. Nov. 2007 (CET)

Hi Stefan,
Einige Bilder statt der Tabelle "Bitstelle des Codewortes" im Abschnitt "Berechnung der Parity-Stellen" wären vielleicht anschaulicher als die derzeitige Tabelle. Es ist allerdings ein allgemeiner Hamming-Code und nicht auf eine bestimmte Codewortlänge beschränkt. Ebenso geht die textuelle Beschreibung von beliebig langen Codewörtern aus. Kann das auch in der Grafik entsprechend beachtet werden?
Die Tabelle für die (3,2) Hamming-Code ist trivial und kann direkt aus der Beschreibung bei den Parity-Stellen abgeleitet werden (es entfallen damit alle XOR-Verknüpfungen, da es nicht genug Stellen gibt): Es gibt nur zwei gültige Codewörter, "000" und "111". Dieser Hamming-Code ist somit mit dem dreifachen Wiederholungscode ident (d.h. jedes Bit wird 3 mal gesendet) Es ist dabei auch unmittelbar erkennbar, das ein Bitfehler immer eindeutig "über eine Mehrheitsentscheidung" korrigiert werden kann. So werden die ungültigen Codewörter "110", "101" und "011" eindeutig dem gültigen Codewort "111" zugeordet, und die restlichen ungültigen Codewörter "001", "010" und "100" dem gültigen Codewort "000".
Für einfache Demonstrationsbeispiele, auch um die Gleichsetzung mit dem trivialen Wiederholungscode zu vermeiden denn das "passt" dann bei "höheren" Hamming-Code nicht mehr, wird in einfachen Beispielen dann meist der (7,4) Hamming Code als Beispiel gebracht. In Praxis ist aber der (7,4) auch sehr selten bis kaum verwendet, da zu ungüstige Redundanz. Da werden eher (63,57) oder (127,120) verwendet.--wdwd 16:21, 25. Nov. 2007 (CET)
3-Bit-Hamming-Code:
0 00
1 11
4-Bit-Hamming-Code:
0 00
wieviel Datenbits?
wieviel Paritätsbits?
5-Bit-Hamming-Code:
00000
wieviel Datenbits?
wieviel Paritätsbits?
6-Bit-Hamming-Code:
0 00
wieviel Datenbits?
wieviel Paritätsbits?
7-Bit-Hamming-Code:
abcd efg
0001 111
0010 011
0011 100
0100 101
0101 010
0110 110
0111 001
1000 110
1001 001
Deine Erklärung wird immer interessanter. Das gehört alles in die Einleitung. Dann den (7,4)-Hamming-Code als Beispiel. Und erst dann darf der Text schwieriger werden. Ich störe mich immer noch an dem Galois-Feld, der Link führt mich dann zu endlichen Körpern, wo weiderum erwartet wird, dass ich bereits weiß, was ein Körper ist. Dafür sollte ich bereits die Algebraische Struktur kennen. Glaub mir doch bitte, dass dieser Link (noch dazu so weit oben) tierisch abschreckt. Könnte er nicht weiter unten versteckt werden, oder vielleicht sogar in einer Fußnote? Zumal du geschrieben hast, dass damit nur erklärt werden soll, dass der Artikel nur ein Teilgebiet des Problems behandelt. Ich würde diesen Satz mit Galois-Feld am liebsten erst am Ende des Artikels lesen. Ich würde gerne auf Commons eine Bildergallerie anlegen zum Hamming-Code. Mit komplett allen Beispielen von 3 bis 10 Bit. So ähnlich, wie beim Gray-Code - Commons|Category:Gray code . Dort könnte ich ja auch eine simple Erklärung auf englisch und deutsch unterbringen und würde nicht den Artikel hier belasten. Ich muss diesen blöden Hamming-Code wohl doch noch lernen, bevor ich ihn vernünftig zeichnen kann. Kannst du bitte die Tabelle für den 4-, 5- und 6-Bit-Hamming-Code ausfüllen, Paritätsbits der Einfachheit halber am Ende (durch ein Leerzeichen abgesetzt).

--stefan 22:32, 26. Nov. 2007 (CET)

Hi Stefan, du hast mit Deinem Hinweisen recht. Ich muss leider zugeben, dass mir da manche Dinge vielleicht zu selbstverständlich vorkommen, welche aber dann doch nicht so gut verständlich dargestellt sind bzw. zuviel Vorwissen erfordert. Habe derzeit aber etwas wenig Zeit und bitte um Geduld. -> Umstellungen des Artikels/Einleitung, Verschiebung einiger Punkte eher ans Ende, Ausfüllen der Tabllen (so ich es schaffe) -> erst am nächsten Wochenende herum.--wdwd 13:49, 27. Nov. 2007 (CET)
Ich komme auch wegen Zeitmangel erst in ein paar Tagen dazu, werde aber am Ball bleiben. Der ersten beiden Sätze sollten lauten: "Im Artikel werden nur wichtige Teilaspekte des Codes abgehandelt, nicht jedoch die vollständige Gruppe aller möglichen Hamming-Codes. Weiter unten (INTERNER LINK auf einen Absatz ganz weit unten) werden einzelheiten dazu erläutert." Ganz unten kann dann auch getrost das Galois-Feld erwähnt weden. Vielleicht noch mit einer kurzen Erklärung, was NICHT abgehnadelt wurde (<Phantasie>die Charakteristik eins und drei ???, die Tatul-Felder ??? </Phantasie>). Ganz oben muss auch noch in die Einleitung, dass es sich beim Hamming-Code um eine Gruppe (oder Klass?) von Codes handelt, die lediglich einem gemeinsamen Grundschema folgen. Deren konkrete ausgestaltung dann aber noch per Konvention festgelegt wird. Dass es weiter unten einen Abschnitt für das anschauliche Beispiel 7-Bit gibt (obwohl in der Praxis wenig verwendet), dass aber auch 3-Bit schon die Definition erfüllen und dass eher (63,57) oder (127,120) verwendet werden. Bis bals! --stefan 21:33, 28. Nov. 2007 (CET)
Betreffend der Tabellen: Hamming-Codes mit den Codewortlängen 4, 5 und 6 gibt es nicht, siehe bitte Artikel. (immer nur Länge 2k-1, k>=2) Und der nächste Hamming-Code (7,4) ist meiner Meinung, weil eben sehr einfach, schon umfassend im Artikel, auch in Tabellen und später dann Matrizen dargestellt. Vor allem, es gibt ja nicht nur *einen* (7,4) Hamming-Code, sondern deren mehrere, welche sich durch Anordnung der Parity-Stellen im Codewort unterscheiden. (da linearer Code). Und gerade die Verfahren zu jener Codekonstruktion und den verschiedenartigen Aufbau bzw. Konstruktion (über Generatormatrix bzw. bei zyklischen und sperarierbaren Hamming-Codes mittels Generatorpolynom) ist im Artikel doch schon sehr viel Raum gegeben. Vielleicht wäre, Zitat: Ich muss diesen blöden Hamming-Code wohl doch noch lernen angebracht. (lass Dich durch manche Formulierungen und Begriffe nicht abschrecken, ggf. schmöckere auch mal in der angegebenen Literatur).--wdwd 21:05, 30. Nov. 2007 (CET)


Einfache Erklärung

Bild 1
Bild 2

Der Hamming Code benutzt zusätzliche Paritätsbits. Bild 1 zeigt eine Codetafel für ein dualergänztes gerades Paritätsbit (E = even = gerade). Das Paritätsbit (in Bild 1 grün markiert) wird jeweils so gesetzt, dass die Summe der gesetzten Bits je Zeile immer eine gerade Zahl ergibt.

Es gibt Hamming-Code mit verschiedenen Längen. Bild 3 zeigt den (7,4)Hamming-Code. Von diesen 7 Bit sind 4 Bit Datenbits und 3 Bits Paritätsbits, die die Datenübertragung schützen. Die Informationsbits sind als BCD-Code angeordnet (Bild 2: zeigt den BCD-Code) und kodieren in herkömmlicher Weise die Zahlen von 0 bis 9.

Der kürzerste Hamming-Code hat ein 3 Bit langes Codewort. Da dieser Hamming-Code allerdings eine grössere Redudanz aufweiset, nur ein Datenbit und zwei Paritätsbits, ist er praktisch ohne Bedeutung.

Die Besonderheit besteht in der Verwendung mehrerer Paritätsbits. Diese Paritätsbits ergänzen jeweils unterschiedlich gewählte Gruppen von Informationsbits. Durch die geschickte Wahl der Gruppierung, deren mathematische Grundlagen weiter unten ausführlich beschreiben sind, ist nicht nur eine Fehlererkennung, sondern auch eine Fehlerkorrektur des Hamming-Codes möglich.

Zur vereinfachten Erklärung des Hamming-Codes sind die Paritätsbits in Bild 3 hinter den Datenbits angeordnet. Aus technischen Gründen (siehe unten) sind die Paritätsbits aber oft zwischen die Datenbits gestreut (Bild 4).

Die Informationsbits in Bild 4 sind die Bits Nr. 3, 5, 6 und 7, die Paritätsbits sind die Bits Nr. 1, 2 und 4.

In Bild 5 bis 7 ist dargestellt, für welche Informationsbits (blau) das jeweilige Paritätsbit (rot) verwendet wird.


Bild 3
Bild 4
Bild 5
Bild 6
Bild 7

--stefan 23:43, 24. Nov. 2007 (CET)

Habe die inhaltlichen problematischen Bereiche mit strike samt Anmerkung/Begründung in italic dazu eingetragen.--wdwd 11:36, 25. Nov. 2007 (CET)
Ich habe den Absatz hier mal nach deinen Hinweisen korrigiert und gestrafft. Alle deine Erklärungen habe ich unter den Tisch fallen lassen, um den Einfachheit der Erklärung zu erhalten. --stefan 15:49, 25. Nov. 2007 (CET)

Es gibt Hamming-Code mit verschiedenen Längen. Der kürzeste Hamming Code besteht aus 7 Bit. (Anmerkung: Inhaltlich falsch weil: Der kürzerste Hamming-Code hat ein 3 Bit langes Codewort. Da dieser Hamming-Code allerdings eine grössere Redudanz, nur ein Datenbit und zwei Parity-Bits, trägt, ist er praktisch ohne Bedeutung aber trotzdem ist er ein Hamming-Code) Bild 3 zeigt den (7,4)Hamming-Code. Von diesen 7 Bit sind 4 Bit Informationsbits, während 3 Bits Paritätsbits sind. Die Informationsbits sind als BCD-Code angeordnet (Bild 2: zeigt den BCD-Code) und kodieren in herkömmlicher Weise die Zahlen von 0 bis 9.

Die Besonderheit besteht in der Verwendung mehrerer Paritätsbits. Diese Paritätsbits ergänzen jeweils unterschiedlich gewählte Gruppen von Informationsbits. Durch die geschickte Wahl der Gruppierung, deren mathematische Grundlagen weiter unten ausführlich beschreiben sind, ist nicht nur eine Fehlererkennung, sondern auch eine Fehlerkorrektur des Hamming-Codes möglich.

Die Paritätsbits sind nicht am Ende, hinter den Informationsbits angeordnet, sondern nach einem bestimmten Muster zwischen die Informationsbits gestreut. (Anmerkung: Inhaltlich falsch weil: Da der wesentliche Bereich der seperarierbaren Hamming-Codes, welche die Parity-Bits beispielsweise am Ende des Codewortes haben, damit fix ausgeschlossen wird. Das war auch eine der Fragen betreffend der alten Artikelversionen vor August 2007, ob denn die Parity-Bits immer an Stellen im Codewort welche 2er Potenzen sind, so quasi "eingestreut" werden müssen: Nein, müssen sie nicht. Warum dieses "einstreuen" gemacht wird: Siehe Erklärung zur Decodierung im Artikel mittels Syndromwert und bei welcher Anordnung der Paritystellen im Codewort dann der Syndromwert genau die fehlerhafte Bitstelle im Codewort ohne Umrechnung/Tabelle referenziert.) Diese Anordnung ist aber nur eine Konvention und hat keinen wichtigen mathematischen oder technischen Hintergrund (Inhaltlich zumindest "wacklig" unzutreffend: Denn es hat sehr wohl einen technischen Hintergrund z.b. die Parity-Bits am Ende des Codewortes anzureihen und einen seperarierbaren (und zyklischen) Hamming-Code zu wählen. Ein Grund ist die einfache Berechnung der Parity-Bits mittels rückgekoppelten Schieberegisterketten und die damit verbundene einfache praktische Realisierbarkeit in digitalen Schaltungen. Siehe Artikeltext dazu). Die Informationsbits in Bild 3 sind die Bits Nr. 3, 5, 6 und 7, die Paritätsbits sind die Bits Nr. 1, 2 und 4. In Bild 4 bis 6 ist dargestellt, für welche Informationsbits (blau) das jeweilige Paritätsbit (rot) verwendet wird.

Falsch oder unverständlich?


Der Artikel ist schon verständlicher geworden. Danke! Aber im Text steht: "In das erste Parity-Bit p1 werden nur jene Datenbits einbezogen, welche um eine Bitstelle weiter rechts im Codewort stehen, und ein Bit als Datenbreite umfassen. Für das erste Parity-Bit ergibt sich als Folge von Codewortstellen somit alle Datenbits welcher an ungerade Position im Codewort stehen:" Ich weiß nicht, wie man es besser formulieren kann (ein Bild von mir würde sicherlich mehr helfen), aber "welche um eine Bitstelle weiter rechts im Codewort stehen" ist doch eigentlich falsch. (oder?) p1 (an Position c1) checkt d1 (an Position c3). Das ist aber doch schon die übernächste Stelle.--stefan 18:33, 2. Dez. 2007 (CET)

Habe Deine Grafik in den Text eingebaut, da sie auch hübscher als die ASCII-Tabelle ist. :-) Die textuelle Erklärung in diesem Abschnitt ist etwas unrund, das mit dem Bitstelle weiter rechts im Codewort bezieht sich auf die Stellen von c2 auf c3, für p1. Da es keinen Sinn hat, p1 in sich selbst "einzubeziehen", ist c2 die nächste potentielle Stelle, und eine Stelle weiter als c2 ist c3 bzw. d1 welche als erste Stelle in p1 einberechnet wird. Diese etwas unrunde Beschreibung ist, neben meinen Unvermögen, auch eine Folge der möglichst verbalen Beschreibung ohne zu sehr in eine rein mathematische Beschreibung "abzurutschten"; Es ist dann in der zweiten Tabelle im Abschnitt am konkreten Beispiel des (7,4) nochmal erklärt, welche Stellen wo einberechnet werden. Du hast aber recht, dieser Abschnitt ist der Teil im Artikel wo es meiner Meinung am meisten "hakt".--wdwd 09:52, 8. Dez. 2007 (CET)

Konstruktion

Also hier steht so viel Text das man die wichtigen Informationen nur schwer abstrahieren kann ! wie wäre es mit einer allgemeinen Konstruktion über dem Körper F_q Sollte ungefähr so gehen: Bilde die Kontrollmatrix s.d. je 2 Spalten lin unabh. sind. Dann muss man darauf eingehen, warum der Abstand daher 3 ist. Es wird dann aber auch klar, was das Ziel eines Hamming-Codes ist und wie er konstruiert wird. Dann natürlich wieviele Spalten die Kontrollmatrix maximal haben kann. Und welche Daten daher den Generatormatrix, also der Hamming-Code selber hat. also Bestimmung von (n,k,d,q). Außerdem vielleicht noch das es bei festem Parameter ,bis auf äquivalenz, nur einen binären Hamming-Code gibt Generell fehlt es hier einfach an Mathematik ! Herleitung der allgemeine Informationsrate, also für gegebene Parameter

Bitte zu beachten: Ein paar Abschnitte weiter oben hat sich ein Benutzer darüber beschwert, weil nur ein mathematischer Begriff wie GF(2) am Anfang erwähnt wurde und trotz Link dies zu mathematiklastig sei. Also, fast das gegenteil von Dir. :-) Bedenke auch, dass die Mehrzahl der Leser keine Mathe-Cracks sind und sich eher schwer tun, eine möglichst kurze mathmatische formalistische Beschreibung zu verstehen. Damit ist die Verständlichkeit für viele nicht mehr gegeben. PS: Bitte unterzeichne Deine Beiträge mit --~~~~, danke. --wdwd 13:21, 14. Feb. 2008 (CET)
Gut ich mach es mal etwas ausführlicher, habe aber im Moment nicht viel Zeit, so das es jemand anderes einarbeiten sollte:
Also unser erstes Ziel beim Hamming-Code ist es, eine Code zu erzeugen,
Daher müssen wir dafür sorgen, dass der Mindesabstand mind. 3 ist. Dabei machen wir uns folgenden Satz zu nutze:
Wenn je Spalten der Kontrollmatrix linear unabhängig sind, dann gilt für den Minimalabstand:
(siehe auch linearer Code). Wir müssen also eine Kontrollmatrix bilden, die je 2 linear unabhängige Spalten hat.
Betrachten wir nun im Folgenden den Körper , so dass wir also einen linearer Code , als Untervektorraum aus dem Vektorraum , erstellen wollen. C wird also ein (m,k,3,q)-Code, wobei die Dimension des Untervektorraums über dem Körper ist.
Nun also zurück zur Konstruktion:
Unser Ziel ist es aus festgelegten Parametern die Generatormatrix anzugeben.
Dafür muss man natürlich den Zusammenhang zwischen den beiden Matrizen kennen, (siehe linearer Code).
Wichtig ist folgendes
  • Wenn H eine (r,n) Matrix vom Rang r ist, so ist G eine (n-r,n) Matrix vom Rang (n-r).
G ist damit ein (n,n-r,d,q) Code.
  • Wenn H von der Form ist, so erhält man G explizit durch (systematsiche Codierung, siehe linearer Code).
  • Falls H nicht in dieses Standartform ist kann man G auch mittels bestimmen.
Angenommen wir haben uns jetzt auf ein r und n festgelegt, wollen also eine (r,n) Kontroll-Matrix erstellen.
Wir wollten ja das H so konstruieren, dass je 2 Spalten linear unabhängig sind. Wir können auf jedenfall schonmal die r Einheitsvektoren spaltenweise in H schreiben, was auch sinnvoll ist, um die Systematische Codierung direkt anzuwenden, (Allerdings könnten wir auch r andere Vektoren nehmen. Sie müssen nur paarweise lin unabhängig sein) und schreiben noch weitere n-r Vektoren Spaltenweise in die Matrix, so dass je 2 lin. unahängig sind.
Jetzt kann man sich erstmal fragen, wieviele linear unabhängige Vektoren kann ich den überhaupt auswählen.
Anders gesagt, wie groß kann das n in Abhängikeit von r maximal sein. Nun jeder Vektor der Spaltenweise in H steht ist aus dem . Von den Vektoren dürfen wir auf jedenfall schonmal den 0-Vektor nicht nehmen, da wir sonst nicht je 2 lin unabh Vektoren bekommen. Uns stehen also Vektoren zur Verfügung. Wenn wir uns nun einen Vektor daraus auswählen, dürfen wir keinen der Vielfachen davon nehmen. Also gilt :
  • ist maximal gewählt.
Gut wir haben also nun unsere Kontrollmatrix H erstellt und daraus die Generatormatrix gewonnen. Damit ist unser Code C (der gesuchte Hamming-Code) ein -Code. Die Anzahl der Codewörter ist
Nun interessieren wir uns natürlich für eine bestmögliche Informationsrate.
Sie wird berechnet durch .
Um bei gegebenem r die Informationsrate zu maxieren müssen wir also n maximieren.
Damit erhalten wir also:
bei festwähltem r ist C ein
  • Code
  • die Informationsrate ist:
Anmerkung:
  • Es gibt bei festem r und maximalem n bis auf äquivalenz nur einen binären Hamming-Code, da es zu jedem Vektor keinen Vielfachen gibt, der nicht 0 ist.
Würde als eigenes Kapitel durchaus Sinn machen. Um nicht zuviele abzuschrecken eventuell im Bereich bzw. in Kombination mit dem Abschnitt Weitere Zahlensysteme. --wdwd 21:27, 17. Feb. 2008 (CET)

Ungewöhnliche Parameter

Mir sind die Parameter mit anderen Buchstaben bekannt:

Länge eines Codeworts: n (hier N)

Anzahl Informationsbits: k (hier n)

Anzahl Redundanzbits: h = n - k (hier k)

Die hier verwendeten Bezeichnungen sind im Zusammenhang mit der mir bekannten Literatur recht verwirrend. Würde es Sinn machen dies zu korrigieren oder habe ich bis jetzt die falschen Bücher gelesen? -- FChris 21:58, 8. Apr. 2008 (CEST)


Nein, hast du nicht ;-) Ich bin genau der selben Ansicht, habe einfach mal darauf vertraut, dass das hier erwähnte "klein n" auch das mir als gängig bekannte n für die Codewortlänge darstellt. Fehler- habe stundenlang versucht, Matlab damit zu füttern, und kam nie zu einem gescheiten Ergebnis. Ergo → traue keinem Text. Wäre dafür, es entweder abzuändern, oder wenigstens einen Hinweis zu geben, dass die hier verwendete Nomenklatur abweichend sein kann (zumal in der obigen ausführlichen Erklärung auch n,k und r vorkommen...???) (nicht signierter Beitrag von 129.13.72.198 (Diskussion | Beiträge) 00:41, 12. Sep. 2009 (CEST))

Codewort

Meiner Ansicht nach bildet man das Codewort nicht mit der Transformierten der Matrix sondern mit der Matrix selbst. Die angegebene Rechenoperation wäre auch gar nicht möglich. Ich habe das mal korrigiert. Das Beispiel ist aber wieder richtig. (nicht signierter Beitrag von 84.61.155.98 (Diskussion | Beiträge) 17:28, 28. Dez. 2005 (CET))

Die Operationen zum Auffinden des Fehlers sind nur sehr grob skizziert. Es fehlt z.B. die Beschreibung, wie man auf die Kontrollmatrix kommt.

Hab leider keine Zeit, das gerade zu machen. (nicht signierter Beitrag von 84.61.155.98 (Diskussion | Beiträge) 17:43, 28. Dez. 2005 (CET))

Hab mir als Informatik-Crack das mehrmals durchlesen müssen!

Ich bin gut in Mathe und Informatik, wollte etwas über die Hamming-Codes herrausfinden und bin kläglich gescheitert. Auch eure Diskussionen über den Hamming-Code machen's nicht leichter! Bitte formuliet es so das es "auch der letzte Depp versteht!"

Quelle: Ego (lat.: Ich) (nicht signierter Beitrag von 85.216.90.127 (Diskussion | Beiträge) 19:32, 16. Nov. 2006 (CET))

Das liegt nicht an dir, keine Angst ! Hier fehlen einfach kurze und prägnante Definitionen, was denn nun eingentlich ein Hamming-Code ist. (nicht signierter Beitrag von 88.73.143.12 (Diskussion | Beiträge) 01:00, 14. Feb. 2008 (CET))

seltsame Notation

Wieso wird hier nicht die übliche Notation für Vektoren und Matrizen benutzt?? Bzgl. u^T = v^T · G : v^t ist afair ein Spaltenvektor der Dimension 4 und kann also nicht von links mit einer 4x7- Matrix multipliziert werden. Oder hab ich da die Lineare Algebra falsch im Kopf? Skeptiker1 16:53, 15. Feb 2006 (CET)

Was ist mit "c=G*d" müsste es nicht auch "c=d*G" sein? (wenn z.B. d= 1x5-Matrix und G=5x5-Matrix ist dann kann man ja nur d*G rechnen und nicht G*d ) (nicht signierter Beitrag von 141.7.212.153 (Diskussion) 11:59, 16. Aug. 2010 (CEST))

wieso sollte r>=3 sein?

Ich habe einmal überlegt und der Code {000,111} hat ebenfalls einen Hammingabstand von 3 und da wäre dann wohl das r=2, oda? Übersehe ich da was? Oder was heißt hier "Im Allgemeinen" (siehe Einleitungs-Absatz). --213.54.79.182 22:33, 16. Aug 2006 (CEST)

In selben Absatz wird definiert, dass der kleinste Hamming-Code der (7,3)er ist und gleichzeitig als Beispiel 111 und 000 gebracht. Das ist falsch. (nicht signierter Beitrag von 217.228.105.61 (Diskussion | Beiträge) 02:17, 4. Jan. 2007 (CET))

Artikel Länge

Das klassische Problem, das ist hier ein Nachschlagewerk und kein Lehrbuch zum Thema Hemming-Code, also muss der Artikel auf jeden Fall kürzer werden. Sowas wie "Praktische Realisierung eines Hamming-Encoders" kann auch raus. (nicht signierter Beitrag von 178.203.223.97 (Diskussion) 02:21, 16. Feb. 2011 (CET))

(Neue Beiträge bitte per Pluszeichen in oberer Werkzeugleiste anlegen, dann landen sie unten, wo sie hingehören.) Allgemeiner Konsens in der WP ist, dass man Platz hat und sich ruhig etwas ausbreiten darf, solange alles übersichtlich und lesbar bleibt. Das scheint hier der Fall zu sein, da der Artikel immerhin schon die Lesenswert-Auszeichnung bekommen hat. Größere Änderungen würden also eher als Verschlimmbesserung aufgenommen. --PeterFrankfurt 02:44, 17. Feb. 2011 (CET)