Textkompression: Burrows-Wheeler-Transformation
|
|
- Max Weiner
- vor 7 Jahren
- Abrufe
Transkript
1 Proseminar Algorithmen der Bioinformatik WS 2010/11 Textkompression: Burrows-Wheeler-Transformation Johann Hawe Johann Hawe, WS 2010/11 1
2 Gliederung 1. Einleitung 2. BWT Kompressionstransformation 2.1 Prinzip der Transformation 2.2 Eigenschaften des Outputs 2.3 Implementierung 3. BWT Dekompressionstransformation 4. Move-To-Front-Kodierung und -Dekodierung 5. Huffman-Kodierung und -Dekodierung 6. Fazit Johann Hawe, WS 2010/11 2
3 1. Einleitung Die Burrows-Wheeler-Transformation, kurz BWT, entspricht einer reversiblen Transformation eines zu komprimierenden Textes. Diese Permutation des Textes erlaubt es bestimmten Kompressionsverfahren, wie z.b. die kombinierte Anwendung von Huffman- und Move-to-Front- Kodierung, diesen effizienter zu komprimieren. Eine gute und performante Kompression von Daten wird in vielen Gebieten rund um Medien und Daten im Allgemeinen benötigt, nicht zuletzt auch in der Bioinformatik. Hier ist es unter anderem wichtig, große Datensätze, wie vollständige Genome oder Proteome, effizient zu speichern und schnellen Zugriff darauf zu gewährleisten. Gerade die Tatsache, dass derzeit eine wahre Datenflut von verschiedenen Forschungseinrichtungen generiert wird, macht gute Kompressionsverfahren unabdinglich. 2. Die Kompressions-Transformation 2.1 Prinzip der Transformation Betrachten wir zuerst die Hintransformation, deren Ziel es ist, eine Inputseqeuenz S der Länge N so zu permutieren, dass die entstehende Sequenz L sich zum einen in S zurück transformieren und zum anderen besser komprimieren lässt. Hierzu erstellt man zunächst eine Matrix M, welche in jeder Zeile i die Sequenz S um i Positionen zyklisch nach rechts rotiert enthält. Die Zeilen der Matrix werden anschließend lexikographisch aufsteigend sortiert. Abb.1: Input S: artanaa Matrix M: aaartan aartana anaaart Index I = 3: artanaa naaarta rtanaaa tanaaar Johann Hawe, WS 2010/11 3
4 In Abb.1 fällt auf, dass in jeder Spalte von M eine Permutation von S steht. Das Ergebnis der Transformation gestaltet sich nun zum einen aus dem Index I, welcher das erste Vorkommen von S innerhalb der Matrix beschreibt (Es ist durchaus möglich, dass S in mehreren Zeilen von M vorkommt). Der zweite Teil ist eine Permutation L von S, welche durch die letzte Spalte von M beschrieben wird, also L := M[0][N-1] + + M[N-1][N-1] Somit entspricht das Ergebnis dem Tupel (L, I). In obigem Beispiel: (nataaar, 3) 2.2 Eigenschaften des Outputs Warum lässt sich diese Permutation von L nun besser komprimieren als z.b. der ursprüngliche Input S? Betrachtet man alle Wörter der deutschen Sprache, so fällt auf, dass viele Suffixe oft nur von einigen wenigen Präfixen angeführt werden können, wie z.b. das Suffix ett. Hierfür kommen als Präfixe u.a. nur Br oder B in Frage. Dieses Phänomen ist dafür verantwortlich, dass sich in der letzten Spalte von M gleiche Buchstaben in einer lokalen Umgebung anhäufen, da diese ja die Präfixe der Anfänge der Zeilen darstellen und diese lexikographisch sortiert sind. Diese Eigenschaft, dass lange Folgen gleicher Buchstaben in einer Sequenz vorkommen, sorgt dafür, dass sich diese einfach durch eine Kombination aus Move-to-Front-Kodierer und einem sog. entropy-coder, wie z.b. dem Huffman-Kodierer, komprimieren lässt. 2.3 Implementierung Das größte Problem bei der Implementierung dieses Algorithmus stellt die Sortierung aller Zeilen der Matrix dar. Das Anlegen der Matrix selbst geschieht intuitiv, wobei man darauf achten muss, nicht in jeder Zeile die komplette Sequenz abzuspeichern, sondern jeweils nur einen Zeiger auf die entsprechende Startposition in der Sequenz. Ansonsten kann es, gerade bei längeren Input-Sequenzen, zu Speicherproblemen kommen. In der Praxis ist auch eine blockweise Verarbeitung des Inputs sinnvoll, z.b. zu Blöcken von ein paar hundert kbyte bis zu einem MByte. Johann Hawe, WS 2010/11 4
5 Für die Sortierung der Zeilen kann man verschiedene Verfahren verwenden, wie zum Beispiel Quicksort oder ein gemischtes Verfahren aus Bucketsort und Quicksort. Da das worst-case Laufzeitverhalten bei Quicksort allerdings mit O(n 2 ) nicht zufriedenstellend ist, ist es sinnvoll effizientere bzw. passendere Sortierverfahren zu implementieren, z.b. auf Basis von Suffixtrees oder Suffixarrays (weniger Platzbedarf). Mit Hilfe solcher Suffixtrees kann die Implementierung sogar ein Laufzeitverhalten von O(n) generieren. 3. Dekompressions-Transformation Das Ziel dieses Schrittes ist es, den ursprünglichen Output der Kompressionstransformation, (L, I), in die Input-Sequenz S zurückzuführen. Zuerst bemerken wird, dass wir durch L auch die erste Spalte F der ursprünglichen Matrix M gegeben haben. Denn zum einen sind alle Spalten von M Permutationen von S, also sind auch L und F jeweils Permutationen von S. Weiterhin ist M zeilenweise lexikographisch sortiert, also ist F sortiert. Somit erhalten wir F aus L durch einfaches sortieren aller Zeichen. Nun ist es uns möglich, anhand von F und L eine neue Permutation π zu beschreiben, durch welche sich die ursprüngliche Sequenz S wiederherstellen lässt. Zur besseren Erklärung der Permutation betrachten wir zunächst noch die Matrix M', welche sich von der ursprünglichen Matrix M durch rotieren aller Zeilen um eine Position nach rechts ergibt. Es gilt also: M'[i][j] = M[i][(j-i) mod N] Da M lexikographisch aufsteigend sortiert ist, ist M' lexikographisch aufsteigend ab der zweiten Position sortiert (aufgrund der zykl. Rotation nach rechts). Ebenso gilt für M', dass jede Spalte einer Permutation von S entspricht und dass jede Zeile aus M eine äquivalente Zeile in M' besitzt. Betrachten wir nun alle Zeilen welche mit einem gemeinsamen Zeichen c beginnen. Es fällt auf, dass die relative Ordnung der Zeilen in M und M' jeweils gleich ist, da ja entsprechend die Anfangsbuchstaben gleich sind und M' ab der zweite Spalte aufsteigend sortiert ist. D. h., das erste Vorkommen von z.b. 'b' in L entspricht dem ersten Vorkommen von 'b' in F. Johann Hawe, WS 2010/11 5
6 Nun nehmen wir uns der Permutation π an. Mit dem jetzigen Wissen ist sie einfach zu berechnen, denn sie beschreibt im Wesentlichen in welcher Zeile von M man eine Zeile aus M' finden kann, also: M'[i][j] = M[π(i)][j] für i,j є [0: n-1] Anhand dieser Permutation, den beiden Spalten F und L sowie dem Index I kann man schließlich S bestimmen. Für jeden Index i wissen wir, dass L[i] direkt vor F[i] steht (zyklische Rotation der Zeilen). Ebenso wissen wir, dass F[π(i)] = L[i] und somit L[π(i)] direkt vor L[i] steht. Da wir zusätzlich wissen, dass L[I] = S[N-1] also das letzte Zeichen von S darstellt, bekommen wir S durch folgende Vorschrift: S[n-1-k] = L[π k(i) ] wobei π 0 (i) = i und π k+1 (i) = π(π k (i)). S wird hier von hinten nach vorne generiert. Hierbei ist nochmals zu betonen, dass für die Generierung von S im Endeffekt nur L und I benötigt werden. Die Dekompressions- Transformation kann unmittelbar intuitiv implementiert werden. 4. Move-To-Front-Kodierung Die nächsten beiden Abschnitte befassen sich der Vollständigkeit halber mit der eigentlichen Kompression des Outputs (L, I) der BWT. Die Sequenz S wird hier zuerst mit Hilfe eines Move-to-Front-Kodierers kodiert, um diese anschließend durch die Huffman-Kodierung zu komprimiert. Bei der Move-to-Front-Kodierung wird jeder Character aus L durch einen Integer kodiert, indem zunächst eine Liste R aller Charactere des zugrunde liegenden Alphabets nach einer bestimmten Reihenfolge, z.b. aufsteigend lexikographisch, generiert wird. Zusätzlich wird eine Liste K der Länge N (= Länge von L) initalisiert. Am Ende der Kodierung enthält K[i] den Code des Characters von L an der Stelle i. Nun wird L analysiert, und bei jedem Vorkommen eines Characters c in L, wird der Index von c aus R in K geschrieben. Anschließend wird R reorganisiert, indem c aus R gelöscht und am Anfang von R wieder angefügt wird. Dies führt dazu, dass lokal häufig vorkommende Zeichen in L nach vorne wandern und somit durch kleine Integer Werte kodiert Johann Hawe, WS 2010/11 6
7 werden können. Insbesondere das vorherige Anwenden des BWT führt häufig zu einer langen Folge von Nullen in K. Die generiert Liste K kann aufgrund der asymmetrischen Verteilung der Integer Werte anschließend gut mittels der Huffman-Kodierung komprimiert werden. Die inverse Operation der Move-to-Front-Kodierung kann einfach implementiert werden. Es genügt hier die Liste R auf die gleiche Weise wie bei der Kodierung zu generieren und für jeden Integer i in K den Character an der Stelle R[i] in L zu schreiben. Anschließend muss R wieder durch Entfernen und vorne Anfügen von c in R reorganisiert werden. 5. Huffman-Kodierung Für die Huffman-Kodierung sehen wir uns zunächst einen normalen Text in deutscher Sprache an. Typischerweise kann jedes Zeichen des Textes als 8- Bit-Code bzw. ASCII-Code ausgedrückt werden. Dies wäre eine optimale Codierung, würden alle Zeichen in dem Text mit der gleichen Wahrscheinlichkeit auftreten. Das dies aber nicht der Fall ist, ist intuitiv zu erkennen, da z.b. der Buchstaben 'e' bei weitem häufiger Auftritt wie z.b. 'x' oder 'z' oder auch Satzzeichen wie '!'. Deshalb setzt man zur Kodierung eines solchen Textes mit asymmetrischen Auftrittswahrscheinlichkeiten der einzelnen Zeichen u.a. die Huffman-Kodierung ein, da diese einen Code in Abhängigkeit der Wahrscheinlichkeiten berechnet. Ziel der Huffman-Kodierung ist es also, eine Input-Sequenz anhand der Wahrscheinlichkeit der einzelnen Zeichen in einen optimalen Präfix- Code zu übersetzen. Diesem Code liegen zwei Bedingungen zu Grunde: 1) es gibt keinen anderen Code mit kürzerer, mittlerer Codewortlänge 2) kein Codewort ist Präfix eines anderen Codeworts (Fanobedingung) Die Wahrscheinlichkeit für ein bestimmtes Zeichen ist im allgemeinen, z.b. für einen deutschen Text, nicht bekannt. Deshalb behilft man sich hier mit der relativen Häufigkeit eines Zeichens in dem zu kodierenden, festen Text, welche genau dessen Wahrscheinlichkeit widerspiegelt. Die Kodierung wird im Prinzip durch einen binären Baum dargestellt, dessen Blätter alle Zeichen des Alphabetes des zu kodierenden Textes Johann Hawe, WS 2010/11 7
8 darstellen. Dieser kann einfach konstruiert werden, indem man jeweils die beiden Zeichen mit den geringsten Wahrscheinlichkeiten in einem neuen Knoten K vereinigt. Die Wahrscheinlichkeit für K ist dann die Summe der Einzelwahrscheinlichkeiten der beiden Zeichen. K dient dann als Basis für die weitere Konstruktion des Baumes, solange bis alle Buchstaben des Alphabetes hinzugefügt wurden. Abb.2: Huffman-Baum mit dazugehörigem Code Der Code für ein bestimmtes Zeichen kann dann einfach an dem erstellten Baum abgelesen werden, indem man den Pfad von der Wurzel bis zu dem Blatt betrachtet. Wird hier ein Knoten nach links verlassen, notiert man eine '0', wird er nach rechts verlassen notiert man eine '1' (s. Abb. 2). Auf diese Weise entsteht für einen gegebenen Text ein optimaler Präfix-Code (ohne Beweis). Zur Dekodierung kann der kodierte Text zusammen mit dem generierten Baum oder mit einer Vorschrift zur Erstellung des Baumes übertragen werden. Letzteres ist dann nötig, wenn z.b. zwei Zeichen die gleiche Auftrittswahrscheinlichkeit besitzen. Johann Hawe, WS 2010/11 8
9 6. Fazit Mit der Burrows-Wheeler-Transformation haben wir ein Verfahren kennen gelernt, welches in Kombination mit z.b. der Move-To-Front-Kodierung und der Huffman-Kodierung eine schnelle und effiziente Kompression verschiedener Texte ermöglicht. Ist die Implementierung der Dekompressions-Transformation noch einfach zu bewerkstelligen, so muss man bei der Kompressions-Transformation ein besonderes Augenmerk darauf legen, die Sortierung der Zeilen effizient zu implementieren, da sonst die Laufzeit des Algorithmus stark anwachsen kann. Johann Hawe, WS 2010/11 9
10 Literatur [1] M. Burrows, D.J. Wheeler: A Block-Sorting Lossless Data Compression Algorithm, Digital SRC Research Report No. 124, [2] V. Heun: Grundlegende Algorithmen, Vieweg-Verlag, 2003, Abschnitt 6.5. [3] Burrows-Wheeler transform, vom , letzter Besuch: [4] Mark Nelson: Data Compression with the Burrows-Wheeler-Transform, Dr. Dobb's Journal, online version, vom , letzter Besuch: , Johann Hawe, WS 2010/11 10
Dynamisches Huffman-Verfahren
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
MehrWann sind Codes eindeutig entschlüsselbar?
Wann sind Codes eindeutig entschlüsselbar? Definition Suffix Sei C ein Code. Ein Folge s {0, 1} heißt Suffix in C falls 1 c i, c j C : c i = c j s oder 2 c C und einen Suffix s in C: s = cs oder 3 c C
MehrTextkompression: Burrows-Wheeler-Transformation
Proseminar Algorithmen der Bioinformatik Ausarbeitung Textkompression: Burrows-Wheeler-Transformation Uli Köhler 12.11.2012 Inhaltsverzeichnis 1 Einleitung 2 2 Verlustfreie Kompression 2 3 Die Burrows-Wheeler-Transformation
MehrPraktikum BKSPP: Blatt 2
Praktikum BKSPP: Blatt 2 PD Dr. David Sabel WS 2014/15 Zeichenbasierte Komprimierung Stringersatzverfahren Codebäume Huffman-Kodierung Zeichenbasierte Komprimierung mit Codebäumen Idee: Kodiere jedes Zeichen
MehrDie Burrows-Wheeler-Transformation
Die Burrows-Wheeler-Transformation Martin Knapp Proseminar Datenkompression 11. Dezember 2002 Inhaltsverzeichnis 1. Einleitung 3 2. Funktionsweise 4 2.1 Grundlagen.........................................................
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,
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
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
Mehr4.4 Anwendungen von Suffixbäumen und Suffix-Arrays
4.4 Anwendungen von Suffixbäumen und Suffix-Arrays exakte Suche in unveränderlichen Texten (schon besprochen) inexakte Suche in unveränderlichen Texten Finden von Regelmäßigkeiten (z.b. längste Wiederholungen)
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"
MehrFreiwillige Übung zum Thema: Adaptive Huffman-Kodierung
Freiwillige Übung zum Thema: Adaptive Huffman-Kodierung Hintergrund-Info: Adaptive Verfahren (Quelle: Uni Karlsruhe) Die einfache Huffman-Kodierung verwendete für die Konstruktion der Kodes die Häufigkeiten
MehrUniversität Trier. Fachbereich IV. Wintersemester 2004/2005. Wavelets made easy. Kapitel 2 Mehrdimensionale Wavelets und Anwendungen
Universität Trier Fachbereich IV Wintersemester 2004/2005 Wavelets made easy Kapitel 2 Mehrdimensionale Wavelets und Anwendungen Thomas Queckbörner 16.11.2004 Übersicht des Kapitels: 1. Einführung 2. Zweidimensionale
Mehr21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3
581 21. Greedy Algorithmen Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3 Aktivitäten Auswahl 582 Koordination von Aktivitäten, die gemeinsame Resource exklusiv
MehrAlgorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8
ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1
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
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit
MehrÜbungsblatt 5 - Musterlösung
Universität Mannheim Lehrstuhl für Praktische Informatik IV Prof. Dr. W. Effelsberg Christoph Kuhmünch, Gerald Kühne Praktische Informatik II SS 2000 Übungsblatt 5 - Musterlösung Aufgabe 1: Huffman-Codierung
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.
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
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 22 (20.7.2016) Greedy Algorithmen - Datenkompression Algorithmen und Komplexität Greedy Algorithmen Greedy Algorithmen sind eine Algorithmenmethode,
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
MehrKapitel 7: Optimalcodierung und Huffman Coding
Kapitel 7: codierung und Huffman Coding Ziele des Kapitels Auftreten von Fehlern bei zu starker Kompression Konstruktion optimaler Codes Huffman Coding 2 Bisher Theorem (Shannon I): Die mittlere Codewortlänge
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
MehrHäufige Mengen ohne Kandidatengenerierung
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 bzgl.
Mehr6. Übungsblatt zu Algorithmen II im WS 2016/2017
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Dr. Christian Schulz, Dr. Simon Gog Michael Axtmann 6. Übungsblatt zu Algorithmen II im WS 016/017 http://algo.iti.kit.edu/algorithmenii
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 24. April 2019 [Letzte Aktualisierung: 24/04/2019,
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
Mehr3 Codierung diskreter Quellen. Quelle Quellcodierer Kanalcodierer reduziert die benötigte Datenmenge. fügt Daten zur Fehlerkorrektur ein.
3 Codierung diskreter Quellen 3 Einführung 32 Ungleichmäßige Codierung 33 Präfix-Codes 34 Grenzen der Code-Effizienz 35 Optimal-Codierung 3 Zusammenfassung < 24 / 228 > 3 Codierung diskreter Quellen Quelle
MehrInformatik II, SS 2018
Informatik II - SS 28 (Algorithmen & Datenstrukturen) Vorlesung 22 (6.7.28) Greedy Algorithmen II (Datenkompression) Algorithmen und Komplexität Datenkompression Reduziert Größen von Files Viele Verfahren
MehrPraktikum BKSPP. Aufgabenblatt Nr. 2
PD Dr. David Sabel Institut für Informatik Fachbereich Informatik und Mathematik Johann Wolfgang Goethe-Universität Frankfurt am Main Praktikum KSPP Wintersemester 24/5 Aufgabenblatt Nr. 2 Abgabe: Dienstag,
MehrÜbersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Übersicht Greedy Algorithmen Einführung Aktivitäten-Auswahl-Problem Huffman Codierung Matthias Zwicker Universität Bern Frühling 2009 2 Greedy Algorithmen Entwurfsstrategie
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
MehrInformatik-Seminar Thema 6: Bäume
Informatik-Seminar 2003 - Thema 6: Bäume Robin Brandt 14. November 2003 1 Robin Brandt Informatik-Seminar 2003 - Thema 6: Bäume Übersicht Definition Eigenschaften Operationen Idee Beispiel Datendefinition
MehrBeispiel: Zeigen Sie, dass H(x) = H 0 = I gilt, wenn alle Zeichen gleichwahrscheinlich sind.
1 2 Im ersten Schritt werden wir uns mit dem Begriff und der Definition der Information beschäftigen. Ferner werden die notwendigen math. Grundlagen zur Quellencodierung gelegt. Behandelt werden Huffman,
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.
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
MehrEike Müller. Kompression-Algorithmen für Bilder. 3. Juli 2013
Eike Müller Kompression-Algorithmen für Bilder 3. Juli 23 Inhaltsverzeichnis Huffman-Kodierung 2. Präfixfreie Codes................................. 2.2 Huffman Code.................................. 3.3
MehrBäume 1. Thomas Röfer
Bäume Thomas Röfer Preisverleihung Begriffsdefinitionen Eigenschaften Implementierung von Bäumen Durchlaufen von Bäumen Breitensuche/Tiefensuche Huffman-Kodierung Rückblick Sortieren Permutieren nach Dijkstra
Mehr21. Dynamic Programming III
Approximation 21. Dynamic Programming III FPTAS [Ottman/Widmayer, Kap. 7.2, 7.3, Cormen et al, Kap. 15,35.5] Sei ein ε (, 1) gegeben. Sei I eine bestmögliche Auswahl. Suchen eine gültige Auswahl I mit
MehrDatenstrukturen und Algorithmen (SS 2013)
Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes
MehrSatz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).
2.6 Vergleichsbasierte Sortierverfahren Alle bisher betrachteten Sortierverfahren sind vergleichsbasiert, d.h. sie greifen auf Schlüssel k, k (außer in Zuweisungen) nur in Vergleichsoperationen der Form
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:
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
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:
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
MehrKapitel 2. Suche nach endlich vielen Wörtern. R. Stiebe: Textalgorithmen, Winter 2005/06 113
Kapitel 2 Suche nach endlich vielen Wörtern R. Stiebe: Textalgorithmen, Winter 2005/06 113 Übersicht Aufgabenstellung Gegeben: Text T und eine endliche Menge von Wörtern P = {P 1,..., P r }; Gesucht: alle
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
MehrEffiziente Algorithmen und Komplexitätstheorie
1 Effiziente lgorithmen und Komplexitätstheorie Vorlesung Thomas Jansen 29.06.2006 2 Burrows-Wheeler-Kompression: Verbesserungen dreischrittiges Kompressionsverfahren Burrows- Wheeler- Transformation Globale
MehrAufgaben zur Klausurvorbereitung
Vorlesung Graphen und Optimierung Sommersemester 2013/14 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir an den beiden Vorlesungsterminen am 29.01.2014
MehrKapitel 2: Sortier- und Selektionsverfahren Gliederung
Gliederung 1. Laufzeit von Algorithmen 2. Sortier- und Selektionsverfahren 3. Paradigmen des Algorithmenentwurfs 4. Ausgewählte Datenstrukturen 5. Algorithmische Geometrie 6. Randomisierte Algorithmen
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale
MehrDatenstrukturen Kurzanleitung
Datenstrukturen Kurzanleitung Insertionsort p = (7, 5, 4, 83, 6, 6) n = 6 Start: K ist sortierte Folge. Für i =, 3, 4,..., n: Füge ki in eine sortierte Folge ( k, k, k 3,..., k n ) in der richtigen Position
MehrProseminar Datenkompression Suchstrategien und Präfixcodes
Proseminar Datenkompression Suchstrategien und Präfixcodes Patrick Sonntag Mittwoch, den 05.02.2003 I. Einführung - Suche elementares Problem in Informatik - hierbei Beschränkung auf binäre Tests nur 2
MehrStabiles Sortieren. Dieses Prinzip lässt sich natürlich auf beliebiege andere Zahlensystem oder auch komplett anders gestaltete Mengen übertragen.
Prof. Thomas Richter 3. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 27.04.2017 Stabiles
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 21 (11.7.2018) String Matching (Textsuche) II Greedy Algorithmen I Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil 6 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 16. Mai 2018 [Letzte Aktualisierung: 18/05/2018,
MehrKapitel 3: Sortierverfahren Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
Mehr10. Sortieren III. Untere Schranken für das vergleichsbasierte Sortieren, Radix- und Bucketsort
280 10. Sortieren III Untere Schranken für das vergleichsbasierte Sortieren, Radix- und Bucketsort 281 10.1 Untere Grenzen für Vergleichbasiertes Sortieren [Ottman/Widmayer, Kap. 2.8, Cormen et al, Kap.
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere
MehrGraphen. Definitionen
Graphen Graphen werden häufig als Modell für das Lösen eines Problems aus der Praxis verwendet, wie wir im Kapitel 1 gesehen haben. Der Schweizer Mathematiker Euler hat als erster Graphen verwendet, um
MehrLemma 185 Mit den zusätzlichen Festlegungen
4.7.2 Stirling-Zahlen der ersten Art Lemma 185 Mit den zusätzlichen Festlegungen und gilt: s 0,0 = 1 s n,k = 0 k 0, n > 0 s n,k = s n 1,k 1 + (n 1) s n 1,k n, k > 0. Diskrete Strukturen 4.7 Abzählkoeffizienten
Mehr3.3 Optimale binäre Suchbäume
3.3 Optimale binäre Suchbäume Problem 3.3.1. Sei S eine Menge von Schlüsseln aus einem endlichen, linear geordneten Universum U, S = {a 1,,...,a n } U und S = n N. Wir wollen S in einem binären Suchbaum
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
MehrEffiziente Algorithmen und Komplexitätstheorie
1 Effiziente Algorithmen und Komplexitätstheorie Vorlesung Thomas Jansen 22.06.2006 2 Ein anderer Ansatz Beobachtung in Dokumenten eines Typs wiederkehrende Muster Idee Muster in Wörterbuch speichern,
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)
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
Mehr3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
MehrJPEG Kompression technische Realisierung
Experimentalphysik V 20. Januar 2005 Schema der JPEG Kompression Farbraumkonvertierung RGB YCbCr Subsampling der Farbkomponenten Cb, Cr Zerlegung in Blöcke 8 8 2D Kosinustransformation (DCT) Quantisierung
MehrEffizienter Planaritätstest Vorlesung am
Effizienter Planaritätstest Vorlesung am 23.04.2014 INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER Satz Gegebenen einen Graphen G = (V, E) mit n Kanten und m Knoten, kann in O(n + m) Zeit
MehrOptimalcodierung. Thema: Optimalcodierung. Ziele
Optimalcodierung Ziele Diese rechnerischen und experimentellen Übungen dienen der Vertiefung der Kenntnisse im Bereich der Optimalcodierung, mit der die Zeichen diskreter Quellen codiert werden können.
MehrPraktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit
Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Team A blau Martin Herfurth 11043831 Markus Wagner 11043447 5. Februar 2007 1 1 Untere Schranke für Vergleichsbasierte Algorithmen
MehrStud.-Nummer: Datenstrukturen & Algorithmen Seite 1
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern
MehrAlgorithmen und Datenstrukturen
M. Lüthi (Universität Basel) Algorithmen und Datenstrukturen 16. Mai 2019 1 / 35 Algorithmen und Datenstrukturen D1. Sortieren von Strings Gabi Röger und Marcel Lüthi Universität Basel 16. Mai 2019 M.
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:
MehrKompressionsverfahren
Kompressionsverfahren Quelle: Steinmetz, Ralf: Multimedia-Technologie: Einführung und Grundlagen, Springer, Verlag Verlustlose Kompressionsalgorithmen RLC Huffman Adaptive Huffman Kodierung Arithmetische
MehrAlgorithmen und Datenstrukturen. D1.1 Motivation. Algorithmen und Datenstrukturen. D1.2 Strings. D1.3 Sortieren von Strings. D1.4 LSD-Sortierverfahren
Algorithmen und Datenstrukturen 16. Mai 2019 D1. Sortieren von Strings Algorithmen und Datenstrukturen D1. Sortieren von Strings Gabi Röger und Marcel Lüthi Universität Basel 16. Mai 2019 D1.1 Motivation
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
MehrAlle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen D1. Sortieren von Strings Gabi Röger und Marcel Lüthi Universität Basel 16. Mai 2019 Übersicht Sortieren A&D Komplexitätsanalyse Fundamentale Datenstrukturen Suchen Graphen
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..............................
MehrSortieren und Suchen. Jens Wächtler Hallo Welt! -Seminar LS 2
Sortieren und Suchen Jens Wächtler 17.05.2017 Hallo Welt! -Seminar LS 2 Überblick Sortieren kurze Wiederholung Binäre & Ternäre Suche Binäre Suche in einer Liste Bisektionsverfahren (Nullstellensuche)
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
MehrDatenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität
Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität Gierige Algorithmen: Berechne Lösung schrittweise In jedem Schritt mache lokal optimale Wahl Daumenregel: Wenn optimale Lösung
MehrKompression. Tim Kilian
Kompression Tim Kilian Seminar Effiziente Programmierung Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg
MehrAlgorithmen auf Sequenzen
Algorithmen auf Sequenzen Fehlertolerante Mustersuche: Distanz- und Ähnlichkeitsmaße Sven Rahmann Genominformatik Universitätsklinikum Essen Universität Duisburg-Essen Universitätsallianz Ruhr Einführung
MehrTU München. Hauptseminar: WS 2002 / Einführung in Suffix - Bäume
TU München Hauptseminar: WS 2002 / 2003 Einführung in Suffix - Bäume Bearbeiterin: Shasha Meng Betreuerin: Barbara König Inhalt 1. Einleitung 1.1 Motivation 1.2 Eine kurze Geschichte 2. Tries 2.1 Basisdefinition
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
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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B7. Balancierte Bäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 13. April 2018 1 Folien basieren auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/33balancedsearchtrees-2x2.pdf
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
MehrSeminar: Aktuelle Themen aus der Programmierung
Seminar: Aktuelle Themen aus der Programmierung Organisatorisches / Vorbesprechung Professur für Künstliche Intelligenz & Softwaretechnologie WS 2012/13 Stand der Folien: 19. September 2012 Organisatorisches
MehrInformationstheorie und Codierung
Informationstheorie und Codierung 3. Codierung diskreter Quellen Gleichmäßiger Code Ungleichmäßiger Code Fano-, Huffman-Codierung Optimalcodierung von Markoff-Quellen Lauflängencodes nach Golomb und Rice
Mehr2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2014/2015
2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2014/2015 Hier Aufkleber mit Name und Matrikelnummer anbringen Vorname: Nachname: Matrikelnummer: Beachten Sie: Bringen Sie
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II Algorithmen zur Textverarbeitung III: D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009,
MehrZeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany
Zeichenketten 16.04.2018 Benedikt Straßner Programming Systems Group Martensstr. 3 91058 Erlangen Germany Übersicht String Matching Algorithmen Naive Stringsuche Knuth Morris Pratt (KMP) Algorithmus Boyer-Moore
MehrADS: Algorithmen und Datenstrukturen
ADS: Algorithmen und Datenstrukturen Teil X Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 13.
MehrKompressionsverfahren für Texte
Kompressionsverfahren für Texte Prof. Dr. S. Albers Prof. Dr. Th. Ottmann 1 Zeichenkettenverarbeitung Suche in Texten, Textindizes Mustererkennung (Pattern-Matching) Verschlüsseln Komprimiern Analysieren
MehrErinnerung Blockchiffre
Erinnerung Blockchiffre Definition schlüsselabhängige Permutation Seien F, F 1 pt Algorithmen. F heißt schlüsselabhängige Permutation auf l Bits falls 1 F berechnet eine Funktion {0, 1} n {0, 1} l {0,
Mehr