eXma » Diskutieren » Computer und Technik
Startseite - Veranstaltungen - Mitglieder - Suche
Vollständige Version anzeigen: präfix(freie) codes?
onkelroman
was ist der unterschied zwischen präfixcodes und präfixfreien codes?

genau. bei dem einen der beidem darf ein codewort der anfang eines anderen sein.

arrow.gif nur bei welchem? wikipedia widerspricht sich da.



im artikel zum huffman-code steht folgendes:
Zitat
Um diese Mehrdeutigkeit zu verhindern, müssen die den Zeichen zugewiesenen Bitfolgen die Eigenschaft besitzen, präfixfrei zu sein, d. h. keine Bitfolge, die für ein einzelnes Zeichen steht, darf am Anfang eines anderen Zeichens stehen.


aha. also präfixfrei = kein codewort anfang eines anderen.

jedoch: direkt am anfang des artikels präfixcode steht:
Zitat
Der Präfixcode ist ein Begriff aus der Kodierungstheorie. Er bezeichnet eine Abbildung von Objekten in Codewörter, welche aus einem Satz von Ziffern zusammengesetzt werden. Dabei darf kein Codewort eines Objektes den Beginn eines Codewortes eines anderen darstellen.




... also wie jetzt?? wacko.gif
Pusteblumenkohl
ich würd ja auf präfixcode setzen, allein wegen des namens.
onkelroman
hm also allein vom namen würd ich aber eher auf präfixfrei schließen..
übersetzt mit "frei von einer vorsilbe"..
schildkroet
Präfixcode hat gerade die Eigenschaft, präfixfrei zu sein ;-) Nur deswegen gibt es ihn.

Bei Codes mit konstanter Länge weiß man automatisch, wo der eine anfängt bzw. der andere aufhört. Bei variabler Länge braucht man Präfixcode, damit es keine Verwechslung gibt. Und der funktioniert eben, indem kein Zeichen gleichzeitig das Präfix eines anderen Codes ist
onkelroman
ah, habs. präfixfreie codes müssen diese bedingung (kein CW anfang eines andern) erfüllen.
wörter eines präfixcodes können anfang eines anderen sein, dafür gibts dann spezielle trennzeichen, zB die pause beim morsecode:

A • ―
L • ― • •


/edit: jo, danke schildkroet, das hats nochmal verdeutlicht smile.gif
schildkroet
Jetzt bin ich verwirrt, in vielen Quellen wird der Code mit der oben genannten Eigenschaft "Präfixcode" genannt. Der Morsecode mit Trennzeichen wird als andere Möglichkeit gesehen

Zitat
[...] Das Problem eines solchen Codes leuchtet ein: bei Dateien mit fester Codelänge ist klar, wo ein Zeichen endet und das nächste anfängt. Wenn die Bitcodelänge variabel ist, haben wir a priori keinen Anhaltspunkt, wie lang ein Zeichen ist.

Die naheliegende Lösung wird im Morsecode verwendet: eine Pause zwischen den einzelnen Zeichen dient als Trennzeichen. Es gibt jedoch eine bessere Lösung: die Verwendung eines so genannten Präfixcodes. Präfixcodes sind Codes, bei denen kein Zeichen das Präfix eines anderen Zeichens ist, soll heißen: wenn wir ein Zeichen und seinen Code haben, so gibt es kein anderes Zeichen, dessen Code mit dem Code des gewählten Zeichens anfängt.

http://www.activevb.de/tutorials/tut_huffman/huffman.html
happy?
Die Pause beim Morsecode ist doch ein "drittes Zeichen" das als Präfix benutzt wird um den Begin eines neuen Codeworts zu kennzeichnen.

Muss ich jetzt echt nochmal meinen Signalcodierungsordner rausholen?
onkelroman
wieso verwirrt?
bei fester wortlänge is alles super..
und bei variabler wortlänge muss man halt entweder ne pause machen oder (noch besser) präfixfrei bleiben, damits nicht zu mißverständnissen kommt. allerdings ist da die gefahr höher, dass gleich der ganze rest falsch ist, wenn ein bit nicht oder falsch übertragen wird.
Chris
Das kann man aber mittels Prüfsummen etc.pp. abfangen.