www.wikidata.de-de.nina.az
Sequitur ist ein Algorithmus zur verlustfreien Datenkompression welcher in der Arbeit Identifying hierarchical structure in sequences A linear time algorithm von Craig Nevill Manning und Ian Witten von der Universitat von Waikato Neuseeland im Jahr 1997 beschrieben wurde Inhaltsverzeichnis 1 Beschreibung 1 1 Funktionsweise 1 2 Erzeugung einer Sequitur Grammatik 2 Beispiel 3 Analyse 4 WeblinksBeschreibung BearbeitenSequitur ersetzt sich wiederholende Zeichenfolgen in Zeichenketten z B Texten mit Hilfe von grammatikalischen Regeln Dieser Vorgang wird rekursiv durchgefuhrt Als Ergebnis liefert Sequitur eine hierarchische Darstellung der ursprunglichen Folge die Einsicht in ihre lexikalische Struktur gibt Es wird der Umfang der Grammatik reduziert und als Nebenprodukt die Sequenz strukturiert Der Vorteil von Sequitur liegt in der iterativen Vorgangsweise Sequitur erzeugt eine von mehreren moglichen kontextfreien Grammatiken fur eine gegebene Zeichenfolge Diese Grammatik muss nicht zwangslaufig die optimale zum Zweck des Komprimierens sein Zudem kann Sequitur sehr speicherintensiv sein weswegen sich dieser Algorithmus nicht so gut zur Komprimierung eignet wie andere gangige Methoden Funktionsweise Bearbeiten Mit Hilfe des Sequitur Algorithmus wird eine Zeichenkette z S displaystyle z in Sigma nbsp in eine kontextfreie Grammatik G displaystyle G nbsp mit L G z displaystyle L G z nbsp umgewandelt Die Grammatik G displaystyle G nbsp wird schrittweise aufgebaut Dafur wird z displaystyle z nbsp zeichenweise eingelesen Tritt in z displaystyle z nbsp eine Teilfolge zweimal auf wird diese Teilfolge durch eine Variable ersetzt die in ein Worterbuch eingetragen wird als Regel der Grammatik Im Laufe des Aufbaus der Grammatik konnen nicht nur mehrmals auftretende Teilfolgen der ursprunglichen Zeichenkette sondern auch zur Ganze oder zum Teil aus Variablen bestehende Teilfolgen durch Variablen ersetzt werden und somit Redundanzen entfernt werden Als Ergebnis liefert der Sequitur Algorithmus eine Grammatik die den Eingabestring mit weniger Symbolen darstellt Die Kompressionsrate ist abhangig von der Codierung des Ergebnisses der Grammatik Hierfur wird beispielsweise die arithmetische Codierung verwendet Zeichenketten oder auch Teilstrings werden als n Gramme bezeichnet Ein n Gramm der Lange 2 wird als Bigramm oder Digramm bezeichnet Folgende zwingende Regeln des Algorithmus erzeugen die bereits erwahnte hierarchische Struktur des Ergebnisstrings Digrammeindeutigkeit Jedes Digramm im zu komprimierenden String darf hochstens einmal vorkommen Ansonsten erfolgt eine Ersetzung durch eine bereits bestehende oder neu erzeugte Variable Variablennutzlichkeit Jede Variable die einen Teilstring der ursprunglichen Zeichenkette ersetzt muss mindestens zweimal verwendet werden Erzeugung einer Sequitur Grammatik Bearbeiten Es wird mit G S S S e S displaystyle G S Sigma S rightarrow varepsilon S nbsp gestartet vgl formale Grammatik Die Symbole von z displaystyle z nbsp werden der Reihe nach an die rechte Seite der zu S displaystyle S nbsp gehorigen Produktion Zeichenfolge der bisher eingelesenen Zeichen angehangt Wenn durch Schritt 2 zwei Symbole a b V S displaystyle alpha beta in V cup Sigma nbsp zu Nachbarn werden entsteht ein Digramm a b displaystyle alpha beta nbsp Fur dieses Digramm bestehen zwei Moglichkeiten a b displaystyle alpha beta nbsp ist eindeutig in der so entstandenen Grammatik a b displaystyle alpha beta nbsp kommt ohne Uberlappung genau ein weiteres Mal vor Im Fall 2 gibt es wieder zwei Falle a b displaystyle alpha beta nbsp ist rechte Seite einer Produktion X displaystyle X nbsp d h es gibt bereits einen Worterbucheintrag fur a b displaystyle alpha beta nbsp Ersetze neu entstandenes a b displaystyle alpha beta nbsp durch bestehende Variable X displaystyle X nbsp Springe zu Schritt 4 anschliessend nochmal Schritt 3 a b displaystyle alpha beta nbsp ist nicht rechte Seite einer Produktion Fuge neue Regel X a b displaystyle X rightarrow alpha beta nbsp zu den Produktionen hinzu und ersetze beide Vorkommen von a b displaystyle alpha beta nbsp durch die neue Variable X displaystyle X nbsp Springe zu Schritt 4 anschliessend nochmal Schritt 3 Wenn ein Digramm a b displaystyle alpha beta nbsp durch eine Variable ersetzt wird gibt es wieder zwei Moglichkeiten a S b S displaystyle alpha in Sigma land beta in Sigma nbsp a displaystyle alpha nbsp und b displaystyle beta nbsp beinhalten keine Variablen a V b V displaystyle alpha in V lor beta in V nbsp a displaystyle alpha nbsp oder b displaystyle beta nbsp oder a displaystyle alpha nbsp und b displaystyle beta nbsp beinhalten bereits Variablen Unterscheide fur alle Variablen g a b displaystyle gamma in alpha beta nbsp Variablen die in a displaystyle alpha nbsp oder b displaystyle beta nbsp enthalten sind zwei Falle Variable g displaystyle gamma nbsp kommt noch an anderen Stellen vor Variable g displaystyle gamma nbsp kommt sonst nicht mehr vor Entferne die Regel g r g displaystyle gamma rightarrow r gamma nbsp aus den Produktionen und ersetze das einzige Vorkommen von g displaystyle gamma nbsp durch rechte Seite r g displaystyle r gamma nbsp also durch den Worterbucheintrag fur die entsprechende Variable Springe zu Schritt 3 Die gelb hinterlegten Stellen symbolisieren Ersetzungsvorgange und bewirken daher immer einen Aufruf von Schritt 4 Kommt eine bisher benutzte Variable namlich durch einen dieser Vorgange nicht mehr langer vor so muss die geforderte Variablennutzlichkeit wiederhergestellt werden Alle drei farblich markierten Stellen bewirken rekursive Aufrufe von Schritt 3 da ein Ersetzungsvorgang immer bewirkt dass neue Digramme entstehen Es muss daher immer uberpruft werden ob die geforderte Digrammeindeutigkeit noch gegeben ist bzw muss diese gegebenenfalls wiederhergestellt werden Beispiel BearbeitenDie folgende Tabelle zeigt anhand eines einfachen Beispiels wie der Sequitur Algorithmus funktioniert Im Beispiel wird der Eingabestring abcdbcabcd mit Hilfe des Sequitur Algorithmus verlustfrei komprimiert Es wird Schritt fur Schritt gezeigt wie der Eingabestring durchlaufen und dabei die neue Grammatik erzeugt wird Nummer Bisheriger String Grammatik Anmerkung1 a S a2 ab S ab3 abc S abc4 abcd S abcd5 abcdb S abcdb6 abcdbc S abcdbc bc doppeltabcdbc S aAdA A bc Digrammeindeutigkeit herstellen7 abcdbca S aAdAa A bc8 abcdbcab S aAdAab A bc9 abcdbcabc S aAdAabc A bc bc doppeltS aAdAaA A bc Digrammeindeutigkeit herstellen aA doppeltS BdAB A bc B aA Digrammeindeutigkeit herstellen10 abcdbcabcd S BdABd A bc B aA Bd doppeltS CAC A bc B aA C Bd Digrammeindeutigkeit herstellen B wird nur mehr einmal verwendetS CAC A bc C aAd Variablennutzlichkeit hergestelltDer String abcdbcabcd wird zeichenweise eingelesen und durchlaufen Zu Beginn wird also nur das Zeichen a betrachtet Da der uberprufte String zu diesem Zeitpunkt nur aus einem Zeichen besteht kann es hier naturlich auch noch keine Wiederholungen geben es kann also noch keine Ersetzung durch eine Variable stattfinden String aWorterbuch leer Danach wird das Zeichen b hinzugefugt Im String ab kommt noch immer keine Zeichenfolge mindestens zweimal vor daher ist auch hier noch keine Ersetzung moglich Das Gleiche gilt fur die Strings abc abcd und abcdb String ab abc abcd abcdbWorterbuch leer Nach dem Einlesen des 6 Zeichens entsteht der String abcdbc In diesem String tritt die Zeichenfolge bc zweimal auf abcdbc Das Digramm bc wird nun durch das Zeichen A ersetzt Es wird also eine neue Variable A bc erzeugt und der String abcdbc als aAdA gespeichert String aAdAWorterbuch A bc Nun wird das Zeichen a dazu eingelesen Es entsteht der String aAdAa In diesem String tritt keine neue Zeichenfolge doppelt auf String aAdAaWorterbuch A bc Nach dem Einlesen des 8 Zeichens entsteht der String aAdAab Auch hier tritt noch keine neue Zeichenfolge mindestens zweimal auf String aAdAabWorterbuch A bc Nun wird das Zeichen c dazu eingelesen Es entsteht der String aAdAabc In diesem String ist die bereits im Worterbuch als Variable A eingetragene Zeichenfolge bc enthalten Sie wird nun durch die Variable ersetzt Es entsteht der neue String aAdAaA Das Digramm aA tritt nun zweimal auf und wird durch das Zeichen B ersetzt Es wird ein Worterbucheintrag B aA erzeugt Die Variable B steht nun also fur die Zeichenfolge abc Der String wird als BdAB gespeichert String BdABWorterbuch A bc B aA Zum Schluss wird das letzte Zeichen d eingelesen Es entsteht der String BdABd In diesem String tritt die Zeichenfolge Bd zweimal auf Fur diese Zeichenfolge wird die neue Variable C C Bd definiert Die Zeichenfolge Bd wird durch die Variable C ersetzt Es entsteht der neue String CAC Die Variable B kommt in diesem String gar nicht mehr und im Worterbuch nur einmal vor Die Bedingung der Variablennutzlichkeit r2 ist also nicht mehr erfullt Die Variable B wird daher geloscht Die Variable C die bisher als Bd gespeichert war wird durch den Wegfall der Variable B in aAd geandert dadurch entsteht also ein langerer Worterbucheintrag String CACWorterbuch A bc C aAd Die mit Sequitur verlustfrei komprimierte Version der Zeichenfolge abcdbcabcd lautet daher CAC mit dem Worterbuch A bc C aAd Komprimierte Zeichenfolge CACWorterbucheintrage A bc C aAdRekonstruierter Originalstring abcdbcabcdAnalyse BearbeitenUm die einzelnen Ersetzungsvorgange schneller realisieren zu konnen wenn ein Digramm mehrfach auftritt werden die Produktionen der Grammatik als verkettete Listen gespeichert Diese Listen sind ebenfalls untereinander verkettet Dadurch kann ausgehend von der Einsatzstelle der Variablen schnell die Definition der Variablen also der Worterbucheintrag gefunden werden Zusatzlich wird ein Digramm Index verwaltet Dieser ermoglicht die schnelle Uberprufung ob ein Digramm bereits einmal existiert Der Index wird als Hashtabelle abgespeichert Dadurch ist es moglich in konstanter Zeit zu einem gesuchten Digramm die Positionen samtlicher Vorkommen in den Produktionen zu finden Bei einer wie hier beschriebenen Implementierung des Sequitur Algorithmus sind Laufzeit und benotigter Speicher linear von der Lange des Ausgangsstrings abhangig Das Laufzeitverhalten entspricht also O n displaystyle O n nbsp mit n displaystyle n nbsp Lange von z displaystyle z nbsp Weblinks BearbeitenOffizielle Homepage fur Sequitur Abgerufen von https de wikipedia org w index php title Sequitur amp oldid 209158661