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 istInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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)
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)
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)
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 |
-
1996
- 1996-04-25 JP JP10550696A patent/JP3273119B2/ja not_active Expired - Fee Related
- 1996-05-08 US US08/646,516 patent/US5841376A/en not_active Expired - Lifetime
- 1996-05-31 DE DE19622045A patent/DE19622045C2/de not_active Expired - Fee Related
Patent Citations (13)
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)
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)
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 |