Algorithmen und Datenstrukturen 2

Ähnliche Dokumente
Übungen zur Vorlesung. Mobile und Verteilte Datenbanken. WS 2008/2009 Übung 2 Anfrageoptimierung in zentralisierten Datenbanksystemen LÖSUNG

Fachbereich Bauingenieurwesen Fachgebiet Bauinformatik Semesterklausur Bauinformatik I (Nr.19) Name :... Matr.-Nr.:...

Kodierungsalgorithmen

Vorwort 6 1 Der TI-Nspire CX CAS 7

miditech 4merge 4-fach MIDI Merger mit :

PersonalAusbilden. Das aktuelle Nachschlagewerk für Praktiker

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

Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)

Algorithmen und Datenstrukturen 2

Algorithms for graph visualization

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

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

A2.3: Zur LZ78 Komprimierung

Kodierung. Kodierung von Zeichen mit dem ASCII-Code

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

Natürlich schöne Zähne ein Leben lang

DOWNLOAD. Englisch in Bewegung. Spiele für den Englischunterricht. Britta Buschmann. Downloadauszug aus dem Originaltitel:

Wenn... Dann... Sonst... Diese Abfrageoption werden Sie am öftesten benützen, da diese Option für die Serienbriefe von großer Bedeutung ist.

HiOPC Hirschmann Netzmanagement. Anforderungsformular für eine Lizenz. Order form for a license

INstallation. Installation. High-Performance ISDN by...

HiPath optipoint WL2 professional / optipoint WL2 professional S. LDAP-Funktion an optipoint WL2 professional / optipoint WL2 professional S

Ein Raum-Zeit Dünngitterverfahren zur Diskretisierung parabolischer Differentialgleichungen

Datenstrukturen & Algorithmen

BA63 Zeichensätze/ Character sets

int ConcatBuffers(char *buf1, char *buf2, size_t len1, size_t len2) {

Eine Variante der Burrows-Wheeler Transformation mit Permutationen

Personalpronomen und das Verb to be

Einführung in Kompressionstechniken

Übersicht. Generalversammlung SGRP Rahmenprogramm Live Hacking eines Access Points. Ziel: Programm:

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

ENGLISCH EINSTUFUNGSTEST 1 A1-A2 SPRACHNIVEAU

+ROLGD\V 1LYHDX$ )HUWLJNHLW+ UYHUVWHKHQ

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Übung 13: Quellencodierung

Dipl. Wirtschaftsinformatiker

1.3 Elektrothermische Energiewandlungsvorgänge in Gleichstromkreisen

FLIRT ENGLISH DIALOGUE TRANSCRIPT EPISODE FIVE : WELCOME TO MY WORLD

USB Treiber updaten unter Windows 7/Vista

Listening Comprehension: Talking about language learning

Informatik II Greedy-Algorithmen

Abbildung 1: Die Einheitszelle ist rot markiert - sie enthält zwei Atome. Die hcp (hexagonal closly packed) hat eine zweiatomige Basis.

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

Praktische Einführung in die Chemie Integriertes Praktikum:

FAQ - Häufig gestellte Fragen zur PC Software iks AQUASSOFT FAQ Frequently asked questions regarding the software iks AQUASSOFT

German Section 33 - Print activities

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

Versuch 4: Konzentrationsbestimmung mit der potentiometrischen Titration und Bestimmung der Pufferkapazität eines Essigsäure/Acetatpuffers

Die numerische Behandlung der zeitabhängigen Schrödinger-Gleichung für chemische Reaktionen

2014 Freitag, 6. Juni Qualifikationsverfahren Allgemeinbildung

a lot of, much und many

Frequently asked Questions for Kaercher Citrix (apps.kaercher.com)

WÄRMELEITFÄHIGKEIT UND ELEKTRISCHE LEITFÄHIGKEIT VON METALLEN

Erste Schritte HMT moodle

2 German sentence: write your English translation before looking at p. 3

Suchen und Sortieren Sortieren. Heaps

Dienstspezifikation nach RFC

Service und Support Videojet Remote Service

