Kompression: Lempel/Ziv-Algorithmen

Größe: px
Ab Seite anzeigen:

Download "Kompression: Lempel/Ziv-Algorithmen"

Transkript

1 Unversität Koblenz-Landau Abteilung Koblenz Fachbereich Informatik Dipl.-Inf. Jörg Müller Proseminar WS 2000/2001 Algorithmen Kompression: Lempel/Ziv-Algorithmen 9. Januar 2001 Tobias Koch tkoch/

2 INHALTSVERZEICHNIS i Inhaltsverzeichnis 1 Familie der Lempel/Ziv-Algorithmen Ursprung Gemeinsamkeiten LZ Der Algorithmus Nachteile von LZ LZSS Unterschiede zu LZ Der Algorithmus Nachteile von LZSS LZ Der Algorithmus Nachteile von LZ LZW Unterschiede zu LZ Der Algorithmus Burrows-Wheeler-Transformation 13 Literaturverzeichnis 16

3 1 FAMILIE DER LEMPEL/ZIV-ALGORITHMEN 1 1 Familie der Lempel/Ziv-Algorithmen Diese Ausarbeitung entstand während des Wintersemesters 2000/2001 im Rahmen eines Proseminars im Studiengang Informatik an der Universität Koblenz-Landau. Das Thema der Arbeit ist eine Vorstellung der Lempel/Ziv-Algorithmen. 1.1 Ursprung Ihren Anfang hat die moderne Komprimierung im Jahre Abraham Lempel und Jacob Ziv veröffentlichten in einem Magazin des IEEE (Institute of Electrical and Electronics Engineers) einen ersten Algorithmus (LZ77 ) zu diesem Thema. Dieser war einfach konzeptioniert und hätte schon vor 1977 implementiert werden können. Allerdings hatten die bisherigen Bemühungen in die Verbesserung der Huffman-Codierung einer Entwicklung in diese Richtung entgegengewirkt. LZ77 bildet eine Grundlage für eine ganze Familie von Algorithmen: die Lempel/Ziv- Algorithmen (im Folgenden LZ-Algorithmen genannt). Diese entstanden durch Verbesserungen des ursprünglichen Algorithmus und durch Anpassung an spezielle Anforderungen (Kompression von Text, Bildern etc.). 1.2 Gemeinsamkeiten Aufgrund des oben genannten gemeinsamen Ursprungs dieser Algorithmen besitzen sie alle die folgenden Eigenschaften: verlustfreie Kompression alle Informationen, die bei der Dekompression benötigt werden, werden während des Dekompressionsvorgangs gewonnen Eine weitere Gemeinsamkeit liegt in ihrem Funktionsprinzip. Um dieses zu verstehen, muss erwähnt werden, dass jede Eingabe einen gewissen Grad an Redundanz aufweist. Das heisst, es existieren sich wiederholende Zeichenketten innerhalb der Eingabe. Diese Redundanz ist natürlich von der Art der Eingabedaten abhängig. In Texten treten bestimmte Wörter immer wieder auf, in Bilddaten ergeben sich oft Ketten aus gleichen aufeinanderfolgenden Zeichen. Daher wurden für die verschiedene Anwendungsgebiete spezielle Algorithmen entwickelt. Die LZ-Algorithmen ersetzen ein erneutes Auftreten einer Zeichenkette durch eine Referenz auf ihr erstmaliges Auftreten. Sie werden auch substituierende Kompressoren genannt. Man kann die beiden folgenden Gruppen unterscheiden:

4 2 LZ Die zu komprimierende Zeichenfolge wird in dem bereits abgearbeiteten Teil gesucht. Bei Erfolg wird statt der Zeichenfolge selbst ein Zeiger auf das vorige Auftreten gespeichert. Die bereits bearbeitete Datenmenge stellt also das Wörterbuch für die weitere Kompression dar. Alle auf LZ77 basierenden Algorithmen gehören zu dieser Gruppe. 2. Die Algorithmen der zweiten Gruppen erzeugen ein Wörterbuch aus Folgen, die in den Ursprungsdaten vorliegen. Wird eine Zeichenfolge nochmals gefunden, so wird nur deren Index abgespeichert. Der Vorteil ist, dass das Wörterbuch während der Dekompression wieder erzeugt werden kann. Hierzu zählen alle Ableitungen von LZ78. Innerhalb dieser Ausarbeitung werden nun vier Algorithmen dieser Familie näher erläutert: 2 LZ77 LZ77 ist der erste von Lempel und Ziv entwickelte Algorithmus. 2.1 Der Algorithmus Die Hauptdatenstruktur in LZ77 ist ein zweigeteiltes Datenfenster. Den ersten Teil bildet ein Block, der bereits abgearbeite Daten enthält. Ein Puffer stellt den zweiten Teil dar. In ihm befinden sich eingelesene Daten, die noch codiert werden müssen....abaabcbcbcbcaabbcabcbabbcbbbabcaaaabcbbcc... Fensterkörper Puffer Abbildung 1: Datenfenster über Eingabedaten Das Datenfenster erstreckt sich nicht über die gesamten bisher bearbeiteten Daten, da es zu viel Rechenzeit in Anspruch nehmen würde, die kompletten Daten nach Übereinstimmungen zu durchsuchen. Allgemein hat es eine Grösse von ca. tausend Zeichen. Somit liegen nur die letzten n Zeichen als Wörterbuch vor. Der Puffer ist mit zehn bis hundert Zeichen wesentlich kleiner. Das Datenfenster bewegt sich (in Pfeilrichtung) über die Eingabedaten.

