DE19622045C2 - Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist - Google Patents

Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist

Info

Publication number
DE19622045C2
DE19622045C2 DE19622045A DE19622045A DE19622045C2 DE 19622045 C2 DE19622045 C2 DE 19622045C2 DE 19622045 A DE19622045 A DE 19622045A DE 19622045 A DE19622045 A DE 19622045A DE 19622045 C2 DE19622045 C2 DE 19622045C2
Authority
DE
Germany
Prior art keywords
data
string
pointer
lexicon
character string
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19622045A
Other languages
English (en)
Other versions
DE19622045A1 (de
Inventor
Takaaki Hayashi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyocera Corp
Original Assignee
Kyocera Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyocera Corp filed Critical Kyocera Corp
Publication of DE19622045A1 publication Critical patent/DE19622045A1/de
Application granted granted Critical
Publication of DE19622045C2 publication Critical patent/DE19622045C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding

Description

Die vorliegende Erfindung betrifft ein Datenkomprimierungs- und Datendekomprimierungsschema, das es ermöglicht, daß un­ terschiedliche Arten von Daten ohne Verlust von Informationen durch Universalcodieren komprimiert und dekomprimiert werden können. Insbesondere verwirklicht die Erfindung ein Hochge­ schwindigkeits-Datenkomprimierungs- und Datendekomprimie­ rungsschema mit niedrigen Rechenkosten, das für Daten, wie binäre Bilddaten geeignet ist, bei denen ein wiederholtes Auftreten des gleichen Datenmusters beachtlich ist.
In den letzten Jahren wurden mit der Verbesserung der CPU- Leistung Datenkomprimierungstechniken verwendet, um eine Textdatei oder eine Objektdatei, die von einem Computer bear­ beitet wird, zu komprimieren und in einem externen Speicher­ medium zu speichern. Komprimierungsschemata für diesen Zweck sollten imstande sein, verschiedene Arten von Daten ordnungs­ gemäß zu komprimieren, deren statistische Charakteristiken unbekannt sind. Deshalb ist es eine Voraussetzung, daß die Komprimierungsschemata, die zur Diskussion stehen, von den statistischen Charakteristiken der Daten unabhängig sind, d. h. das sind, was Universalcodieren genannt wird. Das Lem­ pel-Ziv-(LZ-)Codierschema ist als typisches Universalco­ dierschema bekannt.
Das Lempel-Ziv-Schema ist ein Datenkomprimierungs- und Daten­ dekomprimierungsalgorithmus, der auf einem Lexikon basiert. Bei diesem Schema bedeutet der Ausdruck "Zeichen" jede Wort­ einheit von Eingabedaten als Komprimierungsobjekt und "Zeichenkette" bedeutet eine Folge einer beliebigen Anzahl von Zeichen. Bei dem LZ-Codierschema wird die Datenkomprimie­ rung derart durchgeführt, daß ein Protokoll von bereits co­ dierten Daten in einem Lexikon (dictionary) registriert wird, das Lexikon nach einer Zeichenkette durchsucht wird, die mit Daten, die über die längste Länge unter den dort registrier­ ten Zeichenketten codiert sind, übereinstimmt, und eine so gefundene Zeichenkette wird durch einen Code ersetzt, der kürzer als der vorherige ist. Die Datenkomprimierung wird derart durchgeführt, daß eine bestimmte Zeichenkette auf der Grundlage eines komprimierten Codes unter den Zeichenketten, die in einem Lexikon registriert sind, eindeutig bezeichnet wird, das mittels eines Verfahrens ähnlich dem vorstehend er­ wähnten Komprimierungsverfahrens erzeugt wurde, und zu wie­ derhergestellten Daten gemacht wird. Ein bei der Komprimie­ rung oder Dekomprimierung verwendetes Lexikon ist so aufge­ baut, daß es im Verlauf eines Prozesses aktualisiert wird und mit Bezug auf Daten, die nach Ablauf eines ausreichenden Zeitraums verarbeitet werden, optimiert wird. Deshalb ist zur Durchführung des LZ-Codierschema die wichtigste Frage, wie ein Lexikon zum Speichern eines Datenprotokolls aufzubauen ist. Ziv und Lempel haben bereits zwei grundlegende Konzepte zum Aufbau eines Lexikons vorgeschlagen, die in Überein­ stimmung mit den jeweiligen Veröffentlichungsjahren das LZ77- Schema (siehe J. Ziv. and A. Lempel "A Universal Algorithm for Sequential Data Compression", IEEE Transactions on Infor­ mation Theory, Band IT-23, Nr. 3, Seiten 337 bis 343, 1977) und das LZ78-Schema (siehe J. Ziv und A. Lempel "Compression of Individual Sequences via Variable-Rate Coding", IEEE Transactions on Information Theory, Band IT-24, Nr. 5, Seiten 530-536, 1978) genannt werden.
Bei dem LZ77-Schema wird ein Referenzpuffer mit einer festen, endlichen Länge erstellt, und codierte Zeichenketten werden sequentiell dort gespeichert, wodurch der Referenzpuffer als Lexikon verwendet wird. Es wird wie in Fig. 14A gezeigt bei­ spielsweise angenommen, daß es einen Referenzpuffer 1400 mit einer Speichergröße 8 gibt und eine codierte Datenzeichen­ kette "ababcaba" dort derart gespeichert ist, daß die Zeichen in jeweiligen Registern 1402 gespeichert sind, denen jewei­ lige Adressen 1403 zugeordnet sind. Es wird auch angenommen, daß eine Datenzeichenkette "babc" auf die vorstehend erwähnte Zeichenkette folgt. Bei einer Darstellung einer Zeichenkette sind "a", "b" und "c" Zeichen, die Daten darstellen.
Das Konzept der einfachsten Form des Lexikons in dem LZ-Co­ dierschema wird durch eine "Index-Zeichenketten"-Tabelle aus­ gedrückt. D. h. ein Lexikon wird durch Indizes aufgebaut, die Einträge und einen Satz Einträge darstellen, um jeweilige, den Indizes entsprechende Zeichenketten zu speichern. Der Re­ ferenzpuffer 1400 wird durch ein Lexikon 1401 in einer Index- Zeichenkettendarstellung ausgedrückt. Ein Index des Lexikons 1402 ist einem relativen Adressenwert 1403 des Referenz­ puffers 1400 von oben gezählt äquivalent, und eine Zeichen­ kette des Lexikons 1402 ist einer Zeichenkette des Referenz­ puffers 1400 beginnend mit dem durch die zugeordnete Adresse angegebenen Zeichen äquivalent. Ein wichtiges Merkmal des LZ77-Schemas ist, daß eine in jedem Eintrag registrierte Zei­ chenkette logischerweise eine unendliche Länge besitzt. In den durch die Dokumente von Ziv und Lempel offenbarten Sche­ mata und vielen der verschiedenen, später vorgeschlagenen, modifizierten Schemata, nimmt ein Lexikon Zeichenketten end­ licher Längen auf. Dies ist jedoch keine wesentliche Be­ schränkung des LZ77-Schemas, sondern nur das Ergebnis eines Versuchs, die Bearbeitung zu vereinfachen.
Die wesentliche Beschränkung des LZ77-Schemas ist, daß der Referenzpuffer 1400 aus folgendem Grund eine feste Länge hat. Bei dem LZ77-Schema wird unter den bereits codierten Daten­ zeichenketten nach einer Zeichenkette mit der längsten Über­ einstimmung gesucht. Es ist offensichtlich, daß die Endlich­ keit eines Suchbereichs eine notwendige Bedingung für die Durchführung einer Suche in einer begrenzten Zeit ist. Das LZ77-Schema erfüllt diese Bedingung, indem es die Anzahl der Zeichenketten für eine Suche durch Verwendung eines Referenz­ puffers mit fester Länge begrenzt.
Obgleich das LZ77-Schema einen Suchbereich durch Verwendung eines Referenzpuffers fester Länge begrenzt, kann es diesen Bereich allumfassend durchsuchen. Wie aus der Beziehung zwi­ schen dem Referenzpuffer 1400 und dem Lexikon 1401 ersicht­ lich ist, sind alle in dem Referenzpuffer 1400 enthaltenen Zeichenketten in dem Lexikon 1401 registriert. Deshalb wird bei dem LZ77-Schema eine allumfassende Suche nach den Zei­ chenketten in dem Suchbereich durchgeführt, der durch den Re­ ferenzpuffer 1400 begrenzt ist. So kann gesagt werden, daß das LZ77-Schema ein Schema ist, bei dem ein fester Suchbe­ reich durch Verwendung eines Referenzpuffers eingestellt ist und die Übereinstimmung zwischen Zeichenketten in diesem Be­ reich umfassend überprüft wird.
Das LZ77-Schema arbeitet wie folgt. Durch den Vergleich einer Eingabedaten-Zeichenkette 1404 mit den jeweiligen, in dem Le­ xikon 1401 registrierten Daten wird gefunden, daß eine in der Eingabe des Index 1 registrierte Zeichenkette mit der Einga­ bedaten-Zeichenkette 1404 über die längste Länge überein­ stimmt. Die Zeichenkette mit der längsten Übereinstimmung ist "babc" und die Übereinstimmungslänge ist 4. Da die Länge ei­ ner in dem Lexikon 1401 registrierten Zeichenkette unbestimmt ist, wird eine Zeichenkette nicht nur durch Festlegen eines Indexwerts des Lexikons 1401 bestimmt. Deshalb wird nicht nur der Indexwert 1, sondern auch die Übereinstimmungslänge 4 co­ diert, um die Zeichenkette mit der längsten Übereinstimmung "babc" zu bestimmen, um es dadurch der Zeichenkette zu ge­ statten, daß sie auf der Dekomprimierungsseite eindeutig wie­ derhergestellt wird.
Bei dem LZ-Schema wird ein Lexikon bei jeder Codierung aktua­ lisiert. D. h., um das Lexikon 1401 zu aktualisieren, wird die gerade codierte Zeichenkette in den Referenzpuffer 1400 ein­ gefügt. Da die Größe des Referenzpuffers 1400 fest ist, wer­ den die ältesten Zeichen in dem Referenzbuffer 1400 um die gleiche Anzahl wie die Anzahl der eingefügten Zeichen ent­ fernt. Bei dem Beispiel von Fig. 14A und 14B wird die älteste Zeichenkette "abab" (mit 1406 bezeichnet) aus dem Referenz­ puffer 1400 entfernt, weil die vier Zeichen codiert worden sind. Die vier codierten Zeichen "babc" (mit 1405 bezeichnet) werden in den Referenzpuffer 1400 eingefügt. Bei diesem Bei­ spiel werden das Einfügen und das Entfernen durch Verschieben der Zeichenkette um insgesamt vier Zeichen durchgeführt. Wenn man dem Lexikon 1401 Aufmerksamkeit schenkt, werden die vier Einträge 1408 entfernt und vier Einträge 1407 werden neu hin­ zugefügt, so daß die Gesamtzahl 8 der Einträge gleich gehal­ ten wird. Das Aktualisierungsverfahren des LZ77-Schemas hat ein Merkmal, daß auf die vorstehend angegebene Weise eine Vielzahl von Einträgen eines Lexikons gleichzeitig aktuali­ siert wird.
In der Praxis ist ein Lexikon des LZ77-Schemas nicht in der Form einer Index-Zeichenkettendarstellung aufgebaut, sondern derart aufgebaut, daß die Suche nach einer Übereinstimmungs­ zeichenkette und die Aktualisierung eines Lexikons leistungs­ fähiger durchgeführt werden können. Beispielsweise offenbart das US Patent 4 701 745 mit dem Titel "Data Compression Sy­ stem" eine Technik des Suchens nach Übereinstimmungszeichen­ ketten-Kandidaten in einem Referenzpuffer unter Verwendung einer Hash-Funktion. In einer Abhandlung mit dem Titel "Better OPM/L Text Compression" (IEEE Transactions on Commu­ nications, Band. COM-34, Nr. 12, Seiten 1176-1182, 1986), wird ein Lexikon gemäß einem binären Baumalgorithmus aufge­ baut. Des weiteren offenbart das US Patent 4 906 991 mit dem Titel "Textual Substitution Data Compression with Finite Length Search Tree" eine Technik des Aufbauens eines Lexikons unter Verwendung eines Patricia-Baums. Alle diese herkömmli­ chen Techniken sollen ein Lexikon des LZ77-Schemas leistungs­ fähig aufbauen, um dadurch das Komprimierungsverhältnis zu verbessern und eine Suche nach einer Übereinstimmungszeichen­ kette zu beschleunigen.
Andererseits wird bei dem LZ78-Schema das Lernen eines Lexi­ kons derart durchgeführt, daß ein Suchbaum der TRIE-Struktur als Lexikon verwendet wird und codierte Zeichenketten dem Suchbaum hinzugefügt werden. Das LZ78-Schema wurde durch Welch (US Patent 4 558 302 mit dem Titel "High Speed Data Compression and Decompression Apparatus and Method") und Miller and Wegman (US Patent 4 814 746 mit dem Titel "Data Compression Method") verbessert. Die verbesserte Version wird "LZW-Schema" genannt und jetzt allgemein verwendet. Fig. 15A zeigt einen Suchbaum und ein Lexikon in Index-Zeichenketten­ darstellung, die erhalten werden, wenn die ersten sieben Zei­ chen einer Eingabedaten-Zeichenkette "ababcabababcb" durch die Grundversion des LZW-Schemas bearbeitet worden sind. Ein Knoten des Suchbaums ist äquivalent zu einem Eintrag des Le­ xikons, und eine Zahl, die der Schulter jedes Knoten zugeord­ net ist, gibt einen Index des entsprechenden Eintrags an. Eine bei jedem Eintrag des Lexikons registrierte Zeichenkette ist einer Verbindung von Zeichen äquivalent, die an jeweili­ gen Knoten, die sich auf einem Pfad von der Wurzel des Such­ baums zu dem entsprechenden Knoten befinden, gespeichert sind.
Das wichtigste und wesentlichste Merkmal der LZW- und LZ78- Schemata ist, daß jeder Knoten eines Suchbaums ein Einzelzei­ chen speichert, weil alle die aus dem LZ-Schema stammenden Schemata imstande sein sollten, eine Zeichenkette eindeutig zu bestimmen, indem sie den entsprechenden Knoten bezeichnen. Dies bedeutet, daß es bei dem LZ78-Schema ausreicht, nur In­ dizes von Einträgen eines Lexikons zu codieren, was ein Vor­ teil im Vergleich zu dem LZ77-Schema ist, bei dem das Codie­ ren von Übereinstimmungslängen und Indizes erforderlich war.
Bei dem LZ78-Schema wird eine Zeichenkette eindeutig nur durch die Bezeichnung ihres Index bestimmt. Es ist deshalb offensichtlich, daß das LZ78-Schema eine Beschränkung dahin­ gehend hat, daß in einem Lexikon registrierte Zeichenketten endliche Längen besitzen sollten. D. h. eine notwendige Bedin­ gung für das LZ-Schema ist deshalb, daß alle in einem Lexikon registrierten Zeichenfolgen endliche Längen besitzen.
Es wird beschrieben, wie eine Eingabedaten-Zeichenkette "ababcb" (d. h. das achte und die nachfolgenden Zeichen) unter Verwendung des Lexikons von Fig. 15A bearbeitet wird. Da eine Zeichenkette, die mit dieser Eingabedaten-Zeichenkette über die längste Länge übereinstimmt, eine Zeichenkette "aba" des Index 7 ist, wird ein Indexwert "7" codiert. Das Lexikon wird durch Hinzufügen des neuen 8. Eintrags wie in Fig. 15B ge­ zeigt aktualisiert. Eine Zeichenkette "abab" (mit 1500 be­ zeichnet), d. h. die codierte Zeichenkette "aba", der ein Ein­ gabezeichen "b" hinzugefügt wurde, wird in dem neuen Eintrag des Lexikons registriert. Gleichzeitig mit der Aktualisierung des Lexikons wird der Suchbaum derart geändert, daß sich ein neuer Knoten von dem Knoten des Index 7 erstreckt und das Zeichen "b" wird dort wie durch das Referenzzeichen 1501 an­ gegeben gespeichert. Auf diese Weise wird bei der Lexikonak­ tualisierung des LZ78-Schemas jedes Mal nur ein Lexikonein­ trag hinzugefügt. Im allgemeinen kann das LZ78-Schema auf­ grund der einfacheren Lexikonaktualisierung die Komprimierung mit einer größeren Geschwindigkeit als das LZ77-Schema durch­ geführen.
Wie bei dem LZ77-Schema sollte der Suchbereich in dem LZ78- Schema begrenzt werden. Während das LZ77-Schema die Beschrän­ kung eines Referenzpuffers fester Länge aufweist, ist bei dem LZ78-Schema der Suchbereich durch Festlegung einer Höchstzahl von Knoten eines Suchbaums beschränkt. Wenn die Anzahl der Knoten die Höchstzahl erreicht hat, kann ein Lexikon voll­ ständig initialisiert werden (siehe das vorstehend erwähnte US Patent 4 814 746) oder ein neuer Knoten kann hinzugefügt werden, wobei ein alter Knoten gemäß der LRU-Technik (Technik des in letzter Zeit am wenigsten Benutzten) entfernt wird. Deshalb ist der Abfragebereich der Zeichenketten anders als bei dem LZ77-Schema bei dem LZ78-Schema nicht fest.
Da sie eine überlegene Komprimierungsleistung bei einfacher Konfiguration aufweisen, werden die LZ77- und LZ78-Schemata weit verbreitet als Universalcodierung verwendet. Sie haben jedoch die folgenden Probleme, wenn es erforderlich ist, Da­ ten mit einer riesigen Datenstruktur, wie binäre Bilddaten, bei denen beispielsweise die gleichen Daten über mehrere Ki­ lobyte gehen ("Lauf" genannt) oder Datenmuster mit einer starken Korrelation alle paar Kilobyte auftauchen, mit hoher Geschwindigkeit zu komprimieren.
Zunächst verursacht bei dem LZ78-Schema die Beschränkung, daß in einem Lexikon registrierte Zeichen endliche Längen be­ sitzen, ein Problem, besonders in der Anfangsphase eines Kom­ primierungsvorgangs. D. h. in der Anfangsphase eines Kompri­ mierungsvorgangs, wenn nur kurze Zeichenketten in einem Lexi­ kon registriert werden, kann ein bei Daten auftretender lan­ ger Lauf nicht wirksam komprimiert werden. Abgesehen von die­ sem sich auf den Lauf beziehenden Problem sind Kompri­ mierungsschemata wie das LZ78-Schema, die eine wesentliche Beschränkung der Längen der in einem Lexikon registrierten Zeichenfolgen aufweisen, sehr nachteilig in bezug auf Daten, bei denen das gleiche Datenmuster mit mehreren hundert bis mehreren tausend Byte häufig auftaucht.
Da das LZ77-Schema frei von irgendwelchen Beschränkungen der Längen der in einem Lexikon registrierten Zeichenketten ist, kann es jeweils ein langes Datenmuster codieren. Das LZ77- Schema hat jedoch das Problem hoher Bearbeitungskosten, da im allgemeinen die Suche nach der Zeichenkette mit der längsten Übereinstimmung und die Referenzpufferaktualisierung viel komplexer sind als jene des LZ78-Schemas. Außerdem beträgt bei dem LZ77-Schema gegenwärtig die Höchstgröße eines Refe­ renzpuffers nur 1 bis 2 Kbyte, da das Bearbeitungsvolumen im Verhältnis zu der Größe eines Referenzpuffers zunimmt. Des­ halb kann das LZ77 Daten wie Rasterbilddaten nicht ordnungs­ gemäß aufnehmen, die korrelierte Datenmuster von mehreren Ki­ lobyte enthalten.
Die Druckschrift EP 0 435 802 A2 ist als nächstliegender Stand der Technik anzusehen. Sie betrifft und beschreibt grundsätzlich die Vorrichtungskomponenten gemäß Anspruch 1 oder 6, jedoch teilweise mit abweichender Funktion primär ein Dekompressionsverfahren unter Bezugnahme auf den LZ- Algoritmus. Es ist darauf ausgerichtet, die Effizienz der Dekompression zu maximieren. In einem Lexikon werden Kopien der Einträge selbst abgelegt. Dieses Vorgehen geht damit einher, daß in der Druckschrift vorzugsweise ein Maximalwert der Zeichenkettenlänge festgelegt wird, und es wird in einem ersten Schritt ein Vergleich der gegebenen Zeichenkette mit einem Lexikon, und im Falle keiner Übereinstimmung in einem zweiten Schritt ein Vergleich mit der schon decodierten Zeichenfolge ("history-reference") durchgeführt. Eine im "history-reference"-Puffer gefundene Zeichenkette wird anschließend in das Lexikon eingefügt.
Die vorliegende Erfindung wurde angesichts der vorstehend an­ gegebenen Probleme des Stands der Technik gemacht und hat die Aufgabe, ein Datenkomprimierungs- und Datendekomprimierungs­ schema zu schaffen, dessen Bearbeitung einfach ist und das frei von irgendwelchen Beschränkungen bezüglich der Länge der in einem Lexikon registrierten Zeichenketten im Gegensatz zu dem LZ78-Schema ist.
Fig. 1 zeigt die Grundkonfiguration eines erfindungsgemäßen Datenkomprimierungsschemas. Bei diesem Datenkomprimierungs­ schema werden in einem Datenspeicher 104 gespeicherte Einga­ bedaten in komprimierte Codes umgewandelt, deren Datenmenge kleiner ist als die der Eingabedaten, und die komprimierten Codes werden in einem Codespeicher 105 gespeichert. In Fig. 1 zeigt ein Pfeil mit ausgezogener Linie einen Prozeßfluß und ein Pfeil mit gestrichelter Linie zeigt eine Datenbewegung.
Das erfindungsgemäße Datenkomprimierungsschema umfaßt ein Le­ xikon 100 mit einer Vielzahl von Einträgen, jeweils zum Spei­ chern eines ersten Zeigers, der eine Zeichenkette der in dem Datenspeicher 104 gespeicherten Eingabedaten angibt und Ein­ richtungen, um drei Hauptprozesse durchzuführen.
Die erste Einrichtung ist eine Sucheinrichtung 101 für die zeichenkette mit der längsten Übereinstimmung, um nach der Zeichenkette mit der längsten Übereinstimmung, die mit einer Zeichenkette übereinstimmt, die über eine längste Länge zu codieren ist, unter den durch die jeweiligen ersten Zeiger angegebenen Zeichenketten zu suchen, wobei die längste Länge eine Länge mit der längsten Übereinstimmung ist.
Die zweite Einrichtung ist eine Codiereinrichtung 102, um die Länge mit der längsten Übereinstimmung und einen Index eines Eintrags zu codieren, in dem ein erster Zeiger gespeichert ist, der die Zeichenkette mit der längsten Übereinstimmung angibt, und um einen sich ergebenden Code in den Codespeicher einzuschreiben.
Die dritte Einrichtung ist eine Lexikonaktualisierungsein­ richtung 103, um dem Lexikon 100 einen Eintrag hinzuzufügen, in dem der die codierte Zeichenkette angebende, erste Zeiger gespeichert ist.
Das Lexikon 100 wird durch einen Suchbaum ausgedrückt, der einen Hauptknoten zum Speichern eines ersten Zeigers, der eine in dem Lexikon 100 registrierte Zeichenkette und einen Abzweigungsknoten umfaßt, der die Abzweigung in dem Suchbaum darstellt. Jeder der Einträge in dem Lexikon 100 umfaßt die ersten Zeiger, wobei die Zahl der auf einem Pfad von der Wur­ zel des Suchbaums zu einer Abzweigungsstelle vorhandenen Zei­ chen (diese Zahl wird als Versetzungszahl definiert) einen zweiten Zeiger zur Darstellung einer Verbindung zu einem zu­ erst auftretenden Abzweigungsknoten in dem Hauptknoten und einen dritten Zeiger zur Darstellung einer Verbindung von ei­ nem Abzweigungsknoten zu dem nächsten Abzweigungsknoten um­ faßt.
Fig. 2 zeigt die Grundkonfiguration eines erfindungsgemäßen Datendekomprimierungsschemas. Bei diesem Datendekomprimie­ rungsschema werden in einem Codespeicher 205 gespeicherte, komprimierte Codes zu Originaldaten dekomprimiert, die in einen Datenspeicher 204 gespeichert werden. In Fig. 2 zeigt wie bei Fig. 1 ein Pfeil mit einer ausgezogenen Linie einen Prozeßfluß und ein Pfeil mit einer gestrichelten Linie zeigt eine Datenbewegung.
Das erfindungsgemäße Datendekomprimierungsschema umfaßt eine Umwandlungstabelle 200 mit jeweiligen Einträgen für das Korrelieren eines Indexwerts mit einem Zeiger, der eine in dem Datenspeicher 204 gespeicherte, wiederhergestellte Zei­ chenkette angibt, und eine Einrichtung zur Durchführung von drei Hauptverfahren.
Die erste Einrichtung ist eine Decodiereinrichtung 201, um einen einem Eintrag des Lexikons 100 entsprechenden Index und eine Länge mit der längsten Übereinstimmung aus einem von dem Codespeicher 205 abgegebenen, komprimierten Code zu bestim­ men.
Die zweite Einrichtung ist eine Datenkopiereinrichtung 202 zum Erhalten von dekomprimierten Daten durch Kopieren einer Zeichenkette in dem Datenspeicher 204 in den Datenspeicher 204, die durch die Länge mit der längsten Übereinstimmung und einen Zeiger bestimmt ist, der durch Zuweisung des Indexes zu der Umwandlungstabelle 200 bestimmt ist.
Die dritte Einrichtung ist eine Umwandlungstabellen-Aktuali­ sierungseinrichtung 203 zum Aktualisieren der Umwandlungsta­ belle 200 durch Hinzufügen eines Eintrags, der einen nicht registrierten Index mit einem Zeiger korreliert, der die Zei­ chenkette in dem Datenspeicher 204 angibt, die durch die Da­ tenkopiereinrichtung 202 kopiert worden ist.
Bei dem erfindungsgemäßen Datenkomprimierungsschema speichert jeder Eintrag des Lexikons 100 einen Zeiger in den Datenspei­ cher 104. Dies ist logisch äquivalent zu dem Speichern einer Zeichenkette mit unendlicher Länge. Deshalb kann ein hohes Komprimierungsverhältnis erhalten werden, selbst wenn Ein­ gabedaten eine Datenstruktur aufweisen, bei der ein großes Datenmuster von mehreren hundert bis mehreren tausend Byte mit hoher Häufigkeit wiederholt wird. Die Lexikon-Aktuali­ sierungseinrichtung 103 kann das Lexikon 100 einfach dadurch aktualisieren, indem ihm ein neuer Zeiger zu dem Datenspei­ cher. 104 hinzugefügt wird, der den Kopf einer Zeichenkette wie durch die Codiereinrichtung 102 codiert, angibt. D. h. es ist ausreichend, daß nur ein Eintrag dem Lexikon 100 bei je­ dem Aktualierungsvorgang hinzugefügt wird. Dies ermöglicht, daß das Komprimierungsverfahren mit hoher Geschwindigkeit durchgeführt wird.
Bei dem erfindungsgemäßen Datendekomprimierungsschema be­ schreibt die Umwandlungstabelle 200 den Zusammenhang zwischen Indizes jeweiliger Einträge des Lexikons 100 und Zeigern zu den jeweiligen Zeichenketten in dem Datenspeicher 204. Origi­ naldaten können einfach derart wiederhergestellt werden, daß die Datenkopiereinrichtung 202 Zeichenketten kopiert. Deshalb kann das Dekomprimierungsverfahren auch mit hoher Geschwin­ digkeit durchgeführt werden.
Fig. 1 zeigt die Grundkonfiguration eines erfindungsgemäßen Datenkomprimierungsschemas.
Fig. 2 zeigt die Grundkonfiguration eines erfindungsgemäßen Datendekomprimierungsschemas.
Fig. 3A-3E zeigen die Konfiguration eines Suchbaums.
Fig. 4 zeigt ein durch eine Einrichtung zur Suche nach der Zeichenkette mit der längsten Übereinstimmung durchgeführtes Verfahren.
Fig. 5 zeigt ein durch eine Codiereinrichtung durchgeführtes Verfahren.
Fig. 6 zeigt ein durch eine Lexikon-Aktualisierungseinrich­ tung durchgeführtes Verfahren.
Fig. 7A und 7B zeigen Konfigurationen von zwei Arten von Um­ wandlungstabellen.
Fig. 8 zeigt ein durch eine Decodiereinrichtung durchgeführ­ tes Verfahren.
Fig. 9 zeigt ein durch eine Datenkopiereinrichtung durchge­ führtes Verfahren.
Fig. 10 zeigt ein durch eine Umwandlungstabellen-Aktualisie­ rungseinrichtung durchgeführtes Verfahren.
Fig. 11A-11F zeigen wie ein Suchbaum wächst.
Fig. 12A-12C zeigen, wie einem Suchbaum ein neuer Eintrag hinzugefügt wird.
Fig. 13 zeigt zwei Verfahren des Zählens einer Zeichenketten­ länge mit der längstem Übereinstimmung.
Fig. 14A und 14B zeigen das LZ77-Schema, und
Fig. 15A und 15B zeigen das LZ78-Schema.
Zunächst wird die Konfiguration eines Lexikons 100 beschrie­ ben. Wie in dem Fall eines bei dem LZ78-Schema verwendeten Lexikons, kann die Konfiguration des Lexikons 100 konzeptuell durch einen Baum ausgedrückt werden. Der bemerkenswerteste Unterschied zwischen den zwei Arten von Lexika ist, daß, wäh­ rend das Lexikon des LZ78-Schemas eine Zeichenkette an jedem Knoten speichert (siehe Fig. 15A und 15B), das Lexikon 100 gemäß der Erfindung eine Zeichenkette an jedem Knoten spei­ chert. Fig. 3A zeigt eine Eingabedaten-Zeichenkette 300, und Fig. 3B zeigt das Konzept eines erfindungsgemäßen Suchbaums für die Eingabedaten-Zeichenkette 300. Der Suchbaum weist Hauptknoten 302, Abzweigungsknoten 303 und ursprüngliche Re­ gistrierungsknoten 304 auf. Jeder Hauptknoten speichert lo­ gisch eine Zeichenkette einer unendlichen Länge. Eine Zahl, die der Schulter jedes Hauptknotens 302 zugeordnet ist, ist die gleiche wie ein Indexwert eines entsprechenden Eintrags des Lexikons 100. Ein Abzweigungsknoten 303 gibt einen Ab­ zweigungspunkt der in dem Hauptknoten 302 gespeicherten Zei­ chenkette an. Abzweigungsknoten 303 werden notwendigerweise erzeugt, wenn ein Hauptknoten 302 neu erzeugt wird, so daß sie gegenseitig zugeordnet sind. All diese Zeichen, die als Eingabedaten erscheinen, werden vorläufig in den ursprüngli­ chen Registrierungsknoten 304 gespeichert. Aufgrund der ur­ sprünglichen Registrierungsknoten 304 kann notwendigerweise eine Zeichenkette gefunden werden, die mit einer betreffenden Zeichenkette über mindestens ein Zeichen übereinstimmt. Des­ halb kann das Codeformat als ein Satz aus einem Index und ei­ ner Übereinstimmungslänge auf vereinheitlichte Weise ausge­ drückt werden. Ein Suchbaum kann so aufgebaut sein, daß er keine ursprünglichen Registrierungsknoten besitzt. In einem solchen Fall ist es jedoch nicht sichergestellt, daß eine Su­ che nach einer Zeichenkette mit der längsten Übereinstimmung erfolgreich ist. Deshalb ist es notwendig, für die beiden Fälle Codeformate zu erstellen, in denen eine Überein­ stimmungszeichenkette gefunden und nicht gefunden wird.
Eine in jedem Hauptknoten 302 gespeicherte Zeichenkette wird erhalten, indem ein Pfad von der Wurzel des Suchbaums zu dem Ende des betreffenden Hauptknotens 302 verfolgt wird. Fig. 3C zeigt ein Lexikon mit einer Index-Zeichenkettendarstellung äquivalent zu dem Suchbaum von Fig. 3B. Wie aus Fig. 3C er­ sichtlich ist, speichert bei dem erfindungsgemäßen Lexikon 100 jeder andere Eintrag als die ursprünglich registrierten Zeichen eine Zeichenkette einer logisch unendlichen Länge. Es ist physikalisch unmöglich, eine Zeichenkette einer unendli­ chen Länge zu speichern. Deshalb wird dort statt des direkten Speicherns einer Zeichenkette in jedem Hauptknoten 302, ein Zeiger 301 zu der Eingabedaten-Zeichenkette 300 gespeichert. Fig. 3D zeigt das Konzept eines realistischeren Suchbaums, bei dem Hauptknoten 305 durch Vierecke umschlossen sind, Ab­ zweigungsknoten 306 doppelt durch Vierecke umschlossen sind, und ursprüngliche Registrierungsknoten 307 durch einen Kreis umschlossen sind. Ein Ast, der eine Verbindung von einem Hauptknoten 305 zu einem Abzweigungsknoten 306 angibt, wird durch einen Pfeil 308 mit einer ausgezogenen Linie ausge­ drückt, und ein Ast, der eine Verbindung von einem Abzwei­ gungsknoten 306 zu dem nächsten Abzweigungsknoten 306 angibt, ist durch einen Pfeil 309 mit einer gestrichelten Linie ausgedrückt. Jeder Hauptknoten 305 speichert den Wert eines Zeigers 301 einer Zeichenkette statt die Zeichenkette selbst. Um einen Abzweigungspunkt in der Zeichenkette anzugeben, speichert jeder Abzweigungsknoten 306 die Anzahl der von der Wurzel des Suchbaums zu dem Abzweigungspunkt gezählten Zei­ chen. "NIL" ist ein Beendigungssymbol, das angibt, daß es weiter unten keine Abzweigungssymbole gibt.
Es ist aus Fig. 3D ersichtlich, daß der erfindungsgemäße Suchbaum durch einen Satz von vier Arten von Elementen aufge­ baut ist. So ist das Lexikon in einem physikalischen Speicher durch einen Array von Einträgen aufgebaut, die durch vier Va­ riablen ausgedrückt sind. Fig. 3E zeigt ein Lexikon in Array­ darstellung. Die vier Variablen sind wie folgt definiert:
ptr: Zeiger zu der Eingabedaten-Zeichenkette 300, wobei der Zeiger in einem Hauptknoten 305 gespeichert ist,
off: Versetzungszahl eines Abzweigungsknotens 306,
mnd: Zweig von einem Hauptknoten 305 zu einem nächstgelegenen Abzweigungsknoten 306, und
bnd: Zweig von einem Abzweigungsknoten 306 zu dem nächsten Abzweigungsknoten 306.
Das erfindungsgemäße Lexikon wurde vorstehend mit Bezug auf seine konzeptuelle Konfiguration zu seiner in einem physika­ lischen Speicher zu entwickelnden, praktischen Konfiguration beschrieben. Die Lexika von Fig. 3B bis 3E sind einander im wesentlichen äquivalent, obgleich sie in der Darstellung un­ terschiedlich sind.
Als nächstes wird mittels eines spezifischen Beispiels be­ schrieben, wie ein erfindungsgemäßer Komprimierungsvorgang durchgeführt wird, wobei dem Wachstum eines Suchbaums Auf­ merksamkeit geschenkt wird. Eine Eingabedaten-Zeichenkette "ababcababcbaa" wird als Beispiel verwendet.
Fig. 11A zeigt einen Suchbaum in einem ursprünglichen Zu­ stand, der nur aus den ursprünglichen Registrierungsknoten gebildet ist. Ein Datenzeiger ist an den Kopf der Eingabeda­ ten gesetzt und ihm wird ein Wert 0 gegeben. Eine Zeichen­ kette für die längste Übereinstimmung für eine Eingabedaten- Zeichenkette beginnend mit dem Kopf, der durch den Datenzei­ gerwert dptr = 0 angegeben ist, ist "a" und ihr Index ist "0". Die Zeichenkette mit der längsten Übereinstimmung hat eine Übereinstimmungslänge "1". Deshalb wird ein Satz (0, 1) codiert. Ein Eintrag des Index 3 wird dem Suchbaum hinzuge­ fügt und sein Hauptknoten wird mit einer Zeichenkette unend­ licher Länge "ababc. . . ." gespeichert, der aus der codierten Zeichenkette "a" (Zeichenkette beginnend von dem durch dptr = 0 angegebenen Zeichen) und der sich daraus ergebenden Zei­ chenkette besteht. Der Datenzeigerwert dptr wird durch die Zahl 1 des codierten Zeichens inkrementiert, so daß er einen Wert 1 (dptr = 1) hat. Fig. 11B zeigt einen Suchbaum in die­ sem Zustand.
Dann wird wiederum eine Suche nach einer Zeichenkette mit der längsten Übereinstimmung für eine Eingabedaten-Zeichenkette beginnend mit dem durch dptr = 1 angegebenen Zeichen durchge­ führt, um eine Zeichenkette "b" mit der längsten Überein­ stimmung zu finden. Da der Index "1" ist und die Zeichenkette mit der längsten Übereinstimmung eine Länge 1 hat, wird ein Satz (1, 1) codiert. Ein Eintrag des Index 4 wird dem Such­ baum hinzugefügt, und sein Hauptknoten wird mit einer Zei­ chenkette "babc. . ." unendlicher Länge gespeichert. Der Da­ tenzeigerwert dptr wird durch die Zahl 1 des codierten Zei­ chens inkrementiert, um einen Wert 2 (dptr = 2) zu haben. Fig. 11C zeigt einen Suchbaum in diesem Zustand.
Danach wird eine Suche nach der Zeichenkette mit der längsten Übereinstimmung nach einer Eingabedaten-Zeichenkette "abca . . . ." beginnend mit dem durch dptr = 2 angegebenen Zeichen durchgeführt. In diesem Fall wird die längste Übereinstimmung einer Länge 2 zwischen der vorstehend erwähnten Eingabedaten- Zeichenkette und der Zeichenkette "ababc. . . .", die in Index 3 registriert gespeichert ist, gefunden. Deshalb wird ein Satz (3, 2) codiert. Die Abzweigung des Suchbaums tritt zwi­ schen der Zeichenkette mit der längsten Übereinstimmung "ab" und dem nächsten Zeichen auf. Ein Eintrag des Index 5 wird dem Suchbaum hinzugefügt, ein Abzweigungsknoten wird zwischen "ab" und dem nächsten Zeichen "a" erzeugt und sein Hauptkno­ ten wird mit einer Zeichenkette unendlicher Länge "abca. . .", beginnend mit dem durch dptr = 2 angegebenen Zeichen, gespei­ chert. Der Datenzeigerwert dptr wird durch die Zahl 2 der co­ dierten Zeichen inkrementiert, um einen Wert 4 (dptr = 4) zu haben. Fig. 11D zeigt einen Suchbaum in diesem Zustand.
Durch Durchführen einer ähnlichen Operation wird gefunden, daß eine Zeichenkette mit der längsten Übereinstimmung für eine Eingabedaten-Zeichenkette beginnend mit dem durch dptr = 4 angegebenen Zeichen "c" ist, und ein Satz "(2, 1)" wird co­ diert. Ein Eintrag des Index 6 wird dem Suchbaum wie in Fig. 11E gezeigt hinzugefügt. Indem weiter eine ähnliche Operation durchgeführt wird, wird gefunden, daß eine Zeichenkette mit der längsten Übereinstimmung für eine Eingabedaten-Zeichen­ kette beginnend mit dem durch dptr = 5 angegebenen Zeichen "abab" ist, und ein Satz "(3, 4)" wird codiert. Ein Eintrag des Index 7 wird dem Suchbaum wie in Fig. 11F gezeigt hin­ zugefügt. Wenn ähnliche Operationen weiter durchgeführt wer­ den, werden die Eingabedaten komprimiert, während der Such­ baum wächst.
Ablauf des Komprimierungsverfahrens
Das Komprimierungsverfahren umfaßt drei Hauptverfahren, die nachstehend detailliert beschrieben sind. In Fig. 4 bis 6, die sich auf diesen Abschnitt beziehen, zeigt ein Pfeil mit einer ausgezogenen Linie einen Verfahrensablauf und ein Pfeil mit einer gestrichelten Linie gibt eine Datenbewegung an. Oberhalb der Pfeile mit gestrichelten Linien geschriebene Symbole bezeichnen Zeiger zum Abrufen von Daten des Lexikons 100, eines Datenspeichers 104 und einen Codespeichers 105 an. Die verwendeten Symbole werden wie folgt definiert:
Datenzeiger dptr: Zeiger, der eine Leseposition für Eingabe­ daten in dem Datenspeicher 104 angibt,
Suchzeiger sptr: Zeiger, der eine Zeichenkette angibt, die einer Suche nach einer Übereinstimmungs-Zeichenkette zu un­ terziehen ist,
Codezeiger cptr: Zeiger, der eine Schreibposition für kompri­ mierte Daten in dem Codespeicher 105 angibt,
Index ID: Index eines Eintrags des Lexikons 100, und
Eintragszähler ecnt: Anzahl der in dem Lexikon 100 regi­ strierten Einträge.
Fig. 4 zeigt Einzelheiten eines Verfahrens, das durch eine Sucheinrichtung 101 nach der Zeichenkette mit der längsten Übereinstimmung durchgeführt wird. Zunächst wird in Schritt 400 das Kopfzeichen der zu codierenden Eingabedaten aus dem Datenspeicher 104 ausgelesen. In Schritt 401 wird der ID ei­ nes ursprünglichen Registrierungsknoten aus dem Kopfzeichen erhalten. Die IDs der ursprünglichen Registrierungsknoten des Lexikons 100 stehen in vollständiger Eins-zu-eins-Entspre­ chung zu Zeichen, die in den Eingabedaten erscheinen. Deshalb kann, falls diese Beziehung vorläufig als Tabelle formuliert wird, der ID des ursprünglichen Registrierungsknoten des Kopfzeichens durch Eingabe des Kopfzeichens erhalten werden. Im allgemeinen können, falls Eingabedaten beispielsweise Werte der Byte-Daten 00-ff haben, die ursprünglichen Regi­ strierungsknoten des Lexikons 100 so aufgebaut werden, daß sie IDs haben, die mit den Werten der Eingabedaten identisch sind. In diesem Fall kann der Tabellenumwandlungsschritt ent­ fallen. Wenn der ID des ursprünglichen Registrierungsknoten des Kopfzeichens in Schritt 401 bestimmt worden ist, wird mit dem eigentlichen Verfahren begonnen. In Schritt 402 wird der ID eines am nächsten gelegenen Abzweigungsknotens bestimmt, um eine Verschiebung von dem durch den gegenwärtigen ID ange­ gebenen Knoten zu einem nächsten Knoten zu gestatten. Dies erfolgt derart, daß das Lexikon 100 unter Verwendung des ge­ genwärtigen ID abgefragt wird, und der ID des nächstgelegenen Verzweigungsknotens aus dem Wert von bnd oder mnd eines durch den gegenwärtigen ID angegebenen Eintrags bestimmt wird. In Schritt 403 wird der in Schritt 402 erhaltene ID überprüft. Falls er einen Wert NIL (Beendigungssymbol) hat, wird das Verfahren beendet, weil es keine weiteren Zeichenketten für eine Suche mehr gibt.
Falls der in Schritt 402 erhaltene ID einen anderen Wert als NIL hat, wird eine Suche nach einer Übereinstimmungszeichen­ kette unter Verwendung einer Zeichenkette durchgeführt, die in einem durch den ID angegebenen Eintrag registriert ist. In Schritt 404 wird sptr erhalten durch Abfragen des Lexikons 100 auf der Grundlage des ID-Werts. sptr ist identisch mit einem Zeiger ptr der Zeichenkette, die in dem Eintrag des Le­ xikons gespeichert ist, der durch den ID angegeben ist. In Schritt 405 werden die durch sptr und dptr angegebenen Zei­ chenketten aus dem Datenspeicher 104 ausgelesen und miteinan­ der verglichen. Die Zahl der Zeichen, für die durch den Ver­ gleich eine Übereinstimmung gefunden wurde, wird zu einer Übereinstimmungslänge gemacht. Bei Beendigung des Schritts 405 kehrt das Verfahren zu Schritt 402 zurück, um die Schritte 402-405 zu wiederholen. Diese Schleife wird fortge­ setzt, bis ein Beendigungssymbol NIL erscheint. Eine schließ­ liche erhaltene Übereinstimmungslänge wird als Zeichenketten­ länge mit der längsten Übereinstimmung MLEN verwendet.
Fig. 5 zeigt die Einzelheiten eines durch eine Codiereinrich­ tung 102 durchgeführten Verfahrens. Zunächst wird in Schritt 500 der ID eines Eintrags des Lexikons 100, in dem die Zei­ chenkette mit der längsten Übereinstimmung (die durch die Sucheinrichtung 101 nach der Zeichenkette mit der längsten Übereinstimmung bestimmt wurde) registriert wird, und eine Zeichenkettenlänge mit der längsten Übereinstimmung MLEN wird gemäß einem vorbestimmten Codeformat codiert. Ein so durch Codieren, d. h. Komprimieren, erhaltener Code wird in den Co­ despeicher 105 geschrieben. In Schritt S01 wird beurteilt, ob noch zu bearbeitende Eingabedaten in dem Datenspeicher 104 verbleiben. Falls keine Eingabedaten verbleiben, ist das Kom­ primierungsverfahren beendet (EXIT). Falls Eingabedaten ver­ bleiben, ist das Codierverfahren beendet, und es wird mit dem nächsten Verfahren begonnen.
Wie vorstehend beschrieben, wird das Codieren mit einem Satz aus einem Index ID und einer Zeichenkettenlänge mit der läng­ sten Übereinstimmung MLEN durchgeführt. Es ist zu beachten, daß es zwei Verfahren des Codierens der MLEN gibt: das Zählen der MLEN von der Wurzel eines Suchbaums und ihr Zählen von einem Abzweigungsknoten. Ein Fall der Suche nach einer Zei­ chenkette mit der längsten Übereinstimmung mit dem Suchbaum von Fig. 11F wird angenommen. Eine Zeichenkette mit der läng­ sten Übereinstimmung für eine Eingabedaten-Zeichenkette be­ ginnend mit dem durch dptr = 9 angegebenen Zeichen ist "abc", und der ID eines Eintrags, in dem die Zeichenkette gespei­ chert ist, ist "5". Gemäß dem Verfahren des Zählens der Zei­ chenkettenlänge mit der längsten Übereinstimmung MLEN von der Wurzel, ist er 3, wie durch das Referenzzeichen 1300 in Fig. 13 angegeben, deshalb wird ein Code durch einen Satz (5, 3) ausgedrückt. Gemäß dem Verfahren des Zählens von MLEN von dem Abzweigungsknoten des Index 5 aus, ist es 2, wie durch das Referenzzeichen 1301 in Fig. 13 angegeben; folglich wird ein Code durch einen Satz (5, 1) ausgedrückt.
Was die Unterschiede zwischen beiden Verfahren anbetrifft, werden die Werte der Übereinstimmungslängen bei dem Verfahren des Zählens von MLEN von einem Abzweigungsknoten näher an 0 verteilt als bei dem Verfahren von deren Zählen von der Wur­ zel. Deshalb hat das erstere Verfahren eine geringere Entro­ pie, was zu einem hohen Komprimierungsverhältnis führt. Bei einem nachstehend beschriebenen Dekomprimierungsverfahren er­ fordert das erstere Verfahren eine größere Speichergröße als das letztere Verfahren.
Fig. 6 zeigt Einzelheiten eines durch eine Lexikonaktualisie­ rungseinrichtung 103 durchgeführten Verfahrens. Zunächst wird in Schritt 600 beurteilt, ob die Zahl der Einträge in dem Le­ xikon 100 einen gegebenen Maximalwert (maximale Zahl der Ein­ träge) erreicht hat. Wie ein Suchbaum des LZ78-Schemas darf ein erfindungsgemäßer Suchbaum nicht unendlich wachsen, d. h. seine Zahl von Knoten erhöhen. Deshalb sollte die Zahl der Knoten eines Suchbaums (d. h. die Anzahl der Einträge des Le­ xikons 100) auf die vorstehende Weise beschränkt werden.
Die maximale Zahl der Einträge wird bestimmt durch einen Kom­ promiß zwischen den Speicherkosten und dem Komprimierungsver­ hältnis. D. h. wenn die maximale Zahl der Einträge erhöht wird, wird das Komprimierungsverhältnis im allgemeinen auf­ grund einer Erhöhung der Zahl der Zeichenketten zur Abfrage verbessert, während die Speicherkosten aufgrund einer Vergrö­ ßerung der Speichergröße erhöht werden, die von dem Lexikon 100 gefordert wird.
Falls ein Beurteilungsergebnis von Schritt 600 angibt, daß das Lexikon 100 noch Platz hat, um einen neuen Eintrag aufzu­ nehmen, geht das Verfahren zu Schritt 601, wo Werte in einen neuen Eintrag geschrieben werden. Das Hinzufügen eines neuen Eintrags zu dem Lexikon 100 ist dem Auftreten einer neuen Ab­ zweigung bei einem Suchbaum äquivalent. Das Lexikon 100 wird auf etwas unterschiedliche Weisen in Abhängigkeit von den Ab­ zweigungsstellen in einem Suchbaum aktualisiert. Und zwar weil die Form einer Verbindung zu einem Elterneintrag davon abhängt, ob die Abzweigung zwischen einem Hauptknoten und ei­ nem Abzweigungsknoten oder zwischen zwei Abzweigungsknoten auftritt.
Fig. 12B zeigt beispielsweise einen Fall, bei dem die Abzwei­ gung zwischen einem Hauptknoten 1200 und einem Abzweigungs­ knoten 1201 eines Suchbaums von Fig. 12A auftritt und ein neuer Eintrag 1203 hinzugefügt wird. Der Eintrag 1203 hat einen Index ecnt. Der Hauptknoten 1204 speichert einen Zeiger zu einer Zeichenkette, die durch Verbinden einer Zeichenkette von codierten Eingabedaten und einer nachfolgenden Zeichen­ kette unendlicher Länge erhalten wurde. Da dieser Zeiger ein Zeiger dptr zu der Zeichenkette der codierten Eingabedaten ist, wird der Zeiger dptr in den Hauptknoten 1204 des Ein­ trags 1203 geschrieben. Da eine Versetzungszahl off, die in einen Abzweigungsknoten 1205 zu schreiben ist, die Zahl der Zeichen zu der Abzweigungsstelle ist, ist sie mit der Zei­ chenkettenlänge mit der längsten Übereinstimmung MLEN iden­ tisch. Ein Beendigungssymbol NIL wird für einen Zweig 1206 des Eintrags 1203 geschrieben, weil der neu registrierte Hauptknoten 1204 keine Abzweigung umfaßt. Ein Index, der eine Verbindung zu dem nächsten Abzweigungsknoten angibt, wird für einen Zweig 1207 des Eintrags 1203 geschrieben. Der Wert ei­ nes Zweigs mnd von dem Hauptknoten 1200, der der Elternein­ trag des Eintrags 1203 ist, wird zu dem Indexwert ecnt des eingefügten Eintrags 1203 geändert.
Fig. 12C zeigt einen Fall, bei dem die Abzweigung zwischen den Abzweigungsknoten 1201 und 1202 des Suchbaums von Fig. 12A auftritt und ein neuer Eintrag 1208 wird hinzugefügt. Je­ weilige Komponenten 1209-1212 des Eintrags 1208 werden auf die gleiche Weise wie bei dem vorstehend angegebenen Fall er­ zeugt, indem der Eintrag 1203 hinzugefügt wird. Die Fälle von Fig. 12B und 12C unterscheiden sich darin, daß der neue Ein­ trag von dem Abzweigungsknoten des Elterneintrags oder von seinem Hauptknoten auftritt. Deshalb wird, während mnd des Elterneintrags in dem Fall von Fig. 12B geändert wird, bnd des Elterneintrags in dem Fall von Fig. 12C geändert.
In Schritt 601 wird nicht nur der neue Eintrag dem Lexikon 100 hinzugefügt, sondern die Werte von dptr und ecnt werden auch aktualisiert. Der Wert von dptr wird um die Zahl MLEN der codierten Zeichen der Zeichenkette mit der längsten Über­ einstimmung erhöht und der Wert ecnt wird durch die Zahl 1 des hinzugefügten Eintrags erhöht.
Falls die Zahl der Einträge als gleich der Höchstzahl in Schritt 600 beurteilt wird, geht das Verfahren zu Schritt 602, wo das Lexikon 100 initialisiert wird, d. h. der gesamte Inhalt wird mit Ausnahme der ursprünglichen Registrierungs­ knoten gelöscht.
Konfiguration der Umwandlungstabelle
Eine Umwandlungstabelle 200 hat die Rolle eines Lexikons bei einem Dekomprimierungsverfahren. Die Umwandlungstabelle 200 wird unterschiedlich in Abhängigkeit davon aufgebaut, wie eine Übereinstimmungslänge MLEN codiert ist. Fig. 7A zeigt eine Umwandlungstabelle eines Dekomprimierungsverfahrens für den Fall des Zählens einer Übereinstimmungslänge von der Wur­ zel eines Suchbaums. Diese Tabelle beschreibt die Entspre­ chung zwischen IDs von jeweiligen Einträgen des Lexikons 100 und Zeigern zu jeweiligen in dem Datenspeicher 104 gespei­ cherten Zeichenketten. Fig. 7B zeigt eine Umwandlungstabelle eines Dekomprimierungsverfahrens für den Fall des Zählens ei­ ner Übereinstimmungslänge von einem Abzweigungsknoten eines Suchbaums. Diese Tabelle beschreibt die Entsprechung zwischen IDs, ptr's und off's. In dem ersteren Fall reicht es aus, daß nur der ptr-Wert eines Zeigers einer aus einer Kopie stammen­ den Zeichenkette aus der Umwandlungstabelle 200 erhalten wird, weil eine codierte Übereinstimmungslänge gleich der An­ zahl der zu kopierenden Zeichen ist. Im Gegensatz hierzu wird in dem letzteren Fall der Wert von off auch benötigt, weil die Zahl der zu kopierenden Zeichen nicht erhalten werden kann, es sei denn die Zahl der Zeichen von der Wurzel zu ei­ nem Abzweigungsknoten wird einer codierten Übereinstimmungs­ länge hinzugefügt.
Verlauf des Dekomprimierungsverfahrens
Das Dekomprimierungsverfahren umfaßt drei Hauptverfahren, die nachstehend detaillierter beschrieben werden. In Fig. 8 bis 10, die diesen Abschnitt betreffen, gibt ein Pfeil mit ausge­ zogener Linie einen Verfahrensverlauf an und ein Pfeil mit gestrichelter Linie gibt eine Datenbewegung an. Über die Pfeile mit gestrichelter Linie geschriebene Symbole bezeich­ nen Zeiger zum Abfragen von Daten der Umwandlungstabelle 200, eines Datenspeichers 204 und eines Codespeichers 205. Die verwendeten Symbole werden wie folgt definiert:
Datenzeiger dptr: Zeiger, der eine Schreibposition für wie­ derhergestellte Daten in dem Datenspeicher 204 angibt.
Suchzeiger sptr: Zeiger, der eine aus einer Kopie stammende Zeichenkette beim Zeichenkettenkopieren angibt,
Codezeiger cptr: Zeiger, der eine Leseposition für kompri­ mierte Daten in dem Codespeicher 205 angibt,
Index ID, Index eines Eintrags der Umwandlungstabelle 200, und
Eintragszähler ecnt: Zahl der in der Umwandlungstabelle 200 registrierten Einträge.
Fig. 8 zeigt Einzelheiten eines durch eine Decodiereinrich­ tung 201 durchgeführten Verfahrens. Zunächst wird in Schritt 800 ein komprimierter Code erhalten durch Abfragen des Code­ speichers 205 unter Verwendung eines Codezeigers cptr. Der komprimierte Code ist ein Ergebnis des Codierens durch die Codiereinrichtung 102 gemäß dem vorbestimmten Codeformat ei­ nes Satzes (ID, MLEN) eines Index ID und einer Überein­ stimmungslänge MLEN. In Schritt 801 werden die ID- und MLEN- Werte ausschließlich durch Decodieren des komprimierten Codes gemäß dem vorbestimmten Codeformat erhalten.
Fig. 9 zeigt Einzelheiten eines durch eine Datenkopierein­ richtung 202 durchgeführten Verfahrens. In Schritt 900 werden ein aus einer Kopie stammender Zeiger sptr und die Zahl MLEN der Kopiezeichen die für das Zeichenkettenkopieren notwendig sind, bestimmt, indem die Umwandlungstabelle 200 unter Ver­ wendung eines ID-Werts, wie durch das Decodieren durch die Decodiereinrichtung 201 erhalten, abgefragt wird. Wie vorste­ hend beschrieben gibt es zwei Verfahren des Zählens einer Übereinstimmungslänge MLEN: ihr Zählen von der Wurzel eines Suchbaums und ihr Zählen von einem Abzweigungsknoten. In dem ersteren Fall verwendet das Dekomprimierungsverfahren die Um­ wandlungstabelle von Fig. 7A; deshalb wird ein ptr-Wert unter Verwendung von ID in Schritt 900 abgefragt. Der so erhaltene ptr-Wert wird als Zeiger sptr für Zeichenkettenkopieren ver­ wendet. Ein MLEN-Wert wird so verwendet wie er ist, da er eine Zahl von Kopiezeichen darstellt. Im letzteren Fall ver­ wendet das Dekomprimierungsverfahren die Umwandlungstabelle von Fig. 7B; deshalb werden ptr- und off-Werte unter Verwen­ dung des ID in Schritt 900 abgefragt. Der ptr-Wert wird als Zeiger sptr verwendet. Die Zahl der Kopiezeichen wird durch Addieren des off-Werts zu einem MLEN-Wert berechnet.
In Schritt 901 wird eine bereits wiederhergestellte Zeichen­ kette in dem Datenspeicher 204 in die Position kopiert, die von einem Datenzeiger dptr auf der Grundlage des aus der Zei­ chenkettenkopie stammenden Zeigers sptr und der Anzahl MLEN der Kopiezeichen, die in Schritt 900 erhalten wurden, angege­ ben ist. Die Daten werden durch dieses Zeichenkettenkopieren dekompriert, so daß die vorher komprimierten Daten wiederher­ gestellt werden. In Schritt 902 wird beurteilt, ob ein zu be­ arbeitender komprimierter Code in dem Codespeicher 205 ver­ bleibt. Falls kein komprimierter Code verbleibt, ist das De­ komprimierungsverfahren beendet (EXIT). Falls ein komprimier­ ter Code verbleibt, wird mit dem nächsten Verfahren begonnen.
Fig. 10 zeigt Einzelheiten eines durch eine Umwandlungsta­ bellen-Aktualisierungseinrichtung 203 durchgeführten Verfah­ rens. In Schritt 1000 wird beurteilt, ob die Zahl der in der Umwandlungstabelle 200 registrierten Einträge eine maximale Zahl der Einträge erreicht hat, die auf gleiche Weise wie für das in dem Komprimierungsverfahren verwendeten Lexikon einge­ stellt wird.
Falls ein Beurteilungsergebnis von Schritt 1000 angibt, daß die Umwandlungstabelle 200 noch Platz hat, um einen neuen Eintrag aufzunehmen, geht das Verfahren zu Schritt 1001, wo Werte zu einem neuen Eintrag geschrieben werden. In dem Fall der Umwandlungstabelle von Fig. 7A, wird für einen Eintrag mit dem Indexwert ecnt ein Kopiezielzeiger dptr, der eine Po­ sition angibt, an der eine Datenkette durch die Datenkopier­ einrichtung 202 geschrieben worden ist, in die Spalte von ptr der Umwandlungstabelle geschrieben. In dem Fall der Umwand­ lungstabelle von Fig. 7B wird die Zahl MLEN der Kopiezeichen in die Spalte des off zusätzlich zu dem vorstehend angegebe­ nen Wert geschrieben.
In Schritt 1001 werden nicht nur der der Umwandlungstabelle 200 hinzugefügte, neue Eintrag, sondern auch die Werte von dptr und ecnt aktualisiert. Der Wert von dptr wird durch die Zahl MLEN der dekomprimierten Zeichen erhöht und der Wert von ecnt wird durch die Zahl 1 des hinzugefügten Eintrags erhöht.
Falls beurteilt wird, daß die Zahl der Eintragungen gleich der maximalen Zahl in Schritt 1000 ist, geht das Verfahren zu Schritt 1002, wo die Umwandlungstabelle 200 initialisiert, d. h. vollständig gelöscht wird.
Mit dem vorstehend angegebenen Aktualisierungsverfahren wer­ den das Lexikon 100 in dem Komprimierungsverfahren und die Umwandlungstabelle 200 in dem Dekomprimierungsverfahren voll­ ständig kompatibel gemacht: in den jeweiligen Einträgen des Lexikons 100 gespeicherte Zeichenketten sind mit denjenigen identisch, die in den jeweiligen Einträgen der Umwandlungs­ tabelle 200 gespeichert sind.
Wie vorstehend beschrieben speichert gemäß dem erfindungsge­ mäßen Datenkomprimierungsschema jeder Eintrag des Lexikons eine Zeichenkette einer unendlichen Länge. Deshalb ist das Komprimierungsschema frei von der Beschränkung der Endlich­ keit von registrierten Zeichenkettenlängen wie bei dem LZ78- Schema. Deshalb kann das erfindungsgemäße Datenkompri­ mierungsschema leistungsfähig Eingabedaten wie binäre Bildda­ ten mit einer Datenstruktur komprimieren, bei der ein langes Datenmuster mit großer Häufigkeit wiederholt wird.
Bei dem Lexikon-Aktualisierungsverfahren und dem Umwandlungs­ tabellen-Aktualisierungsverfahren wird jedesmal nur ein Ein­ trag aktualisiert. Deshalb können die Komprimierungs- und De­ komprimierungsverfahren mit größerer Geschwindigkeit als jene des LZ77-Schemas durchgeführt werden, welches jedesmal das Aktualisieren einer Vielzahl von Einträgen erfordert.
Bei dem Codierverfahren werden durch Ausdrücken einer Über­ einstimmungslänge durch die Zahl der von einem Abzweigungs­ knoten gezählten Zeichen Werte der Übereinstimmungslängen nahe 0 verteilt. Deshalb haben die Übereinstimmungslängen eine kleine Entropie, was für eine hohe Codierleistung sorgt.
Gemäß dem erfindungsgemäßen Dekomprimierungsschema können Da­ ten nur durch Bezeichnen eines Zeigers zu einer aus einer Ko­ pie stammenden Zeichenkette in dem Datenspeicher und der Zahl der Kopiezeichen und Kopieren der bezeichneten Zeichenkette in den Datenspeicher zu einer Schreibposition in dem Daten­ speicher wiederhergestellt werden. Deshalb kann die Datende­ komprimierung mit hoher Geschwindigkeit durchgeführt werden.

Claims (7)

1. Datenkomprimierungsvorrichtung, umfassend:
einen Datenspeicher (104, 204) zum Speichern von Eingabedaten,
einen Codespeicher (105, 205) zum Speichern von durch die Komprimierung von Eingabedaten erhaltenen Codes,
ein Lexikon (100) mit einer Vielzahl von Einträgen, in welchen jeweils ein erster Zeiger (301) gespeichert werden kann, der eine beliebig lange Zeichenkette der in dem Da­ tenspeicher gespeicherten Eingabedaten anzeigt, wobei das Lexikon durch einen Suchbaum ausgedrückt ist, der einen Hauptknoten (302, 305) zum Speichern des ersten Zeigers (301) und einen Abzweigungsknoten (303, 306) zum Darstel­ len einer Abzweigung bei dem Suchbaum umfaßt,
eine Sucheinrichtung (101) für die Zeichenkette mit der längsten Übereinstimmung zum Suchen einer Zeichenkette mit der längsten Übereinstimmung, die mit einer über eine längste Länge zu codierenden Zeichenkette übereinstimmt, unter den durch die jeweiligen ersten Zeiger (301) angegebenen Zeichenketten, wobei die längste Länge die längste Übereinstimmungslänge ist,
eine Codiereinrichtung (102) zum Codieren der längsten Übereinstimmungslänge und eines Indexes eines Eintrags, der einen ersten Zeiger (301) speichert, der die Zeichen­ kette mit der längsten Übereinstimmung angibt, und zum Schreiben eines sich ergebenden Codes in den Codespeicher (105, 205), und
eine Lexikon-Aktualisierungseinrichtung (103) zum Hinzu­ fügen eines Eintrags zu dem Lexikon, der den die codierte Zeichenkette angebenden ersten Zeiger (301) speichert, wobei das Lexikon (100) die Registrierung der Einträge ohne Beschränkung von deren Längen durch Speichern der ersten Zeiger (301) in den jeweiligen Einträgen gestattet, wodurch eine in dem Datenspeicher (104, 204) gespeicherte Zeichenkette mit einer willkürlichen Länge gefunden und codiert werden kann, indem ein Index eines Eintrags und die längste Übereinstimmungslänge bezeichnet werden.
2. Datenkomprimierungsvorrichtung nach Anspruch 1, wobei je­ der der Einträge des Lexikons (100) umfaßt:
den ersten Zeiger (301),
eine Zahl von Zeichen, die auf einem Pfad von einer Wurzel des Suchbaums zu einer Abzweigungsstelle vorhanden sind, wobei die Zahl ein Offsetwert ist,
einen zweiten Zeiger zur Darstellung einer Verbindung von dem Hauptknoten (302, 305) zu einem ersten Abzweigungskno­ ten (303, 306), und
einen dritten Zeiger zur Darstellung einer Verbindung von einem Abzweigungsknoten zu einem nächsten Abzweigungs­ knoten.
3. Datenkomprimierungsvorrichtung nach Anspruch 1, wobei der Suchbaum weiterhin ursprüngliche Registrierungsknoten (304, 307) zum jeweiligen und vorläufigen Speichern aller in dem Eingabedaten erscheinenden Zeichen umfaßt, und jeder der ursprünglichen Registrierungsknoten (304, 307) einen Index hat, der gleich einem Wert eines in dem ur­ sprünglichen Registrierungsknoten (304, 307) gespeicherten Zeichens ist.
4. Datenkomprimierungsvorrichtung nach Anspruch 1, wobei die Codiereinrichtung (102) beim Codieren der längsten Über­ einstimmungslänge die längste Übereinstimmungslänge unter Verwendung einer Länge ausdrückt, die von einem Abzwei­ gungsknoten gezählt wird, der einem Endzeichen der Zei­ chenkette mit der längsten Übereinstimmung an einer Seite, die der Wurzel des Suchbaums näher ist, am nächsten ist.
5. Datenkomprimierungsvorrichtung nach Anspruch 1, wobei die Codiereinrichtung (102) beim Codieren der längsten Über­ einstimmungslänge die längste Übereinstimmungslänge unter Verwendung einer Länge ausdrückt, die von einer Wurzel des Suchbaums gezählt wird.
6. Datendekomprimierungsvorrichtung umfassend:
eine Codespeicher (105, 205) zum Speichern der komprimier­ ten Codes,
einen Datenspeicher (104, 204) zum Speichern der durch Dekomprimieren der komprimierten Codes erhaltenen Daten, eine Umwandlungstabelle (200) mit Einträgen, die jeweils einen Index mit einem Zeiger verknüpfen, der eine in dem Datenspeicher (104, 204) gespeicherte, wiederhergestellte Zeichenkette angibt,
eine Decodiereinrichtung (201) zum Decodieren eines in dem Codespeicher (105, 205) gespeicherten Codes in einen Index und eine längste Übereinstimmungslänge,
eine Datenkopiereinrichtung (202) zum Kopieren einer in dem Datenspeicher (104, 204) gespeicherten wiederherge­ stellten Zeichenkette, die auf der Grundlage der längsten Übereinstimmungslänge und eines Zeigers bestimmt wird, der durch Abfragen der Umwandlungstabelle (200) unter Verwen­ dung des decodierten Index erhalten wurde, in den Daten­ speicher (104, 204) in einer Schreibposition für wieder­ hergestellte Daten, und
eine Umwandlungstabellen-Aktualisierungseinrichtung, um der Umwandlungstabelle (200) einen Eintrag hinzuzufügen, der einen nichtregistrierten Index mit einem Zeiger verknüpft, der die in dem Datenspeicher (104, 204) ge­ speicherte, kopierte Zeichenkette angibt.
7. Datendekomprimierungsvorrichtung nach Anspruch 6, wobei jeder der Einträge der Umwandlungstabelle (200) einen Index, einen Zeiger, der eine in dem Datenspeicher (104, 204) gespeicherte, wiederhergestellte Zeichenkette angibt, und eine Zahl von Zeichen der wiederhergestellten Zeichen­ kette wie von einem Abzweigungsknoten gezählt, korreliert, wobei der Abzweigungsknoten einem Endzeichen der wieder­ hergestellten Zeichenkette an einer Seite am nächsten ist, die näher einer Wurzel eines Suchbaums ist.
DE19622045A 1995-09-29 1996-05-31 Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist Expired - Fee Related DE19622045C2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP25343395 1995-09-29
JP10550696A JP3273119B2 (ja) 1995-09-29 1996-04-25 データ圧縮・伸長装置

Publications (2)

Publication Number Publication Date
DE19622045A1 DE19622045A1 (de) 1997-04-03
DE19622045C2 true DE19622045C2 (de) 2001-02-15

Family

ID=26445778

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19622045A Expired - Fee Related DE19622045C2 (de) 1995-09-29 1996-05-31 Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist

Country Status (3)

Country Link
US (1) US5841376A (de)
JP (1) JP3273119B2 (de)
DE (1) DE19622045C2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006047465A1 (de) * 2006-10-07 2008-04-10 Deutsche Telekom Ag Verfahren und Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195664B1 (en) * 1997-02-21 2001-02-27 Micrografx, Inc. Method and system for controlling the conversion of a file from an input format to an output format
US6121903A (en) * 1998-01-27 2000-09-19 Infit Communications Ltd. On-the-fly data re-compression
US5945933A (en) * 1998-01-27 1999-08-31 Infit Ltd. Adaptive packet compression apparatus and method
DE19803845C2 (de) * 1998-01-31 2001-03-08 Syntion Ag Verfahren und Einrichtung zur Übertragung einer durch digitale Daten repräsentierten Nachricht
US6247015B1 (en) * 1998-09-08 2001-06-12 International Business Machines Corporation Method and system for compressing files utilizing a dictionary array
US6301394B1 (en) * 1998-09-25 2001-10-09 Anzus, Inc. Method and apparatus for compressing data
US7031002B1 (en) 1998-12-31 2006-04-18 International Business Machines Corporation System and method for using character set matching to enhance print quality
US7039637B2 (en) * 1998-12-31 2006-05-02 International Business Machines Corporation System and method for evaluating characters in an inputted search string against a character table bank comprising a predetermined number of columns that correspond to a plurality of pre-determined candidate character sets in order to provide enhanced full text search
JP2000201080A (ja) * 1999-01-07 2000-07-18 Fujitsu Ltd 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
US7191114B1 (en) 1999-08-27 2007-03-13 International Business Machines Corporation System and method for evaluating character sets to determine a best match encoding a message
US6470347B1 (en) 1999-09-01 2002-10-22 International Business Machines Corporation Method, system, program, and data structure for a dense array storing character strings
US7064688B2 (en) * 2001-07-09 2006-06-20 Good Technology, Inc. System and method for compressing data on a bandwidth-limited network
US20030009595A1 (en) * 2001-07-09 2003-01-09 Roger Collins System and method for compressing data using field-based code word generation
US7962622B2 (en) * 2001-08-07 2011-06-14 Motorola Mobility, Inc. System and method for providing provisioning and upgrade services for a wireless device
US7243163B1 (en) 2001-08-07 2007-07-10 Good Technology, Inc. System and method for full wireless synchronization of a data processing apparatus with a messaging system
US7155483B1 (en) 2001-08-07 2006-12-26 Good Technology, Inc. Apparatus and method for conserving bandwidth by batch processing data transactions
US7743119B2 (en) 2001-08-07 2010-06-22 Motorola, Inc. System and method for mapping identification codes
US7596565B2 (en) * 2001-08-07 2009-09-29 Good Technology System and method for maintaining wireless file folders at a wireless device
US20030084031A1 (en) * 2001-10-31 2003-05-01 Tarquini Richard P. System and method for searching a signature set for a target signature
US7447799B2 (en) 2002-04-24 2008-11-04 Good Technology, Inc. System and method for automatically updating a wireless device
US9813514B2 (en) 2002-06-12 2017-11-07 Good Technology Holdings Limited Information repository system including a wireless device and related method
US8516034B1 (en) 2002-07-08 2013-08-20 Good Technology Software, Inc System and method for modifying application behavior based on network bandwidth
EP1578020B1 (de) 2002-12-26 2014-08-27 Fujitsu Limited Datenkomprimierungsverfahren, programm und vorrichtung
DE10301362B4 (de) * 2003-01-16 2005-06-09 GEMAC-Gesellschaft für Mikroelektronikanwendung Chemnitz mbH Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
US7299235B2 (en) * 2003-07-28 2007-11-20 Rightorder, Incorporated Method and apparatus for ternary PATRICIA trie blocks
NZ556367A (en) * 2004-12-08 2010-09-30 Obvious Ltd B Bidirectional data transfer optimization and content control for networks
JP2006295853A (ja) * 2005-04-14 2006-10-26 Sony Corp 符号化装置、復号装置、および、符号化方法ならびに復号方法
JP4256397B2 (ja) * 2006-02-17 2009-04-22 誠 後藤 ファイル格納装置
US7620392B1 (en) 2006-02-27 2009-11-17 Good Technology, Inc. Method and system for distributing and updating software in wireless devices
US8280723B1 (en) * 2009-01-29 2012-10-02 Intuit Inc. Technique for comparing a string to large sets of strings
US8176080B2 (en) * 2009-03-06 2012-05-08 Hewlett-Packard Development Company, L.P. Desensitizing character strings
US8355585B2 (en) * 2009-05-12 2013-01-15 Red Hat Israel, Ltd. Data compression of images using a shared dictionary
TW201143306A (en) * 2010-05-19 2011-12-01 Hon Hai Prec Ind Co Ltd Method for storing information of nodes in a huffman tree and method for decoding data using an array of the huffman tree
KR101862341B1 (ko) 2012-01-09 2018-05-30 삼성전자주식회사 데이터 압축 기능을 갖는 데이터 저장 장치
US20130279882A1 (en) * 2012-04-23 2013-10-24 Apple Inc. Coding of Video and Audio with Initialization Fragments
US9940343B2 (en) 2014-05-07 2018-04-10 Sas Institute Inc. Data structure supporting contingency table generation
JP6227186B2 (ja) * 2015-02-16 2017-11-08 三菱電機株式会社 データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラム
JP6540308B2 (ja) * 2015-07-13 2019-07-10 富士通株式会社 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
CN113139019B (zh) * 2021-06-18 2022-03-25 智己汽车科技有限公司 在区块链上记录车辆的里程数据的方法和装置
CN117097441B (zh) * 2023-10-19 2024-02-13 深圳龙电华鑫控股集团股份有限公司 基于数据分析的载波通信系统传输效率优化方法

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US4701745A (en) * 1985-03-06 1987-10-20 Ferranti, Plc Data compression system
US4814746A (en) * 1983-06-01 1989-03-21 International Business Machines Corporation Data compression method
US4906991A (en) * 1988-04-29 1990-03-06 Xerox Corporation Textual substitution data compression with finite length search windows
US5003307A (en) * 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
EP0435802A2 (de) * 1989-12-28 1991-07-03 International Business Machines Corporation Verfahren zur Dekomprimierung von komprimierten Daten
EP0438955A1 (de) * 1989-12-28 1991-07-31 International Business Machines Corporation Datenkomprimierungsverfahren
EP0438954A1 (de) * 1989-12-28 1991-07-31 International Business Machines Corporation Verfahren zur Dekodierung komprimierter Daten
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
EP0470798A2 (de) * 1990-08-06 1992-02-12 Fujitsu Limited Wörterbuch-Suchsystem
US5392036A (en) * 1993-10-28 1995-02-21 Mitan Software International (1989) Ltd. Efficient optimal data recopression method and apparatus

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4876541A (en) * 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5126739A (en) * 1989-01-13 1992-06-30 Stac Electronics Data compression apparatus and method
US5254990A (en) * 1990-02-26 1993-10-19 Fujitsu Limited Method and apparatus for compression and decompression of data
EP0471518B1 (de) * 1990-08-13 1996-12-18 Fujitsu Limited Datenkompressionsmethode und Gerät
US5115484A (en) * 1990-12-27 1992-05-19 Square D Company Multipurpose optical fiber connector
US5239298A (en) * 1992-04-17 1993-08-24 Bell Communications Research, Inc. Data compression
US5406281A (en) * 1993-10-12 1995-04-11 Codex Corporation Encoder/decoder and method for efficient string handling in data compression

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4814746A (en) * 1983-06-01 1989-03-21 International Business Machines Corporation Data compression method
US4558302B1 (de) * 1983-06-20 1994-01-04 Unisys Corp
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US4701745A (en) * 1985-03-06 1987-10-20 Ferranti, Plc Data compression system
US4906991A (en) * 1988-04-29 1990-03-06 Xerox Corporation Textual substitution data compression with finite length search windows
US5003307A (en) * 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
EP0435802A2 (de) * 1989-12-28 1991-07-03 International Business Machines Corporation Verfahren zur Dekomprimierung von komprimierten Daten
EP0438954A1 (de) * 1989-12-28 1991-07-31 International Business Machines Corporation Verfahren zur Dekodierung komprimierter Daten
EP0438955A1 (de) * 1989-12-28 1991-07-31 International Business Machines Corporation Datenkomprimierungsverfahren
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
EP0470798A2 (de) * 1990-08-06 1992-02-12 Fujitsu Limited Wörterbuch-Suchsystem
US5392036A (en) * 1993-10-28 1995-02-21 Mitan Software International (1989) Ltd. Efficient optimal data recopression method and apparatus

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Timothy C. Bell, "Better OPM/L Text Compression", in: IEEE Transactions on Communications, Vol. COM-34, No. 12, Dezember 1986, S. 1176-1182 *
Ziv J., Lempel A., "An Universal Algorithm for Sequential Data Compression", in: IEEE Transactions on Information Theory, Vol. IT-23, No. 3, May 1977, S. 337-343 *
Ziv J., Lempel A., "Compression of Individual Sequences via Variable-Rate Coding", in: IEEE Transactions on Information Theory, Vol. IT-24, No. 5, September 1978, S. 530-536 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006047465A1 (de) * 2006-10-07 2008-04-10 Deutsche Telekom Ag Verfahren und Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik

Also Published As

Publication number Publication date
JP3273119B2 (ja) 2002-04-08
JPH09153818A (ja) 1997-06-10
US5841376A (en) 1998-11-24
DE19622045A1 (de) 1997-04-03

Similar Documents

Publication Publication Date Title
DE19622045C2 (de) Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE4340591C2 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE69737892T2 (de) Lempel-Ziv Datenkompressionsverfahren unter Verwendung eines Wörterbuches mit häufig auftretenden Buchstabenkombinationen, Wörtern und/oder Sätzen
DE69532775T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät
DE69834695T2 (de) Verfahren und Vorrichtung zur Datenkompression
US5933104A (en) Method and system for compression and decompression using variable-sized offset and length fields
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE69725215T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE60033184T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen
DE69833094T2 (de) Verfahren und Vorrichtung zur adaptiven Datenkompression mit höherem Kompressionsgrad
DE102006062062B4 (de) Komprimierung von Lieddaten und Komprimierer/Dekomprimierer
DE19635251A1 (de) Verfahren und Apparat zur Komprimierung beliebiger Daten
US5353024A (en) Method for data compression having an improved encoding algorithm which utilizes a token stacking technique
DE60009502T2 (de) Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung
Apostolico et al. Some theory and practice of greedy off-line textual substitution
DE60002340T2 (de) Verfahren und vorrichtung zur reduzierung der datenkompressionszeit
US6388585B1 (en) Method for data compression and decompression using decompression instructions
EP0479787B1 (de) Verfahren zur codierung einer elementfolge und einrichtung zur durchführung des verfahrens
Böttcher et al. Search and modification in compressed texts
DE60311886T2 (de) Verfahren und vorrichtung zum sortieren zyklischer daten in lexikographischer reihenfolge
Yang et al. A T-decomposition algorithm with O (n log n) time and space complexity
DE19653133C2 (de) System und Verfahren zur pre-entropischen Codierung
DE102006047465A1 (de) Verfahren und Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee