Strings. Stringsuche, Boyer-Moore, Textkompression, Huffman Codes.

Ähnliche Dokumente
2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

Grundbegriffe der Informatik Tutorium 3

Referat zum Thema Huffman-Codes

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

4.9.7 Konstruktion der Suffixbäume

6 Ü B E R S E T Z U N G E N U N D C O D I E R U N G E N. 6.1 von wörtern zu zahlen und zurück Dezimaldarstellung von Zahlen Num 10

Eigenschaften von Kompressionsverfahren

Einführung in die Informatik II Aus der Informationstheorie: Datenkompression

2.7 Der Shannon-Fano-Elias Code

16 - Kompressionsverfahren für Texte

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

6. Komprimierung. (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger

Kompressionsverfahren für Texte

Wann sind Codes eindeutig entschlüsselbar?

Mathematik für Information und Kommunikation

Dynamisches Huffman-Verfahren

Wie muss der Eingabetext beschaffen sein, damit er sich gut komprimieren lässt?

Technische Informatik - Eine Einführung

Grundbegriffe der Informatik Tutorium 5

Gierige Algorithmen Interval Scheduling

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

Boyer Moore Algorithmus

Organisation. Was kommt zum Test? Buch Informatik Grundlagen bis inkl. Kapitel 7.4 Wissensfragen und Rechenbeispiele

Algorithmen und Datenstrukturen II. Suchen in Texten. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Ziv-Lempel-Kompression von André Lichei

Digitaltechnik I WS 2006/2007. Klaus Kasper

(Prüfungs-)Aufgaben zur Codierungstheorie

Grundlagen der Informatik II Übungsblatt: 5, WS 17/18 mit Lösungen

Textkomprimierung. Stringologie. Codes. Textkomprimierung. Alle Komprimierung beruht auf Wiederholungen im Text. Textkomprimierung

Algorithmen und Datenstrukturen (für ET/IT)

Informationstheorie und Codierung. Prof. Dr.-Ing. Lilia Lajmi

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41

Übungen zur Vorlesung Grundlagen der Rechnernetze. Zusätzliche Übungen

Lösungsvorschlag 3. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Digitalisierung. analoges Signal PAM. Quantisierung

2. Vorlesung: Boolesche Algebra

Klausur Informationstheorie und Codierung

Textkompression. Komprimierung von Daten. Runlength Komprimierung (2) Runlength Komprimierung (1) Herkömmliche Kodierung. Runlength Komprimierung (3)

Redundanz. Technische Informationsquelle Entropie und Redundanz Huffman Codierung. Martin Werner WS 09/10. Martin Werner, Dezember 09 1

, 2016W Übungstermin: Fr.,

Codes und Codierung. Dr. Michael Hielscher

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz

15 Optimales Kodieren

Konzepte der Informatik

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Zeichenketten. 29. April 2015 Benedikt Lorch. Benedikt Lorch Zeichenketten April

3 Quellencodierung. 3.1 Einleitung

ADS: Algorithmen und Datenstrukturen 2

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

Technische Universität München. Fakultät für Informatik. Huffman-Codierung. Proseminar im Rahmen der Vorlesung. Perlen der Informatik.

Isomorphie von Bäumen

Tutorium 23 Grundbegriffe der Informatik (6. Sitzung)

Seminar. Codierungstheorie

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

ERA-Zentralübung Maschinenprogrammierung

Beispiellösungen zu Blatt 85

Proseminar. Thema: Shannon-Fano und Huffman Verfahren

Algorithmus zur komprimierten Übertragung von Textdaten an mobile Endgeräte

Zeichenketten. Hallo Welt für Fortgeschrittene Daniel Wust Informatik 2 Programmiersysteme Martensstraße Erlangen

Algorithmen und Datenstrukturen (für ET/IT)

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

Übungsblatt Nr. 7. Lösungsvorschlag

Huffman-Kodierung. Fachbereich Medieninformatik. Hochschule Harz. Huffman-Kodierung. Referat. Henner Wöhler. Abgabe:

Praktikum Algorithmische Anwendungen WS 2006/07 Ausarbeitung: Schnelle Stringsuchalgorithmen Boyer-Moore und Knuth-Morris-Pratt

Kapitel 12: Induktive

Textkompression: Burrows-Wheeler-Transformation

Algorithmen und Datenstrukturen

Farb-Fernsehsignal (Composite FBAS)

Optimalcodierung. Thema: Optimalcodierung. Ziele

Programmierpraktikum WS 13/14

String - Matching. Kapitel Definition

Untersuchung des Huffman- Algorithmus auf seine Effizienz

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

2. Repräsentation und Codierung von Daten. Klassen von Codierverfahren

Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14

Kryptographie und Codierung für den Mathematikunterricht

Arithmetisches Codieren

8.4 Suffixbäume. Anwendungen: Information Retrieval, Bioinformatik (Suche in Sequenzen) Veranschaulichung: DNA-Sequenzen

Repetitive Strukturen

Algorithmische Bioinformatik

Sachauseinandersetzung und Begründung der Auswahl

Codierungstheorie Teil 1: Fehlererkennung und -behebung

Rechnernetze Übung 5. Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai Wo sind wir?

Klausur Software-Entwicklung März 01

Grundbegriffe der Informatik

Greedy Algorithmen. Grundlegendes. Organisatorisches. VL-21: Greedy Algorithmen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

Computer Science Unplugged Algorithmen zur Textkompression

Methoden für den Entwurf von Algorithmen

Entropie. Um der Begriff der Entropie zu erläutern brauchen wir erst mal einige Definitionen, z.b.

Transkript:

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 estplatte Strings über ASCII-Alphabet Text: Suche einen bestimmten Abschnitt auf einem Genom Strings im Alphabet {A,D,G,T} i I S C H E R S R I T Z I S C H T I S C H E S C A M P I k Gesuchtes Muster

Boyer-Moore die Idee I S C H T Durchlaufe Muster von hinten nach vorn k = musterlänge-1 Vergleiche mit dem Text text[i+k] == muster[k] Bei ehlschlag schiebe Muster um Distanz d nach rechts d[e] = 6 Distanzen: d[c] = 2 A 6 B 6 C 2 D 6 E 6 5 Text: I S C H E R R I T Z I S C H T I S I S C H T I S C H T I S C H T E kommt im Muster ISCHT nicht vor d[e] = 6 T kommt im Muster ISCHT nicht nochmal vor d[t] = 6 I S C H T C kommt zwei Positionen vor Ende vor d[c] = 2

Boyer-Moore E R S R I T Z I S C H T Berechne Sprungtabelle: d[z] = Abstand von z vom rechten Ende des Musters bzw. Musterlänge Laufe durch den Textstring i = 0 A 6 B 6 C 2 D 6 E 6 5 Laufe rückwärts durch Muster k = musterlänge-1 Vergleiche text[i+k] mit muster[k] alls verschieden, verschiebe Muster um Distanz d[text[i+musterlänge-1]]

Textkompression In ASCII und UNICODE: Jedes Zeichen verbraucht gleich viel Speicherplatz Ein e verbraucht genauso viel Speicherplatz wie ein q Im Morsealphabet : Häufig benutzte Zeichen haben kurzen Morsecode e, t, a, i, m, n, Selten benutzte Zeichen längeren j, q, y, a.-.- j.---.--- s...... b -... -... k -.- -.- t - c -.-. -.-. l.-...-.. u..-..- d -.. -.. m -- -- v...-...- e. n -. -. w.--.-- f..-...-. o --- --- x -..- -..- g --. --. p.--..--. y -.-- -.-- h...... q --.- --.- z --.. --.. i.... r.-..-.

Dekodierbarkeit - Präfixcodes Wörter aus Morsecode sind nicht eindeutig dekodierbar a b a k u s.--...--.-..-... p s g x s Notwendig und hinreichend für Dekodierbarkeit (ohne Vorausschau): Kein Codewort darf Präfix (Anfangsstück) eines anderen Codeworts sein Solche Codes heißen Präfixcodes Morsecode ist kein Präfixcode:.- ist Präfix von.--. Morsecode benutzt zusätzliches Trennzeichen: Pause.

Huffman Codes Präfix Codes, bei denen häufig benutzte Zeichen kurze Codewörter haben Beispiel: a a 1100 1100 j j 000011 000011 s s 01110 01110 b b 00101 00101 k k 000010 000010 t t 1101 1101 c c 01011 01011 l l 01100 01100 u u 01010 01010 d d 01101 01101 m m 01001 01001 v v 00010 00010 e e 111 111 n n 1010 1010 w w 00100 00100 f f 01000 01000 o o 1011 1011 x x 000001 000001 g g 00011 00011 p p 00111 00111 y y 00110 00110 h h 01111 01111 q q 0000001 0000001 z z 000000 000000 i i 1000 1000 r r 1001 1001 Jede olge von Codeworten ist auch ohne Trennzeichen eindeutig dekodierbar 11000010111000000100101001110 a b a k u s

Konstruktion eines Huffman Codes Betrachte kleines Alphabet [a.. f] mit Häufigkeitstabelle a b c d e f 0,2 0,05 0,04 0,16 0,4 0,15 Die seltensten Zeichen: b und c müssen sich in einem Bit (z.b. dem letzten) unterscheiden. Codiere : b =?0 und c =?1? steht hier für das abstrakte Zeichen b oder c Neue Häufigkeitsverteilung a? d e f 0,2 0,09 0,16 0,4 0,15 Die beiden seltensten Zeichen jetzt :? und f Codiere:? = #0 und f = #1 # steht für das neue abstrakte Zeichen? oder f Häufigkeit von # : 0,09 + 0,15 = 0,24 a b?0?0 c?1?1 d e f a b #00 #00 c #01 #01 d e f #1 #1

Huffman-Baum Es entsteht ein Baum Knoten sind die Zeichen (bzw. abstrakten Zeichen) mit ihren Häufigkeiten Codeworte sind die Baumadressen 0 linker Teilbaum 1 rechter Teilbaum 0,6 1,0 0 1 0 1 a 000 000 b 0100 0100 c 0101 0101 d 001 001 e 1 f 011 011 a 0,24 0 1 0,36 0,09 0 1 0 1 d f b c f e 0,2 0,16 0,05 0,04 0,15 0,4

Decodierung und Kompressionsrate Benutze man den Code als Wegweiser in den Baum 0 : in den linken Teilbaum 1 : in den rechten Teilbaum Am Blatt wurde das erste Zeichen erkannt. Schneide es ab und steige wieder in den Baum ein Beispiel 01001000001 0100 b 1 e 000 a 011 f a 000 000 b 0100 0100 c 0101 0101 d 001 001 e 1 f 011 011 1,0 0 1 0,6 0 1 0,24 0 1 0,36 0,09 0 1 0 1 a d b c f e 0,2 0,16 0,05 0,04 0,15 0,4

Kompressionsrate Angenommene Häufigkeitstabelle a b c d e f 0,2 0,05 0,04 0,16 0,4 0,15 Länge der Codeworte: a b c d e f 3 4 4 3 1 3 a 000 000 b 0100 0100 c 0101 0101 d 001 001 e 1 f 011 011 Durchschnittlicher Platzverbrauch pro Zeichen : 3 0.2 + 4 0.05 + 4 0.04 + 3 0.16 + 1 0.4 + 3 0.15 = 2.29 Bit

Adaptive Codes Kompressionsrate länge(quellstring) / länge(codestring) hängt ab von Güte der Häufigkeitsschätzung Häufigkeiten hängen ab von Mehrpass Codes analysieren das Dokument bestimmen Häufigkeiten codieren fügen Häufigkeitstabelle dem codierten Dokument bei Adaptive Codes Art des Textes Programmcode Dokumentencodierung Text Sprache Englisch (e ist häufigster Buchstabe) innisch (viele Vokale) Tschechisch, Polnisch (viele Konsonanten) ein-pass Codes starten mit initialer Schätzung adaptieren Schätzung während der Codierung Huffman-Baum ändert sich beim Codieren analog beim Dekodieren Adaptive Codes sind lernende Codes Ergebnis kann besser sein kann schlechter sein als bei statischer Codierung Der englische Schriftsteller Ernest Vincent Wright schrieb einen Roman Gadsby in dem kein einziges e vorkommt.