Funktionale rogrammierung uffman-kodierung ildquelle: http://www.fim.uni-linz.ac.at/lva/echtlichespekte//tegano/bilder/huffman.gif
Funktionale rogrammierung otivation ir möchten achrichten komprimieren: - peicherplatzreduzierung => nergie und Zeit bei Übertragung sparen - ohne nformationsverlust - mit einer effizienten iederherstellung der originalen nformation
Funktionale rogrammierung Zwei ösungen auflängenkodierung atenkompression ange Folgen sich wiederholender Zeichen können in einer kompakten Form kodiert werden, indem jede Folge durch die nzahl der iederholungen und eine einmalige ngabe des sich wiederholenden Zeichens ersetzt wird. Kodierung mit variabler änge äufige Zeichen werden mit möglichst kurzen itfolgen kodiert und längere itfolgen werden für nicht sehr häufige Zeichen benutzt.
Funktionale rogrammierung atenkomprimierung auflängenkodierung eispiele: original XXXXXXXQKKKKK Kompakte Form 7XQ5K ei binär kodierten ateien brauchen wir nicht einmal die Zeichen anzugeben, weil wir wissen, dass die äufe sich nur zwischen und abwechseln. 7
Funktionale rogrammierung auflängenkodierung compress :: (q a) => [a] -> [(a, nt)] compress [] = [] compress (x:xs) = enc [] (x,) xs where enc :: (q a) => [(a, nt)] -> (a, nt) -> [a] -> [(a, nt)] enc ls (x,n) [] = ls ++ [(x,n)] enc ls (x,n) (y:ys) x==y = enc ls (x, n+) ys otherwise = enc (ls ++ [(x,n)]) (y,) ys
Funktionale rogrammierung auflängenkodierung GF-Kompression * * 5 * * 7 * * gut für GF-Kompression schlecht für GF-Kompression
Funktionale rogrammierung Frage Kodierung mit variabler änge ie können Zeichen kodiert werden, sodass die it-änge eines extes minimiert wird enn wir n verschiedene Zeichen mit einer festen it- änge kodieren möchten, brauchen wir mindestens log n its für die Kodierung jedes Zeichens. Zeichen werden normalerweise mit its (-ode) oder its (O) kodiert.
Funktionale rogrammierung Kodierung mit variabler änge Grundlegende dee: ie nzahl der its für die Kodierung der einzelnen Zeichen an die äufigkeit innerhalb des extes anzupassen. Kürzere itfolgen für häufige Zeichen und längere itfolgen für seltene Zeichen.
Funktionale rogrammierung ntropie nformationstheorie athematical heory of ommunication laude hannon ie ntropie eines Zeichensystems ist ein aß für den mittleren nformationsgehalt des ystems.
Funktionale rogrammierung ntropie achricht Quelle z..z..z..z z 7 ie nformation, die ein Zeichen trägt, hängt von seiner äufigkeit ab. eltene Zeichen vermitteln mehr nformation als häufige Zeichen. eispiel: eim orträtsel hilft es viel mehr, zu wissen, dass ein seltener uchstabe vorkommt als einer, der sehr häufig auftritt. enn die ahrscheinlichkeit des uftretens eines bestimmten Zeichens z i gleich p i ist, wird der nformationsgehalt von z i wie folgt definiert: i = log (/p i )
Funktionale rogrammierung ntropie achricht Quelle z..z..z..z z 7 er mittlere nformationsgehalt der gesamten Quelle wird als die ntropie der achricht bezeichnet und wie folgt definiert: n () = Σ p i log (/p i ) i= ir brauchen log (/p i ) its um z i zu kodieren
Funktionale rogrammierung atenkomprimierung Kodierung mit variabler änge ie äufigkeit der Zeichen hängt von der rt der nformation ab. eispiel: ÄFG.........................................
Funktionale rogrammierung Kodierung mit variabler änge ie kann man für eine beliebige Zeichenfolge die optimale Kodierung mit variabler änge festlegen ch will die itfolge dekodieren. ie kann ich wissen, wann die Kodierung eines Zeichens zu nde ist
Funktionale rogrammierung uffman-kodierung avid. uffman stellte 5 einen lgorithmus, der aus einer gegebenen achricht einen räfixkode erstellt, der die änge einer kodierten achricht minimiert. ine konstante ahrscheinlichkeitsverteilung der einzelnen Zeichen wird verwendet.
Funktionale rogrammierung Kodierung mit variabler änge Für diese rt der Komprimierung mit variabler änge hat sich uffman einen optimalen lgorithmus ausgedacht, mit dem die Kodierung und ekodierung von nformation realisiert werden kann. ie uffman-kodierung wird überall für die atenkomprimierung verwendet, und je nachdem, welche igenschaften die aten haben, spart man meistens zwischen % und % des ursprünglichen latzes.
Funktionale rogrammierung Kodierung mit variabler änge räfix-kodierung m aus einer itfolge Zeichen mit einer variablen itlänge eindeutig zu erkennen, muss die Kodierung die igenschaft haben: Keine itkodierung eines Zeichens darf als räfix in der Kodierung eines anderen Zeichens vorkommen. eispiel: enn die Kodierung von ist, darf keine andere Zeichenkodierung die its am nfang haben.
Funktionale rogrammierung rzeugung des uffman-ode rie Für die ekodierung brauchen wir eine effiziente allgemeine arstellung der Kodierung aller Zeichen, und das wird mit einer rie-atenstruktur gemacht. in rie ist eine aumstruktur mit der igenschaft, dass die nformation sich nur in den lättern befindet. ie inneren Knoten sind nur erkettungsknoten.
Funktionale rogrammierung rzeugung des uffman-ode. ie äufigkeiten der Zeichen werden berechnet ehmen wir an, wir wollen eine extdatei komprimieren. Zuerst zählen wir, wie oft jedes Zeichen in der atei vorkommt. eispiel: ÄFG äufigkeiten
Funktionale rogrammierung rzeugung des uffman-ode. er rie-aum wird wie folgt erzeugt. ie äufigkeiten werden in einer in-riority-queue gespeichert. ine in-riority-queue ist nichts anderes als eine atenstruktur, auf der die Operationen xtract-in und nsert definiert sind.
rzeugung des uffman-aumes. ie zwei Knoten mit den kleinsten äufigkeiten in der prioriry-queue werden extrahiert und deren äufigkeiten addiert.. ie umme wird in einem neu erzeugten Knoten gespeichert, der als linkes und rechtes Kind die zwei extrahierten Knoten hat. Funktionale rogrammierung
rzeugung des uffman-aumes. Zum chluss wird die urzel des neuen inärbaums wieder in die priority-queue eingefügt. Funktionale rogrammierung
Funktionale rogrammierung rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes
rzeugung des uffman-aumes 7
rzeugung des uffman-aumes 7
rzeugung des uffman-aumes 7
rzeugung des uffman-aumes 7
rzeugung des uffman-aumes 7
rzeugung des uffman-aumes 7
rzeugung des uffman-aumes 7
rzeugung des uffman-aumes 7
rzeugung des uffman-aumes 7 7
Kodierung der Zeichen er ode jedes Zeichens wird aus dem eg von der urzel des aumes bis zu dem entsprechenden uchstaben aus den Kanten abgelesen.... 7 7
ekodierung 7 7
ekodierung 7 7
ekodierung 7 7
ekodierung 7 7 amit die nformation später dekodiert werden kann, muss der dazu gehörige uffman- aum in der komprimierten atei beinhaltet sein.