Diskussion:Hamming-Abstand

aus Wikipedia, der freien Enzyklopädie

Programmierbeispiel

Das Programmierbeispiel in C gibt das Hamming-Gewicht an, die Funktion heißt aber "hammingDist". Das ist meines Erachtens nach irreführend, da es auch eine Hamming-Distanz bzw. einen Hamming-Abstand gibt. Besser wäre hier "hammingWeight". (nicht signierter Beitrag von 31.16.120.62 (Diskussion) 23:02, 13. Jan. 2013 (CET))

Dass die Hamming-Distanz beim ersten Beispiel 2 ist stimmt schon, nur unterscheiden sie die zwei Code Wörter nicht an Stelle 4 u. 5 sondern an 1 u. 2, oder? Bei Binärcode ließt man doch von rechts.

antwort: die Stelligkeit/Positionen kann man selbst wählen - hauptsache es ist einheitlich wenn nix angegeben dann enstprechend der schrift von links nach rechts


Mindestabstand wurde nach Hamming-Abstand verschoben. Bitte an alle Sachkundigen: Den Inhalt von Mindestabstand gegebenenfalls einarbeiten. Danke --Philipendula 01:35, 16. Okt 2005 (CEST)

Nur Spezialfall behandelt

"Der Hamming-Abstand zweier Blöcke von binären Daten mit fester Länge (so genannter Codewörter) kann ermittelt werden, indem man beide in binärer Form hinschreibt, diese Bit für Bit vergleicht und die Stellen zählt, die ungleich sind. Rechnerisch lässt sich der Vergleich durch eine XOR-Operation und das Abzählen der resultierenden Einsen realisieren" Das ist zu spezifisch. Die Hamming Distanz sollte allgemein definiert werden, der Fall mit binären Daten ist ein Spezialfall.

Genau.

Hamming Gewicht

Vielleicht sollte noch auf das Hamming Gewicht eingegangen werden oder zumindest verlinkt werden?

Gewicht ist nun da

Das Gewicht ist nun erlaeutert - vielleicht aber noch nicht an der richtigen Stelle - Es waere schoen wenn sich jemand einen Moment Zeit nimmt und erklaert warum der performante Algorithmus funktioniert.

sollte "Das Hamming-Gewicht ist der Hamming-Abstand von einem leeren Wort" nicht eigentlich "Das Hamming-Gewicht ist der Hamming-Abstand zu einem leeren Wort" heißen? JeeAge 10:03, 19. Jun 2006 (CEST)

Der C-Code sollte vielleicht abgeaendert werden, da += 1 auf ein char nicht so 'schoen' ist (evtl. short oder so verwenden). Und zur Illustration waere eine exemplarische Funktion zur Messung der Hamming-Distanz zwischen zwei Bitstrings nicht schlecht.

Schon wieder: Das Sieb des Eratosthenes

Im Zusammenhang mit dem Quadratischen Sieb findet in der Arbeit von Carl Pommerance bereits dieser merkwüdigen Vergleich, obgleich ich da nicht wirklich einen direkten Zusammenhang erkennen kann. Jetzt lese ich hier erneut, dass ein Verfahren angeblich mit dem Sieb des Eratosthenes vergleichbar sei. Ich kann aber kaum einen Zusammenhang mit hier dargestellten Algorithmus oder dem Hammingabstand erkennen. Benutzer:Fsswsb 25.05.2006

Hamming-Code?

Ich finde, der Abschnitt über die Erzeugung von Hamming-Codes sollte man auch dorthin verschieben. In einem Artikel über den Hamming-Abstand hat das meines Erachtens nichts verloren. --Rumpler 11:28, 24. Jul 2006 (CEST)

Hamming-Abstand eines Codes

Im Abschnitt Hamming-Abstand eines Codes wird von 2r+1 geschrieben, jedoch ist im Artikel nirgends erläutert wofür r überhaupt steht. Vielleicht könnte das mal jemand Sachkundiges ergänzen. Auf einer anderen Webseite wird bei r von Redundanz gesprochen, ist das hier auch der Fall?

Wer lesen kann, ist klar im Vorteil. "2r+1" kommt genau einmal im Artikel vor und da steht auf mindestens 2r+1 vergrößert werden, wobei r für die Anzahl der korrigierbaren Bit-Fehler steht. Näher und deutlicher kann man es wohl kaum formulieren. Neues bitte immer unten anfügen. --AchimP 16:59, 3. Dez. 2006 (CET)

Definition des Wortes 'Wort'

Wie ist Codewort definiert? Es wird nirgends darauf eingegangen anhand welcher Kriterien festgelegt wird, aus wieviel Zeichen ein 'Wort' (Unter dem Hamming-Abstand eines kompletten Codes versteht man das Minimum aller Abstände zwischen _Wörtern_ innerhalb des Codes) besteht. Angenommen ich habe den String 'qwertzuiop'. Daraus kann ich jetzt 2 Codewörter machen mit der Länge 5, oder 5 mit der Länge 2, oder 10 mit der Länge 1, etc. oder ist das egal? Ich kann das dem Artikel nicht entnehmen, würde mich sehr interessieren wie die Länge eines Codewortes zustande kommt.

