Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Huffman Kodierung (http://www.informatikerboard.de/board/thread.php?threadid=1947)


Geschrieben von 123michi19 am 29.10.2014 um 13:17:

  Huffman Kodierung

Meine Frage:
Hi zusammen,

behandelt wird momentan die Huffman - Kodierung in der Vorlesung. Ich habe jetzt zahlreiche Youtube - Videos angeschaut, den Anfang verstehe ich noch (also das die Häufigkeit der Buchstaben gezählt werden muss).

Aber das was danach kommt, ist mir ein Rätsel. Könnt ihr mir hiermit bitte weiterhelfen?

Meine Ideen:
Vielen Dank :-)



Geschrieben von eulerscheZahl am 29.10.2014 um 14:18:

 

Das Vorgehen ist z.B. in der Wikipedia beschrieben.

Beispiel: der Text ist aababcabcd
Also nach Anzahl der Vorkommen:
a: 4
b: 3
c: 2
d: 1

das ganze wollen wir binär speichern, daher ist m = 2 (es gibt nur 0 und 1)
wir suchen also die beiden(da m=2) Teilbäume mit der geringsten Anzahl, das sind c und d.
Die werden zu einem Baum zusammengefügt, sodass sich folgendes Bild ergibt: (Häufigkeit in Klammern)
code:
1:
2:
3:
4:
5:
6:
7:
a(4)

b(3)

   / c(2)
cd(3)
   \ d(1)

jetzt wieder die beiden Äste mit der geringsten Häufigkeit zusammenfassen
code:
1:
2:
3:
4:
5:
6:
7:
a(4)

    / b(3)
bcd(6)
          / c(2)
    \ cd(3)
          \ d(1)

wenn jetzt wieder die beiden Bäume mit der geringsten Häufigkeit zusammengefasst werden, gibt es nur noch einen Baum.

Jetzt musst du nur noch bestimmen, dass der eine Ast der 0 und der andere der 1 entspricht. Die Zuordnung ist dabei willkürlich.



Geschrieben von 123michi19 am 29.10.2014 um 20:16:

 

Vielen Dank für deine schnelle Antwort. Da ich solche Aufgaben dann auch immer gerne selber versuche, habe ich mir mal das Wort: abrakadabra ausgesucht. Das Bild dazu ist im Anhang. Wäre super, wenn du einen Blick darauf werfen könntest großes Grinsen



Geschrieben von eulerscheZahl am 29.10.2014 um 21:02:

 

sieht gut aus Daumen hoch
und als Binärmuster (wenn der obere Ast die 1 ist):
1 001 01 1 0000 1 0001 1 001 01 1



Geschrieben von 123michi19 am 29.10.2014 um 22:31:

 

Dankeschön smile , Zum Binärmuster hätte ich allerdings noch die Frage wie man da drauf kommt?



Geschrieben von eulerscheZahl am 30.10.2014 um 06:59:

 

Ganz einfach: bei jeder Verzweigung kannst du festlegen, welcher der beiden Äste eine 0 und welcher eine 1 bekommt (frei wählbar). Um auf die Kodierung für den einzelnen Buchstaben zu kommen, musst du nur noch die Pfad von der Wurzel zum Buchstaben entlanggehen und die die 0en und 1en notieren, die du unterwegs einsammelst. Die Wurzel für dein Beispiel mit abrakadabra ist ganz links, das a hängt schon am 1. Ast.



Geschrieben von 123michi19 am 31.10.2014 um 15:28:

 

Vielen Dank für deine Hilfe :-)



Geschrieben von 123michi19 am 04.11.2014 um 08:29:

 

Sorry das ich das Thema noch einmal aufgreifen muss, aber ich dachte es verstanden zu haben. Ich bekomme das Auslesen des Binärmusters einfach nicht hin und bräuchte dazu bitte noch einmal Hilfe verwirrt



Geschrieben von eulerscheZahl am 04.11.2014 um 08:39:

 

Ist die Grafik klar, die ich in meinem letzten Beitrag angefügt habe?
Nehmen wir z.B. den Buchstaben k: von der Wurzel aus muss man die Äste 0, 0 und 1 nehmen, um dorthin zu gelangen. k wird also durch 001 dargestellt.



Geschrieben von 123michi19 am 05.11.2014 um 13:44:

 

Wenn ich es richtig verstehe, müsste r und d dann auch 001 sein?



Geschrieben von eulerscheZahl am 05.11.2014 um 15:35:

 

r is 01 und d ist 0001
Wie du siehst, braucht d 4 Bit zur Speicherung, also mehr als r. Das ist auch sinnvoll, da d nur einmal vorkommt.

Ich sehe gerade, ich habe im Graphen Mist gebaut: ich habe versehentlich b und k vertauscht, auf deinem Blatt (Foto) ist es noch richtig.



Geschrieben von 123michi19 am 11.11.2014 um 21:10:

 

Besten Dank für die Rückantwort :-) Daumen hoch



Geschrieben von 123michi19 am 28.12.2014 um 19:02:

 

Es ist schon wieder ein paar Wochen her wo das Thema behandelt wurde. Daher habe ich mich noch einmal an dem Wort taucher versucht.

Könntest du das bitte für mich noch einmal überprüfen, ob das so stimmt?

Vielen Dank :-)

PS: (@ eulerscheZahl) Wie kann ich mich bei dir denn einmal bedanken? Du hast mir schon so oft weitergeholfen und das ist nun wirklich nicht selbstverständlich :-)



Geschrieben von eulerscheZahl am 28.12.2014 um 20:08:

 

Dein Baum ist richtig (als einer von 20160 möglichen, wenn ich mich nicht verrechnet habe).
Ich habe eine Seite gefunden, die dir Bäume generieren kann: huffman.ooz.ie

Es reicht vollkommen, wenn du hier immer artig danke sagst, ist mehr als manch andere tun smile
An der Stelle ein Zitat über die Ziele der Seite:
Zitat:
Fragen können kostenlos und ohne jegliche Registrierung im Forum gestellt werden.



Geschrieben von 123michi19 am 28.12.2014 um 21:56:

 

Dann nochmal ein herzliches Dankeschön für die Hilfe smile


Forensoftware: Burning Board, entwickelt von WoltLab GmbH