5 2 LZ77 3 Natürlichsprachlich läßt sich die Arbeitsweise des Algorithmus folgendermaßen formulieren: 1. Bewege den Puffer auf den Anfang (Position 0) der Eingabedaten. Der Fensterkörper befindet sich also zu Beginn nicht über der Eingabe. 2. Suche im Fensterkörper die längste Übereinstimmung mit der Zeichenkette im Puffer. 3. Gib den Zeiger (Position, Länge) auf die gefundene Zeichenkette im Fensterkörper und das erste nicht übereinstimmende Zeichen im Puffer aus. 4. Ist das Ende der Eingabedaten noch nicht erreicht, so bewege das Datenfenster um die Länge der gefundenen Zeichenkette+1 weiter. Fahre mit Schritt 2 fort. Betrachten wir dies anhand eines Beispiels: Ausgabe AABCCBBABAACCCBCABACBBCAABCCBA AABCCBBABAACCCBCABACBBCAABCCBA AABCCBBABAACCCBCABACBBCAABCCBA AABCCBBABAACCCBCABACBBCAABCCBA AABCCBBABAACCCBCABACBBCAABCCBA AABCCBBABAACCCBCABACBBCAABCCBA (0,1,C) (1,3,C) (1,3,C) (4,1,B) (3,2,A) (6,2,C) Abbildung 2: Beispiel LZ77 Im ersten Schritt ist die längste gefundene Übereinstimmung nur das Zeichen A an Position 0 im Fensterkörper. Es wird also die Position 0, die Länge 1 und das nachfolgende Zeichen C ausgegeben. Nachdem das Textfenster weiterbewegt wurde, wird die nächste Übereinstimmung gesucht. Es wird die Zeichenkette CCB gefunden. Diese befindet sich an Position 1, besitzt die Länge 3 und auf sie folgt das Zeichen C. Der Algorithmus wird nun fortgeführt, nachdem das Textfenster wieder weiter über die Eingabedaten bewegt wurde. Die Ausgabe des Algorithmus ist also ein Tripel aus dem Index der gefundenen Zeichenkette, ihrer Länge und dem ersten nicht übereinstimmenden Zeichen. Dieses

6 2 LZ77 4 muss übergeben werden, da die Möglichkeit besteht, dass keine Übereinstimmung gefunden wird. Der leere Zeiger (0,0), der eine leere Zeichenkette repräsentiert, da die Länge 0 ist, reicht dann nicht aus. Der Index bezieht sich auf die Postion im aktuellen Datenfenster, nicht auf die Position in der kompletten Eingabe. Daher muss dem Dekompressionsalgorithmus auch die Grösse des benutzten Datenfensters mitgeteilt werden. Die Dekompression ist noch einfacher. Ein Tupel wird eingelesen, die dadurch codierte Phrase und das darauffolgende Zeichen werden ausgegeben. Jetzt wird das Textfenster weitergeschoben und der Vorgang wird wiederholt. Dies benötigt weniger Rechenzeit, da keine Vergleichsoperationen durchgeführt werden müssen. 2.2 Nachteile von LZ77 Hier die Nachteile von LZ77 im Überblick: 1. Der Kompressionsgrad ist von der Größe des Datenfensters abhängig. Je größer das Datenfenster allerdings gewählt wird, desto mehr Vergleichsoperationen sind notwendig. 2. Wird keine Übereinstimmung gefunden, so wird mehr Speicherplatz zur Abspeicherung des Tupels benötigt als für das ursprüngliche Zeichen. Was sind nun die Ursachen für diese Probleme: 1. Bei der Codierung erfolgt eine Stringvergleichsoperation jeder Position im Datenfenster mit dem Pufferinhalt. Durch Vergrößerung des Fensters steht ein größeres Wörterbuch zur Verfügung, wodurch wiederum der Grad der Kompression erhöht wird. Nun sind aber mehr Vergleichsoperationen notwendig, was eine höhere Rechenzeit zur Folge hat. 2. Nehmen wir an, der Algorithmus benutzt ein 4096 Bytes großen Fensterkörper und einen sechzehn Byte großen Puffer. So werden zur Codierung zwölf Bit (2 12 = 4096) für die Position und vier Bit (2 4 = 16) für die Länge benötigt. Weitere 8 Bit entfallen auf die Codierung des nachfolgenden Zeichens. Dies bedeutet pro Tupel werden 24 Bit genutzt. Der beste Fall ergibt sich, wenn n 1 Zeichen des Pufferinhalts (n := Länge des Puffers) im Datenfenster gefunden werden. In o.a. Fall werden dann sechzehn Bytes (128 Bit) auf 24 Bit abgebildet. Wird nun aber keine Übereinstimmung gefunden, so stellt dies den schlechtesten Fall (worst case) dar. Ein Zeichen (8 Bit) muss nun durch den leeren Zeiger (0,0) und das Zeichen selbst, also insgesamt 24 Bit, abgebildet werden. Es entsteht ein Overhead von 16 Bit.

7 3 LZSS 5 3 LZSS LZSS wurde im Jahr 1982 von Storer und Szymanski als Weiterentwicklung von LZ77 veröffentlicht. Es wurde versucht, Ausführungsgeschwindigkeits- und Effektivitätsprobleme von LZ77 zu verbessern. 3.1 Unterschiede zu LZ77 In LZSS existiert ebenso ein Datenfenster, welches sich in zwei Teile unterteilt. Das Datenfenster von LZ77 verwaltet den bereits abgearbeiteten Teil als fortlaufenden Text ohne weitere Organisation. Bei LZSS wurde dieser Teil um einen binären Suchbaum erweitert. Beim Bearbeiten der Daten wird bereits codierter Text in diese Baumstruktur eingefügt. Dadurch ist der Aufwand der Stringvergleichsoperationen nicht mehr proportional zum Produkt aus Fenstergröße und Phrasenlänge, sondern zum Logarithmus (mit Basis 2) dieses Produktes. Die zweite Veränderung wurde an der Ausgabe des Algorithmus vorgenommen. LZ77 muss bei keiner Übereinstimmung dennoch das komplette Tupel aus leerem Zeiger und dem Zeichen selbst abspeichern. LZSS unterscheidet nun aber: Es wird entweder ein Zeiger auf ein voheriges Vorkommen oder das Zeichen selbst abgespeichert. Dazu wird das Tupel um ein Bit erweitert, in welchem festgelegt wird, ob es sich um ein Tupel (Index, Länge) oder um ein einzelnes Zeichen handelt. Dies reduziert den Overhead auf ein Bit pro Zeichen. Eine Abspeicherung als Zeiger ist also erst vorteilhaft, wenn die Länge des Zeigers kleiner ist als die Länge der Übereinstimmung. 3.2 Der Algorithmus Aufgrund des Umfangs wird auf die Darstellung von Quellcode verzichtet und der Algorithmus natürlichsprachlich formuliert: 1. Bewege den Puffer auf den Anfang (Position 0) der Eingabedaten. 2. Suche im Fensterkörper mit Hilfe des Baumes die längste Übereinstimmung mit der Zeichenkette im Puffer. 3. Ist die Länge der Übereinstimmung der Länge des Zeigers? TRUE: Speichere das Tupel (Position, Länge der Übereinstimmung) und bewege das Textfenster um die Länge der Übereinstimmung weiter. FALSE: Speichere das erste Zeichen des Puffers und bewege das Textfenster um eine Position weiter.

8 3 LZSS 6 4. Ist das Ende der Eingabedaten noch nicht erreicht, so fahre mit Schritt 2 fort. Die Dekompression läuft analog zu LZ77 ab. Nur wird zunächst noch ausgewertet, ob es sich um einen Zeiger oder um ein einzelnes Zeichen handelt. 3.3 Nachteile von LZSS Bei bestimmten Zeichenfolgen ergibt sich ein Nachteil, wenn sie in den binären Baum eingebunden werden. Nehmen wir an, der Algorithmus erhält die Zeichenfolge ABCDEFGHIJKLMNOP als Eingabe, so ergibt sich der Baum aus Abbildung 3. ABCDEFG BCDEFGH CDEFGHI DEFGHIJ EFGHIJK FGHIJKL GHIJKLM... Abbildung 3: Ungünstige Baumstruktur in LZSS Der Baum wird zu einer verknüpften Liste, da kein Zeichen mehrfach vorkommt und diese bereits ansteigend angeordnet sind. In einer Liste, die dieser Baum nun darstellt, gestaltet sich die Suche nach einem String sehr ungünstig. Ein weiterer Nachteil ist der Komprimierungsgrad am Anfang der Eingabe. Hier ist dieser sehr gering, da noch keinerlei Daten im Datenfenster vorliegen. Als Verbesserung füllt man daher das Datenfenster zu Beginn mit 256 Strings. Diese enthalten 16 aufeinanderfolgende Sequenzen aller Symbole des Alphabets.

9 4 LZ LZ78 LZ77 und darauf aufbauende Algorithmen weisen einen großen Mangel auf: das Datenfenster, in dem nach vorhandenen Strings gesucht wird, beinhaltet immer nur die letzten n Zeichen. Das heisst, Zeichenfolgen, die jetzt ausserhalb des Datenfensters liegen und nochmals auftreten, können nicht mehr durch einen Zeiger codiert werden. Ebenso kann ein String, der gefunden wird, maximal die Länge des Puffers 1 besitzen, obwohl möglicherweise eine längere Übereinstimmung gefunden worden wäre. Eine Vergrösserung des Datenfensters hätte aber zur Folge, dass auch die Größe des zu speichernden Tupels zunimmt, da sowohl Index als auch Länge der gefundenen Zeichenkette größere Werte annehmen können. Ausserdem entsteht eine viel höhere Rechenzeit, da diese direkt proportional zur Länge des Fensters und des Puffers ist. Ziv und Lempel entwickelten aufgrund dieser Probleme 1978 einen weiteren Algorithmus: LZ Der Algorithmus In LZ78 gibt es kein Datenfenster. Es wird eine potentiell unbegrenzte Tabelle/Liste aller vorher eingelesen Phrasen gebildet. Die Ausgabe besteht aus dem Code für eine Phrase und einem Zeichen, das auf die Phrase folgt. Zu Beginn ist sowohl beim Kompressions- als auch beim Dekompressionsvorgang die Tabelle fast leer. Sie enthält nur einen leeren String, den Null-String. Der Algorithmus soll wieder natürlichsprachlich dargestellt werden: 1. Zu Beginn sind Präfix und Wörterbuch leer. 2. Z := nächstes eingelesenes Zeichen 3. Ist Präfix Z im Wörterbuch zu finden? TRUE: Präfix = Präfix Z FALSE: Tue: (a) Gib den Wörterbuchcode von Präfix und das Zeichen Z aus. (b) Füge Präfix Z dem Wörterbuch hinzu. (c) Leere Präfix. 4. Ist das Ende der Eingabe erreicht?

10 4 LZ78 8 FALSE: Fahre mit Schritt 2 fort. TRUE: Sollte Präfix nicht leer sein, so gib den Wörterbuchcode von Präfix aus. Das Beispiel aus Tabelle 1 soll dies nun veranschaulichen: Eingabetext: DAD DADA DADDY DADO... Code Ausgabezeichen Codierter String 0 D D 0 A A 1 D 1 A DA 4 DA 4 D DAD 1 Y DY 0 6 O DADO Tabelle 1: Beispiel LZ78 Zu Beginn steht nur der leere String an Position 0 im Wörterbuch. D wird eingelesen, aber es steht noch nicht im Wörterbuch. Also wird Code 0 (Position des leeren Strings) und D selbst ausgegeben. Gleichzeitig wird D an Position 1 des Wörterbuchs hinzugefügt. Gleichermaßen vollzieht es sich mit A. Dann wird ein D eingelesen. Dieses wird an Position 1 gefunden. Das nächste Zeichen wird eingelesen. D findet sich nicht im Wörterbuch. Die Position von D (1) und werden ausgegeben. D wird im Wörterbuch gespeichert. Das Wörterbuch hat nach dem Durchlauf des Beispiels den in Tabelle 2 angegebenen Inhalt. Bei der Größe der Phrasentabelle muss darauf geachten werden, dass folgende Größen möglichst wenig zunehmen: 1. die Anzahl der Bits, die im Ausgabe-Tupel verwendet werden 2. die Rechenzeit zur Verwaltung der Tabelle Bei der Dekompression muss das Wörterbuch analog zum Kompressionsvorgang aufgebaut werden. Nach der Dekompression ist das entstandene Wörterbuch identisch zu jenem das bei der Kompression erzeugt wurde. Der Dekompressionalgorithmus in Einzelschritten: 1. Zu Beginn ist das Wörterbuch leer

11 4 LZ78 9 Positon Phrase 0 1 D 2 A 3 D 4 DA 5 DA 6 DAD 7 DY 8 9 DADO Tabelle 2: Wörterbuchinhalt nach Ausführung des Beispiels 2. C := der nächste eingelesene Phrasenindex aus dem Code-Tupel 3. Z := das darauffolgende Zeichen aus dem Code-Tupel 4. Gib die durch C dargestellte Phrase aus dem Wörterbuch und Z aus 5. Trage C Z ins Wörterbuch ein 6. Ist das Ende der Eingabedaten noch nicht erreicht, fahre mit Schritt 2 fort Führen wir diesen Algorithmus mit der oben komprimierten Zeichenfolge durch: Eingelesenes Tupel Codierte Phrase Zeichen Wörterbucheintrag (0, D ) D D (0, A ) A A (1, ) D D (1, A ) D A DA (4, ) DA DA (4, D ) DA D DAD (1, Y ) D Y DY (0, ) (6, O ) DAD O DADO Tabelle 3: Beispiel Dekompression mit LZ78

12 4 LZ Nachteile von LZ78 Die Verwaltung der Tabelle in LZ78 stellt eine Schwierigkeit dar. Wählt man für den Phrasenindex eine Größe von 16 Bit, so können maximal (2 16 ) Phrasen einschließlich des Null-Strings aufgenommen werden. Auch in LZ78 werden die Phrasen in einem Baum - allerdings kein binärer Baum - verwaltet. Der Null-String bildet hierbei mit Index 0 die Wurzel. Wird ein neues Zeichen dem Null-String hinzugefügt, so wird es zu einem neuen Zweig des Baumes und erhält eine neue Knotennummer. Der Baum des verwendeten Beispiels hat die in Abbildung 4 ersichtliche Struktur. (8, ) (2, A ) (1, D ) 0 (3, ) (4, A ) (7, Y ) (5, ) (6, D ) (9, O ) Abbildung 4: LZ78-Tabellenbaum Das größte Problem der Baumstrukturen in LZ78 besteht in der potentiell großen Anzahl von Zweigen. Legt man z.b. ein 8-Bit-Alphabet zugrunde, so kann jeder Knoten bis zu 256 Zweige besitzen. Um dies mit möglichst wenig Speicherverbrauch zu bewerkstelligen, werden die Zweige eines jeden Knoten in einer Indexliste verwaltet. Diese ist nicht länger als die tatsächliche Anzahl der Verzweigungen. Was sollte nun aber geschehen, wenn die Tabelle voll ist, also z.b Phrasen eingefügt worden sind? Die einfachste Möglichkeit wäre, keine weiteren Phrasen in die Tabelle aufzunehmen. Dies ist aber in der Praxis unvorteilhaft, da es sehr große Unterschiede in der Natur der eingelesenen Zeichen gibt. So ist beispielsweise der Codebereich eines compilierten Programms anders aufgebaut als sein Datenbereich. Dieses Problem wurde z.b. dadurch gelöst, dass der Grad der Kompression ständig überwacht wird. Wird der Komprimierungsgrad zu schlecht, wird die Tabelle gelöscht und eine neue Tabelle aufgebaut. Das Unix-Programm compress nutzt diese Lösung.

13 5 LZW 11 Ein weiterer Nachteil von LZ78 gegenüber LZ77 ist, dass auch das Dekompressionsprogramm diesen Baum aufbauen muss. Bei LZ77 handelte es sich lediglich um einen Zeiger auf die vorherige Position im Datenfenster. 5 LZW LZW ist eine von Terry Welch im Jahr 1984 veröffentlichte Weiterentwicklung von LZ78. LZW liegt vielen heute benutzten Packprogramm wie compress oder zip zugrunde. Ebenso wird der Algorithmus im Grafikformat gif verwendet. 5.1 Unterschiede zu LZ78 Der Vorteil von LZW gegenüber LZ78 ist, dass niemals Einzelzeichen kodiert werden müssen. Dies geschieht dadurch, dass zunächst für jedes in der Eingabe vorkommende Zeichen ein Wörterbucheintrag vorgenommen wird. Daraus ergeben sich folgende Konsequenzen: Es muss nur noch nach Strings aus mindestens zwei Zeichen gesucht werden. Das erste Zeichen der nächsten zu suchenden Zeichenkette ist das letzte der zuvor abgearbeiteten Zeichenkette. Dies ist notwendig, damit der Dekodierungsalgorithmus das Wörterbuch korrekt aufbauen kann. 5.2 Der Algorithmus De-/Kompression werden analog zu LZ78 durchgeführt. Der Kompressionsvorgang kann folgendermaßen beschrieben werden: 1. Zu Beginn enthält das Wörterbuch alle Einzelzeichen der Eingabe. Der Präfix ist leer. 2. C := das nächste Zeichen der Eingabe 3. Ist Präfix C im Wörterbuch vorhanden? TRUE: Präfix := Präfix C FALSE: Tue: (a) Gib den Wörterbuchindex von Präfix aus. (b) Füge Präfix C dem Wörterbuch hinzu. (c) Präfix := C 4. Ist das Ende der Eingabe erreicht?

14 5 LZW 12 FALSE: Fahre mit Schritt 2 fort. TRUE: Gib den Wörterbuchindex von Präfix aus. Hierzu wieder ein Beispiel: Das Wörterbuch enthält an den Stellen bereits alle möglichen Einzelzeichen eines 8-Bit-Alphabets! Eingabetext: DAD DADA DADDY DADO... Zeicheneingabe Ausgegebener Code Wörterbucheintrag DA < D > 256= DA AD < A > 257= AD D < D > 258= D DAD = DAD DA = DA D < > 261= D DADD = DADD DY < D > 263= Y Y = Y DA = DA ADO = ADO O < O > Tabelle 4: Beispiel LZW < D > repräsentiert den Wörterbuchindex des Zeichen D. Bei der Dekodierung ergibt sich die Problematik, dass kein Zeichen mehr im LZW- Code angegeben wird. Das Dekodierungsprogramm muss aber dennoch das Wörterbuch korrekt aufbauen können. Dies wird dadurch erreicht, dass das erste Zeichen eines neuen Wörterbucheintrags identisch sein muss mit dem letzten Zeichen des vorherigen Eintrags. Der Dekodierer ist dadurch aber einen Schritt langsamer als der Kodierer, da er ja zunächst das erste Zeichen des nächsten Codes ermitteln muss. Tritt in den Eingabedaten nun aber die Zeichenfolge ZwZ auf, wobei Z ein beliebiges Zeichen und w eine beliebige Zeichenfolge seien, so wird ein Code eingelesen, der noch nicht im Wörterbuch existiert. Da aber die Zeichenkette Zw schon eingetragen sein muss, ist es nur notwendig, die letzte Zeichenkette konkateniert mit ihrem ersten Zeichen - also ZwZ - auszugeben. In natürlichsprachlicher Formulierung läßt sich der Algorithmus zur Dekompression folgendermaßen ausdrücken:

15 6 BURROWS-WHEELER-TRANSFORMATION Zu Beginn enthält das Wörterbuch alle Einzelzeichen der Eingabe. 2. C 1 := erster Code aus der Eingabe. 3. Gib den Wörterbucheintrag von C 1 aus. 4. C 2 = C 1 5. C 1 := nächster Code aus der Eingabe. 6. Ist die Phrase von C 1 im Wörterbuch enthalten? TRUE: Tue: (a) Gib die Phrase von C 1 aus. (b) Präfix := Phrase von C 2. (c) Z := erstes Zeichen von Präfix. (d) Füge Präfix Z dem Wörterbuch hinzu. FALSE: Tue: (a) Präfix := Phrase von C 2. (b) Z := erstes Zeichen von Präfix. (c) Gib Präfix Z aus und füge es dem Wörterbuch hinzu. 7. Ist das Ende der Eingabe erreicht? FALSE: Fahre mit Schritt 4 fort. TRUE: Gib den Wörterbuchindex von Präfix aus. 6 Burrows-Wheeler-Transformation Ein Nachteil der LZW- und auch anderer Kompressionsalgorithmen ist, dass die Kompressionsrate fällt, sobald sich die Eigenschaften der Eingabedaten ändert. Mit der Burrows-Wheeler-Tranfsformation (BWT) besteht nun die Möglichkeit beliebig lange Kontexte für das Vohersagen des nächsten Zeichens zu verwenden. BWT wurde erstmals im Mai 1994 von Michael Burrows und David Wheeler veröffentlicht. BWT betrachtet die Eingabe nicht als Eingabestrom, sondern blockweise. Der Block wird in einer quadratischen Matrix dargestellt (siehe Tabelle 5). Diese wird nun alphabetisch sortiert (siehe Tabelle 6), so dass die erste Spalte

16 6 BURROWS-WHEELER-TRANSFORMATION 14 H A L L O H A L L 0 A L L O H A L L 0 H L L O H A L L 0 H A L O H A L L O H A L O H A L L O H A L L H A L L O H A L L O A L L O H A L L O H L L O H A L L O H A L O H A L L O H A L O H A L L O H A L L Tabelle 5: Beispiel einer quadratischen Matrix von HALLOHALLO A L L O H A L L 0 H A L L O H A L L 0 H H A L L O H A L L 0 H A L L O H A L L 0 L L O H A L L 0 H A L L O H A L L 0 H A L O H A L L O H A L L O H A L L O H A L O H A L L O H A L L O H A L L O H A L L Tabelle 6: Sortierte quadratische Matrix von HALLOHALLO

17 6 BURROWS-WHEELER-TRANSFORMATION 15 nun in alphabetischer Reihenfolge vorliegt und die letzte Spalte jeweils den Buchstaben, der dem String in der gleichen Zeile vorangeht, enthält. Geht man nun davon aus, dass jeder String in den einzelnen Zeilen der Matrix einen Kontext zu dem Buchstaben in der letzten Spalte bildet, so fällt Folgendes auf: Aufgrund der alphabetischen Sortierung stehen ähnliche Kontexte beieinander. Einem ähnlichen Kontext geht aber auch meist ein gleicher Buchstabe voraus. Zum Beispiel steht vor der Zeichenfolge hat im Englischen meist ein t, ein w oder ein Leerzeichen. Diese vorangehenden Buchstaben befinden sich nun aber - wie schon angemerkt - in der letzten Spalte, wodurch sich ergibt, dass dort meist gleiche Buchstaben aufeinanderfolgen. Die Ausgabe des Algorithmus besteht aus der letzten Spalte und der Position des Ausgangsstrings in der Matrix. Ohne dies zu zeigen, sei nun angebenen, dass sich hieraus wieder der ursprüngliche String herstellen lässt. In dieser Ausgabe befinden sich also lange Folgen gleicher Zeichen, welche kurz durch andere Zeichen unterbrochen werden. Eine solche Folge lässt sich nun z.b. mit einem der eingeführten LZ-Algorithmen optimal komprimieren. Mit BWT hat sich gezeigt, dass es auch auf Gebieten, in denen lange Zeit keine neuen Entdeckungen hervorgebracht wurden, immer wieder neue und einfache Lösungsansätze gibt.

18 LITERATUR 16 Literatur [1] Mark Nelson. Datenkomprimierung: effiziente Algorithmen in C. Heise Verlag, 1993 [2] Data compression reference center. [3] Michael Tamm. Packen wie noch nie - Datenkompression mit dem BWT- Algorithmus. c t - Magazin für Computertechnik, Ausgabe 16/2000, S Heise Verlag

Der LZ77 Algorithmus. von. Stefan Mühlinghaus Matrikelnummer: 11033988 Benutzerkennung: ai495

Der LZ77 Algorithmus. von. Stefan Mühlinghaus Matrikelnummer: 11033988 Benutzerkennung: ai495 Der LZ77 Algorithmus von Stefan Mühlinghaus Matrikelnummer: 11033988 Benutzerkennung: ai495 Über den Algorithmus: Der LZ77 Algorithmus wurde von seinen Erfindern Abraham Lempel und Jacob Ziv erstmalig

Mehr

Datenkompression: Lempel-Ziv-Codierung

Datenkompression: Lempel-Ziv-Codierung Gliederung 1) Einleitung 2) Abraham Lempel, Jacob Ziv, Terry Welch 3) Tabellengestützte Modellierung 4) LZ77 5) LZ78 6) LZW 7) Einsatzgebiete 8) Zusätzliche Erläuterungen 9) Quellen 1) Einleitung Aufgabe

Mehr

A2.3: Zur LZ78 Komprimierung

A2.3: Zur LZ78 Komprimierung A2.3: Zur LZ78 Komprimierung Im Gegensatz zur Entropiecodierung nach Huffman oder Shannon, bei der man die Quellenstatistik (möglichst genau) kennen muss, sind solche Einschränkungen bei den von Abraham

Mehr

Kodierungsalgorithmen

Kodierungsalgorithmen Kodierungsalgorithmen Komprimierung Verschlüsselung Komprimierung Zielsetzung: Reduktion der Speicherkapazität Schnellere Übertragung Prinzipien: Wiederholungen in den Eingabedaten kompakter speichern

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen 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

Mehr

Run Length Coding und Variable Length Coding

Run 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

Mehr

Praktikum BKSPP. Aufgabenblatt Nr. 1. 1 Umrechnung zwischen Stellenwertsystemen

Praktikum BKSPP. Aufgabenblatt Nr. 1. 1 Umrechnung zwischen Stellenwertsystemen Dr. David Sabel Institut für Informatik Fachbereich Informatik und Mathematik Johann Wolfgang Goethe-Universität Frankfurt am Main Praktikum BKSPP Sommersemester 21 Aufgabenblatt Nr. 1 Abgabe: Mittwoch,

Mehr

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 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

Mehr

Referat für Algorithmische Anwendungen WS 2006/ 07: Verlustfreie Datenkompression mit dem Deflate-Algorithmus (LZ77- und Huffman-Codierung)

Referat für Algorithmische Anwendungen WS 2006/ 07: Verlustfreie Datenkompression mit dem Deflate-Algorithmus (LZ77- und Huffman-Codierung) Referat für Algorithmische Anwendungen WS 2006/ 07: Verlustfreie Datenkompression mit dem Deflate-Algorithmus (LZ77- und Huffman-Codierung) Benedikt Arnold, 11041025, ai686@gm.fh-koeln.de Sebastian Bieker,

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine 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

Mehr

Kryptologie und Kodierungstheorie

Kryptologie und Kodierungstheorie Kryptologie und Kodierungstheorie Alexander May Horst Görtz Institut für IT-Sicherheit Ruhr-Universität Bochum Lehrerfortbildung 17.01.2012 Kryptologie Verschlüsselung, Substitution, Permutation 1 / 18

Mehr

15 Optimales Kodieren

15 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

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i

Mehr

3 Quellencodierung. 3.1 Einleitung

3 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

Mehr

Kompakte Graphmodelle handgezeichneter Bilder. Einbeziehung in Autentizierung und Bilderkennung

Kompakte Graphmodelle handgezeichneter Bilder. Einbeziehung in Autentizierung und Bilderkennung Kompakte Graphmodelle handgezeichneter Bilder Einbeziehung in Autentizierung und Bilderkennung Inhaltsverzeichnis 1 Einleitung Das graphische Model.1 Image Thinning................................. 3.

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Kodierung. Kodierung von Zeichen mit dem ASCII-Code

Kodierung. Kodierung von Zeichen mit dem ASCII-Code Kodierung Kodierung von Zeichen mit dem ASCII-Code Weiterführende Aspekte zur Kodierung: Speicherplatzsparende Codes Fehlererkennende und -korrigierende Codes Verschlüsselnde Codes Spezielle Codes, Beispiel

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Einführung in Kompressionstechniken

Einführung in Kompressionstechniken Einführung in Kompressionstechniken W. Kowarschick 7. Februar 997. November 9 W. Kowarschick Motivation Dateigrößen Text Vektorgraphiken Rasterbilder Tomographien Telephon CD-Stereo Bildfolgen VD7 VD7

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

10%, 7,57 kb 20%, 5,3 kb 30%, 4,33 kb 40%, 3,71 kb 50%, 3,34 kb. 60%, 2,97 kb 70%, 2,59 kb 80%, 2,15 kb 90%, 1,62 kb 99%, 1,09 kb

10%, 7,57 kb 20%, 5,3 kb 30%, 4,33 kb 40%, 3,71 kb 50%, 3,34 kb. 60%, 2,97 kb 70%, 2,59 kb 80%, 2,15 kb 90%, 1,62 kb 99%, 1,09 kb Die Komprimierung: Die Abkürzung JPG (oder auch JPEG) steht für "Joint Photographic Experts Group". Dieses Bildformat ist nach der Expertengruppe, die es erfunden hat, benannt. Die Komprimierung empfiehlt

Mehr

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Bearbeitungszeit: 270 Minuten Hilfsmittel: Wörterbuch zur deutschen Rechtschreibung Taschenrechner (nicht programmierbar, nicht grafikfähig) (Schüler,

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen 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.

Mehr

Waimea String Replacer

Waimea String Replacer Waimea String Replacer Eine benutzerfreundliche Software zum Ersetzen von Zeichenfolgen in Dateistapeln Version 3.0.0 12.03.2012 Waimea String Replacer Seite 2 1. Leistungsumfang Waimea String Replacer

Mehr

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von.

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von. HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG Fakultät Informatik Das Luzifer-Rätsel Prof. Dr. Hartmut Plesske Wintersemester 2008/09 von Max Nagl nagl@fh-konstanz.de Inhaltsverzeichnis Inhaltsverzeichnis

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

Präfx Trie zur Stringverarbeitung. Cheng Ying Sabine Laubichler Vasker Pokhrel

Präfx Trie zur Stringverarbeitung. Cheng Ying Sabine Laubichler Vasker Pokhrel Präfx Trie zur Stringverarbeitung Cheng Ying Sabine Laubichler Vasker Pokhrel Übersicht: Einführung Eigenschaften von Tries Verwendung von Tries Allgemeine Defnition von Patricia Tries Eigenschaften von

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013 Aufgabenblatt 3 18. November

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Mathematik für Information und Kommunikation

Mathematik 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

Mehr

13. Binäre Suchbäume

13. 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),

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

DIGITALE VIDEO KOMPRESSION AM BEISPIEL DES JPEG-VERFAHRENS