Ein String/Wort ist die Konketenation von Element aus dem Alphabet.

Quellenangabe

Ich möchte hiermit die Quellenangabe in Frage stellen, die scheint mir irgendwie von jemandem per Copy und Paste hierher verfrachtet worden zu sein (Das Interessante ist, dass viele das Volume 29 des TBSTJ gelesen haben wollen). Ein Faksimile von [1] zeigt, dass es sich nicht um das Volume 29 handelt, sondern um das Volume XXVI. Sollte jemandem das Volume 29 des TBSTJ zur Verfügung stehen, bitte ich darum, dort nachzusehen und mir ggf. hier eine Nachricht zu hinterlassen oder mir die Diskrepanz zu erklären. -- ThePacker 17:59, 17. Dez. 2006 (CET)

XXVI ist ja offensichtlich richtig. Ob's dann in Vol. 29 auf den gleichen Seitenzahlen nochmal veröffentlicht wurde, oder nicht (ich glaub's ja eher nicht), sei dann dahingestellt. Es reicht ja eine Quelle, die sicher richtig ist. Hab's angepasst und den Abdruck verlinkt. --AchimP 19:08, 17. Dez. 2006 (CET)
Das Erscheinungsjahr 1950 spricht aber eher für das Volume 29. Aber der Artikel selbst spricht von 26(XXVI). Dafür muss es ja eine logische Erklärung geben, deswegen meine Anfrage, es könnte auch ein Druckfehler innerhalb des TBSTJ sein. Deswegen sollte noch mal ein Crosscheck zur Originalliteratur vorgenommen werden. -- ThePacker 20:24, 17. Dez. 2006 (CET)
Verstehe ich nicht. Dein Faksimile ist doch Originalliteratur, oder nicht? Und da steht "1950". Wieso spricht 1950 eher für Vol. 29? --AchimP 00:02, 18. Dez. 2006 (CET)

Mir liegt mittlerweile ein vollständiges Original vom Bell System Technical Journal von 1950 Volume XXIX (29) vor - Dort findet sich auf Seite 147 der Artikel von Hamming. Im Artikel steht auch bei mir "XXVI" als Volume, das aber 1947 erschienen ist, es ist offenbar ein Satzfehler auf der ersten Seite von Hammings Artikel. Das Cover des Journals ist mit XXIX 1950 nummeriert. -- ThePacker 01:18, 31. Aug. 2009 (CEST)

Hamming Gewicht Code

Ich wäre dafür, dass der Code etwas einfacher zu verstehen sein sollte. Der C Syntax ist schwer zu verstehen. Ich hab schnell mal ein Pascal Programm dafür geschrieben, was nach meiner Meinung viel einfacher zu verstehen ist.

function HammingGewicht(Zahl : Integer) : Integer;
var i,
    ZahlBinLaenge,
    Zaehler : Integer;
begin
 Zaehler := 0;
 ZahlBinLaenge := 8 * sizeof(Zahl);
 for i := 0 to ZahlBinLaenge do
 begin
   if Zahl mod 2 = 1 then
     Zaehler := Zaehler + 1;
   Zahl := Zahl div 2;
   if Zahl = 0 then break;
 end;
 HammingGewicht := Zaehler;
end;

Für programmierunbedarfte Leute ist der Code viel Leichter zu verstehen, oder? Der Code ist natürlich frei.

Dabei wird die Zahl immer durch zwei geteilt und der Rest wird überprüft, ob es eine eins ist. Durch das Teilen von zwei, wird binär rechts eine Zahl abgeschnitten. (nicht signierter Beitrag von 84.161.246.65 (Diskussion) )

Nun, ob jemand, der in seinem Leben nur C und noch nie Pascal codiert hat, Deinen Code leichter lesen kann, weiß ich nicht. Aber ob jemand, der programmierunbedarft ist, überhaupt eine von beiden Versionen verstehen kann, wage ich zu bezweifeln. Was mir an Deinem Code nicht gefällt ist:
  • Im Gegensatz zur C-Lösung zählst Du für Bitmuster mit gesetztem höchsten Bit (negative Zahlen) falsch.
  • Die For-Schleife wird nie wegen Erreichen der Endebedingung verlassen. Bei sizeof(Zahl) = 1 liefe i von 0 bis 8 - das sind 9 Durchläufe statt der erforderlichen 8. Spätestens mit dem 8. Durchlauf ist Zahl immer auf 0 und die Schleife wird durch break verlassen.
  • In Code, der dem "Programmierunbedarften" etwas verständlich machen soll, baut man keine Laufzeitoptimierungen wie "if Zahl = 0 then break;" ein.
  • Wozu der Umstand über ZahlBinLaenge und for-Schleife, wenn es (zumindest für positive Zahlen) einfacher, kürzer und IMO eleganter auch so ginge?
