faecher:informatik:oberstufe:codierung:huffmancodierung:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
faecher:informatik:oberstufe:codierung:huffmancodierung:start [14.10.2021 18:10] – [Erzeugung des Huffman Baums und des Huffman Codes] sbelfaecher:informatik:oberstufe:codierung:huffmancodierung:start [28.09.2022 18:07] – [Kompression mit Huffman-Codierung] sbel
Zeile 12: Zeile 12:
   * ''. - - . . . - . - .'' = EGFN   * ''. - - . . . - . - .'' = EGFN
  
-Der **Huffman-Code** bildet solch einen präfixfreien Code, der gleichzeitig den häufig vorkommenden Zeichen eine kürzere Codelänge generiert.+Der **Huffman-Code** bildet solch einen präfixfreien Code, der gleichzeitig den häufig vorkommenden Zeichen eine kürzere Codelänge generiert. Der Huffman-Code ist eine sogenannte **Entropiekodierung**.
  
 Mithilfe der Seite https://people.ok.ubc.ca/ylucet/DS/Huffman.html lässt sich der Algorithmus schrittweise simulieren und visualisieren. Mithilfe der Seite https://people.ok.ubc.ca/ylucet/DS/Huffman.html lässt sich der Algorithmus schrittweise simulieren und visualisieren.
Zeile 35: Zeile 35:
 === (A2) === === (A2) ===
  
-**(a)** Erzeuge aus dem Baum, den du oben generiert hast, die Codierung für jedes einzelne Zeichen (inklusive Leerzeichen)+**(A)** Erzeuge aus dem Baum, den du oben generiert hast, die Codierung für jedes einzelne Zeichen (inklusive Leerzeichen)
 Anmerkung: Je nach Anordnung der Buchstaben und Knoten im Baum ist dieser Code nicht eindeutig. Anmerkung: Je nach Anordnung der Buchstaben und Knoten im Baum ist dieser Code nicht eindeutig.
  
Zeile 44: Zeile 44:
 |Code | 01 | ...| ... | ... | |Code | 01 | ...| ... | ... |
  
-Wieviel Bit hat die ASCII Codierung des Textes in Anspruch genommen, wieviele Bit benötigt der Satz, wenn er  mit dem Huffman-Code codiert wird? 
  
-**(b)** Codiere den Text mit dem gefundenen Code.# 
  
-**(c)** Welche Information benötigt ein Mitschülerum deinen Code decodieren und den ursprünglichen Text wiederherstellen zu können?+**(B)** Codiere den Text mit dem gefundenen Code. Wieviel Bit/Byte hat die ASCII Codierung des Textes in Anspruch genommen, wieviele Bit benötigt der Satzwenn er mit dem Huffman-Code codiert wird?
  
 +**(C)** Welche Information benötigt ein Mitschüler, um deinen Code decodieren und den ursprünglichen Text wiederherstellen zu können?
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A3) ===
 +
 +Für den Text "ABRACADABRA": Erzeuge **von Hand** den Huffman-Baum, erstelle daraus einen Hoffman-Code und codiere damit den Text.
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A4) ===
 +
 +Decodiere den Code ''0100 1110 1000 1010 0010 0001 11'' mithilfe des folgenden Baumes:
 +
 +{{ :faecher:informatik:oberstufe:codierung:huffmancodierung:huffb01.png?400 |}}
 +
 +++++ Lösung |
 +''SIMSALABIM''
 +++++
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A5) ===
 +In welchen Fällen ist die Huffman-Codierung am effizientesten und warum?
 +
 +++++ Lösung |
 +Wenn ein großer Anteil des Textes aus wenigen unterschiedlichen Buchstaben besteht, denn die häufigsten Buchstaben werden zuletzt in den Baum eingebaut und haben darum den kürzesten Code.
 +++++
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A6) ===
 +
 +Gegeben ist der folgende Baum:
 +
 +{{ .:huff2.png |}}
 +
 +  * Begründe, warum der Baum kein gültiger Huffman-Baum ist.
 +  * Erläutere den Nachteil, der beim Codieren des Wortes "BELEBEN" mit diesem Baum auftritt.
 +  * Geben Sie einen korrekten Huffman-Baum für die angegebenen Buchstabenhäufigkeiten an.
 +
 +++++ Lösung  |
 +  * Der linke Teilbaum hat das Gewicht 2 und hätte mit B zusammengefasst werden müssen.
 +  * Jedes Codewort hat die Länge 2, damit wird das Wort mit insgesamt 14 Bit gespeichert. Dieser Wert ist
 +nicht optimal.
 +
 +{{ :faecher:informatik:oberstufe:codierung:huffmancodierung:huff2lsg.png |}}
 +
 +++++
  
  
 +==== Material ====
  
 +{{simplefilelist>.:*}}