DIGITALE VIDEO KOMPRESSION AM BEISPIEL DES JPEG-VERFAHRENS 1 DIGITALE VIDEO KOMPRESSION AM BEISPIEL DES JPEG-VERFAHRENS Um das digitale Schneiden von digitalisierten Bildern zu ermöglichen, ist es notwendig, die drastisch hohe Datenmenge, die für jedes Bild gespeichert

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Kompakte Graphmodelle handgezeichneter Bilder

Kompakte Graphmodelle handgezeichneter Bilder Kompakte Graphmodelle handgezeichneter Bilder Einbeziehung in Authentizierung und Bilderkennung Inhaltsverzeichnis Seminar Mustererkennung WS 006/07 Autor: Stefan Lohs 1 Einleitung 1 Das graphische Modell.1

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

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

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Codierung Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Ein bisschen Informationstheorie Betrachten wir das folgende Problem: Wie lautet eine sinnvolle Definition für das quantitative

Mehr

TimePunch. TimePunch Command. Benutzerhandbuch 14.08.2013. TimePunch KG, Wormser Str. 37, 68642 Bürstadt

TimePunch. TimePunch Command. Benutzerhandbuch 14.08.2013. TimePunch KG, Wormser Str. 37, 68642 Bürstadt TimePunch TimePunch Command Benutzerhandbuch 14.08.2013 TimePunch KG, Wormser Str. 37, 68642 Bürstadt Dokumenten Information: Dokumenten-Name Benutzerhandbuch, TimePunch Command Revisions-Nummer 37 Gespeichert

Mehr

Zeichnen von Graphen. graph drawing

Zeichnen von Graphen. graph drawing Zeichnen von Graphen graph drawing WS 2006 / 2007 Gruppe: D_rot_Ala0607 Christian Becker 11042315 Eugen Plischke 11042351 Vadim Filippov 11042026 Gegeben sei ein Graph G = (V; E) Problemstellung V E =

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014 17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici 12.Übung 13.1. bis 17.1.2014 1 BEFRAGUNG http://1.bp.blogspot.com/- waaowrew9gc/tuhgqro4u_i/aaaaaaaaaey/3xhl 4Va2SOQ/s1600/crying%2Bmeme.png

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests 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

Mehr

KOMPRIMIERUNGS & VERSCHLÜSSELUNGS- TOOL

KOMPRIMIERUNGS & VERSCHLÜSSELUNGS- TOOL SECRETZIP KOMPRIMIERUNGS- & VERSCHLÜSSELUNGS-Programm (nur für Windows) Das Programm ist auf dem USB Flash Drive enthalten. Bitte lesen Sie das Handbuch für den USB Flash Drive oder besuchen Sie integralmemory.com,

Mehr

Das Studiengangsinformationssystem (SGIS)

Das Studiengangsinformationssystem (SGIS) Das Studiengangsinformationssystem (SGIS) Manual für Typo3-Redakteure Version 1.a Mai 2015 Kontakt: Referat 1.4 - Allgemeine Studienberatung und Career Service Christian Birringer, christian.birringer@uni-rostock.de

Mehr

Digitale Bilddateien

Digitale Bilddateien ARBEITSBLATT 1 Digitale Bilddateien Gängige Bildformate und deren Speicherbedarf Unkomprimierte Bilddateien Öffnen Sie in Photopaint die Datei beauty.tga! Beauty.tga ein virtueller Männertraum, generiert

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Aufgaben: Ein Ausgabe Ein Rechner verwaltet nicht nur Daten, die während der Laufzeit des Programms erzeugt werden. Die meisten Programme greifen auf ältere Datenbestände zurück oder erzeugen für einen

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

A1.7: Entropie natürlicher Texte

A1.7: Entropie natürlicher Texte A1.7: Entropie natürlicher Texte Anfang der 1950er Jahre hat Claude E. Shannon die Entropie H der englischen Sprache mit einem bit pro Zeichen abgeschätzt. Kurz darauf kam Karl Küpfmüller bei einer empirischen

Mehr

How-To : Nachtragen von Tagesdiagrammen auf der Solarlog Homepage

How-To : Nachtragen von Tagesdiagrammen auf der Solarlog Homepage How-To : Nachtragen von Tagesdiagrammen auf der Solarlog Homepage Von Zeit zu Zeit erweitern neue Funktionen die Ausstattungsmerkmale des SolarLog. Wenn ein neues Firmewareupdate heraus kommt, werden plötzlich

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung 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

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

Mehr

Eine Variante der Burrows-Wheeler Transformation mit Permutationen

Eine Variante der Burrows-Wheeler Transformation mit Permutationen Institut für Formale Methoden der Informatik Universität Stuttgart Universitätsstraße 38 D 70569 Stuttgart Diplomarbeit Nr. 3117 Eine Variante der Burrows-Wheeler Transformation mit Permutationen Philipp

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Assistenten Brian Amberg Andreas Forster Tutoren Simon Andermatt Lukas Beck Webseite http://informatik.unibas.ch/lehre/hs10/cs101/index.html

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Digitale Bildverarbeitung (DBV)

Digitale Bildverarbeitung (DBV) Digitale Bildverarbeitung (DBV) Prof. Dr. Ing. Heinz Jürgen Przybilla Labor für Photogrammetrie Email: heinz juergen.przybilla@hs bochum.de Tel. 0234 32 10517 Sprechstunde: Montags 13 14 Uhr und nach Vereinbarung

Mehr

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte] UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Bernoullistrasse 16 CH 4056 Basel Assistenten Bernhard Egger Andreas Forster Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha

Mehr

Übung 13: Quellencodierung

Übung 13: Quellencodierung ZHAW, NTM, FS2008, Rumc, /5 Übung 3: Quellencodierung Aufgabe : Huffmann-Algorithmus. Betrachten Sie die folgende ternäre, gedächtnislose Quelle mit dem Symbolalphabet A = {A,B,C} und den Symbol-Wahrscheinlichkeiten

Mehr

Kapitel 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 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:

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00

Mehr

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik

Mehr

Algorithmen und Datenstrukturen SS09

Algorithmen und Datenstrukturen SS09 Foliensatz 8 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 29 TU Ilmenau Seite / 54 Binärbäume TU Ilmenau Seite 2 / 54 Binäre Bäume Bäume und speziell

Mehr

Neuanlage des Bankzugangs ohne das bestehende Konto zu löschen