function HammingGewicht(Zahl : Integer) : Integer;
var Zaehler : Integer;
begin
 Zaehler := 0;
 while Zahl <> 0 do
 begin
   if Zahl mod 2 = 1 then
     Zaehler := Zaehler + 1;
   Zahl := Zahl div 2;
 end;
 HammingGewicht := Zaehler;
end;

--AchimP 23:29, 28. Mär. 2007 (CEST)

Wozu eigentlich Code? Nichts wird dadurch klarer oder anschaulicher.. Und warum gibt es auch noch zwei Versionen in C? Wenn schon Code, dann ist meines erachtens Pseudocode angemessen. --212.202.170.183 20:14, 30. Mär. 2008 (CEST)

Abschnittsentfernung "Erzeugung von Hamming-Codes"

Habe den Abschnitt entfernt weil:

  1. Hamming-Codes haben immer einen fixen Hamming-Abstand von 3. Erweiterter Hamming-Code hat 4. Siehe Begründung/Quellen dazu Artikel Hamming-Code. In dem erwähnten Abschnitt tauchen in der Tabelle aber Distanzen von 2 bis 8 auf, was schon gar nicht zum Hamming-Code passt.
  2. Die Hamming-Codes haben mit den "Sieb des Eratosthenes" wenig gemein - was immer das hier Dargestellte für ein Code sein mag, ein Hamming-Code ist das keiner.
  3. Es fehlen Quellen im Abschnitt um das was gemeint ist eventuell korrigieren bzw. mit passenden Namen versehen zu können.
  4. Hamming-Codes und deren Erzeugung/Generierung sind im betreffenden Artikel Hamming-Code dargestellt und müssen hier, abseits kurzen Abriss, nicht nochmal dargestellt werden. (Redundanzvermeidung)

--wdwd 23:08, 4. Okt. 2011 (CEST)

Referenz auf nicht vorhandene Tabelle

Auf welche "oben stehende Tabelle" bezieht sich der Text "Die notwendige Länge des Codewortes hängt vom geforderten Hamming-Abstand und der Zahl der möglichen Schalterstellungen ab und ist in der oben stehende Tabelle dargestellt. Dort sieht man beispielsweise, dass für 20 verschiedene Positionen eines Schalters mindestens 8 Bit übertragen werden müssen, wenn alle 20 Codewörter zueinander mindestens den Hamming-Abstand ≥ 3 erreichen sollen." --Gcey (Diskussion) 11:53, 30. Nov. 2017 (CET)

Verbesserungswürdig, nicht unbedingt allgemeinverständlich

Es gibt in dem Artikel zwei Beispiele - einmal als Abschnitt und noch einmal weiter unten. Frage nach Zusammenlegung und Erstellung eines möglichst vollständigem Beispiels?

Der Abschnitt "Beispiele" besteht aus Binärzahlen ohne Erklärungen. Das untere Beispiel ist für andere nicht allgemeinverständlich. Die Sätze sind auch unvollständig im Vergleich zu den Gleichungen. Beispiel:

Um y (Wie, Woraus? - "aus x") zu generieren, muss man zwei Bits (von rechts nach links das erste und zweite Bit) ändern.

Was Bits sind, ist für andere nicht unbedingt bekannt. Was "(Code) Wörter" sind ist weder verlinkt noch erklärt.

Vorschlag zur Verbesserung der Allgemeinverständlichkeit: Wie Bits zu lesen sind, kann man auch in einem Satz vorab erklären, vielleicht so: Das niederwertigste Bit steht immer rechts, das höchste steht immer links. Die Bit-Reihenfolge entspricht der aufsteigenden Stellenwertigkeit.

Man könnte erklären was man in dem Beispiel überhaupt sieht, weil Codewörter oder auch Binärzahl nicht verlinkt sind. Zum Beispiel so:

Die Stellen einer Binärzahl werden nachfolgend Bit genannt. In diesem Beispiel sieht man drei Codewörter. Die drei Codewörter des Codes bestehen hier jeweils aus fünf Bits. Die Numerierung der Bits, der einzelnen Stellen einer Binärzahl, erfolgt (wie auch bei Dezimalzahlen) immer von rechts nach links, entsprechend der Stellenwertigkeit.

Ich habe mir vorgenommen, die Lesbarkeit bzw. Verständlichkeit der "IT/Informatik"-Artikel zu verbessern, weil "wir" mit Gleichungen auskommen, die "anderen Leser" aber nicht unbedingt. Wenn man Sätze zur Erklärung von Zahlen, Gleichungen oder Vorschriften bildet, sollten IMHO die Sätze auch erklären, was dort zu sehen ist und das möglichst vollständig. Ich habe mir diesen Artikel mal auf meine Todo-Liste gesetzt. --Eneliting (Diskussion) 22:09, 13. Feb. 2022 (CET)