Dynamisches Huffman-Verfahren
|
|
- Gesche Krüger
- vor 7 Jahren
- Abrufe
Transkript
1 Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über weitere Algorithmen 6. Zusammenfassung 7. Quellen 1. Einleitung Das dynamische Huffman-Verfahren basiert auf einem der bekanntesten Kompressionsverfahren, dem Huffman-Algorithmus, welcher 1951 von D. A. Huffman entwickelt wurde. Das Prinzip dieses Verfahrens beruht darauf, dass das Vorkommen unterschiedlicher Zeichen (z.b. Buchstaben, Satzzeichen usw.) verschieden wahrscheinlich ist. Ordnet man demnach dem Zeichen mit der höchsten Wahrscheinlichkeit einen sehr kurzen, und dem Zeichen geringerer Wahrscheinlichkeit einen vergleichsweise langen Code zu, verringert sich die durchschnittliche Anzahl zu speichernder Bits pro Zeichen - der Text wird komprimiert. 1
2 2. Der Huffman-Algorithmus Voraussetzungen: - gegeben ist ein Text mit n unterschiedlichen Zeichen - die Zeichen a 1, a 2,..., a n bilden das Alphabet A des Textes - die Wahrscheinlichkeit des Auftretens eines Zeichens wird mit P i (mit i = 1, 2,..., n) bezeichnet, wobei P 1 + P P n = 1 Algorithmus: - sortieren der Wahrscheinlichkeit P i, so dass P 1 = P 2 =... = P n - ersetzen der letzten beiden Zeichen a n-1 und a n durch a n-1,n, wobei P n-1,n = P n-1 + P n - wiederholen des Algorithmus bis lediglich zwei Zeichen verblieben sind Implementierung: Speichere die k Blätter in einer Liste L; while (L enthält mindestens zwei Elemente) do begin Entferne aus L die Elemente x und y mit der geringsten Wertigkeit; Erzeuge ein neues Element p, wobei p der Vater von x und y ist; Wertigkeit(p) := Wertigkeit(x) + Wertigkeit(y); Füge p in L ein; end; Beispiel: - Sortieren der Zeichen nach deren Wahrscheinlichkeit Zeichen: x 1 x 2 x 3 x 4 x 5 x 6 Wahrscheinlichkeit: Zeichen x 5 und x 6 zusammenfassen zu x 56 mit P 56 = 0.15 Zeichen: x 1 x 2 x 3 x 4 x 56 Wahrscheinlichkeit: Zeichen x 4 und x 56 zusammenfassen zu x 456 mit P 456 = 0.3 Zeichen: x 1 x 456 x 2 x 3 Wahrscheinlichkeit: Zeichen x 2 und x 3 zusammenfassen zu x 23 mit P 23 = 0.4 Zeichen: x 23 x 1 x 456 Wahrscheinlichkeit: Zeichen x 1 und x 456 zusammenfassen zu x 1456 mit P 1456 = 0.6 Zeichen: x 1456 x 23 Wahrscheinlichkeit:
3 Auswertung: Stellt man dies nun als binären Baum dar und interpretiert jeweils den linken Ast einer Verzweigung als 0 (entspricht Zeichen höherer Wahrscheinlichkeit) und den rechten Ast als 1 (entspricht Zeichen geringerer Wahrscheinlichkeit) erhält man beim Durchlaufen des Baumes von der Wurzel zu den Blättern den Code für jedes einzelne Zeichen. Wurzel / \ x 1456 x 23 / \ / \ x 1 x 456 x 2 x 3 / \ x 4 x 56 / \ x 5 x 6 Zeichen Code x 1 00 x 2 10 x 3 11 x x x Übergang zu einem dynamischen Verfahren Die Umsetzung dieses Prinzip wirft jedoch die Frage auf, wie die Wahrscheinlichkeit des Auftretens jedes Zeichens ermittelt werden kann. Die einfachste Lösung kann wie folgt beschrieben werden. 1. Durchlauf: - Zählen des Vorkommens eines jeden Zeichens innerhalb des Textes - Ermittlung der Wahrscheinlichkeitsverteilung - Erzeugen des Huffman-Baumes - Speichern bzw. Übertragen des Huffman-Baumes 2. Durchlauf: - Komprimieren des Textes mittels Huffman-Baum Diese Lösung wird als Statisches Huffman-Verfahren bezeichnet. Sie hat jedoch einen entscheidenden Nachteil: werden die Daten oft verändert oder werden immer neue Daten hinzugefügt (z.b. sequentielle Übertragung von Daten) muss der gesamte oben beschriebene Prozess regelmäßig durchgeführt werden. Die Kompression wird langsam und die Datenmenge erhöht sich (da der erzeugte Baum nach jedem Prozess erneut gespeichert bzw. übertragen werden muss). Ziel musste es somit sein, ein Verfahren zu finden, bei dem der Huffman-Baum dynamisch, bei gleichzeitiger Codierung der Zeichen, erzeugt wird. Dadurch wäre nur ein Durchlauf notwendig und der Algorithmus somit schneller und effektiver. 3
4 Das Problem dabei war: der Empfänger (Decodierer) benötigt den Huffman-Baum zum Dekomprimieren, ohne dass dieser jedoch übertragen bzw. gespeichert wird. In den siebziger Jahren versuchten Faller (1973) und Gallager (1978) eine Lösung für das Problem zu finden. Sie entwickelten unabhängig von einander Schemata für ein dynamisches Verfahren, welche 1985 von Donald E. Knuth aufgegriffen und überarbeitet wurden. Das Ergebnis war der FGK-Algorithmus (Faller-Gallager-Knuth), welcher 1987 von Vitter nochmals verbessert wurde (V-Algorithmus). 4. Der FGK-Algorithmus Eigenschaften des Huffman-Baumes: 1. Die Geschwister eines Huffman-Baumes sind durch Kanten mit ihren gemeinsamen Vorgänger (Vater) verbunden, wobei dem Element mit der höheren Wahrscheinlichkeit (Wertigkeit) 0 und dem geringerer Wahrscheinlichkeit (Wertigkeit) 1 zugeordnet wird (= geordneter Huffman-Baum). 2. Für jede Ebene l = 1 ist die Wahrscheinlichkeit (Wertigkeit) der einzelnen Elemente kleiner bzw. gleich der Wahrscheinlichkeit (Wertigkeit) der Elemente in Ebene l 1 (= lexikografisch geordneter Huffman-Baum). Voraussetzungen: - Leerer Huffman-Baum mit einem Element (Wurzel), dem Null-Element - Blätter des Baumes entsprechen den k verschiedenen Zeichen, welche bereits bekannt sind - Kanten des Baumes entsprechen der Wertigkeit des zugehörigen Elements (Wertigkeit von Blättern = Vorkommen des Zeichens im bereits codierten Text) - Teilbäume/Äste des Huffman-Baumes können vertauscht werden wenn die Wertigkeit der Wurzel-Elemente (dieser Teilbäume/Äste) gleich ist (folgt aus den Eigenschaften des Huffman-Baumes) Algorithmus: - Einlesen des Zeichens a j(t+1) (Nachfolger des Zeichens a j zum Zeitpunkt t+1) - Wenn das Zeichen nicht im Baum enthalten ist - Sende/Speichere Zeichen mittels vorher definierten Code, z.b. ASCII - Gehe zum Null-Element des Baumes und ersetze es durch ein Element mit zwei Söhnen, wobei der linke Sohn das neue Null-Element ist, und der rechte Sohn (Wertigkeit zunächst Null) dem Zeichen a j(t+1) entspricht sonst - Sende/Speichere das (durch den Hufmann-Baum) codierte Zeichen - Erhöhe die Wertigkeit der Elemente vom Blatt (welches a j(t+1) repräsentiert) dem Pfad entlang, bis zur Wurzel um 1 - Verändere den Baum zuvor (wenn nötig) so, dass der, durch die Erhöhung der Wertigkeit einzelner Elemente, neu erzeugte Baum wieder ein Huffman-Baum ist (Aktualisierung des Huffman-Baumes) - Wiederhole den Algorithmus bis alle Zeichen eingelesen worden sind 4
5 Implementierung (Aktualisierung des Huffman-Baumes): Grundlage der Implementierung ist die Nummerierung aller Elemente des Huffman-Baumes von links nach rechts, und von unten nach oben. Dadurch kann jedem Element neben der Wertigkeit auch eine Position innerhalb des Baumes zugeordnet werden. Das Zeichen links außen, in der untersten Ebene, hat somit die Position 1 und die Wurzel somit die zahlenmäßig höchste Position (siehe Beispiel im Anhang). q := Element welches a j(t+1) entspricht; {dieses Element ist immer ein Blatt} if (q = Null-Element) then begin Ersetze q durch ein Element mit zwei Blättern; {zunächst beide Blätter Null-Elemente} q := rechtes {gerade erzeugtes} Blatt; end; if (q = Bruder des Null-Elements) then begin Vertausche q mit dem Blatt zahlenmäßig höchster Position, gleicher Wertigkeit; Erhöhe Wertigkeit(q) um 1; q := Vater von q; end; while (q <> Wurzel des Huffman-Baumes) do begin Vertausche q mit dem Element zahlenmäßig höchster Position, gleicher Wertigkeit; Erhöhe Wertigkeit(q) um 1; q := Vater von q; end; 5. Überblick über weitere Algorithmen Neben den FGK-Algorithmus gibt es zahlreiche weitere Algorithmen, die das dynamische Huffman-Verfahren verwenden. Der am häufigsten verwendete ist der bereits erwähnte V-Algorithmus. Im Unterschied zum FGK-Algorithmus werden beim V-Algorithmus alle Äste des Huffman-Baumes als Blöcke von Elementen, und die Wurzel eines Astes als erstes Element des zugehörigen Blockes betrachtet. In Abhängigkeit von der Wertigkeit des ersten Elementes, können dann die einzelnen Blöcke zu Äquivalenz-Klassen zusammengefasst werden. Innerhalb einer Äquivalenz-Klasse werden die einzelnen Blöcke nach ihrer Tiefe sortiert, d.h. Blöcke, bestehend aus einem Blatt stehen beispielsweise am Anfang, während Blöcke, welche aus einem sehr tiefen Ast hervorgegangen sind, am Ende einer Äquivalenz- Klassen stehen. Bezogen auf den FGK-Algorithmus bedeutet dies, dass beim Tauschen der Teilbäume nicht nur darauf geachtet wird, dass der neu erzeugte Baum ein Huffman-Baum ist, sondern auch darauf, dass der erzeugte Baum eine möglichst geringe Tiefe hat. 5
6 Die Konsequenz dieses Algorithmus ist eine höhere Aktualisierungsrate auf der einen, jedoch eine geringere Baum-Tiefe auf der anderen Seite (was sich mathematisch beweisen lässt). Dies bewirkt eine geringere, durchschnittliche Codewortlänge: FGK-Algorithmus S-n+1 = x = 2S+t-4n+2 V-Algorithmus S-n+1 = x = 2S+t-2n+1 S Performance der statischen Methode n Anzahl verschiedener Zeichen t Länge des Textes x Anzahl benötigter Bits (zum Speichern des komprimierten Textes) Weitere Algorithmen, die das dynamische Huffman-Verfahren verwenden sind der N-Algorithmus, welcher eine sehr geringe Update-Rate hat und somit wesentlich schneller ist (jedoch eine geringere Kompression liefert) und der B-Algorithmus, der sehr leicht zu Implementieren ist, und somit besonders bei Hardware-Codierern zum Einsatz kommt. 6. Zusammenfassung Wie die oben genannten, verschiedenen Algorithmen bereits andeuten, gibt es eine hohe Zahl von Variationen des dynamischen Huffman-Verfahrens. Beispielsweise muss der Huffman-Baum nicht unbedingt nach jedem Zeichen aktualisiert werden, es ist auch eine Aktualisierung nach jedem n-ten Zeichen (wobei n zuvor festgelegt wird) möglich, ohne dass dabei die Performance stark beeinträchtigt wird. Aber auch die Kombination von statischen Verfahren und dem dynamischen Huffman-Verfahren ist möglich. Ein Beispiel hierfür ist gzip. Die Vorteile des dynamischen Verfahrens sind offensichtlich, allerdings gibt es auch Nachteile. Tritt beispielsweise eine konstante Verteilung der Wahrscheinlichkeiten (der einzelnen Zeichen) auf, liefert das statische Huffman-Verfahren weit bessere Ergebnisse; tritt gar eine (nahezu) Gleichverteilung der Wahrscheinlichkeiten auf ist die erzielte Kompressionsrate sowohl mit statischen, als auch mit dynamischen Huffman-Verfahren sehr gering. Ein Beispiel hierfür sind Bilder, bei denen die Wahrscheinlichkeit für die einzelnen Farben in der Regel gleich ist. Die Einsatzmöglichkeiten des dynamischen Huffman-Verfahrens sind somit begrenzt, weshalb heutzutage oftmals auch andere Kompressionstechniken Einsatz finden. 6
7 7. Quellen Huffman- und FGK-Algorithmus: - Diplomarbeit: Universal Lossless Data Compression, D. Nehring, Universität Bielefeld, 1997 V-Algorithmus: - Design and Analysis of Dynamic Huffman Codes, J. S. Vitter, Dynamic Huffman Coding, J. S. Vitter,
8 Anhang Beispiele für den FGK-Algorithmus 12 q 11 5 q 9 7 q 10 2 q 5 3 q 6 3 q 7 4 q 8 2 q 3 2 q 4 0 q 1 2 q 2 Fig. 1: Beispiel eines Huffman-Baumes vor der Aktualisierung 12 q 11 5 q 9 7 q 10 2 q 5 3 q 6 3 q 7 4 q 8 2 q 3 2 q 4 0 q 1 2 q 2 0 q w 0 q 0 Fig. 2: Nach dem ersten Schritt (a j(t+1) nicht im Baum enthalten) 8
9 12 q 11 5 q 9 7 q 10 2 q 5 3 q 6 3 q 7 4 q 8 2 q 3 2 q 4 0 q 1 2 q 2 0 q w 1 q 0 Fig. 3: Wertigkeit von q 0 erhöht, gehe zu q 1 12 q 11 5 q 9 7 q 10 2 q 4 3 q 6 3 q 7 4 q 8 1 q 1 2 q 2 2 q 3 2 q 5 0 q w 1 q 0 Fig. 4: Wertigkeit von q 1 erhöht, q 4 mit q 5 getauscht 9
10 13 q 11 6 q 9 7 q 10 3 q 4 3 q 6 3 q 7 4 q 8 1 q 1 2 q 2 2 q 3 2 q 5 0 q w 1 q 0 Fig. 5: Wertigkeit von q 4, q 9 und q 11 erhöht, Wurzel erreicht 13 q 13 6 q 11 7 q 12 3 q 7 3 q 8 3 q 9 4 q 10 1 q 3 2 q 4 2 q 5 2 q 6 0 q 1 1 q 2 Fig. 6: Nach der Aktualisierung, erneute Nummerierung der Elemente 10
16 - Kompressionsverfahren für Texte
16 - Kompressionsverfahren für Texte Prof. Dr. S. Albers Kompressionsverfahren für Texte Verlustfreie Kompression Original kann perfekt rekonstruiert werden Beispiele: Huffman Code, Lauflängencodierung,
MehrÜbrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?
Huffman-Code Dieser Text ist als Hintergrundinformation ausschliesslich für die Lehrperson gedacht. Der Text ist deshalb eher technisch gehalten. Er lehnt sich an das entsprechende Kapitel in "Turing Omnibus"
MehrAlgorithmus zur komprimierten Übertragung von Textdaten an mobile Endgeräte
Fachhochschule Wedel Seminararbeit Algorithmus zur komprimierten Übertragung von Textdaten an mobile Endgeräte Sven Reinck 7. Januar 2007 Inhaltsverzeichnis Inhaltsverzeichnis Motivation 2 Wörterbuch 2.
Mehr2.7 Der Shannon-Fano-Elias Code
2.7 Der Shannon-Fano-Elias Code Die Huffman-Codierung ist ein asymptotisch optimales Verfahren. Wir haben auch gesehen, dass sich die Huffman-Codierung gut berechnen und dann auch gut decodieren lassen.
MehrHuffman-Kodierung. Fachbereich Medieninformatik. Hochschule Harz. Huffman-Kodierung. Referat. Henner Wöhler. Abgabe:
Fachbereich Medieninformatik Hochschule Harz Huffman-Kodierung Referat Henner Wöhler 11459 Abgabe: 15.01.2007 Inhaltsverzeichnis Einleitung...I 1. Entropiekodierung...1 1.1 Morse Code...2 1.2 Shannon-Fano-Kodierung...3
MehrSeminar über Algorithmen, SS2004. Textkompression. von Christian Grümme und Robert Hartmann
Seminar über Algorithmen, SS2004 Textkompression von Christian Grümme und Robert Hartmann 1. Einleitung Textkompression wird zur Verringerung des Speicherbedarfs und der Übertragungskapazität von allgemeinen
MehrKapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
MehrProseminar WS 2002/2003
Technische Universität Chemnitz Fakultät für Informatik Professur Theoretische Informatik Proseminar WS 2002/2003 Thema: Datenkompression Dynamisches / Adaptives Huffman-Verfahren Danny Grobe Rainer Kuhn
MehrProseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)
Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...) Inhalt: Einleitung, Begriffe Baumtypen und deren Kodierung Binäre Bäume Mehrwegbäume Prüfer
MehrArithmetisches Codieren
Arithmetisches Codieren 1. Motivation: Als Alternative zum arithmetischen Codieren bot sich damals als effizientester Algorithmus das Huffmann-Coding an. Dieses jedoch hatte einen entscheidenden Nachteil:
Mehr15 Optimales Kodieren
15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen
MehrEine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder
Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element
MehrDatenkompression. 1 Allgemeines. 2 Verlustlose Kompression. Holger Rauhut
Datenkompression Holger Rauhut 1. September 2010 Skript für die Schülerwoche 2010, 8.-11.9.2010 Hausdorff Center for Mathematics, Bonn 1 Allgemeines Datenkompression hat zum Ziel, Daten in digitaler Form,
MehrWie muss der Eingabetext beschaffen sein, damit er sich gut komprimieren lässt?
Lernaufgabe 1a Beim Kofferpacken können wir durch Druck die Luft herauslassen und bringen somit mehr Kleidungsstücke in den Koffer. Im Unterricht haben wir vom Huffman-Code gehört und wissen, dass er nach
MehrEinleitung. Kapitel 1
Kapitel 1 Einleitung In diesem Abschnitt geben wir einen kurzen Überblick über den Inhalt der Vorlesung. Wir werden kurz die wesentlichen Probleme erläutern, die wir ansprechen wollen. Wir werden auch
Mehr(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.
(a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 Bruder-Bäume, B-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei Wörterbuchoperationen
Mehr2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung
2 Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0
Mehra) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:
1 Aufgabe 8.1 (P) (2, 3)-Baum a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: Zeichnen Sie, was in jedem Schritt passiert. b) Löschen Sie die Zahlen 65, 70 und 100 aus folgendem
MehrEigenschaften von Kompressionsverfahren
6 Textkompression Eigenschaften von Kompressionsverfahren Das Ziel der Datenkompression ist es, eine gegebene Information (Datenquelle) auf eine kompaktere Weise zu repräsentieren. Dies geschieht, indem
Mehr11.1 Grundlagen - Denitionen
11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden
MehrEinführung in die Informatik II Aus der Informationstheorie: Datenkompression
Einführung in die Informatik II Aus der Informationstheorie: Datenkompression Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität München Sommersemester 2 2. Juli 2 Copyright 2 Bernd
MehrSeminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung
Huffman-Codierung, arithmetische Codierung Theoretische Informatik RWTH-Aachen 4. April 2012 Übersicht 1 Einführung 2 3 4 5 6 Einführung Datenkompression Disziplin,die Kompressionsalgorithmen entwirft
MehrGierige Algorithmen Interval Scheduling
Gierige Algorithmen Interval Scheduling IntervalScheduling(s,f). n length[s] 2. A {} 3. j 4. for i 2 to n do 5. if s[i] f[j] then 6. A A {i} 7. j i 8. return A Gierige Algorithmen Interval Scheduling Beweisidee:
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur
MehrZiv-Lempel-Kompression von André Lichei
Ziv-Lempel-Kompression von André Lichei Einführung: Die wichtigsten Ansprüche,die an einen Komprimierungs-Algorithmus gestellt werden, sind: - eine hohe Komprimierungsrate - für alle Typen von Daten (
Mehr13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang
13 (2-4)-Bäume (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 2. Die Ordnung (maximale Anzahl der Söhne eines Knotens) ist gleich 4 3. Innere Knoten haben 2 Söhne
MehrMathematik für Information und Kommunikation
Mathematik für Information und Kommunikation Am Beispiel des Huffman- Algorithmus Thomas Borys und (Christian Urff) Huffman im Alltag MPEG Telefax JPEG MP3 ZIP avid Huffman avid Huffman [95-999] www.soe.ucsc.edu/people/faculty/huffman.html
MehrDatenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen
Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet
MehrRotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y
Die AVL-Eigenschaft soll bei Einfügungen und Streichungen erhalten bleiben. Dafür gibt es zwei mögliche Operationen: -1-2 Rotation Abbildung 3.1: Rotation nach rechts (analog links) -2 +1 z ±1 T 4 Doppelrotation
Mehr1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes
1 Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes 1 Woche: Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes 5/ 44 Unser Modell Shannon
MehrSeminar. Codierungstheorie
Seminar Codierungstheorie Lempel-Ziv-Verfahren Informatik Sommersemester 25 Tim Schweisgut, Juni 25 Inhalt INHALT... 2 WÖRTERBUCHMETHODEN... 3 Statische Wörterbuchmethoden... 3 Beispiel:... 3 Bemerkung:...
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - Balancierte Bäume, AVL-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrTechnische Informatik - Eine Einführung
Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Technische Informatik - Eine Einführung Darstellung von Zeichen und
MehrKodierungsalgorithmen
Kodierungsalgorithmen Komprimierung Verschlüsselung Komprimierung Zielsetzung: Reduktion der Speicherkapazität Schnellere Übertragung Prinzipien: Wiederholungen in den Eingabedaten kompakter speichern
Mehr12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang
12 (2-4)-Bäume (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 2. Die Ordnung (maximale Anzahl der Söhne eines Knotens) ist gleich 4 3. Innere Knoten haben 2 Söhne
Mehr14. Rot-Schwarz-Bäume
Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).
Mehr6. Komprimierung. (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger
Komprimierung 6. Komprimierung (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger Platz brauchen Motivation: beschleunigt Plattenzugriffe oder Datenübertragungen Voraussetzung:
Mehr3 Quellencodierung. 3.1 Einleitung
Source coding is what Alice uses to save money on her telephone bills. It is usually used for data compression, in other words, to make messages shorter. John Gordon 3 Quellencodierung 3. Einleitung Im
MehrAlgorithmische Bioinformatik 1
Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen
MehrTextkompression: Burrows-Wheeler-Transformation
Proseminar Algorithmen der Bioinformatik WS 2010/11 Textkompression: Burrows-Wheeler-Transformation Johann Hawe Johann Hawe, WS 2010/11 1 Gliederung 1. Einleitung 2. BWT Kompressionstransformation 2.1
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer
MehrProgrammiertechnik II
2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität
MehrStrings. Stringsuche, Boyer-Moore, Textkompression, Huffman Codes.
Strings Stringsuche, Boyer-Moore, Textkompression, Huffman Codes. Suche Substring Häufiges Problem Relevante Beispiele: Suche ein Schlagwort in einem Buch Alphabet: A-Za-z0-9 Suche Virussignatur auf der
MehrContainerDatenstrukturen. Große Übung 4
ContainerDatenstrukturen Große Übung 4 Aufgabenstellung Verwalte Kollektion S von n Objekten Grundaufgaben: Iterieren/Auflistung Suche nach Objekt x mit Wert/Schlüssel k Füge ein Objekt x hinzu Entferne
MehrReferat zum Thema Huffman-Codes
Referat zum Thema Huffman-Codes Darko Ostricki Yüksel Kahraman 05.02.2004 1 Huffman-Codes Huffman-Codes ( David A. Huffman, 1951) sind Präfix-Codes und das beste - optimale - Verfahren für die Codierung
MehrGreedy Algorithms - Gierige Algorithmen
Greedy Algorithms - Gierige Algorithmen Marius Burfey 23. Juni 2009 Inhaltsverzeichnis 1 Greedy Algorithms 1 2 Interval Scheduling - Ablaufplanung 2 2.1 Problembeschreibung....................... 2 2.2
MehrBinäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps
Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer
MehrPPM - Prediction by Partial Matching
PPM - Prediction by Partial Matching 20. September 2012 Zusammenfassung Der PPM-Algorithmus ist eine prinzipiell relativ einfache Möglichkeit, Daten sehr stark zu komprimieren. In dieser Arbeit soll der
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge
MehrEffiziente Algorithmen 2
Effiziente Algorithmen 2 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen
MehrDie Digitalisierung von Musik
Die Digitalisierung von Musik 1 Analoges Speichern Speicherung von Musik auf einer LP Die Daten sind analog gespeichert Analysis 2 Digitale Datenerfassung 1.Sampling Das (akustische) elektrische Signal
MehrÜbung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 07 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 8 Votierung in der Woche vom 25.06.0729.06.07 Aufgabe 22 AVL-Bäume (a) Geben
MehrInformationssysteme SS 2013 Lösungsvorschläge zu Übungsblatt 2. Übungsblatt 2. Für die Übungen in der Woche vom 29. April bis 03.
Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Fachbereich Informatik Technische Universität Kaiserslautern Übungsblatt 2 Für die Übungen in der Woche vom 29. April bis 03. Mai 2013 Aufgabe
MehrÜbungen zu Programmierung I - Blatt 8
Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrHeapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
MehrKlausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)
Berlin, 21. Februar 2013 Name:... Matr.-Nr.:... Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13) 1 2 3 4 5 6 7 8 9 Σ Bearbeitungszeit: 90 min. max. Punktezahl:
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO INF.02031UF (2-4)-Bäume robert.legenstein@igi.tugraz.at 1 7. Bäume Bäume als Datenstruktur Binärbäume Balancierte Bäume (2-4)-Bäume Anwendung: Mischbare Warteschlangen
MehrWiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO
Wiederholung Datenstrukturen und Algorithmen VO 708.031 Suchen in linearen Feldern Ohne Vorsortierung: Sequentielle Suche Speicherung nach Zugriffswahrscheinlichkeit Selbstanordnende Felder Mit Vorsortierung:
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2006 6. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Datenkomprimierung Bei den meisten bisher betrachteten
MehrComputer Science Unplugged Algorithmen zur Textkompression
Proseminar Computer Science Unplugged Algorithmen zur Textkompression Harald Zauner 12. November 2004 Zusammenfassung Trotz der rasch zunehmenden Speicherkapazität heutiger Speichermedien besteht nach
MehrBäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1
Bäume 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Inhalt Grundbegriffe: Baum, Binärbaum Binäre Suchbäume (Definition) Typische Aufgaben Suchaufwand Löschen allgemein, Methode Schlüsseltransfer
MehrAlgorithmische Graphentheorie
Algorithmische Graphentheorie Vorlesung 4: Suchstrategien Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 14. April 2017 HALBORDNUNG TOPOLOGISCHE ORDNUNG TOPOLOGISCHES
Mehr13. Binäre Suchbäume
1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),
Mehr368 4 Algorithmen und Datenstrukturen
Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist
MehrIsomorphie von Bäumen
Isomorphie von Bäumen Alexandra Weinberger 23. Dezember 2011 Inhaltsverzeichnis 1 Einige Grundlagen und Definitionen 2 1.1 Bäume................................. 3 1.2 Isomorphie..............................
MehrAlgorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
MehrRun Length Coding und Variable Length Coding
Fachbereich Medieninformatik Hochschule Harz Run Length Coding und Variable Length Coding Referat Matthias Zittlau 11034 Abgabe: 15.01.2007 Inhaltsverzeichnis 1. RLC...1 2.1 Einführung...1 2.2 Prinzip...1
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1
Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können
Mehr3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel
3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36
Mehr3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:
3. Minimale Spannbäume Sei G = (V, E) ein einfacher ungerichteter Graph, der o.b.d.a. zusammenhängend ist. Sei weiter w : E R eine Gewichtsfunktion auf den Kanten von G. Wir setzen E E: w(e ) = e E w(e),
MehrClausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. Stammbaum.
lausthal Informatik II Bäume. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Beispiele Stammbaum. Zachmann Informatik - SS 0 Bäume Stammbaum Parse tree, Rekursionsbaum Unix file hierarchy
Mehr(Prüfungs-)Aufgaben zur Codierungstheorie
(Prüfungs-)Aufgaben zur Codierungstheorie 1) Gegeben sei die folgende CCITT2-Codierung der Dezimalziffern: Dezimal CCITT2 0 0 1 1 0 1 1 1 1 1 0 1 2 1 1 0 0 1 3 1 0 0 0 0 4 0 1 0 1 0 5 0 0 0 0 1 6 1 0 1
Mehr3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr
3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:
MehrKryptographie und Codierung für den Mathematikunterricht
Kryptographie und Codierung für den Mathematikunterricht Pädagogische Hochschule Karlsruhe University of Education École Supérieure de Pédagogie Institut für Mathematik und Informatik Th. Borys Was verstehst
MehrTextkompression. Komprimierung von Daten. Runlength Komprimierung (2) Runlength Komprimierung (1) Herkömmliche Kodierung. Runlength Komprimierung (3)
Komprimierung von Daten Textkompression Effiziente Algorithmen VU 2.0 WS 2008/09 Bin Hu Ziel: Platz und Zeit sparen Kompression durch - Effiziente Kodierung - Verminderung der Redundanzen (verlustfrei)
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /
MehrLZSS und Deflate. Lars Kunert. April 18, Seminar Kompressionsalgorithmen RWTH Aachen
LZSS und Deflate Lars Kunert Seminar Kompressionsalgorithmen RWTH Aachen April 18, 2012 Übersicht 1 LZ - Storer, Szymanski (LZSS, 1982) 2 Deflate (1996) 3 Anwendung LZSS - 1 Verbesserungen gegenüber LZ77:
MehrDefinition 15 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:
2.2 Rot-Schwarz-Bäume Definition 15 Rot-Schwarz-Bäume sind externe Binäräume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt: 1 alle Blätter hängen an schwarzen Kanten (durchgezogene
Mehr22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet
22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet Autor Volker Claus, Universität Stuttgart Volker Diekert, Universität Stuttgart Holger Petersen, Universität Stuttgart
MehrKapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
MehrMotivation Binäre Suchbäume
Kap..: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund Zusätzliche Lernraumbetreuung Morteza Monemizadeh: Jeden Montag von :00 Uhr-:00 Uhr in
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrHäufige Mengen ohne Kandidatengenerierung. FP-Tree: Transaktionen. Konstruktion eines FP-Trees. FP-Tree: Items
Häufige Mengen ohne Kandidatengenerierung Jiawei Han, Micheline Kamber 2006 (2nd ed.)! Ziel 1: Kompression der Datenbank in eine Frequent-Pattern Tree Struktur (FP-Tree)! Stark komprimiert, vollständig
MehrDatenstrukturen. einfach verkettete Liste
einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten
MehrUntersuchung des Huffman- Algorithmus auf seine Effizienz
Untersuchung des Huffman- Algorithmus auf seine Effizienz :) Wettbewerb "Jugend Forscht" 2004 Markus Kramer (19 Jahre) Arbeitsgemeinschaft "Jugend Forscht" des Christian-Gymnasiums Hermannsburg Leitung:
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
Mehr8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 206 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Organisatorisches Weiterer Ablauf: heute und Donnerstag,
MehrDatenkompression. Vortrag von Markus Durzinsky Student der Otto-von-Guericke-Universität Magdeburg
Vortrag am 25. Januar 200 Werner von Siemens Gymnasium Magdeburg Zeitansatz: 5h (inklusive Programmieraufgaben) Datenkompression Vortrag von Markus Durzinsky Student der Otto-von-Guericke-Universität Magdeburg
MehrAlgorithmen und Datenstrukturen I AVL-Bäume
Algorithmen und Datenstrukturen I AVL-Bäume Prof. Dr. Oliver Braun Letzte Änderung: 01.12.2017 14:42 Algorithmen und Datenstrukturen I, AVL-Bäume 1/38 Balancierte Bäume in einem zufällig erzeugten Binärbaum
MehrKapitel Andere dynamische Datenstrukturen
Institute of Operating Systems and Computer Networks Algorithms Group Kapitel 4.8-4.11 Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2017/2018 Vorlesung#13, 12.12.2017
MehrWiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
Mehr