28.12.2013 Aufrufe

Teil 4: Algorithmen-Entwurfstechniken Idee der Greedy-Algorithmen ...

Teil 4: Algorithmen-Entwurfstechniken Idee der Greedy-Algorithmen ...

Teil 4: Algorithmen-Entwurfstechniken Idee der Greedy-Algorithmen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Datenkompression (1)<br />

Problem:<br />

Gegeben ist ein Text t als Folge von ASCII-Zeichen,<br />

<strong>der</strong>en Häufigkeiten im Text bekannt sind.<br />

Beispiel:<br />

Datenkompression (2)<br />

Codebäume:<br />

Wir wollen uns hier auf binäre Codierung <strong>der</strong> Einzelzeichen einschränken,<br />

wobei sich <strong>der</strong> Binärcode in einem Code-Baum darstellen lässt.<br />

Wichtig: Zu codierende Zeichen sind die Blätter des Code-Baums.<br />

Zeichen<br />

a<br />

e<br />

Häufigkeit<br />

10<br />

15<br />

Beispiele:<br />

nl<br />

i<br />

s<br />

12<br />

3<br />

a e i s t sp nl<br />

a e i s<br />

t<br />

sp<br />

t<br />

4<br />

Zeichen<br />

Code<br />

Zeichen<br />

Code<br />

space<br />

newline<br />

13<br />

1<br />

a<br />

e<br />

i<br />

000<br />

001<br />

010<br />

a<br />

e<br />

i<br />

0000<br />

0001<br />

0010<br />

Gesucht ist eine möglichst kurze binäre Codierung des Textes t.<br />

Selbstverständlich sollte <strong>der</strong> codierte Text auch wie<strong>der</strong> decodierbar sein.<br />

s<br />

t<br />

sp<br />

nl<br />

011<br />

100<br />

101<br />

110<br />

s<br />

t<br />

sp<br />

nl<br />

0011<br />

010<br />

011<br />

1<br />

Binärcode mit<br />

konstanter Bitlänge<br />

Binärcode mit<br />

variabler Bitlänge<br />

O. Bittel; Juli 2007 <strong>Algorithmen</strong> und Datenstrukturen - <strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong> 4-9<br />

O. Bittel; Juli 2007 <strong>Algorithmen</strong> und Datenstrukturen - <strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong> 4-10<br />

Datenkompression (3)<br />

Fano-Bedingung:<br />

Ein Code erfüllt die Fano-Bedingung, falls keine Codierung eines Zeichens Präfix<br />

(Anfangstück) einer Codierung eines an<strong>der</strong>en Zeichen ist.<br />

Durch Code-Bäume dargestellte Bäume erfüllen immer die Fano-Bedingung.<br />

Codes, die Fano-Bedingung erfüllen, sind eindeutig decodierbar.<br />

Beispiel:<br />

Decodieren Sie folgende Binärfolge mit dem unten gegebenen Binärcode:<br />

0010110110100010<br />

Datenkompression (4)<br />

Algorithmus von Huffman:<br />

• <strong>Idee</strong>:<br />

Verwende einen Binärcode variabler Länge, wobei häufigere Zeichen kürzere<br />

Codierungen erhalten.<br />

• Verfahren:<br />

(1) Beginne mit einem Wald von Code-Bäumen,<br />

wobei je<strong>der</strong> Baum anfangs aus genau einem Zeichen besteht.<br />

Je<strong>der</strong> Baum besitzt außerdem ein Gewicht w, das gleich <strong>der</strong> Summe <strong>der</strong><br />

Häufigkeiten <strong>der</strong> Zeichen im Baum ist.<br />

nl<br />

Zeichen<br />

a<br />

Code<br />

0000<br />

(2) <strong>Greedy</strong>-Schritt:<br />

Wähle die beiden Bäume t 1<br />

und t 2<br />

mit den kleinsten Gewichten w 1<br />

und w 2<br />

und bilde daraus einen neuen Baum mit dem Gewicht w = w 1<br />

+ w 2<br />

:<br />

a e i s<br />

t<br />

sp<br />

e<br />

i<br />

s<br />

0001<br />

0010<br />

0011<br />

t 1<br />

t 2<br />

t<br />

010<br />

sp<br />

nl<br />

011<br />

1<br />

(3) Wie<strong>der</strong>hole Schritt (2) solange, bis nur noch ein Baum vorhanden ist.<br />

Dieser Baum ist dann <strong>der</strong> gesuchte optimale Binärcode.<br />

O. Bittel; Juli 2007 <strong>Algorithmen</strong> und Datenstrukturen - <strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong> 4-11<br />

O. Bittel; Juli 2007 <strong>Algorithmen</strong> und Datenstrukturen - <strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong> 4-12

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!