Inhalt: Seite 3 Wer wir sind und was wir tun. 4-5 Die Alternative. Holzinvestments in Brandenburg. 6-7 Unsere Bäume: Robinie und Paulownie

p^db=`oj===pìééçêíáåñçêã~íáçå=

Sortierte Folgen 250

JSP, Tomcat, JDBC. Agenda. Übung Informationsintegration JSP & Tomcat JDBC. l Syntax. l Implizite Objekte. l Direktiven

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

Lexmark Print Management

Der Adapter Z250I / Z270I lässt sich auf folgenden Betriebssystemen installieren:

Der Wetterbericht für Deutschland. Read the weather reports and draw the correct weather symbols for each town.

Algorithmische Methoden zur Netzwerkanalyse

MIKROLINSEN-IMPRINT-LITHOGRAFIE. Halbleitertechnik für bessere Mobiltelefon-Kameras

Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Ablauf des Unterrichtsbeispiels

Digitale Bildverarbeitung (DBV)

2 Informationstheorie

13.Selbstinduktion; Induktivität

KURZANLEITUNG. Firmware-Upgrade: Wie geht das eigentlich?

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

2 Lösungen "Peptide de novo Sequencing"

Informeller Brief Schreiben

Einführung in die Informatik 1


FOR ENGLISCH VERSION PLEASE SCROLL FORWARD SOME PAGES. THANK YOU!

Anmeldung Application

Installation mit Lizenz-Server verbinden

Häufige Item-Mengen: die Schlüssel-Idee. Vorlesungsplan. Apriori Algorithmus. Methoden zur Verbessung der Effizienz von Apriori

Remote Control - LeCroy Oszilloskop WaveSurfer 3000 mit LabVIEW via VICP LAN-Schnittstelle

Newsletter 11 - HBG - Schuljahr 2015/16

ColdFusion 8 PDF-Integration

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

Klein im Format. Groß im Geschmack. Der neue Espresso-/Kaffeevollautomat TCA 5401 benvenuto classic.

PRODUKT-INFORMATIONEN VERSION 6.0

Restschmutzanalyse Residual Dirt Analysis

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

Datenstrukturen und Algorithmen SS07

Gegeben Zieladresse, finde Nachbarknoten, an den Paket zu senden ist ("Routing-Tabelle")

Tutorium Rechnerorganisation

Einkommensaufbau mit FFI:

Programmiertechnik II


UM ALLE DATEN ZU KOPIEREN. ZUNÄCHST die Daten des alten Telefons auf einen Computer kopieren

E-License - Product Activation E-License - Produktaktivierung

Transkript:

Agorithmen und Datenstrukturen 2 Sommersemester 2006 7. Voresung Peter F. Stader Universität Leipzig Institut für Informatik studa@bioinf.uni-eipzig.de

Lempe-Ziv Agorithmen LZ77 (Siding Window) Varianten: LZSS (Lempe-Ziv-Storer-Szymanski) Appications: gzip, Squeeze, LHA, PKZIP, ZOO LZ78 (Dictionary Based) Variants: LZW (Lempe-Ziv-Wech), LZC (Lempe-Ziv-Compress) Appications: compress, GIF, CCITT (modems), ARC, PAK Normaerweise wurde LZ77 as besser und angsamer as LZ78 betrachtet, aber auf eistungsfähigeren Rechnern ist LZ77 auch schne. P. Stader Agorithmen und Datenstrukturen 2 2

LZ77: Siding Window Lempe-Ziv Cursor a a c a a c a b c a b a b a c Dictionary (previousy coded) Lookahead Buffer Dictionary- und Buffer-Windows haben feste Länge und verschieben sich zusammen mit dem Cursor. An jeder Cursor-Position passiert fogendes: Ausgabe des Tripes (p,,c) p = reative Position des ongest match im Dictionary = Länge des ongest match c = nächstes Zeichen rechts vom ongest match Verschiebe das Window um + 1 P. Stader Agorithmen und Datenstrukturen 2 3

LZ77: Exampe a a c a a c a b c a b a a a c a a c a a c a b c a b a a a c a a c a a c a b c a b a a a c a a c a a c a b c a b a a a c a a c a a c a b c a b a a a c (0,0,a) (1,1,c) (3,4,b) (3,3,a) (1,2,c) Dictionary (size = 6) Longest match Next character P. Stader Agorithmen und Datenstrukturen 2 4

LZ77 Decoding Der Decodierer arbeitet mit dem seben Dictionary-Window wie der Codierer Im Fae des Tripes (p,,c) geht er p Schritte zurück, iest die nächsten Zeichen und kopiert diese nach hinten. Dann wird noch c angefügt. Was ist im Fae > p? (d.h. nur ein Tei der zu copierenden Nachricht ist im Dictionary) Beispiedict= abcd, codeword = (2,9,e) Lösung: Kopiere einfach zeichenweise: for (i = 0; i < ength; i++) out[cursor+i] = out[cursor-offset+i] Out = abcdcdcdcdcdce P. Stader Agorithmen und Datenstrukturen 2 5

LZ77 Optimierungen bei gzip I LZSS: Der Output hat eins der zwei Formate (0, position, ength) oder (1,char) Benutze das zweite Format, fas ength < 3. a a c a a c a b c a b a a a c a a c a a c a b c a b a a a c a a c a a c a b c a b a a a c (1,a) (1,a) (1,c) a a c a a c a b c a b a a a c (0,3,4) P. Stader Agorithmen und Datenstrukturen 2 6

Optimierungen bei gzip II Nachträgiche Huffman-Codierung der Ausgabe Cevere Strategie bei der Codierung: Mögicherweise eraubt ein kürzerer Match in diesem Schritt einen vie ängeren Match im nächsten Schritt Benutze eine Hash-Tabee für das Wörterbuch. Hash-Funktion für Strings der Länge drei. Suche für ängere Strings im entsprechenden Überaufbereich die ängste Übereinstimmung. P. Stader Agorithmen und Datenstrukturen 2 7

Theorie zu LZ77 LZ77 ist asymptotisch optima [Wyner-Ziv,94] LZ77 komprimiert hinreichend ange Strings entsprechend seiner Entropie, fas die Fenstergröße gegen unendich geht. 1 H n = p( X )og n p( X ) X A H = im H n n Achtung, hier ist wirkich eine sehr große Fenstergröße nötig. In der Praxis wird meist ein Puffer von 2 16 Zeichen verwendet. P. Stader Agorithmen und Datenstrukturen 2 8

Die Burrows-Wheeer-Transformation Michae Burrows und David Wheeer, Mai 1994 Verwendet in bzip Die Kompression ist sehr gut geeignet für Text, da Kontext berücksichtigt wird. Die eigentiche Burrows-Wheeer-Transformation ist eine vorgeagerte Umordnung von Textböcken, die eine spätere Kompression mit einem Move-to-Front-Kodierer und einer weiteren Huffman-Codierung vorbereitet. P. Stader Agorithmen und Datenstrukturen 2 9

BWT: Erster Schritt Ein Eingabebock der Länge N wird as quadratische Matrix dargestet, die ae Rotationen des Eingabebocks enthät. Die Zeien der Matrix werden aphabetisch sortiert. Die etzte Spate und die Zeiennummer des Originabocks werden ausgegeben. In dieser Ausgabe sorgt ein ähnicher Kontext von Buchstaben inks davor zu angen Runs geicher Buchstaben. Daraus ässt sich der Originabock wieder rekonstruieren (wird hier nicht bewiesen, sondern nur am Beispie gezeigt). P. Stader Agorithmen und Datenstrukturen 2 10

Die Burrows-Wheeer-Transformation Vorwärtstransformation von HeoCeo 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 H e o C e o 0 C e o H e o 1 e o C e o H 1 H e o C e o I 2 o C e o H e 2 e o C e o H 3 o C e o H e 3 e o H e o C 4 o C e o H e 4 o C e o H e 5 C e o H e o 5 o H e o C e 6 e o H e o C 6 o C e o H e 7 o H e o C e 7 o H e o C e 8 o H e o C e 8 o C e o H e 9 o H e o C e 9 o H e o C e HeoCeo oohcee L P. Stader Agorithmen und Datenstrukturen 2 11

Die Burrows-Wheeer-Transformation Rücktransformation 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 C o 0 C o N 5 1 H o I 1 H o I 2 e H N 1 2 e H N 1 3 e C 3 e C N 6 4 e N 2? 4 e N 2 5 e N 2? 5 e N 7 6 6 N 3 7 7 N 8 8 o 8 o N 4 9 o 9 o N 9 F L F L P. Stader Agorithmen und Datenstrukturen 2 12

MTF: Move-To-Front-Coding 0 0 0 A 0 A 0 B 1 1 1 0 1 0 1 A............ 65 A 65 @ 65 @ 65? AAB 66 B 66 B 66 B 66 @ 65, 0, 66 67 C 67 C 67 C 67 C............ 255 255 255 255 255 255 255 255 Eingabe: A A B B C C C A A B C C C Ausgabe: 65 0 66 0 67 0 0 2 0 2 2 0 0 P. Stader Agorithmen und Datenstrukturen 2 13

Effektive Datenstrukturen für Lexika Viee Anwendungen besitzen Wörterbücher, in denen häufig und schne nachgeschagen werden muß: Textverarbeitung: Rechtschreibkontroe Maschinee Übersetzung Voice recognition Die nötigen Wörterbücher sind meist sehr groß. Deshab: Hohe Kompressionsrate ist erwünscht, damit die Wörterbücher im Hauptspeicher gehaten werden können. P. Stader Agorithmen und Datenstrukturen 2 14

Beobachtungen zu Wörterbüchern Wörterbücher enthaten fast nur Listen von Wörtern oder Wortgruppen: Reine Wortisten für Rechtschreibkontroe Wort-Bigramme oder Trigramme (evt. mit Gewichtung) bei Voice recognition Wörter und Angabe dazu (z.b. Grammatikangabe) Beobachtungen Wir können die Liste z.b. aphabetisch sortieren, dann gibt es vorn große Wiederhoungen, die wir nutzen können. Es gibt auch hinten große Regemäßigkeiten. Nutzung ist zunächst unkar. Je größer eine Wortiste ist, desto ausgeprägter ist die Regemäßigkeit. Mögicherweise assen sich aso größere Listen noch besser komprimieren. Häufig müssen Wörterbücher nur einma erstet und nicht mehr verändert werden. Die Datenstruktur muß aso kein Einfügen unterstützen. Fas nötig, kann ein traditionees, keines Nutzerwörterbuch angeegt werden. P. Stader Agorithmen und Datenstrukturen 2 15

Die Idee: Trie und DAWG Lexikon mit den Wörtern dance, darts, start und smart P. Stader Agorithmen und Datenstrukturen 2 16

DAWG: Directed Acycic Word Graph Ein DAWG eraubt extrem schnee Suche nach Wörtern. Die Suche erfogt anaog zum Trie: Die aufzusuchende Buchstabenfoge entspricht der Knotenfoge im Baum. In den fogenden Darsteungen gibt es von jedem Knoten ausgehend Kindknoten (Chid) und Nextknoten. Letztere zeigen auf den nächsten Knoten, der sich in der geichen Hierarchieebene wie der gegenwärtige Knoten befindet. Zusätzich gibt es Wortende-Markierungen (EOW) Beispie: DAWG mit den Wörtern CAT, CAN, DO und DOG: C --Chid--> A --Chid--> N (EOW) Next Next v T (EOW) v D--Chid--> O (EOW) --Chid --> G (EOW) P. Stader Agorithmen und Datenstrukturen 2 17

Suchen von CAT im DAWG C --Chid--> A --Chid--> N (EOW) Next Next v T (EOW) v D--Chid--> O (EOW) --Chid --> G (EOW) Starten beim Startknoten C. Dieser ist korrekt, aso weiter zu Kind-Knoten. Wir finden A. A ist korrekt, aso weiter zu Kind-Knoten. Wir finden N. Das ist fach, aso weiter zu Next-Knoten. Wir finden T. T ist korrekt, wir befinden uns an einem EOW-Knoten, aso haben wir das gesuchte Wort gefunden. P. Stader Agorithmen und Datenstrukturen 2 18

Kompression an Wortenden Zur Kompression an Wortenden werden Knoten weiter unten im Graphen zusammengehängt. Das Beispie enthät DOG und LOG, aber nicht DO. D --Chid--> O --Chid--> G(EOW) ^ Next v L --Chid---- P. Stader Agorithmen und Datenstrukturen 2 19

Aufbau eines DAWG Der Aufbau erfogt in zwei Schritten: Schritt 1: Aufbau eines Tries in beiebiger Reihenfoge wie übich. Einfügen ist an jeder Stee mögich. Schritt 2: Zusammenfassen geicher Wortenden. Dazu dient der fogende Agorithmus, erkärt am Beispie. Beispie: Wörterbuch mit CITIES, CITY, PITIES und PITY, zunächst as Trie. C --Chid--> I --Chid--> T --Chid--> I --Chid--> E --Chid-> S (EOW) Next Next v Y (EOW) P --Chid--> I --Chid--> T --Chid--> I --Chid--> E --Chid-> S (EOW) Next v Y (EOW) P. Stader Agorithmen und Datenstrukturen 2 20

Verschmezen von Wortenden Zu verschmezende Wortenden müssen vöig übereinstimmen. Von den Bättern ausgehend wird eine inverse Höhe eingeführt: Bätter haben inverse Höhe 0. Die Inverse Höhe eines Knotens ist 1 + Maximum der inversen Höhen seiner Kinder. Für ae Paare von Chid-Knoten geicher inverser Höhe wird von 0 beginnend der fogende Verschmezungsschritt ausgeführt: Zwei Knoten werden verschmozen, fas sie vokommen identisch sind, d.h. Sie tragen den geichen Buchstaben as Bezeichner. Sie tragen beide ein oder beide kein EOW-Fag. Fas sie Next-Knoten besitzen, müssen auch diese vokommen identisch sein. P. Stader Agorithmen und Datenstrukturen 2 21

Erster Verschmezungsschritt S und Y haben inverse Hohe 0. Verschmezung der S-Bätter. Achtung: Die Y-Knoten werden nicht verschmozen, wei sie keine Chid-Knoten sind. C --Chid--> I --Chid--> T --Chid--> I --Chid--> E --Chid--> S(EOW) ^ Next Next v Y (EOW) P --Chid--> I --Chid--> T --Chid--> I --Chid--> E --Chid-- Next v Y (EOW) P. Stader Agorithmen und Datenstrukturen 2 22

Zweiter Verschmezungsschritt Nur E hat inverse Höhe 2. Die E-Knoten werden verschmozen. C --Chid--> I --Chid--> T --Chid--> I --Chid--> E --Chid-->S(EOW) ^ Next Next v Y (EOW) P --Chid--> I --Chid--> T --Chid--> I --Chid--> Next v Y (EOW) P. Stader Agorithmen und Datenstrukturen 2 23

Letzter Verschmezungsschritt Nach dem etzten Verschmezungsschritt: C --Chid--> I --Chid--> T --Chid--> I --Chid--> E --Chid-->S(EOW) Next Next v Y (EOW) P --Chid---- P. Stader Agorithmen und Datenstrukturen 2 24

Dateiformat (byteweise) Darsteung der Knoten as 4-Byte-Datensätze: (2 Byte) Verweis auf ersten Chid-Knoten (1 Byte) Fags für EOW und etzten Knoten in Next-Kette (1 Byte dafür ist Verschwendung!) (1 Byte) Buchstabe des Knotens Wir benötigen keine Pointer für die Next-Liste, wei diese physich unmittebar hinter dem ersten Chid-Knoten gespeichert werden kann. Im CITY-PITY-Beispie erhaten wir: 00 00 03 00 Dummy nu vaue, aows 0 to indicate no chid 00 03 00 43 C, chid at 4-byte-word #3 00 03 02 50 P, chid at 4-byte-word #3, end-of-ist 00 04 00 49 I, chid at 4-byte-word #4 00 05 00 54 T, chid at 4-byte-word #5 00 06 00 49 I, chid at 4-byte-word #7 00 00 03 59 Y, no chid, end-of-word, end-of-ist 00 08 00 45 E, chid at 4-byte-word #8 00 00 03 53 S, no chid, end-of-word, end of ist P. Stader Agorithmen und Datenstrukturen 2 25

Dateiformat (bitweise) Angenommen, wir woen Wörter ohne Berücksichtigung der Groß- und Keinschreibung speichern (z.b. für Rechtschreibkontroe) Wir betrachten die 4 Byte as 32 bit und verwenden sie fogendermaßen: 25 bit für die Knoten-Adresse 2 bit für die Fags 5 bit für die Buchstaben (32 Buchstaben, evt. mehr ganz setene Zeichen mit Escape-Sequenz) Das ermögicht 33 Miionen Knoten, ausreichend für eine normae Sprache. Eine Sortierung der Knoten in einer Next-Kette entsprechend der Häufigkeit eraubt zusätzich eine Bescheunigung bei der Suche. P. Stader Agorithmen und Datenstrukturen 2 26

Wohin mit Angaben zu Wörtern? Fas wir Angaben zu Wörtern einfach hinten anfügen und diese nicht zur Struktur passen, geht die Komprimierbarkeit an den Wortenden veroren. Außer in dem Fa, dass geiche Wortenden häufig geiche Angaben impizieren. Beispiee dafür sind: Grammatikangaben zu Wörtern, z.b. Umeitung f. Das komprimiert wieder gut, da fast ae Wörter auf...ung weibich sind, aso die Darsteung...ung f haben. Angaben zur Grundformreduktion: Das Format der Regen sei nstring, wobei zur Transformation auf Grundform zuerst hinten n Zeichen entfernt werden und dann (ggf.) string angefügt wird. Aso z.b. Tassen 1, Hochhäuser 5haus. Wortpaare mit Übergangswahrscheinichkeiten oder anderen Zahenangaben. Zunächst werden die Zahenangaben diskretisiert. Bester Patz ist zwischen den zwei Wörtern, damit die Kompression von hinten und vorn funktioniert.. P. Stader Agorithmen und Datenstrukturen 2 27

Anwendung: Rechtschreibkontroe Aufgabensteung: Für ein gegebenes Wort so festgestet werden, ob es in einer gegebenen Wortiste ist. Wenn nicht, soen die ähnichsten Wörter aus der Wortiste vorgeschagen werden. Lösung: Die Wortiste wird as DAWG gespeichert, für ein vorgegebenes Wort kann entschieden werden, ob es sich in der Liste befindet. Es werden zur Eingabe ähniche Strings erzeugt und in der Liste gesucht. Fas sie vorhanden sind, handet es sich (per Definition) um ähniche Wörter. Ähniche Strings entstehen, indem man einen oder zwei (seten auch mehrere) der fogenden Editierschritte ausführt. In Kammern die Anzah der so erzeugten Vorschäge für ein Wort aus n Buchstaben und 30 Buchstaben im Aphabet. Wegassen eines Buchstaben [Anzah: n] Einfügen eines Buchstaben an einer beiebigen Stee [Anzah: 30(n+1)] Austauschen eines Buchstaben an einer beiebigen Stee [Anzah: 29n] Vertauschen zweier benachbarter Buchstaben [Anzah: n-1] Sprachspezifische Ersetzungen wie f-ph, ss-ß, ö-oe,... P. Stader Agorithmen und Datenstrukturen 2 28

Prays the Lord for the speing chequer That came with our pea sea! Mecca mistake and it puts you rite Its so easy to ewes, you sea. I never used to no, was it e before eye? (Four sometimes its eye before e.) But now I've discovered the quay to success It's as simpe as won, too, free! Sew watt if you ose a etter or two, The whired won't come two an end! Can't you sea? It's as pane as the knows on yore face S. Chequer's my very best friend I've aways had trubbe with etters that doube "Is it one or to S's?" I'd wine But now, as I've toed you this chequer is grate And its hi thyme you got won, ike mine. An Ode to the Speing Chequer Von Janet E. Byford Gefunden auf: http://www.cooper.com/ aan/homonym.htm P. Stader Agorithmen und Datenstrukturen 2 29