Neuanlage des Bankzugangs ohne das bestehende Konto zu löschen 1 Neuanlage des Bankzugangs ohne das bestehende Konto zu löschen In moneyplex lässt sich ein Konto und ein Bankzugang nur einmal anlegen. Wenn sich der Bankzugang geändert hat oder das Sicherheitsmedium

Mehr

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP B-Bäume I Annahme: Sei die Anzahl der Objekte und damit der Datensätze. Das Datenvolumen ist zu groß, um im Hauptspeicher gehalten zu werden, z.b. 10. Datensätze auf externen Speicher auslagern, z.b. Festplatte

Mehr

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle.

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle. Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik Seminar Entscheidungsverfahren für logische Theorien Tobias Hebel Koblenz, am 18.02.2005 Inhaltsverzeichnis 1 Einleitung... 3 2 Grundlagen...

Mehr

Funktionen in PHP 1/7

Funktionen in PHP 1/7 Funktionen in PHP 1/7 Vordefinierte Funktionen in PHP oder vom Entwickler geschriebene Funktionen bringen folgende Vorteile: gleiche Vorgänge müssen nur einmal beschrieben und können beliebig oft ausgeführt

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Bilddatenformate BMP GIF JPG. Digitale Bildverarbeitung Liedtke 7.1. Bezeichnung: Microsoft Windows Bitmap, BMP, DIB

Bilddatenformate BMP GIF JPG. Digitale Bildverarbeitung Liedtke 7.1. Bezeichnung: Microsoft Windows Bitmap, BMP, DIB Bilddatenformate BMP Bezeichnung: Microsoft Windows Bitmap, BMP, DIB Format: Raster Farben: 1 Bit (s/w), 4 Bit (16 Farben), 8 Bit (256 Farben), 24 Bit (16,7 Mio. Farben) Kompression: Keine (meist) oder

Mehr

Übung 1: Quellencodierung

Übung 1: Quellencodierung ZHAW, NTM2, Rumc, /7 Übung : Quellencodierung Aufgabe : Huffman-Algorithmus. Betrachten Sie die folgende ternäre, gedächtnislose Quelle mit dem Symbolalphabet A = {A,B,C} und den Symbol-Wahrscheinlichkeiten

Mehr

Die Excel Schnittstelle - Pro Pack

Die Excel Schnittstelle - Pro Pack Die Excel Schnittstelle - Pro Pack Die Excel Pro Pack ist eine Erweiterung der normalen Excel Schnittstelle, die in der Vollversion von POSWare Bestandteil der normalen Lizenz und somit für alle Lizenznehmer

Mehr

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005 CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005. Das Problem.. Quellcodierung und Datenkompression. Wir wollen eine Nachricht über einen digitalen Kanal, der nur 0 oder übertragen kann, schicken.

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

2. Digitale Codierung und Übertragung

2. Digitale Codierung und Übertragung 2. Digitale Codierung und Übertragung 2.1 Informationstheoretische Grundlagen 2.2 Speicherbedarf und Kompression 2.3 Digitalisierung, Digitale Medien Ludwig-Maximilians-Universität München Prof. Hußmann

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein. Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen

Mehr

7 Die Reorganisation von DB2

7 Die Reorganisation von DB2 Ab und an sollte eine Tabelle reorganisiert werden. Besonders, nachdem größere Datenmengen eingefügt oder gelöscht wurden, muß über eine Reorganisation nachgedacht werden. Eine optimale Performance ist

Mehr

Der Huffman Algorithmus

Der Huffman Algorithmus Der Huffman Algorithmus Für das Folgende setzen wir voraus, dass die Quellensymbole q ν einem Alphabet {q μ } = {A, B, C,...} mit dem Symbolumfang M entstammen und statistisch voneinander unabhängig seien.

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

E-Government-GesetzGesetz. Verfahrensablauf

E-Government-GesetzGesetz. Verfahrensablauf E-Government-GesetzGesetz Verfahrensablauf 1 Bürgerkartenumgebung EGov-G 2010 Pauer 3 Ermittlung der Stammzahl für natürliche Personen Die Stammzahl wird durch eine symmetrische Verschlüsselung der ZMR-Zahl

Mehr

2. Digitale Codierung und Übertragung

2. Digitale Codierung und Übertragung 2. Digitle Codierug ud Üertrgug 2.1 Iformtiostheoretische Grudlge 2.2 Speicheredrf ud Kompressio 2.3 Digitlisierug, Digitle Medie Weiterführede Litertur zum Them Dtekompressio: Khlid Syood: Itroductio

Mehr

4 Codierung nach Viginere (Lösung)

4 Codierung nach Viginere (Lösung) Kapitel 4 Codierung nach Viginere (Lösung) Seite 1/14 4 Codierung nach Viginere (Lösung) 4.1 Einführung Blaise de Vigenère lebte von 1523 bis 1596 in Frankreich und war nach dem Studium bei verschiedenen

Mehr

17.2 MS-Access Projekte

17.2 MS-Access Projekte 964 Von MS-Access 2000 zum SQL-Server 17.2 MS-Access Projekte MS-Access-Projekte, die die Dateiendung adp besitzen, werden als Front-End-Anwendung verwendet. Für die Back-End-Seite gibt es mehrere Möglichkeiten.

Mehr

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

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert. Anwendungen von Bäumen 4.3.2 Huffman Code Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert. => nutzbar für Kompression Code fester

Mehr

Grundlagen der Informatik I Informationsdarstellung

Grundlagen der Informatik I Informationsdarstellung Grundlagen der Informatik I Informationsdarstellung Einführung in die Informatik, Gumm, H.-P./Sommer, M. Themen der heutigen Veranstaltung. ASCIi Code 2. Zeichenketten 3. Logische Operationen 4. Zahlendarstellung

Mehr

NP-Vollständigkeit. Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984)

NP-Vollständigkeit. Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984) NP-Vollständigkeit Krautgartner Martin (9920077) Markgraf Waldomir (9921041) Rattensberger Martin (9921846) Rieder Caroline (0020984) 0 Übersicht: Einleitung Einteilung in Klassen Die Klassen P und NP

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Kapitel 4: Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Codierung von rationalen Zahlen Konvertierung

Mehr