-
HINTERGRUND DER ERFINDUNG
-
(1) Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft
ein Datenkomprimierungsverfahren und ein Datendekomprimierungsverfahren
und eine Datenkomprimierungsvorrichtung und eine Datendekomprimierungsvorrichtung
dafür.
-
(2) Beschreibung der verwandten
Technik
-
Moderne Computer tendieren dazu,
verschiedene Typen von Daten wie zum Beispiel Graphikzeichencodes,
Vektorinformationen, Bilder, etc., zu verarbeiten, und das Volumen
der in dem Computer verarbeiteten Daten nimmt rapide zu. Wenn ein großes Datenvolumen
verarbeitet wird, werden redundante Abschnitte der Daten weggelassen,
um das Volumen von Daten zu komprimieren, um dadurch eine erforderliche
Speicherkapazität
zu verringern oder die Daten schneller zu übertragen. Eine Universalcodierung
wird als Verfahren vorgeschlagen, wodurch verschiedene Daten auf
eine Weise komprimiert werden können.
-
Übrigens
ist diese Erfindung auf verschiedene Daten anwendbar und nicht auf
ein Gebiet der Zeichencodekomprimierung begrenzt. In dieser Beschreibung
wird eine Worteinheit als Zeichen bezeichnet, und Daten, die aus
einer willkürlichen
Anzahl von Wörtern
gebildet sind, werden als Zeichenkette bezeichnet.
-
Es gibt eine Wörterbuchcodierung, die die Analogie
von Datenfolgen nutzt, und eine statistische Codierung, die die
Häufigkeit
des Auftretens einer Datenkette nutzt. Die obenerwähnte Universalcodierung
ist ein Verfahren., das für
die statistische Codierung repräsentativ
ist.
-
Eine repräsentative Art der Universalcodierung
ist auch eine arithmetische Codierung. Die arithmetische Codierung
dient dazu, einen Code zu erzeugen, der an eine Auftrittswahrscheinlichkeit
von jedem Zeichen anpaßbar
ist, ohne eine Codetabelle zu verwenden, und es wird angenommen,
daß durch sie
eine Komprimierung mit maximaler Effektivität möglich ist, falls eine Auftrittswahrscheinlichkeit
von jedem Zeichen der Informationsquelle bekannt ist. Die arithmetische
Codierung wird klassifiziert in eine binäre arithmetische Codierung
und eine mehrwertige arithmetische Codierung mit mehr als einem
Binärwert.
-
Im folgenden wird die mehrwertige
arithmetische Codierung beschrieben.
-
Bei der mehrwertigen arithmetischen
Codierung wird zunächst
eine Zahlenreihe von 0 ≤ P < 1 (im folgenden
beschrieben als [0, 1]) durch die Anzahl von Ereignissen von erschienenen
Zeichen (im folgenden als Symbol bezeichnet) geteilt.
-
Eine Breite von jeder Sektion wird
proportional zu einem Verhältnis
einer Auftrittswahrscheinlichkeit von jedem Symbol bestimmt, und
die Sektionen werden in der Reihenfolge der hohen Auftrittswahrscheinlichkeit
angeordnet.
-
Als nächstes wird eine Sektion selektiert,
die einem auftretenden Symbol entspricht, wird die selektierte Sektion
in Sektionen geteilt, die der Anzahl von allen Symbolen entsprechen,
wenn das nächste Symbol
auftritt, und wird eine Sektion selektiert, die dem nächsten Symbol
entspricht, so daß die
selektierte Sektion rekursiv geteilt wird.
-
Der obige Prozeß wird unter Bezugnahme auf
Darstellungen, die ein Prinzip der mehrwertigen arithmetischen Codierung
zeigen, in 70(a) und 70(b) eingehender beschrieben.
-
70(a) zeigt
ein Beispiel für
Auftrittshäufigkeiten
von Symbolen, während 70(b) ein Beispiel für das Teilen
der Sektion eines Symbols zeigt.
-
Als Beispiel wird eine Sektion einer
Graphikzeichenkette "abe" beim Teilen erhalten.
-
Jetzt wird eine Zahlenreihe (0, 1)
in fünf
Sektionen von Zeichen a, b, c, d und e geteilt, wie in 70(a) gezeigt.
-
Zuerst wird eine Sektion (0, 0,2)
eines Symbols "a" selektiert, das
zuerst auftritt. Dann wird die selektierte Sektion (0, 0,2) weiter
in fünf
Sektionen von allen Symbolen "a" bis "e" geteilt.
-
Eine Sektion (0,04, 0,06) des Symbols "b" wird selektiert, das als zweites auftritt,
und dann in fünf
Sektionen von allen Symbolen "a" bis "e" geteilt. Eine Sektion des Symbols "e", das zuletzt auftritt, wird selektiert,
so daß schließlich eine
Sektion [0,05, 0,06) einer Zeichenkette "a b e" erhalten wird.
-
Indem der obige Prozeß an allen
Eingangsdaten so wie oben erläutert
wiederholt wird, ist es möglich,
eine Sektion einer Zeichenkette zu bestimmen, die zu codieren ist.
Ein beliebiger Punkt in der Sektion der Zeichenkette, die schließlich bestimmt wird,
wird in binärer
Schreibweise dargestellt und dann als komprimierter Code ausgegeben.
-
Der Ausdruck "arithmetische Codierung" stammt daher, daß ein Codewort
in einem binären Zahlenwert
nach dem Dezimalkomma in Form von [0,11011..] ausgedrückt wird,
der bei der Berechnung erhalten werden kann.
-
Als Verfahren zum Teilen einer Sektion
gemäß einer
Auftrittshäufigkeit,
wie oben erwähnt,
gibt es eine statische Codierung, bei der eine Sektion gemäß einer
vorbestimmten Auftrittshäufigkeit
geteilt wird, die nicht von einer tatsächlichen Auftrittshäufigkeit
einer Zeichenkette abhängt,
eine semi-adaptive Codierung, bei der eine Sektion gemäß einer
Auftrittshäufigkeit
geteilt wird, die erhalten wird, indem im voraus alle Zeichenketten
gescant werden, und eine adaptive Codierung, bei der eine Häufigkeit
immer dann berechnet wird, wenn ein Zeichen auftritt, um die Sektion
für jedes
Zeichen zurückzusetzen.
-
Indessen ist ein Verfahren zum Komprimieren
von Daten in eine Bit-(Zeichen)-Einheit unter Verwendung der obigen
mehrwertigen arithmetischen Codierung zur Dateikomprimierung zum
Beispiel in den folgenden zwei Dokumenten (1) und (2)
beschrieben.
- (1) "Arithmetic Coding for Data Compression", Commun. of ACM,
Bd. 30, Nr. 6, S. 520–540 (1986);
- (2) "An Adaptive
Dependency Source Model for Data Compression Scheme", Commun. of ACM, Bd.
32, Nr. 1, S. 77–83.
-
Das Dokument (1) vermittelt
einen tatsächlichen
Algorithmus der mehrwertigen arithmetischen Codierung. Die mehrwertige
Codierung in dem Dokument (1) ist eines der Verfahren,
das als Entropiecodierung bezeichnet wird, wobei Daten durch eine
einzelne Zeicheneinheit codiert und komprimiert werden. Bei der
Entropiecodierung wird eine Auftrittswahrscheinlichkeit eines fokussierten
Zeichens bei der mehrwertigen Codierung codiert, und die Auftrittswahrscheinlichkeit
von jedem Zeichen wird immer dann, wenn ein Zeichen auftritt, sequentiell
aktualisiert, so daß durch
die Entropiecodierung verschiedene Daten dynamisch und adaptiv codiert
werden können.
Ein detaillierter Prozeß der
mehrwertigen Codierung ist in einem Flußdiagramm von 71(a) gezeigt.
-
Das Dokument (2) vermittelt
ein Verfahren zum Ausdrücken
eines fokussierten Zeichens mit einer bedingten Wahrscheinlichkeit
unter Verwendung eines unmittelbar vorhergehenden Zeichens, wobei die
bedingte Wahrscheinlichkeit bei der mehrwertigen Codierung codiert
wird, um eine hohe Komprimierungsrate zu erhalten. Bei dem Verfahren
von dem Dokument (2) wird jede bedingte Wahrscheinlichkeit
sequentiell aktualisiert, um verschiedene Daten dynamisch und adap tiv
codieren zu können.
Bei solch einer mehrwertigen Codierung wird der Prozeß ausgeführt, der
in dem Flußdiagramm
von 70(b) gezeigt ist.
-
Anstelle der mehrwertigen Codierung
wird eine dynamische Huffman-Codierung vorgeschlagen, die eine Abwandlung
der Huffman-Codierung ist (siehe "Variations on a Theme by Huffman", IEEE Trans. Inform.
Theory, Bd. 24, Nr. 6, 1978, oder "Design and Analysis of Dynamic Huffman
Codes", Journal
of ACM, Bd. 34, Nr. 4, 1987). Die dynamische Huffman-Codierung hat
eine Codiereffektivität,
die der mehrwertigen Codierung unterlegen ist, die eine längere Verarbeitungszeit
erfordert. Deshalb wird ein Verfahren zum Codieren einer bedingten
Wahrscheinlichkeit durch die dynamische Huffman-Codierung nicht tatsächlich angewendet.
-
72 zeigt
ein Beispiel für
einen Algorithmus der mehrwertigen arithmetischen Codierung und Decodierung.
-
Im Unterschied zu der arithmetischen
Codierung gibt es eine sogenannte Splay-Tree- oder Spreizbaum-Codierung
(siehe z. B. "Application
of Splay Tree to Data Compression" von Douglas W. Jones, Commun. of ACM,
Bd. 31, Nr. 8, S. 996– 1007)
.
-
Bei der Splay-Codierung wird eine
Codetabelle in Baumstruktur verwendet (im folgenden als Codebaum
bezeichnet), wie in 73(a) gezeigt, wobei
ein Symbol an einem Ende des Codebaums (im allgemeinen als Blatt
bezeichnet) eingetragen wird und ein Abstand von einem oberen Ende
des Codebaums (im allgemeinen als Wurzel bezeichnet) bis zu einem
Blatt, wo Eingangsdaten gespeichert sind, als. Codewort ausgegeben
wird.
-
Genauer gesagt, wenn angenommen wird, daß der Weg
von der Wurzel zu dem Blatt des Codebaums verläuft, wird "1" dem
Codewort zugeordnet, wenn sich der Weg nach rechts ver zweigt, und
wird "0" zugeordnet, wenn
sich der Weg nach links verzweigt.
-
Bei dem in 73(a) gezeigten Beispiel lautet der
Code eines Symbols A [10110] und eines Symbols B [001]. Falls die
Codelänge
verändert
wird (das heißt,
falls der Code aktualisiert wird), wird ein codiertes Blatt gegen
ein anderes Blatt oder einen Kontakt an dem Codebaum (als Knoten
bezeichnet) ausgetauscht.
-
73(b) zeigt
ein Beispiel für
die obenerwähnte
Codeaktualisierung. Als Eingangsdaten werden, wie in 73(b) gezeigt, anfangs
die Symbole A, B, C und D in Blättern
des Codebaums gespeichert.
-
Ein Knoten des Symbols A und ein
Knoten des Symbols C werden ausgetauscht, und ein Knoten D höheren Grades
des Symbols A und ein Knoten eines Symbols E werden ausgetauscht,
wie in 73(c) gezeigt.
Als Resultat lautet der Code des Symbols A [110] ausgehend von [10110],
so daß der Code
aktualisiert wurde.
-
Der obige Fall dient zum dynamischen
Codieren einer Auftrittswahrscheinlichkeit von jedem Wort bei einer
Codierung mit variabler Länge.
Um eine Komprimierungsrate weiter zu erhöhen, wird eine bedingte Auftrittswahrscheinlichkeit,
die eine Abhängigkeitsbeziehung
zwischen einem Eingangssignal und dem unmittelbar vorausgehenden
Zeichen einführte,
bei einer dynamischen Codierung mit variabler Länge codiert.
-
Dieses Verfahren ist eine statistische
Codierung unter Verwendung einer statistischen Charakteristik von
Daten. Diese Codierung wird bei einem Prozeß ausgeführt, wie in 74 gezeigt, der aus zwei Stufen gebildet
ist, das heißt,
aus einem Kontextsammelschritt 511 und einem Schritt zum
dynamischen Codieren mit variabler Länge 512, wie in 74 gezeigt.
-
Ein Kontext in vorderer und hinterer
Beziehung zu einer Zeichenkette wird aus Eingangsdaten bei einem
Kontextsammelschritt gesammelt, eine Baumstruktur eines Kontextes
wird erzeugt, wie in 75(b) gezeigt,
und sie wird bei einer dynamischen Codierung mit variabler Länge codiert,
um eine bedingte Wahrscheinlichkeit zu bestimmen.
-
Die obige bedingte Wahrscheinlichkeit
wird bestimmt, indem die Anzahl des Auftretens immer dann gezählt wird,
wenn eine Zeichenkette ein Zeichen in jedem Knoten in einem Kontextbaum
in einer in 75(b) gezeigten
Baumstruktur überkreuzt.
-
Ein Kontextsammelverfahren zum Bestimmen
einer bedingten Wahrscheinlichkeit wird hauptsächlich in die folgenden zwei
Verfahren klassifiziert. Übrigens
wird die Zeichenanzahl einer Bedingung (eines Kontextes) im folgenden
als Grad bezeichnet (siehe "Data
Compression Using Adaptive Coding and Partial String Matching", JOHN G. CLEARY
et al., IEEE, Bd. COM-32, Nr. 4, APRIL 1984, S. 396–402).
-
(1) Festgrad-Kontextsammelverfahren
-
Dieses Verfahren drückt eine
Bedingung einer bedingten Wahrscheinlichkeit mit einer feststehenden
Zeichenanzahl aus.
-
Zum Beispiel wird bei einem Kontext
des Grades 2 ein Kontext eines Zeichens, das zwei unmittelbar vorausgehenden
Zeichen folgt, gesammelt, um eine bedingte Wahrscheinlichkeit p(y
| x1, x2) zu codieren,
wobei y ein fokussiertes Zeichen ist, das zu codieren ist, und x1 und x2 das erste
Zeichen bzw. das zweite Zeichen ist, denen das fokussierte Zeichen folgt.
-
(2) Mischkontextsammelverfahren
-
Falls bei dem obigen Festgrad-Kontextsammelverfahren
die unmittelbar vorausgehende bedingte Zeichenkette selten auftritt,
tendiert eine Einschätzung
einer bedingten Wahr scheinlichkeit dazu, ungenau zu sein. Falls
im Gegensatz dazu die unmittelbar vorausgehende bedingte Zeichenkette
häufig
auftritt, tendiert eine Einschätzung
der bedingten Wahrscheinlichkeit dazu, genau zu sein, wobei noch
die Möglichkeit
besteht, den Grad zu erhöhen.
-
Im allgemeinen können Daten, die eine stärkere Korrelation
zwischen Zeichen erreichen, wenn der verwendete Grad weiter erhöht wird,
eine hohe Komprimierungsrate vorsehen. Daten, die eine schwächere Korrelation
zwischen Zeichen erreichen, wenn der verwendete Grad weiter erhöht wird,
sehen jedoch eine schwache Komprimierungsrate vor.
-
Eine Lösung für das obige Problem kann die sein,
den Kontext zu mischen (Mischen des Grades). Bei diesem Verfahren
steht der Grad der unmittelbar vorausgehenden Zeichenkette nicht
fest. Der Grad wird erhöht,
falls das Auftreten gehäuft
ist, und falls das Auftreten selten ist, wird der Grad mit der niedrigeren
Zahl beibehalten. Dabei wird der Grad für Eingangsdaten adaptiv erhöht.
-
Bei der statistischen Codierung,
bei der eine arithmetische Codierung für einen dynamischen Code mit
variabler Länge
verwendet wird, muß jedoch
eine akkumulierte Häufigkeit
von allen Daten, die eingegeben worden sind, immer dann, wenn Daten
eingegeben werden, noch einmal berechnet und eine Zahlenreihe von
[0, 1) noch einmal geteilt werden. Dadurch ist ein arithmetischer
Prozeß mit
einem enormen Volumen erforderlich, so daß es unmöglich ist, die Verarbeitungsrate
zu erhöhen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Diese Erfindung sieht ein Datenkomprimierungsverfahren
und ein Datendekomprimierungsverfahren und eine Datenkomprimierungsvorrichtung und
eine Datendekomprimierungsvorrichtung gemäß den beigefügten Ansprüchen vor.
Es ist eine Aufgabe dieser Erfindung, einen Hochgeschwindigkeitscodeeintragprozeß zu ermöglichen,
indem neue Daten in einen Codebaum eingetragen werden, während der Codebaum
um- oder neugeordnet wird, statt eine Berechnung von Sektionen bei
einer arithmetischen Codierung vorzunehmen.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 bis 14 sind Blockdiagramme,
die Aspekte dieser Erfindung zeigen;
-
15 ist
ein Blockdiagramm einer Datenkomprimierungsvorrichtung und einer
Datendekomprimierungsvorrichtung gemäß einer ersten Ausführungsform
dieser Erfindung;
-
16(a) zeigt
ein Beispiel für
eine Speicherform eines Kontextbaums;
-
16(b) zeigt
eine Elternbeziehung eines Wörterbuchs;
-
17 zeigt
einen Anfangszustand eines Codebaums;
-
18 zeigt
ein Beispiel für
die Anordnung zum Speichern eines Codebaums;
-
19(a) und 19(b) zeigen ein Beispiel
für eine
Basisoperation zur Codeaktualisierung an den Splay-Codes und eine
Codeaktualisierungsoperation bezüglich
der Splay-Codes;
-
20 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß der ersten Ausführungsform
dieser Erfindung zeigt;
-
21(a) und 21(b) zeigen Prozeduren
zum Aktualisieren eines Kontextbaums bzw. eines Codebaums gemäß der ersten
Ausführungsform
dieser Erfindung;
-
22(a) und 22(b) zeigen Prozeduren
zum Aktualisieren des Kontextbaums bzw. des Codebaums gemäß der ersten
Ausführungsform
dieser Erfindung;
-
23(a) und 23(b) zeigen Prozeduren
zum Aktualisieren des Kontextbaums bzw. des Codebaums gemäß der ersten
Ausführungsform
dieser Erfindung;
-
24(a) und 24(b) zeigen Prozeduren
zum Aktualisieren des Kontextbaums bzw. des Codebaums gemäß der ersten
Ausführungsform
dieser Erfindung;
-
25(a) und 25(b) zeigen Prozeduren
zum Aktualisieren des Kontextbaums bzw, des Codebaums gemäß der ersten
Ausführungsform
dieser Erfindung;
-
26(a) und 26(b) zeigen Prozeduren
zum Aktualisieren des Kontextbaums bzw. des Codebaums gemäß der ersten
Ausführungsform
dieser Erfindung;
-
27(a) und 27(b) zeigen Prozeduren
zum Aktualisieren des Kontextbaums bzw. des Codebaums gemäß der ersten
Ausführungsform
dieser Erfindung;
-
28(a) und 28(b) zeigen Prozeduren
zum Aktualisieren des Kontextbaums bzw. des Codebaums gemäß der ersten
Ausführungsform
dieser Erfindung;
-
29 zeigt
eine Zeichenkette nach dem Codieren gemäß der ersten Ausführungsform
dieser Erfindung;
-
30(a) und 30(b) zeigen Algorithmen
zum Erzeugen eines Kontextbaums;
-
31 ist
ein Flußdiagramm
zum Darstellen einer Prozedur zum Decodieren gemäß der ersten Ausführungsform
dieser Erfindung;
-
32 ist
ein Blockdiagramm einer Datenkomprimierungsvorrichtung und einer
Datendekomprimierungsvorrichtung gemäß einer zweiten Ausführungsform
dieser Erfindung;
-
33 ist
ein Blockdiagramm der Datenkomprimierungsvorrichtung gemäß der zweiten
Ausführungsform
dieser Erfindung;
-
34 ist
ein Blockdiagramm einer Codiereinheit gemäß der zweiten Ausführungsform
dieser Erfindung;
-
35 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß der zweiten Ausführungsform
dieser Erfindung zeigt;
-
36 ist
ein Flußdiagramm,
das eine Prozedur zum Ausgeben eines Codes gemäß der zweiten Ausführungsform
dieser Erfindung zeigt;
-
37 ist
ein Flußdiagramm,
das eine Prozedur zum Umformen eines Codebaums gemäß der zweiten
Ausführungsform
dieser Erfindung zeigt;
-
38 ist
ein Blockdiagramm der Datendekomprimierungsvorrichtung gemäß der zweiten
Ausführungsform
dieser Erfindung;
-
39 ist
ein Blockdiagramm einer Decodiereinheit gemäß der zweiten Ausführungsform
dieser Erfindung;
-
40 ist
ein Flußdiagramm,
das eine Prozedur zum Decodieren gemäß der zweiten Ausführungsform
dieser Erfindung zeigt;
-
41 ist
ein Flußdiagramm,
das eine Prozedur zum Decodieren gemäß der zweiten Ausführungsform
dieser Erfindung zeigt;
-
42 ist
ein Blockdiagramm einer Datenkomprimierungsvorrichtung gemäß einer
ersten Abwandlung der zweiten Ausführungsform dieser Erfindung;
-
43 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß der ersten Abwandlung der
zweiten Ausführungsform
dieser Erfindung zeigt;
-
44 ist
ein Blockdiagramm einer Datendekomprimierungsvorrichtung gemäß der ersten
Abwandlung der zweiten Ausführungsform
dieser Erfindung;
-
45 ist
ein Flußdiagramm,
das eine Prozedur zum Decodieren gemäß der ersten Abwandlung der
zweiten Ausführungsform
dieser Erfindung zeigt;
-
46 ist
ein Blockdiagramm einer Datendekomprimierungsvorrichtung gemäß einer
zweiten Abwandlung der zweiten Ausführungsform dieser Erfindung;
-
47 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß der zweiten Abwandlung der
zweiten Ausführungsform
dieser Erfindung zeigt;
-
48 ist
ein Blockdiagramm der Dekomprimierungsvorrichtung gemäß der zweiten
Abwandlung der zweiten Ausführungsform
dieser Erfindung;
-
49 ist
ein Flußdiagramm,
das eine Prozedur zum Decodieren gemäß der zweiten Abwandlung der
zweiten Ausführungsform
dieser Erfindung zeigt;
-
50 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß einer dritten Abwandlung
der zweiten Ausführungsform
dieser Erfindung zeigt;
-
51 ist
ein Flußdiagramm,
das eine Prozedur zum Decodieren gemäß der dritten Abwandlung der
zweiten Ausführungsform
dieser Erfindung zeigt;
-
52 ist
ein Blockdiagramm einer Datenkomprimierungsvorrichtung gemäß einer
dritten Ausführungsform
dieser Erfindung;
-
53 ist
ein Blockdiagramm einer Codeeintrageinheit und einer Codebaumhalteeinheit
gemäß der dritten
Ausführungsform
dieser Erfindung;
-
54 zeigt
eine Operation der Datenkomprimierungsvorrichtung gemäß der dritten
Ausführungsform
dieser Erfindung;
-
55 zeigt
die Operation der Datenkomprimierungsvorrichtung gemäß der dritten
Ausführungsform
dieser Erfindung;
-
56 zeigt
die Operation der Datenkomprimierungsvorrichtung gemäß der dritten
Ausführungsform
dieser Erfindung;
-
57(a) und 57(b) zeigen Beispiele für einen
Codebaum bzw. einen Kontextbaum;
-
58 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß der dritten Ausführungsform
zeigt;
-
59 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß der dritten Ausführungsform
zeigt;
-
60(a) und 60(b) zeigen einen Zustand des
Neueintragens eines Codes gemäß der dritten Ausführungsform
dieser Erfindung;
-
61 ist
ein Flußdiagramm,
das eine andere Prozedur zum Codieren gemäß der dritten Ausführungsform
dieser Erfindung zeigt;
-
62 ist
ein Blockdiagramm der Datendekomprimierungsvorrichtung gemäß der dritten
Ausführungsform
dieser Erfindung;
-
63 zeigt
eine Operation der Datendekomprimierungsvorrichtung gemäß der dritten
Ausführungsform
dieser Erfindung;
-
64 zeigt
die Operation der Datendekomprimierungsvorrichtung gemäß der dritten
Ausführungsform
dieser Erfindung;
-
65 ist
ein Flußdiagramm,
das eine Prozedur zum Decodieren gemäß der dritten Ausführungsform
dieser Erfindung zeigt;
-
66 ist
ein Blockdiagramm einer Codeeintrageinheit und einer Codebaumhalteeinheit
gemäß einer
ersten Abwandlung der dritten Ausführungsform dieser Erfindung;
-
67 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß der ersten Abwandlung der
dritten Ausführungsform
dieser Erfindung zeigt;
-
68 ist
ein Blockdiagramm einer Codeeintrageinheit und einer Codebaumhalteeinheit
gemäß einer
zweiten Abwandlung der dritten Ausführungsform dieser Erfindung;
-
69 ist
ein Flußdiagramm,
das eine Prozedur zum Codieren gemäß der zweiten Abwandlung der
dritten Ausführungsform
dieser Erfindung zeigt;
-
70(a) und 70(b) zeigen ein Prinzip
einer mehrwertigen arithmetischen Codierung;
-
71(a) und 71(b) sind jeweilige Flußdiagramme,
die Prozeduren bei der mehrwertigen arithmetischen Codierung zeigen,
um Daten durch ein Zeichen zu komprimieren;
-
72 zeigt
ein Beispiel für
einen Algorithmus der mehrwertigen arithmetischen Codierung;
-
73(a) und 73(b) zeigen ein Prinzip
einer Splay-Codierung;
-
74 zeigt
ein Prinzip einer statistischen Codierung; und
-
75(a) und 75(b) zeigen ein Beispiel
für den
Eintrag in einen Kontextbaum.
-
BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORM
-
(a) Beschreibung von Aspekten
der Erfindung
-
Ein Datenkomprimierungsverfahren
gemäß dieser
Erfindung dient zum Codieren von Eingangsdaten gemäß einem
Verlauf des Auftretens der Daten, die in der Vergangenheit aufgetreten
sind, und umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um Zeichenketten von Eingangsdaten zu sammeln; und
- (2) einen Codierschritt, um einen Codebaum zu erzeugen und zu
aktualisieren, während
der Codebaum gemäß einer
Datenkette der Eingangsdaten um- oder neugeordnet wird, die bei
dem Kontextsammelschritt erhalten worden ist.
-
Bei dem obenerwähnten Datenkomprimierungsverfahren
gemäß dieser
Ausführungsform
werden Zeichenketten von Eingangsdaten gesammelt und wird ein Codebaum
gemäß den Zeichenketten der
Eingangsdaten, die bei dem Kontextsammel schritt erhalten wurden,
erzeugt und aktualisiert, während
die Daten bei der Splay-Operation verarbeitet werden.
-
Daher ist es möglich, einen Prozeß aus zwei Stufen
gleichzeitig auszuführen,
das heißt,
eine Stufe zum Bestimmen einer Häufigkeit
des Auftretens von aufgetretenen Eingangsdaten, um ein Wahrscheinlichkeitsmodell
zu erstellen, um eine Codetabelle zu bilden, und eine Stufe zum
Zuordnen eines Codes zu jedem Eingangsdatum unter Bezugnahme auf
diese Codetabelle, wodurch eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
erhöht
werden kann.
-
Bei dem Datenkomprimierungsverfahren dieser
Erfindung werden Zeichenketten der obigen Eingangsdaten gesammelt,
jeweilig benummert und in ein Wörterbuch
eingetragen. Jede Zeichenkette entspricht einem Code. Der Code,
der einer Wörterbuchnummer
der längsten
koinzidierenden Zeichenkette entspricht, wird codiert und aktualisiert,
während
eine verlängerte
Zeichenkette einer zu codierenden Zeichenkette eingetragen wird,
bis sie eine vorbestimmte maximale Zeichenkettenlänge erreicht, um
den Code entsprechend der verlängerten
Zeichenkette einzutragen.
-
Gemäß dem Datenkomprimierungsverfahren
dieser Erfindung kann eine erweiterte Zeichenkette von einer Zeichenkette,
die zu codieren ist, eingetragen werden, wie oben erwähnt, bis
sie eine vorbestimmte maximale Zeichenkettenlänge erreicht, um einen Code
einzutragen, der der erweiterten Zeichenkette entspricht. Daher
ist es möglich,
Eingangsdaten als Zeichenkette nicht in einer Einheit von einem
Zeichen zu codieren, sondern in einer Einheit von einer Vielzahl
von Zeichen, wodurch eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
erhöht
wird.
-
Die obige Zeichenkette kann in das
Wörterbuch
auf solch eine Weise eingetragen werden, daß das unmittelbar vorausgehende
Zeichen, das schon codiert worden ist, zuerst einge tragen wird und
eine Zeichenkette, die dem unmittelbar vorausgehenden Zeichen folgt,
dann codiert wird. Alternativ kann ein Code jedem einzelnen Zeichen
zugeordnet werden, und falls eine Zeichenkette, die dem unmittelbar
vorausgehenden Zeichen folgt, nicht in den Zeichenketten in dem
Wörterbuch
enthalten ist, die schon gesammelt worden sind, wird ein Code für das einzelne Zeichen
codiert und ausgegeben. Danach wird das codierte Zeichen, das dem
unmittelbar vorausgehenden Zeichen folgt, in das Wörterbuch
eingetragen.
-
Durch den obigen Prozeß wird die
Zeichenkette, die in das Wörterbuch
einzutragen ist, ab dem unmittelbar vorausgehenden Zeichen, das
schon codiert worden ist, eingetragen, und dann wird eine Zeichenkette
codiert, die dem unmittelbar vorausgehenden Zeichen folgt. Falls
die Zeichenkette, die dem unmittelbar vorausgehenden Zeichen folgt,
nicht in den Zeichenketten in dem Wörterbuch enthalten ist, die schon
gesammelt worden sind, wird ein Code für das einzelne Zeichen codiert,
ausgegeben und aktualisiert. Danach wird das codierte Zeichen, das
dem unmittelbar vorausgehenden Zeichen folgt, in das Wörterbuch
eingetragen.
-
Deshalb ist es unnötig, eine
Zeichenkette, die nicht in dem Wörterbuch
enthalten ist, bei jeder Gelegenheit einzutragen, so daß eine Verarbeitungsrate
bei der Datenkomprimierung außerordentlich
erhöht
werden kann.
-
Andererseits dient ein Datendekomprimierungsverfahren
dieser Erfindung dazu, codierte Daten zu decodieren, die gemäß einem
Verlauf von Eingangsdaten in der Vergangenheit codiert worden sind,
und umfaßt
den folgenden Schritt:
- (1) einen Kontextsammelschritt,
um Zeichenketten von decodierten Daten zu sammeln; und
- (2) einen Splay-Codierschritt, um einen Codebaum zu erzeugen
und zu aktualisieren, während der
Codebaum gemäß einer Zeichenkette
der decodierten Daten umgeordnet wird, die bei dem Kontextsammelschritt
erhalten wurde.
-
Bei dem obigen Datendekomprimierungsverfahren
gemäß dieser
Erfindung werden Zeichenketten von decodierten Daten bei dem Kontextsammelschritt
gesammelt, und ein Codebaum wird erzeugt und aktualisiert, während er
gemäß der Zeichenkette der
decodierten Daten umgeordnet wird, die bei dem Kontextsammelprozeß erhalten
wurde.
-
Gemäß dem obenerwähnten Datendekomprimierungsverfahren
dieser Erfindung ist es deshalb möglich, einen Prozeß aus zwei
Stufen gleichzeitig auszuführen,
das heißt,
eine Stufe zum Bestimmen einer Häufigkeit
des Auftretens eines Codes der zu decodierenden Zeichenkette und
zum Erstellen eines Wahrscheinlichkeitsmodells, um eine Codetabelle
zu bilden, und eine Stufe zum Decodieren des Codes der zu decodierenden
Zeichenkette unter Bezugnahme auf diese Codetabelle, wodurch eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden kann.
-
Das Datendekomprimierungsverfahren
dieser Erfindung dient zum Decodieren von Eingangsdaten, die gemäß einem
Verlauf von Eingangsdaten in der Vergangenheit codiert worden sind,
bei dem Zeichenketten von decodierten Daten gesammelt werden, jeweilig
benummert werden und in das Wörterbuch
eingetragen werden, ein Code mit jeder der decodierten Zeichenketten
in Entsprechung gebracht wird, eine Zeichenkette entsprechend einer
Wörterbuchnummer
codiert und aktualisiert wird, eine verlängerte Zeichenkette von der
Zeichenkette, die zu codieren ist, eingetragen wird, bis sie eine
vorbestimmte maximale Zeichenkettenlänge erreicht, und dann ein
Code eingetragen wird, der der erweiterten Zeichenkette entspricht.
-
Bei dem obenerwähnten Datendekomprimierungsverfahren
dieser Erfindung ist es möglich,
eine verlängerte
Zeichen kette von einer Zeichenkette, die zu codieren ist, einzutragen,
bis sie eine vorbestimmte maximale Zeichenkettenlänge erreicht,
um einen Code entsprechend der erweiterten Zeichenkette einzutragen.
Es ist deshalb möglich,
die Eingangsdaten nicht in einer Einheit von einem Zeichen zu dekomprimieren,
sondern als Zeichenkette in einer Einheit von einer Vielzahl von
Zeichen. Dadurch kann eine Verarbeitungsrate bei der Datendekomprimierung
außerordentlich
erhöht
werden.
-
Ferner ist es bei dem Datendekomprimierungsverfahren
dieser Erfindung möglich,
eine Zeichenkette in das Wörterbuch
auf solch eine Weise einzutragen, daß das unmittelbar vorausgehende Zeichen,
das decodiert worden ist, eingetragen wird und dann eine Zeichenkette
decodiert wird, die dem unmittelbar vorausgehenden Zeichen folgt.
Alternativ ist es möglich,
einen Splay-Code jedem einzelnen Zeichen zuzuordnen, und falls ein
Code eines einzelnen Zeichens in einer Zeichenkette, die dem unmittelbar
vorausgehenden Zeichen folgt und nicht in gesammelten Zeichenketten
in dem Wörterbuch
enthalten ist, codiert wird, wird der Code aktualisiert, und dann
wird das decodierte Zeichen, das dem unmittelbar vorausgehenden
Zeichen folgt, in das Wörterbuch
eingetragen.
-
Gemäß dem Datendekomprimierungsverfahren
dieser Erfindung wird eine Zeichenkette in das Wörterbuch auf solch eine Weise
eingetragen, daß das
unmittelbar vorausgehende Zeichen, das decodiert worden ist, zuerst
eingetragen wird und dann eine Zeichenkette decodiert wird, die
dem unmittelbar vorausgehenden Zeichen folgt. In der Praxis wird zu
Beginn ein Code jedem einzelnen Zeichen zugeordnet, falls ein Code
eines einzelnen Zeichens in einer Zeichenkette, die dem unmittelbar
vorausgehenden Zeichen folgt und nicht in gesammelten Zeichenketten
in dem Wörterbuch
enthalten ist, decodiert wird, wird der Code aktualisiert und wird
das deco dierte Zeichen, das dem unmittelbar vorausgehenden Zeichen
folgt, in das Wörterbuch
eingetragen.
-
Gemäß dem Datendekomprimierungsverfahren
dieser Erfindung ist es deshalb unnötig, einen Code einer Zeichenkette,
die nicht in dem Wörterbuch
enthalten ist, bei jeder Gelegenheit einzutragen, so daß eine Verarbeitungsrate
bei der Datendekomprimierung noch mehr erhöht werden kann.
-
Das Datenkomprimierungsverfahren
gemäß dieser
Erfindung dient zum Komprimieren von Eingangsdaten durch das Codieren
der Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit und
umfaßt
den folgenden Schritt:
- (1) einen Kontextsammelschritt,
um eine Kombination aus Eingangsdaten und einem Kontext zu halten,
der aus n kontinuierlichen Daten gebildet ist, denen die Eingangsdaten
folgen;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codeausgabeschritt, um einen Code auszugeben, der
als einzigartige Daten gemäß einer
Gabelung eines Knotens definiert ist, der ein Gabelungspunkt auf
einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums
bezeichnet, zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert
sind, wenn Daten auftreten, die dem Kontext entsprechen, der bei
dem Kontextsammelschritt gehalten wurde; und
- (4) einen Codebaum-Neuanordnungsschritt, um ein Blatt der Daten
gegen ein Blatt anderer Daten oder einen internen Knoten auszutauschen.
-
Das Datenkomprimierungsverfahren
dieser Erfindung funktioniert wie folgt:
- (1)
Halten der Eingangsdaten und des Kontextes, der aus den n kontinuierlichen
Daten gebildet ist, denen die Eingangsdaten folgen, bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Ausgeben, bei dem Codeausgabeschritt, eines Codes, der als
einzigartige Daten gemäß der Gabelung
eines Knotens definiert ist, der ein Gabelungspunkt auf einem Weg
von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet,
zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert sind,
wenn Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt
gehalten wurde; und
- (4) Austauschen, bei dem Codebaum-Neuanordnungsschritt, eines
Blattes der Daten gegen ein Blatt anderer Daten oder einen internen
Knoten nach einem Prozeß bei
dem Codeausgabeschritt.
-
Das obige Datenkomprimierungsverfahren dieser
Erfindung gestattet es, einen Prozeß aus zwei Stufen gleichzeitig
auszuführen,
das heißt,
eine Stufe zum Bestimmen einer Auftrittshäufigkeit von Eingangsdaten,
um ein Wahrscheinlichkeitsmodell zu erstellen und einen Code jedem
Datum zuzuordnen, um eine Codetabelle zu bilden, und eine Stufe
zum Ausgeben eines Codes eines zu codierenden Zeichens unter Bezugnahme
auf diese Codetabelle. Dadurch kann eine Verarbeitungsrate bei der
Datenkomprimierung außerordentlich
erhöht
werden. Dadurch kann ferner das enorme Volumen einer arithmetischen
Operation, um das Wahrscheinlichkeitsmodell neu zu erstellen, das
bei jeder Dateneingabe bereits erstellt worden ist, reduziert werden,
wodurch die Verarbeitungsrate bei der Datenkomprimierung weiter
erhöht
werden kann. Des weiteren kann ein Code von Daten mit einer geringeren
Bitanzahl ausgedrückt
werden, falls dieselben Daten wie Eingangsdaten, die in der Vergangenheit
aufgetreten sind, häufiger
auftreten, so daß ein
Effekt der Datenkomprimierung außerordentlich verbessert werden kann.
-
Das Datenkomprimierungsverfahren
dieser Erfindung dient zum Komprimieren von Eingangsdaten durch
das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit und umfaßt die folgenden Schritte:
- (1) einen Kontextsammelschritt, um Eingangsdaten
und einen Kontext zu halten, der aus n kontinuierlichen Daten gebildet
ist, denen die Eingangsdaten folgen;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codeausgabeschritt, um einen Code auszugeben, der
als einzigartige Daten gemäß einer
Gabelung eines Knotens definiert ist, der einen Gabelungspunkt auf
einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums ist,
zu einem Blatt an dem Codebaum bezeichnet, in dem Daten gespeichert
sind, wenn Daten auftreten, die dem Kontext entsprechen, der bei
dem Kontextsammelschritt gehalten wurde
- (4) einen Codebaum-Neuanordnungsschritt, um ein Blatt der Daten
gegen ein Blatt anderer Daten oder einen internen Knoten nach einem
Prozeß bei
dem Codeausgabeschritt auszutauschen;
- (5) einen Kontextunterscheidungsschritt, um zu unterscheiden,
ob die Kombination aus den Eingangsdaten und dem Kontext bei dem
Kontextsammelschritt gehalten wurde oder nicht;
- (6) einen Escape-Code-Halteschritt, um an dem Codebaum ein Blatt
zu halten, in dem ein Escape-Code im voraus eingetragen wurde, der
als Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind;
und
- (7) einen Schritt, um einen Escape-Code auszugeben, wenn die
Kombination aus den Eingangsdaten und dem Kontext in einem Verlauf
bei den Kontextsammelschritten nicht gehalten wurde, und den Kontext
der Daten zu verkürzen,
bis eine Kombination erhalten wird, die bei dem Kontextsammelschritt
gehalten wurde.
-
Das obige Datenkomprimierungsverfahren dieser
Erfindung funktioniert wie folgt:
- (1) Halten
einer Kombination aus Eingangsdaten und einem Kontext, der aus n
kontinuierlichen Daten gebildet ist, denen die Eingangsdaten folgen, bei
dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Ausgeben, bei dem Codeausgabeschritt, eines Codes, der als
einzigartige Daten gemäß der Gabelung
eines Knotens definiert ist, der ein Gabelungspunkt auf einem Weg
von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet,
zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert sind,
wenn Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt
gehalten wurde;
- (4) Austauschen, bei dem Codebaum-Neuanordnungsschritt, eines
Blattes der Daten gegen ein Blatt anderer Daten oder einen Knoten
nach einer Operation bei dem Codeausgabeschritt;
- (5) Unterscheiden, ob die Kombination aus den Eingangsdaten
und dem Kontext bei dem Kontextsammelschritt gehalten wurde oder
nicht;
- (6) Halten, an einem Codebaum, eines Blattes, in dem ein Escape-Code,
der als Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind, bei
dem Escape-Code-Halteschritt im voraus eingetragen wurde; und
- (7) Ausgeben eines Escape-Codes, wenn die Kombination aus den
Eingangsdaten und dem Kontext in einem bei dem Kontextsammelschritt (1)
gehaltenen Verlauf nicht gehalten wurde, und Verkürzen des
Kontextes der Daten, bis eine Kombination erhalten wird, die bei
dem Kontextsammelschritt gehalten wurde.
-
Gemäß dem Datenkomprimierungsverfahren
dieser Erfindung ist es nicht erforderlich, den gesamten Verlauf
der Kombination aus den Eingangsdaten und dem Kontext im voraus
einzutragen. Dies ist effektiv, um eine Zeitperiode zu verkürzen, die
benötigt
wird, bis die Kombination aus den Eingangsdaten und dem Kontext
erhalten wird, so daß eine
Verarbeitungsrate bei der Datenkomprimierung außerordentlich erhöht werden
kann.
-
Das Datenkomprimierungsverfahren
dieser Erfindung dient zum Komprimieren von Eingangsdaten durch
das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit und umfaßt die folgenden Schritte:
- (1) einen Kontextsammelschritt, um eine Kombination
aus Eingangsdaten und einem Kontext zu halten, der aus n kontinuierlichen
Daten gebildet ist, denen die Eingangsdaten folgen;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codeausgabeschritt, um einen Code auszugeben, der
als einzigartige Daten gemäß einer
Gabelung eines Knotens definiert ist, der ein Gabelungspunkt auf
einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums
bezeichnet, zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert
sind, wenn Daten auftreten, die dem Kontext entsprechen, der bei
dem Kontextsammelschritt gehalten wurde;
- (4) einen Codebaum-Neuanordnungsschritt, um ein Blatt der Daten
gegen ein Blatt anderer Daten oder einen internen Knoten nach einem
Prozeß bei
dem Codeausgabeschritt auszutauschen;
- (5) einen Kontextunterscheidungsschritt, um zu unterscheiden,
ob die Kombination aus den Eingangsdaten und dem Kontext bei dem
Kontextsammelschritt gehalten wurde oder nicht;
- (6) einen Escape-Code-Halteschritt, um an dem Codebaum ein Blatt
zu halten, in dem ein Escape-Code im voraus eingetragen wurde, der
als Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind;
- (7) einen Kontext-Neueintragschritt, um die Kombination aus
den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt neu
einzutragen, falls die Kombination aus den Eingangsdaten und dem
Kontext in einem Verlauf bei dem Kontextsammelschritt nicht gehalten
wurde;
- (8) einen Codebaum-Neueintragschritt, um Daten in einen Codebaum,
der dem Kontext entspricht, neu einzutragen, falls die Kombination
aus den Eingangsdaten und dem Kontext in einem Verlauf des Kontextsammelschrittes
nicht gehalten wurde; und
- (9) einen Prozeß,
um einen Code eines Escape-Codes auszugeben, falls die Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf des Kontextsammelschrittes
nicht gehalten wurde, und gleichzeitig die Kombination aus den Eingangsdaten
und dem Kontext in den Verlauf einzutragen, die Daten in einen Codebaum
einzutragen, der dem Kontext entspricht, und einen Prozeß zu wiederholen,
um den Kontext der Daten zu verkürzen,
bis eine Kombination erhalten wird, die bei dem Kontextsammelschritt
gehalten wurde.
-
Das obige Datenkomprimierungsverfahren dieser
Erfindung funktioniert wie folgt:
- (1) Halten
einer Kombination aus Eingangsdaten und einem Kontext, der aus n
kontinuierlichen Daten gebildet ist, denen die Eingangsdaten folgen, bei
dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Ausgeben, bei dem Codeausgabeschritt, eines Codes, der als
einzigartige Daten gemäß der Gabelung
eines Knotens definiert ist, der ein Gabelungspunkt auf einem Weg
von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet,
zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert sind,
wenn Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt
gehalten wurde;
- (4) Austauschen, bei dem Codebaum-Neuanordnungsschritt, eines
Blattes der Daten gegen ein Blatt anderer Daten oder einen internen
Knoten nach einem Prozeß bei
dem Codeausgabeschritt;
- (5) Unterscheiden, bei dem Kontextunterscheidungsschritt, ob
die Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextsammelprozeß gehalten
wurde oder nicht;
- (6) Halten, bei dem Escape-Code-Halteschritt, eines Blattes,
in dem ein Escape-Code im voraus eingetragen wurde, der als Daten
definiert ist, die bedeuten, daß keine
Daten gespeichert sind;
- (7) Eintragen, bei dem Kontext-Neueintragschritt, einer Kombination
aus Eingangsdaten und einem Kontext bei dem Kontextsammelschritt,
falls die Kombination aus den Eingangsdaten und dem Kontext in einem
Verlauf bei dem Kontextsammelschritt nicht gehalten wurde;
- (8) Neueintragen, bei dem Codebaum-Neueintragschritt, der Daten
in einen Codebaum, der dem Kontext entspricht, falls die Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf bei dem Kontextsammelschritt
nicht gehalten wurde; und
- (9) Ausgeben eines Codes eines Escape-Codes, falls die Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf bei dem Kontextsammelschritt
nicht gehalten wurde, und gleichzeitiges Eintragen der Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf, Eintragen
der Daten in einen Codebaum, der dem Kontext entspricht, und Wiederholen
eines Prozesses, um den Kontext der Daten zu verkürzen, bis
eine Kombination erhalten wird, die bei dem Kontextsammelschritt
gehalten wurde.
-
Gemäß dem obigen Datenkomprimierungsverfahren
dieser Erfindung ist es möglich,
Eingangsdaten, die in der Vergangenheit nicht eingetragen worden
sind, neu einzutragen und diese neu eingetragenen Daten in einem
frühen
Stadium bei dem nächsten
Codierprozeß zu
codieren, so daß ein
Effekt der Datenkomprimierung mit weiter voranschreitendem Codierprozeß mehr verstärkt werden
kann.
-
Das Datenkomprimierungsverfahren
dieser Erfindung dient zum Komprimieren von Eingangsdaten durch
das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit und umfaßt die folgenden Schritte:
- (1) einen Kontextsammelschritt, um eine Kombination
aus Eingangsdaten und einem Kontext zu halten, der aus n kontinuierlichen
Daten gebildet ist, denen die Eingangsdaten folgen;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codeausgabeschritt, um einen Code auszugeben, der
als einzigartige Daten gemäß einer
Gabelung eines Knotens definiert ist, der ein Gabelungspunkt auf
einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums
bezeichnet, zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert
sind, wenn Daten auftreten, die dem Kontext entsprechen, der bei
dem Kontextsammelschritt gehalten wurde;
- (4) einen Codebaum-Neuanordnungsschritt, um ein Blatt der Daten
gegen ein Blatt anderer Daten oder einen internen Knoten nach einem
Prozeß bei
dem Codeausgabeschritt auszutauschen;
- (5) einen Kontextunterscheidungsschritt, um zu unterscheiden,
ob die Kombination aus den Eingangsdaten und dem Kontext bei dem
Kontextsammelschritt gehalten wurde oder nicht;
- (6) einen Escape-Code-Halteschritt, um an dem Codebaum ein Blatt
zu halten, in dem ein Escape-Code im voraus gespeichert wurde, der
als Daten definiert ist, die bedeuten, daß keine Daten eingetragen sind;
- (7) einen Kontext-Neueintragschritt, um die Kombination aus
den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt neu
einzutragen, falls die Kombination aus den Eingangsdaten und dem
Kontext in einem Verlauf bei dem Kontextsammelschritt nicht gehalten
wurde;
- (8) einen Codebaum-Neueintragschritt, um Daten in einen Codebaum,
der dem Kontext entspricht, neu einzutragen, falls die Kombination
aus den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt
nicht gehalten wurde; und
- (9) einen Schritt, um nur eine Kombination aus einem unmittelbar
vorausgehenden Kontext, für den
entschieden wurde, in dem Verlauf enthalten sein zu müssen, und
jenen Daten bei dem Kontext-Neueintragschritt und dem Codebaum-Neueintragschritt
einzutragen.
-
Das obige Datenkomprimierungsverfahren dieser
Erfindung funktioniert wie folgt:
- (1) Halten
einer Kombination aus Eingangsdaten und einem Kontext, der aus n
kontinuierlichen Daten gebildet ist, denen die Eingangsdaten folgen, bei
dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Ausgeben, bei dem Codeausgabeschritt, eines Codes, der als
einzigartige Daten gemäß der Gabelung
eines Knotens definiert ist, der ein Gabelungspunkt auf einem Weg
von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet,
zu einem Blatt an einem Codebaum ist, in dem Daten gespeichert sind,
wenn Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt
gehalten wurde;
- (4) Austauschen, bei dem Codebaum-Neuanordnungsschritt, eines
Blattes der Daten gegen ein Blatt anderer Daten oder einen internen
Knoten nach einem Prozeß bei
dem Codeausgabeschritt;
- (5) Unterscheiden, bei dem Kontextunterscheidungsschritt, ob
die Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextsammelprozeß gehalten
wurde oder nicht;
- (6) Halten, bei dem Escape-Code-Halteschritt, eines Blattes,
in dem ein Escape-Code im voraus eingetragen wurde, der als Daten
definiert ist, die bedeuten, daß keine
Daten wiederhergestellt wurden, an dem Codebaum;
- (7) Neueintragen, bei dem Kontext-Neueintragschritt, der Kombination
aus den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt, falls
die Kombination aus den Eingangsdaten und dem Kontext in einem Verlauf
bei dem Kontextsammelschritt nicht gehalten wurde;
- (8) Neueintragen, bei dem Codebaum-Neueintragschritt, der Daten
in einen Codebaum, der dem Kontext entspricht, falls die Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf bei dem Kontextsammelschritt
nicht gehalten wurde; und
- (9) Eintragen, bei dem obigen Kontext-Neueintragschritt (7)
und dem Codebaum-Neueintragschritt (8), einer Kombination
nur aus einem Kontext, dem Daten folgen und für den entschieden wurde, in
dem Verlauf enthalten sein zu müssen, und
jenen Daten.
-
Gemäß dem obigen Datenkomprimierungsverfahren
dieser Erfindung ist es nicht erforderlich, jede Kombination aus
dem Kontext und Daten einzutragen, für die entschieden worden ist,
in dem Verlauf der Eingangsdaten in der Vergangenheit nicht gespeichert
sein zu müssen,
so daß es
möglich
ist, den Datenkomprimierungsprozeß außerordentlich zu verbessern.
Es ist ferner möglich,
einen Code nur für solche
Daten zuzuordnen (einzutragen), die tatsächlich häufig auftreten, so daß eine Effektivität der Datenkomprimierung
außerordentlich
verbessert werden kann.
-
Indessen dient das Datendekomprimierungsverfahren
dieser Erfindung zum Dekomprimieren von codierten Daten, die durch
das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
in der Vergangenheit erhalten wurden, und umfaßt die folgenden Schritte:
- (1) einen Kontextsammelschritt, um einen Verlauf einer
Kombination aus decodierten Daten und einem Kontext zu halten;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum der
Daten von einem Kontext von Daten zu bestimmen, die bis unmittelbar
zuvor decodiert worden sind;
- (4) einen Decodierschritt, um Daten von dem Codebaum, der bei
dem Codebestimmungsschritt bestimmt wurde, und einen Code der Daten
zu decodieren; und
- (5) einen Codebaum-Neuanordnungsschritt, um ein Blatt an dem
Codebaum, in dem Daten gespeichert sind, gegen ein anderes Blatt
oder einen internen Knoten, der ein Gabelungspunkt an dem Codebaum
ist, unter Verwendung desselben Mittels wie in einem Codierer nach
dem Decodieren bei dem Decodierschritt auszutauschen.
-
Das obige Datendekomprimierungsverfahren
dieser Erfindung funktioniert wie folgt:
- (1)
Halten eines Verlaufs einer Kombination aus decodierten Daten und
einem Kontext bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums von Daten von einem Kontext von
Daten, die bis unmittelbar zuvor decodiert worden sind, bei dem
Codebaumbestimmungsschritt;
- (4) Decodieren der Daten von dem Codebaum, der bei dem Codebaumbestimmungsschritt
bestimmt wurde, und eines Codes der Daten bei dem Decodierschritt;
und
- (5) Austauschen, nach dem Codieren bei dem Codierschritt, eines
Blattes an dem Codebaum, in dem Daten gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten, der ein Gabelungspunkt
ist, unter Verwendung desselben Mittels wie in einem Codierer bei
dem Codebaum-Neuanordnungsschritt.
-
Gemäß dem obigen Datenwiederherstellungsverfahren
dieser Erfindung ist es möglich,
einen Prozeß aus
zwei Stufen gleichzeitig auszuführen, das
heißt,
eine Stufe zum Bestimmen einer Auftrittshäufigkeit von Eingangsdaten,
um ein Wahrscheinlichkeitsmodell zu erstellen und einen Code jedem Eingangsdatum
zuzuordnen, um eine Codetabelle zu bilden, und eine Stufe zum Ausgeben
eines decodierten Zeichens unter Bezugnahme auf diese Codetabelle,
so daß eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden kann. Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation wegzulassen,
um das Wahrscheinlichkeitsmodell neu zu erstellen, das bei jeder
Dateneingabe bereits erstellt worden ist, so daß eine Verarbeitungsrate bei
der Datendekomprimierung mehr erhöht werden kann. Es ist ferner
möglich, einen
Code von Daten mit einer geringeren Anzahl von Bits auszudrücken, wenn
derselbe Code von Daten wie jener von Eingangsdaten, die in der
Vergangenheit aufgetreten sind, häufiger auftritt, so daß ein Effekt
der Datendekomprimierung außerordentlich verstärkt werden
kann.
-
Das Datendekomprimierungsverfahren
dieser Erfindung dient zum Dekomprimieren von codierten Daten, die
gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit codiert worden sind,
und umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um einen Verlauf einer Kombination aus decodierten Daten und einem
Kontext zu halten;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum der
Daten von einem Kontext von Daten zu bestimmen, die bis unmittelbar
zuvor decodiert worden sind;
- (4) einen Decodierschritt, um die Daten von einem Codebaum,
der bei dem Codebaumbestimmungsschritt bestimmt wurde, und einen
Code der Daten zu decodieren;
- (5) einen Codebaum-Neuanordnungsschritt, um ein Blatt an dem
Codebaum, in dem Daten gespeichert sind, gegen ein anderes Blatt
oder einen internen Knoten, der ein Gabelungspunkt an dem Codebaum
ist, unter Verwendung desselben Mittels wie in einem Codierer nach
dem Decodieren bei dem Decodierschritt auszutauschen; und
- (6) einen Schritt, um einen Escape-Code, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, in Codebäumen
einzutragen, die jeweils jedem Kontext entsprechen, und falls der
Escape-Code beim Decodieren decodiert wird, einen Prozeß zum Verkürzen einer
Länge des
Kontextes zu wiederholen, bis ein Code ohne den Escape-Code decodiert
ist.
-
Das obige Datendekomprimierungsverfahren
dieser Erfindung funktioniert wie folgt:
- (1)
Halten eines Verlaufs einer Kombination aus decodierten Daten und
einem Kontext bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums von Daten von einem Kontext von
Daten, die bis unmittelbar zuvor decodiert worden sind, bei dem
Codebaumbestimmungsschritt;
- (4) Decodieren der Daten von dem Codebaum, der bei dem Codebaumbestimmungsschritt
bestimmt wurde, und eines Codes der Daten bei dem Decodierschritt;
- (5) Austauschen, nach dem Codieren bei dem Codierschritt, eines
Blattes an dem Codebaum, in dem Daten gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten an dem Codebaum, der ein
Gabelungspunkt ist, unter Verwendung desselben Mittels wie in einem
Codierer bei dem Codebaum-Neuanordnungsschritt;
und
- (6) Eintragen eines Escape-Codes im voraus, der als Daten definiert
ist, die bedeuten, daß keine Daten
gespeichert sind, in jedem Codebaum, der jedem Kontext entspricht,
und, falls ein Escape-Code beim Decodieren decodiert wird, Wiederholen
eines Prozesses, um eine Länge
des Kontextes zu verkürzen,
bis ein Code ohne den Escape-Code codiert ist.
-
Gemäß dem Datendekomprimierungsverfahren
dieser Erfindung ist es nicht erforderlich, im voraus den gesamten
Verlauf der Kombination aus den decodierten Daten und dem Kontext
einzutragen, so daß eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden kann. Es ist auch möglich,
eine Zeitperiode zu verkürzen, die
benötigt
wird, bis die Kombination aus den decodierten Daten und dem Kontext
erhalten wird, so daß eine
Verarbeitungsrate bei der Datenwiederherstellung noch mehr erhöht werden
kann.
-
Das Datendekomprimierungsverfahren
dieser Erfindung dient zum Dekomprimieren von codierten Daten, die
durch das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
in der Vergangenheit erhalten wurden, und umfaßt die folgenden Schritte:
- (1) einen Kontextsammelschritt, um einen Verlauf einer
Kombination aus decodierten Daten und einem Kontext zu halten;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum der
Daten von einem Kontext von Daten zu bestimmen, die bis unmittelbar
zuvor decodiert worden sind;
- (4) einen Decodierschritt, um die Daten von dem Codebaum, der
bei dem Codebestimmungsschritt bestimmt wurde, und einen Code der
Daten zu decodieren;
- (5) einen Codebaum-Neuanordnungsschritt, um ein Blatt an dem
Codebaum, in dem Daten gespeichert sind, gegen ein anderes Blatt
oder einen internen Knoten, der ein Gabelungspunkt an dem Codebaum
ist, unter Verwendung desselben Mittels wie in einem Codierer nach
dem Decodieren bei dem Decodierprozeß auszutauschen;
- (6) einen Kontext-Neueintragschritt, um die Daten bei dem Kontextsammelschritt
neu einzutragen;
- (7) einen Codebaum-Neueintragschritt, um die decodierten Daten
in einen Codebaum, der dem Kontext entspricht, neu einzutragen;
- (8) einen Schritt, um den Kontext-Neueintragschritt und den
Codebaum-Neueintragschritt auszuführen, wenn ein Escape-Code
decodiert wird, der als Daten definiert ist, die bedeuten, daß keine Daten
gespeichert sind, und einen Prozeß zum Verkürzen einer Länge des
Kontextes zu wiederholen, bis ein Code ohne den Escape-Code codiert
ist.
-
Das obige Datenwiederherstellungsverfahren
dieser Erfindung funktioniert wie folgt:
- (1)
Halten eines Verlaufs einer Kombination aus decodierten Daten und
einem Kontext bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums von Daten von einem Kontext von
Daten, die bis unmittelbar zuvor decodiert worden sind, bei dem
Codebaumbestimmungsschritt;
- (4) Decodieren der Daten von dem Codebaum, der bei dem Codebaumbestimmungsschritt
bestimmt wurde, und eines Codes der Daten bei dem Decodierschritt;
- (5) Austauschen, nach dem Codieren bei dem Codierschritt, eines
Blattes an dem Codebaum, in dem Daten gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten an dem Codebaum, der ein
Gabelungspunkt ist, unter Verwendung desselben Mittels wie in einem
Codierer bei dem Codebaum-Neuanordnungsschritt;
- (6) Neueintragen, bei dem Kontext-Neueintragschritt, der Daten
bei dem Kontextsammelschritt;
- (7) Neueintragen der codierten Daten in einen Codebaum, der
dem Kontext entspricht, bei dem Codebaum-Neueintragschritt; und
- (8) Ausführen,
wenn ein Escape-Code decodiert wird, der als Daten definiert ist,
die bedeuten, daß keine
Daten eingetragen sind, des obigen Kontext-Neuspeicherschrittes
(6) und des Codebaum-Neueintragschrittes (7) und
Wiederholen eines Prozesses, um eine Länge des Kontextes zu verkürzen, bis
ein Code ohne den Escape-Code decodiert ist.
-
Gemäß dem obigen Datendekomprimierungsverfahren
dieser Erfindung ist es möglich,
codierte Daten, die in der Vergangenheit nicht eingetragen worden
sind, neu einzutragen, um somit die neu eingetragenen decodierten
Daten in einem frühen Stadium
bei dem nächsten
Decodierprozeß zu
decodieren, so daß ein
Effekt der Datendekomprimierung mit weiterem Voranschreiten des
Decodierprozesses mehr verbessert werden kann.
-
Das Datendekomprimierungsverfahren
dieser Erfindung dient zum Dekomprimieren von codierten Daten, die
durch das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
in der Vergangenheit erhalten wurden, und umfaßt die folgenden Schritte:
- (1) einen Kontextsammelschritt, um einen Verlauf einer
Kombination aus decodierten Daten und einem Kontext zu halten;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum der
Daten von einem Kontext von Daten zu bestimmen, die bis unmittelbar
zuvor decodiert worden sind;
- (4) einen Decodierschritt, um die Daten von dem Codebaum, der
bei dem Codebaumbestimmungsschritt bestimmt wurde, und einen Code der
Daten zu decodieren;
- (5) einen Codebaum-Neuanordnungsschritt, um ein Blatt an dem
Codebaum, in dem Daten gespeichert sind, gegen ein anderes Blatt
oder einen internen Knoten, der ein Gabelungspunkt an dem Codebaum
ist, unter Verwendung desselben Mittels wie in einem Codierer nach
dem Decodieren bei dem Decodierprozeß auszutauschen;
- (6) einen Kontext-Neueintragschritt, um die Daten bei dem Kontextsammelschritt
neu einzutragen;
- (7) einen Codebaum-Neueintragschritt, um die decodierten Daten
in einen Codebaum, der dem Kontext entspricht, neu einzutragen;
und
- (8) in einem Prozeß,
bis ein Code ohne den Escape-Code codiert ist, der Daten definiert,
die bedeuten, daß keine Daten
gespeichert sind, falls der Escape-Code auch nur einmal codiert
wird, Ausführen
eines Neueintragprozesses nur an einem Kontext unmittelbar vor dem
Decodieren eines Codes ohne den Escape-Code bei dem Kontext-Neueintragschritt
und dem Codebaum-Eintragschritt.
-
Das obige Datendekomprimierungsverfahren
dieser Erfindung funktioniert wie folgt:
- (1)
Halten eines Verlaufs einer Kombination aus decodierten Daten und
einem Kontext bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums von Daten von einem Kontext von
Daten, die bis unmittelbar zuvor decodiert worden sind, bei dem
Codebaumbestimmungsschritt;
- (4) Decodieren von Daten von dem Codebaum, der bei dem Codebaumbestimmungsschritt
bestimmt wurde, und eines Codes der Daten bei dem Decodierschritt;
- (5) Austauschen, nach dem Codieren bei dem Codierschritt, eines
Blattes an dem Codebaum, in dem Daten gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten an dem Codebaum, der ein
Gabelungspunkt ist, unter Verwendung desselben Mittels wie in einem
Codierer bei dem Codebaum-Neuanordnungsschritt;
- (6) Neueintragen, bei dem Kontext-Neueintragschritt, der Daten
bei dem Kontextsammelschritt;
- (7) Neueintragen der codierten Daten in einen Codebaum, der
dem Kontext entspricht, bei dem Codebaum-Neueintragschritt; und
- (8) Ausführen,
falls der Escape-Code in einem Prozeß auch nur einmal codiert wird,
bis ein Code ohne den Escape-Code decodiert ist, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, eines Neueintragschrittes nur an einem Kontext
unmittelbar vor dem Decodieren eines Codes ohne den Escape-Code
bei dem Kontext-Neueintragschritt und dem Codebaum-Neueintragschritt.
-
Gemäß dem obigen Datendekomprimierungsverfahren
dieser Erfindung wird ein Neueintragprozeß nur an dem Kontext unmittelbar
vor dem Decodieren eines Codes ohne den Escape-Code bei dem Kontext-Neueintragschritt
und dem Codebaum-Neueintragschritt
ausgeführt,
so daß es
nicht erforderlich ist, alle Kombinationen aus einem Kontext und
Daten einzutragen, wofür
die Entscheidung getroffen worden ist, in dem Verlauf der Eingangsdaten
in der Vergangenheit nicht enthalten sein zu müssen, wodurch eine Verarbeitungsrate
der Datenkomprimierung außerordentlich
erhöht
werden kann und eine Effektivität
bei der Datendekomprimierung außerordentlich
verbessert werden kann, da nur für
Daten ein Code vergeben (eingetragen) wird, die tatsächlich häufig auftreten.
-
1 ist
ein Blockdiagramm, das einen Aspekt einer Datenkomprimierungsvorrichtunq
gemäß dieser
Erfindung zeigt. Die Datenkomprimierungsvorrichtung von 1 komprimiert Eingangsdaten
durch das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der in der Vergangenheit auftretenden Eingangsdaten.
-
In 1 bezeichnet
Bezugszeichen 100 ein Vordatenhaltemittel, bezeichnet 101 ein
Verlaufshaltemittel, bezeichnet 102 ein Codebaumhaltemittel, bezeichnet 103 ein
Codebaumbestimmungsmittel, bezeichnet 104 ein Codeausgabemittel,
bezeichnet 105 ein Codebaum-Neuanordnungs- oder Umordnungsmittel
und bezeichnet 106 ein Vordatenaktualisierungsmittel.
-
Das Vordatenhaltemittel 100 hält einen
Kontext, der aus n Eingangsdaten gebildet ist, die bis unmittelbar
vor der Eingabe der Eingangsdaten eingegeben worden sind. Das Verlaufshaltemittel 101 hält eine
Kombination aus Eingangsdaten und einem Kontext. Das Codebaumhaltemittel
hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind.
-
Das Codebaumbestimmungsmittel 103 bestimmt
einen Codebaum von Daten von den unmittelbar vorausgehenden Eingangsdaten,
die in dem Vordatenhaltemittel 100 gehalten werden. Das
Codeausgabemittel 104 gibt einzigartige Daten gemäß einer
Gabelung von einem Knoten aus, der ein Gabelungspunkt ist, der im
Verlauf eines Weges von einer Wurzel eines Codebaums, die ein oberes
Ende des Codebaums darstellt, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, zu einem Blatt, in dem Daten gespeichert sind, positioniert
ist.
-
Das Codebaum-Neuanordnungsmittel 105 tauscht
ein codiertes Blatt gegen ein anderes Blatt oder einen internen
Knoten aus. Das Vordatenaktualisierungsmittel 106 trägt die Daten
in dem Vordatenhaltemittel 100 ein.
-
In der obigen Datenkomprimierungsvorrichtung
mit der obigen Struktur hält
das Vordatenhaltemittel 100 einen Kontext, der aus n Eingangsdaten gebildet
ist, die bis unmittelbar vor der Eingabe der Eingangsdaten eingegeben
worden sind, hält
das Verlaufshaltemittel 101 eine Kombination aus den Eingangsdaten
und dem Kontext und hält
das Codebaumhaltemittel 102 Codebäume, die jeweils für jeden
Kontext unabhängig
sind.
-
Das Codebaumbestimmungsmittel 103 bestimmt
einen Codebaum von den Eingangsdaten, die bis unmittelbar zuvor
eingegeben worden sind und in dem Vordatenhaltemittel 100 gehalten
werden, das Codeausgabemittel 104 gibt einzigartige Daten
gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der im Verlauf
eines Weges von einer Wurzel eines Codebaums, die ein oberes Ende des
Codebaums darstellt, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, zu einem Blatt, in dem Daten gespeichert sind, positioniert
ist.
-
Ferner tauscht das Codebaum-Neuanordnungsmittel 105 ein
codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus, und das Vordatenaktualisierungsmittel 106 trägt die Daten
in das Vordatenhaltemittel 100 ein.
-
Gemäß der obigen Datenkomprimierungsvorrichtung
dieser Erfindung ist es möglich,
einen Prozeß,
der zwei Stufen umfaßt,
gleichzeitig auszuführen,
das heißt,
eine Stufe, um eine Auftrittshäufigkeit
von Eingangsdaten zu bestimmen, um ein Wahrscheinlichkeitsmodell
zu erstellen und einen Code jedem Eingangsdatum zuzuordnen, um eine
Codetabelle zu bilden, und eine Stufe, um einen Code der Daten von
dieser Codetabelle auszugeben, wodurch es möglich ist, eine Verarbeitungsrate
bei der Datenkomprimierung außerordentlich
zu erhöhen.
Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation wegzulassen,
um das Wahrscheinlichkeitsmodell neu zu erstellen, das bei jeder
Dateneingabe bereits erstellt worden ist, so daß die Verarbeitungsrate bei
der Datenkomprimierung mehr erhöht
werden kann. Ferner ist es möglich,
einen Codebaum durch das Austauschen eines codierten Blattes durch
ein anderes Blatt oder einen internen Knoten immer dann neu anzuordnen
oder umzuordnen, wenn dieselben Daten wie die Daten auftreten, die
in der Vergangenheit codiert worden sind, so daß es möglich ist, einen Code jener
Daten mit einer geringeren Anzahl von Bits auszudrücken, da
dieselben Daten häufiger
auftreten. Dadurch kann ein Effekt der Datenkomprimierung in der
Datenkomprimierungsvorrichtung außerordentlich verbessert werden.
-
2 ist
ein Blockdiagramm, das einen anderen Aspekt der Datenkomprimierungsvorrichtung gemäß dieser
Erfindung zeigt. Die Datenkomprimierungsvorrichtung von 2 codiert Eingangsdaten gemäß einem
Verlauf des Auftretens der Ein gangsdaten in der Vergangenheit, um
die Eingangsdaten zu komprimieren.
-
In 2 bezeichnet
Bezugszeichen 100 ein Vordatenhaltemittel, bezeichnet 101 ein
Verlaufshaltemittel, bezeichnet 103 ein Codebaumbestimmungsmittel
und bezeichnet 107 ein Codebaumhaltemittel. Ferner bezeichnet
Bezugszeichen 108 ein Kontextunterscheidungsmittel, bezeichnet 109 ein Escape-Code-Ausgabemittel,
bezeichnet 110 ein Kontextänderungsmittel, bezeichnet 111 ein
Codeausgabemittel und bezeichnet 116 ein Steuermittel.
-
Das Vordatenhaltemittel 100 hält einen
Kontext, der aus n Eingangsdaten gebildet ist, die bis unmittelbar
vor der Eingabe der Eingangsdaten eingegeben worden sind. Das Verlaufshaltemittel 101 hält eine
Kombination aus Eingangsdaten und einem Kontext. Das Codebaumhaltemittel 107 hält Codebäume, die
jeweils für
jeden Kontext unabhängig sind,
wobei in jeden von ihnen ein Escape-Code, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, im voraus eingetragen wird.
-
Das Codebaumbestimmungsmittel 103 bestimmt
einen Codebaum der Daten von dem Kontext und den Eingangsdaten.
Das Kontextunterscheidungsmittel 108 unterscheidet, ob
Daten in dem Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde. Das Escape-Code-Ausgabemittel 109 gibt einen Escape-Code gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf
eines Weges von einer Wurzel, die ein oberes Ende eines Codebaums
darstellt, zu einem Blatt, in dem die Daten gespeichert sind, positioniert
ist, falls die Daten nicht in dem Codebaum gespeichert sind.
-
Das Kontextaktualisierungsmittel 110 verkürzt eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind. Das Codeausgabemittel 111 gibt einen Code der Daten
gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind.
-
Das Codebaum-Neuanordnungsmittel 105 tauscht
ein codiertes Blatt gegen ein anderes Blatt oder einen internen
Knoten aus. Das Vordatenaktualisierungsmittel 106 trägt die Daten
in dem Vordatenhaltemittel 100 ein. Das Steuermittel 116 wiederholt einen
Prozeß,
bis die Daten codiert sind, wenn ein Escape-Code codiert wird.
-
In der obigen Datenkomprimierungsvorrichtung
hält das
Vordatenhaltemittel 100 einen Kontext, der aus n Eingangsdaten
gebildet ist, die bis unmittelbar vor der Eingabe der Daten eingegeben
worden sind, hält
das Verlaufshaltemittel 101 eine Kombination aus den Eingangsdaten
und dem Kontext und hält
das Codebaumhaltemittel 107 Codebäume, die jeweils für jeden
Kontext unabhängig
sind, wobei in jeden von ihnen ein Escape-Code im voraus eingetragen
wird, der als Daten definiert ist, die bedeuten, daß keine
Daten gespeichert sind.
-
Das Codebaumbestimmungsmittel 103 bestimmt
einen Codebaum der Daten von dem Kontext und den Eingangsdaten,
das Kontextunterscheidungsmittel 108 unterscheidet, ob
die Daten in dem Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, und das Escape-Code-Ausgabemittel 109 gibt
einen Escape-Code gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf eines
Weges von einer Wurzel, die ein oberes Ende des Codebaums darstellt,
zu einem Blatt, in dem die Daten gespeichert sind, positioniert
ist, falls die Daten nicht in dem Codebaum gespeichert sind.
-
Ferner verkürzt das Kontextänderungsmittel 110 eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind, gibt das Codeausgabemittel 111 einen Code der Daten
gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind, und tauscht das Codebaum-Neuanordnungsmittel 105 ein
codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus.
-
Das Vordatenaktualisierungsmittel 106 trägt dann
die Daten in das Vordatenhaltemittel 100 ein, und das Steuermittel 116 wiederholt
einen Prozeß, bis
die Daten codiert sind, wenn der Escape-Code codiert wird.
-
Gemäß der obigen Datenkomprimierungsvorrichtung
dieser Erfindung ist es nicht erforderlich, im voraus den gesamten
Verlauf der Kombination aus den Eingangsdaten und dem Kontext einzutragen,
so daß eine
Verarbeitungsrate bei der Datenkomprimierung außerordentlich erhöht werden
kann, wobei außerdem
ein Speicher außerordentlich
reduziert werden kann, der verwendet wird, um die Kontexte darin
einzutragen. Dadurch kann eine Leistung der Datenkomprimierungsvorrichtung
in hohem Maße
verbessert werden.
-
3 ist
ein Blockdiagramm, das einen anderen Aspekt der Datenkomprimierungsvorrichtung gemäß dieser
Erfindung zeigt. In 3 bezeichnet Bezugszeichen 100 ein
Vordatenhaltemittel, bezeichnet 101 ein Verlaufshaltemittel,
bezeichnet 103 ein Codebaumbestimmungsmittel, bezeichnet 105 ein Codebaum-Neuanordnungs-
oder Umordnungsmittel, bezeichnet 106 ein Vordatenaktualisierungsmittel,
bezeichnet 107 ein Codebaumhaltemittel, bezeichnet 108 ein
Kontextunterscheidungsmittel, bezeichnet 109 ein Escape-Code-Ausgabemittel,
bezeichnet 110 ein Kontextänderungsmittel, bezeichnet 111 ein
Codeausgabemittel, bezeichnet 112 ein Verlaufseintragmittel,
bezeichnet 113 ein Codeeintragmittel und bezeichnet 116 ein
Steuermittel.
-
Das Vordatenhaltemittel 100 hält einen
Kontext, der aus n Eingangsdaten gebildet ist, die bis unmittelbar
vor der Eingabe der Eingangsdaten eingegeben worden sind. Das Verlaufshaltemittel 101 hält eine
Kombination aus den Eingangsdaten und dem Kontext. Das Codebaumhaltemittel 107 hält Codebäume, die
jeweils für
jeden Kontext unabhängig sind,
wobei in jeden von ihnen ein Escape-Code, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, im voraus eingetragen wird.
-
Das Codebestimmungsmittel 103 bestimmt einen
Codebaum der Daten von dem Kontext und den Eingangsdaten. Das Kontextunterscheidungsmittel 108 unterscheidet,
ob die Daten in dem Codebaum gespeichert sind oder nicht, der durch
das Codebaumbestimmungsmittel 103 bestimmt wurde.
-
Ferner gibt das Escape-Code-Ausgabemittel 109 einen
Escape-Code gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf
eines Weges von einer Wurzel, die ein oberes Ende des Codebaums
darstellt, zu einem Blatt positioniert ist, das ein Datenspeicherpunkt
ist, in dem ein Escape-Code gespeichert ist, falls die Daten nicht
in dem Codebaum gespeichert sind.
-
Das Verlaufseintragmittel 112 trägt eine Kombination
aus den Daten und dem Kontext in das Verlaufshaltemittel 101 ein,
falls die Daten nicht in dem Codebaum gespeichert sind. Das Codeeintragmittel 113 trägt die Daten
in den Codebaum neu ein, falls die Daten nicht in dem Codebaum gespeichert sind.
Das Kontextänderungsmittel 110 verkürzt eine Länge n des
Kontextes, falls die Daten nicht in dem Codebaum gespeichert sind.
-
Ferner gibt das Codeausgabemittel 111 einen
Code der Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind. Das Codebaum-Neuanordnungsmittel 105 tauscht
ein codiertes Blatt gegen ein anderes Blatt oder einen internen
Knoten aus.
-
Das Vordatenaktualisierungsmittel 106 trägt die Daten
in dem Vordatenhaltemittel 100 ein. Das Steuermittel 116 wiederholt
einen Prozeß,
bis die Daten codiert sind, wenn der Escape-Code codiert wird.
-
In der obigen Datenkomprimierungsvorrichtung
hält das
Vordatenhaltemittel 100 einen Kontext, der aus n Eingangsdaten
gebildet ist, die bis unmittelbar vor einer Eingabe der Eingangsdaten
eingegeben worden sind, hält
das Verlaufshaltemittel 101 eine Kombination aus den Eingangsdaten
und dem Kontext und hält
das Codebaumhaltemittel 107 Codebäume, die jeweils für jeden
Kontext unabhängig sind,
wobei in jeden von ihnen ein Escape-Code, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, im voraus eingetragen wird.
-
Das Codebaumbestimmungsmittel 103 bestimmt
einen Codebaum der Daten von dem Kontext und den Eingangsdaten,
das Kontextunterscheidungsmittel 108 unterscheidet, ob
die Daten in dem Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, und das Escape-Code-Ausgabemittel 109 gibt
einen Escape-Code gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf eines
Weges von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
zu einem Blatt positioniert ist, in dem der Escape-Code gespeichert
ist, falls keine Daten in dem Codebaum gespeichert sind.
-
Ferner trägt das Verlaufseintragmittel 112 eine
Kombination aus den Daten und dem Kontext in das Verlaufshaltemittel 101 ein,
falls die Daten nicht in dem Codebaum gespeichert sind, trägt das Codeeintragmittel 113 die
Daten in den Codebaum neu ein, falls die Daten nicht in dem Codebaum gespeichert
sind, verkürzt
das Kontextänderungsmittel 110 eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind, und gibt das Codeausgabemittel 111 einen Code der
Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind.
-
Dann tauscht das Codebaum-Neuanordnungsmittel 105 ein
codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus, trägt
das Vordatenaktualisierungsmittel 106 die Daten in das Vordatenhaltemittel 100 ein,
und das Steuermittel 116 wiederholt einen Prozeß, bis die
Daten codiert sind, wenn ein Escape-Code codiert wird.
-
Gemäß der Datenkomprimierungsvorrichtung
dieser Erfindung ist es möglich,
Eingangsdaten, die in der Vergangenheit nicht im voraus eingetragen worden
sind, neu einzutragen und diese neu eingetragenen Daten in einem
frühen
Stadium bei dem nächsten
Codierprozeß zu
codieren. Dadurch kann ein Effekt der Datenkomprimierung mit voranschreitendem
Codierprozeß außerordentlich
verbessert werden, wobei außerdem
eine Verarbeitungslast auf der Datenkomprimierungsvorrichtung außerordentlich
reduziert wird.
-
4 ist
ein Blockdiagramm, das einen anderen Aspekt der Datenkomprimierungsvorrichtung gemäß dieser
Erfindung zeigt. In 4 bezeichnet Bezugszeichen 100 ein
Vordatenhaltemittel, bezeichnet 101 ein Verlaufshaltemittel,
bezeichnet 103 ein Codebaumbestimmungsmittel, bezeichnet 105 ein Codebaum-Neuanordnungsmittel,
bezeichnet 106 ein Vordatenaktualisierungsmittel, bezeichnet 107 ein
Codebaumhaltemittel, bezeichnet 108 ein Kontextunterscheidungsmittel,
bezeichnen 109 und 111 Escape-Code-Ausgabemittel,
bezeichnet 110 ein Kontextänderungsmittel, bezeichnet 114 ein
Ver laufseintragmittel, bezeichnet 115 ein Codeeintragmittel
und bezeichnet 117 ein Steuermittel.
-
Das Vordatenhaltemittel 100 hält einen
Kontext, der aus n Eingangsdaten gebildet ist, die bis unmittelbar
vor einer Eingabe von Eingangsdaten eingegeben worden sind. Das
Verlaufshaltemittel 101 hält eine Kombination aus den
Eingangsdaten und dem Kontext. Das Codebaumhaltemittel 107 hält Codebäume, die
jeweils für
jeden Kontext unabhängig sind,
in die ein Escape-Code im voraus eingetragen wird, der als Daten
definiert ist, die bedeuten, daß keine
Daten gespeichert sind.
-
Das Codebaumbestimmungsmittel 103 bestimmt
einen Codebaum der Daten von dem Kontext und den Eingangsdaten.
Das Kontextunterscheidungsmittel 108 unterscheidet, ob
die Daten in dem Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde.
-
Ferner gibt das Escape-Code-Ausgabemittel 109 einen
Escape-Code gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf
eines Weges von einer Wurzel, die ein Ende des Codebaums darstellt,
zu einem Blatt, in dem Daten des Escape-Codes gespeichert sind,
positioniert ist.
-
Das Kontextänderungsmittel 110 verkürzt eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind. Das Escape-Code-Ausgabemittel 111 gibt einen Code
der Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
zu einem Blatt der Daten an dem Codebaum positioniert ist, falls
die Daten in dem Codebaum gespeichert sind.
-
Das Verlaufseintragmittel 114 trägt eine Kombination
aus den Daten und dem Kontext in das Verlaufshaltemittel 101 ein.
Das Codeeintragmittel 115 trägt die Daten in den Codebaum
neu ein. Das Codebaum-Neuanordnungsmittel 105 tauscht ein
codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus. Das Vordatenaktualisierungsmittel 106 trägt die Daten
in dem Vordatenhaltemittel 100 ein.
-
Das Steuermittel 117 bewirkt,
daß das
Verlaufseintragmittel 114 eine Kombination aus dem Kontext
unmittelbar vor dem Codieren der Daten und den Daten in dem Verlaufshaltemittel 101 einträgt, falls
ein Escape-Code beim Codieren der Daten auch nur einmal codiert
wird, und bewirkt, daß das
Codeeintragmittel 115 die Daten in den Codebaum neu einträgt, der
einen Escape-Code hat, der unmittelbar von dem Codieren der Daten
codiert worden ist.
-
In der obigen Datenkomprimierungsvorrichtung
hält das
Vordatenhaltemittel 100 einen Kontext, der aus n Eingangsdaten
gebildet ist, die bis unmittelbar vor einer Eingabe von Daten eingegeben
worden sind, hält
das Verlaufshaltemittel 101 eine Kombination aus den Eingangsdaten
und dem Kontext, hält das
Codebaumhaltemittel 107 Codebäume, die jeweils für jeden
Kontext unabhängig
sind, in denen ein Escape-Code im voraus eingetragen wird, der bedeutet,
daß keine
Daten eingetragen sind.
-
Das Codebaumbestimmungsmittel 103 bestimmt
einen Codebaum der Daten von dem Kontext und den Eingangsdaten,
das Kontextunterscheidungsmittel 108 unterscheidet, ob
die Daten in dem Codebaum eingetragen sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, und das Escape-Code-Ausgabemittel 109 gibt
einen Escape-Code gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel,
die ein oberes Ende des Codebaums darstellt, zu einem Blatt, das
ein Codespeicherpunkt für
den Escape-Code
ist, positioniert ist, falls keine Daten in dem Codebaum eingetragen
sind.
-
Ferner verkürzt das Kontextänderungsmittel 110 eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind, und das Codeausgabemittel 111 gibt einen Code der
Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind.
-
Das Verlaufseintragmittel 114 trägt die Kombination
aus den Daten und dem Kontext in dem Verlaufshaltemittel 101 ein,
das Codeeintragmittel 115 trägt die Daten in den Codebaum
neu ein, das Codebaum-Neuanordnungsmittel 105 tauscht ein
codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus, und das Vordatenaktualisierungsmittel 106 trägt die Daten
in das Vordatenhaltemittel 100 ein.
-
Ferner bewirkt das Steuermittel 116,
daß das Verlaufseintragmittel 114 eine
Kombination aus einem Kontext, der unmittelbar vor dem Codieren
der Daten erhalten wurde, und den Daten in das Verlaufshaltemittel 101 einträgt, falls
ein Escape-Code beim Codieren der Daten auch nur einmal codiert wird,
und bewirkt, daß das
Codeeintragmittel 115 die Daten in einen Codebaum neu einträgt, der
einen Escape-Code hat, der unmittelbar vor dem Codieren der Daten
codiert worden ist.
-
Daher ist es in der obigen Datenkomprimierungsvorrichtung
dieser Erfindung nicht erforderlich, alle Kombinationen aus dem
Kontext und den Daten einzutragen, für die entschieden wurde, in
der Vergangenheit nicht in dem Verlauf der Eingangsdaten eingetragen
sein zu müssen,
so daß es
möglich
ist, den Datenkomprimierungsprozeß außerordentlich zu verbessern.
Dies gestattet auch, daß nur
für Daten, die
tatsächlich
häufig
auftreten, ein Code zugeordnet (eingetragen) wird, so daß eine Effektivität bei der Datenkomprimierung
außerordentlich
verbessert werden kann, wobei außerdem auch eine Leistung der
Datenkomprimierungsvorrichtung beträchtlich verbessert werden kann.
-
5 ist
ein Blockdiagramm, das einen anderen Aspekt der Datendekomprimierungsvorrichtung
dieser Erfindung zeigt. Die Datendekomprimierungsvorrichtung von 5 decodiert einen codierten
Code, der gemäß einem
Verlauf von in der Vergangenheit aufgetretenen Daten codiert worden
ist.
-
In 5 bezeichnet
Bezugszeichen 200 ein Vordatenhaltemittel, bezeichnet 201 ein
Verlaufshaltemittel, bezeichnet 202 ein Codebaumhaltemittel, bezeichnet 203 ein
Codebaumbestimmungsmittel, bezeichnet 204 ein Decodiermittel,
bezeichnet 205 ein Codebaum-Neuanordnungs- oder Umordnungsmittel
und bezeichnet 206 ein Vordatenaktualisierungsmittel 206.
-
Das Vordatenhaltemittel 200 hält n Daten, die
in der Vergangenheit decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext. Das Codebaumhaltemittel 202 hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind.
-
Das Codebaumbestimmungsmittel 203 bestimmt
einen Codebaum, der verwendet wird, um Daten zu decodieren, von
dem Kontext, der in dem Vordatenhaltemittel 200 gehalten
wird. Das Decodiermittel 204 gibt Daten aus, die in einem
Blatt gespeichert sind, das ein Datenspeicherpunkt ist, der durch
Scannen eines Weges von einer Wurzel, die ein oberes Ende des Codebaums
darstellt, der durch das Codebaumbestimmungsmittel 203 selektiert
worden ist, zu einem Knoten, der ein Gabelungspunkt gemäß einem
Code ist, erreicht wird.
-
Das Codebaum-Neuanordnungsmittel 205 tauscht
ein decodiertes Blatt gegen ein anderes Blatt oder einen internen
Knoten aus. Das Vordatenaktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordatenhaltemittel 200 ein.
-
In der obigen Datenwiederherstellungsvorrichtung
hält das
Vordatenhaltemittel 200 n Daten, die vor dem Decodieren eines Codes
decodiert worden sind, hält
das Verlaufshalte mittel 201 eine Kombination aus decodierter.
Daten und einem Kontext und hält
das Codebaumhaltemittel 202 Codebäume, die jeweils für jeden
Kontext unabhängig
sind.
-
Das Codebaumbestimmungsmittel 203 bestimmt
einen Codebaum, der verwendet wird, um Daten zu decodieren, von
dem Kontext, der in dem Vordatenhaltemittel 200 gehalten
wird, und das Decodiermittel 204 gibt Daten aus, die in
einem Blatt als Datenspeicherpunkt gespeichert sind, der durch Scannen
eines Weges von einer Wurzel, die ein oberes Ende des Codebaums
darstellt, der durch das Codebaumbestimmungsmittel 203 selektiert
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code erreicht wird.
-
Ferner tauscht das Codebaum-Neuanordnungsmittel 205 ein
decodiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus, und das Vordatenaktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordatenhaltemittel 200 ein.
-
In der obigen Datenwiederherstellungsvorrichtung
dieser Erfindung ist es möglich,
einen Prozeß aus
zwei Stufen gleichzeitig auszuführen,
das heißt,
eine Stufe, um eine Auftrittshäufigkeit
von Eingangsdaten zu bestimmen, um ein Wahrscheinlichkeitsmodell
zu erstellen und einen Code jedem Eingangsdatum zuzuordnen, um eine
Codetabelle zu bilden, und eine Stufe, um ein Zeichen, das zu decodieren
ist, von dieser Codetabelle auszugeben, so daß eine Verarbeitungsrate bei
der Datendekomprimierung in der Datendekomprimierungsvorrichtung außerordentlich
erhöht
werden kann. Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation, um ein Wahrscheinlichkeitsmodell
neu zu erstellen, das bei jeder Dateneingabe bereits erstellt worden
ist, wegzulassen, so daß eine
Verarbeitungsrate bei der Datenwiederherstellung mehr verbessert werden
kann. Es ist ferner möglich,
einen Code von Daten mit einer geringeren Anzahl von Bits auszu drücken, wenn
ein Code von denselben Daten wie den Daten, die in der Vergangenheit
aufgetreten sind, häufiger
auftritt, so daß ein
Effekt der Datendekomprimierung außerordentlich verbessert werden
kann, wobei außerdem
eine Leistung der Datendekomprimierungsvorrichtung außerordentlich
verbessert werden kann.
-
6 ist
ein Blockdiagramm eines anderen Aspektes der Datendekomprimierungsvorrichtung dieser
Erfindung. In 6 bezeichnet
Bezugszeichen 200 ein Vordatenhaltemittel, bezeichnet 201 ein Verlaufshaltemittel,
bezeichnet 203 ein Codebaumbestimmungsmittel, bezeichnet 204 ein
Decodiermittel, bezeichnet 205 ein Codebaum-Neuanordnungsmittel,
bezeichnet 206 ein Vordatenaktualisierungsmittel, bezeichnet 207 ein
Codebaumhaltemittel, bezeichnet 208 ein Kontextänderungsmittel
und bezeichnet 213 ein Steuermittel.
-
Das Vordatenhaltemittel 200 hält n Daten, die
vor dem Decodieren eines Codes decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext. Das Codebaumhaltemittel 207 hält Codebäume, in denen
jeweils ein Escape-Code im voraus gespeichert wurde, der als Daten
definiert ist, die bedeuten, daß keine
Daten eingetragen sind.
-
Das Codebaumbestimmungsmittel 203 bestimmt
einen Codebaum, der verwendet wird, um Daten zu decodieren, von
dem Kontext, der in dem Vordatenhaltemittel 200 gehalten
wird. Das Decodiermittel 204 gibt Daten aus, die in einem
Blatt gespeichert sind, das ein Datenspeicherpunkt ist, indem ein
Weg von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
der durch das Codebaumbestimmungsmittel 203 selektiert
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code gescant wird.
-
Ferner tauscht das Codebaum-Neuanordnungsmittel 205 ein
decodiertes Blatt gegen ein anderes Blatt oder einen inter nen Knoten
aus. Das Kontextänderungsmittel 208 sondert
Daten aus, falls die ausgegebenen Daten ein Escape-Code sind, um
den Kontext zu verkürzen.
Das Vordatenaktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordatenhaltemittel 200 ein.
-
Das Steuermittel 213 bewirkt,
daß das
Kontextänderungsmittel 208 den
Kontext zurücksetzt, falls
ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein
Code ohne einen Escape-Code decodiert ist.
-
In der obigen Datenwiederherstellungsvorrichtung
hält das
Vordatenhaltemittel 200 n Daten, die vor dem Decodieren eines Codes
decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext, und das Codebaumhaltemittel 207 hält Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind.
-
Das Codebaumbestimmungsmittel 203 bestimmt
einen Codebaum, der verwendet wird, um Daten zu decodieren, von
dem Kontext, der in dem Vordatenhaltemittel 200 gehalten
wird, und das Decodiermittel 204 gibt Daten, die in einem
Blatt gespeichert sind, das ein Datenspeicherpunkt ist, der durch Scannen
eines Weges von einer Wurzel, die ein oberes Ende eines Codebaums
darstellt, der durch das Codebaumbestimmungsmittel 203 bestimmt
wurde, zu einem Knoten, der ein Gabelungspunkt ist, erreicht wird,
gemäß einem
Code aus.
-
Ferner tauscht das Codebaum-Neuanordnungsmittel 205 ein
decodiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus, sondert das Kontextänderungsmittel 208 die
Daten aus, falls ausgegebene Daten ein Escape-Code sind, um den Kontext
zu verkürzen,
und trägt
das Vordatenaktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordatenhaltemittel 200 ein.
-
Das Steuermittel 213 bewirkt,
daß das
Kontextänderungsmittel 208 den
Kontext zurücksetzt, wenn
ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein
Code ohne den Escape-Code decodiert ist.
-
In dem obigen Datendekomprimierungsmittel
dieser Erfindung ist es nicht erforderlich, im voraus den gesamten
Verlauf einer Kombination aus den decodierten Daten und dem Kontext
einzutragen, so daß es
möglich
ist, eine Zeitperiode zu verkürzen,
die benötigt
wird, bis die Kombination aus den decodierten Daten und dem Kontext
erhalten wird. Als Resultat kann eine Verarbeitungsrate bei der
Datendekomprimierung außerordentlich
erhöht
werden, wobei außerdem
eine Leistung der Datendekomprimierungsvorrichtung in hohem Maße verbessert
werden kann.
-
7 ist
ein Blockdiagramm, das noch einen anderen Aspekt der Datendekomprimierungsvorrichtung
dieser Erfindung zeigt. In 7 bezeichnet
Bezugszeichen 200 ein Vordatenhaltemittel, bezeichnet 201 ein
Verlaufshaltemittel, bezeichnet 203 ein Codebaumbestimmungsmittel,
bezeichnet 204 ein Decodiermittel, bezeichnet 205 ein
Codebaum-Neuanordnungsmittel, bezeichnet 206 ein Vordatenaktualisierungsmittel,
bezeichnet 207 ein Codebaumhaltemittel, bezeichnet 208 ein
Kontextänderungsmittel, bezeichnet 209 ein
Verlaufseintragmittel, bezeichnet 210 ein Codeeintragmittel
und bezeichnet 213 ein Steuermittel.
-
Das Vordatenhaltemittel 200 hält n Daten, die
vor dem Decodieren eines Codes decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext. Das Codebaumhaltemittel 207 hält Codebäume, in denen
jeweils ein Escape-Code im voraus eingetragen wurde.
-
Das Codebaumbestimmungsmittel 203 bestimmt
einen Codebaum, der verwendet wird, um Daten zu decodieren, von
dem Kontext, der in dem Vordatenhaltemittel 200 gehalten
wird. Das Decodiermittel 204 gibt Daten aus, die in einem
Blatt gespeichert sind, das ein Datenspeicherpunkt ist, der erreicht wird,
indem ein Weg von einer Wurzel, die ein oberes Ende eines Codebaums
darstellt, der durch das Codebaumbestimmungsmittel 203 selektiert
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code gescant wird.
-
Das Codebaum-Neuanordnungsmittel 205 tauscht
ein decodiertes Blatt gegen ein anderes Blatt oder einen Knoten
aus. Das Kontextänderungsmittel 208 sondert
die obigen Daten aus, wenn ausgegebene Daten ein Escape-Code sind,
um den Kontext zu verkürzen.
-
Das Vordatenaktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordatenhaltemittel 200 ein. Das Verlaufseintragmittel 209 trägt jeden Kontext,
der erhalten wird, wenn ein Escape-Code bei dem Datendecodierprozeß decodiert
wird, und die decodierten Daten in dem Verlaufshaltemittel 201 ein.
-
Das Codeeintragmittel 210 trägt einen
Code der Daten in alle Codebäume
ein, die dem Kontext entsprechen, wenn ein Escape-Code bei dem Datendecodierprozeß decodiert
wird. Das Steuermittel 213 bewirkt, daß das Kontextänderungsmittel 208 den Kontext
zurücksetzt,
wenn ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein
Code ohne einen Escape-Code decodiert ist.
-
In der obigen Datenwiederherstellungsvorrichtung
hält das
Datenhaltemittel 200 n Daten, die vor dem Decodieren eines Codes
decodiert worden sind, hält
das Verlaufshaltemittel 201 eine Kombination aus den decodierten
Daten und einem Kontext und hält
das Codebaumhaltemittel 207 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde.
-
Das Codebaumbestimmungsmittel 203 bestimmt
dann einen Codebaum, der verwendet wird, um Daten zu decodieren,
von dem Kontext, der in dem Vordatenhaltemittel 200 gehalten
wird, und das Decodiermittel 204 gibt Daten aus, die in
einem Blatt gespeichert sind, das ein Datenspeicherpunkt ist, der durch
Scannen eines Weges von einer Wurzel, die ein oberes Ende eines
Codebaums darstellt, der durch das Codebaumbestimmungsmittel 203 bestimmt
wurde, zu dem Blatt über
einen Knoten, der ein Gabelungspunkt ist, gemäß einem Code erreicht wird.
-
Ferner tauscht das Codebaum-Neuanordnungsmittel 205 ein
decodiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus, sondert das Kontextänderungsmittel 208 die
Daten aus, wenn ausgegebene Daten ein Escape-Code sind, um den Kontext
zu verkürzen,
und das Vordatenaktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordatenhaltemittel 200 ein.
-
Das Verlaufseintragmittel 209 trägt dann
alle Kontexte, die erhalten wurden, wenn ein Escape-Code bei dem
Datendecodierprozeß decodiert
wird, und die decodierten Daten in dem Verlaufshaltemittel 201 ein,
das Codeeintragmittel 210 trägt einen Code der Daten in
allen Codebäumen
ein, die dem Kontext entsprechen, wenn ein Escape-Code bei dem Datendecodierprozeß decodiert
wird, und das Steuermittel 213 bewirkt, daß das Kontextänderungsmittel 208 den
Kontext zurücksetzt,
wenn ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein Code
ohne einen Escape-Code decodiert ist.
-
In der obigen Datendekomprimierungsvorrichtung
dieser Erfindung ist es möglich,
decodierte Daten, die in der Vergangenheit nicht im voraus eingetragen
worden sind, neu einzutragen und diese decodierten Daten, die neu
eingetragen worden sind, in einem frühen Stadium bei dem nächsten Decodierprozeß zu decodieren.
Dadurch kann ein Effekt der Daten dekomprimierung mit voranschreitendem
Decodierprozeß mehr
verbessert werden und eine Leistung der Datendekomprimierungsvorrichtung
außerordentlich
verbessert werden.
-
8 ist
ein Blockdiagramm, das noch einen anderen Aspekt der Datendekomprimierungsvorrichtung
dieser Erfindung zeigt. In 8 bezeichnet
Bezugszeichen 200 ein Vordatenhaltemittel, bezeichnet 201 ein
Verlaufshaltemittel, bezeichnet 203 ein Codebaumbestimmungsmittel,
bezeichnet 204 ein Decodiermittel, bezeichnet 205 ein
Codebaum-Neuanordnungsmittel, bezeichnet 206 ein Vordatenaktualisierungsmittel,
bezeichnet 207 ein Codebaumhaltemittel, bezeichnet 208 ein
Kontextänderungsmittel, bezeichnet 212 ein
Codeeintragmittel und bezeichnet 213 ein Steuermittel.
-
Das Vordatenhaltemittel 200 hält n Daten, die
vor dem Decodieren eines Codes decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext. Das Codebaumhaltemittel 207 hält Codebäume, in denen
jeweils ein Escape-Code im voraus eingetragen wurde, der als Daten
definiert ist, die bedeuten, daß keine
Daten gespeichert sind.
-
Das Codebaumbestimmungsmittel 203 bestimmt
einen Codebaum, der verwendet wird, um Daten zu decodieren, von
dem Kontext, der in dem Vordatenhaltemittel 200 gehalten
wird. Das Decodiermittel 204 gibt Daten aus, die in einem
Blatt gespeichert sind, das ein Datenspeicherpunkt ist, der erreicht wird,
indem ein Weg von einer Wurzel, die ein oberes Ende des Codebaums
darstellt, der durch das Codebaumbestimmungsmittel 203 bestimmt
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code gescant wird.
-
Das Codebaum-Neuanordnungsmittel 205 tauscht
ein decodiertes Blatt gegen ein anderes Blatt oder einen internen
Knoten aus. Das Kontextänderungsmittel 208 sondert
die Daten aus, falls ausgegebene Daten ein Escape-Code sind, um
den Kontext zu verkürzen.
Das Vordatenaktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordatenhaltemittel 200 ein.
-
Das Verlaufseintragmittel 211 trägt einen Kontext
zu der Zeit des letzten Codierens eines Escape-Codes bei dem Datendecodierprozeß und die Daten
in dem Verlaufshaltemittel 201 ein. Das Codeeintragmittel 212 trägt einen
Code der Daten in einen Codebaum ein, der dem Kontext zu der Zeit
des letzten Codierens eines Escape-Codes bei dem Datendecodierprozeß entspricht.
Das Steuermittel 213 bewirkt, daß das Kontextänderungsmittel 208 den
Kontext zurücksetzt,
wenn ein Escape-Code decodiert wird, und wiederholt den Prozeß, bis ein
Code ohne einen Escape-Code decodiert ist.
-
In dem obigen Datendekomprimierungsmittel
hält das
Vordatenhaltemittel 200 n Daten, die vor dem Decodieren eines Codes
decodiert worden sind, hält
das Verlaufshaltemittel 201 eine Kombination aus den decodierten
Daten und einem Kontext und hält
das Codebaumhaltemittel 207 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten, daß kein Dateneintrag
vorhanden ist.
-
Das Codebaumbestimmungsmittel 203 bestimmt
einen Codebaum, der verwendet wird, um Daten zu decodieren, von
dem Kontext, der in dem Vordatenhaltemittel 200 gehalten
wird, und das Decodiermittel 204 gibt Daten aus, die in
einem Blatt gespeichert sind, das ein Speicherpunkt der Daten ist, der
durch Scannen eines Weges von einer Wurzel, die ein oberes Ende
eines Codebaums darstellt, der durch das Codebaumbestimmungsmittel 203 selektiert
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code erreicht wird.
-
Ferner tauscht das Codebaum-Neuanordnungsmittel 205 ein
decodiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus, und das Kontextänderungsmittel 208 sondert die
Daten aus, falls ausgegebene Daten ein Escape-Code sind, um den
Kontext zu verkürzen.
-
Das Vordatenaktualisierungsmittel 206 trägt dann
die decodierten Daten in dem Vordatenhaltemittel 200 ein,
das Verlaufseintragmittel 211 trägt einen Kontext zu der Zeit
des letzten Decodierens eines Escape-Codes bei dem Datendecodierprozeß und die
decodierten Daten in dem Verlaufshaltemittel 201 ein, und
das Codeeintragmittel 212 trägt einen Code der Daten in
einem Codebaum ein, der dem Kontext zu der Zeit des letzten Decodierens
eines Escape-Codes bei dem Datendecodierprozeß entspricht.
-
Ferner bewirkt das Steuermittel 213,
daß das Kontextänderungsmittel 208 den
Kontext zurücksetzt,
wenn ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein
Code ohne einen Escape-Code decodiert ist.
-
Gemäß dem obigen Datenwiederherstellungsmittel
dieser Erfindung ist es nicht erforderlich, alle Kombinationen aus
einem Kontext und Daten einzutragen, für die entschieden worden ist,
in der Vergangenheit nicht in dem Verlauf von Eingangsdaten gespeichert
sein zu müssen.
Zusätzlich
kann nur für
Daten, die tatsächlich
häufig
auftreten, ein Code zugeordnet (eingetragen) werden, so daß eine Effektivität bei der
Datendekomprimierung außerordentlich
verbessert werden kann, wobei außerdem auch eine Leistung der
Datenwiederherstellungsvorrichtung außerordentlich verbessert werden
kann.
-
Ein Datenkomprimierungsverfahren
gemäß dieser
Erfindung dient zum Komprimieren von Eingangsdaten durch das Decodieren
der Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit und
umfaßt
die folgenden Schritte:
- (1) einen Kontextbaumhalteschritt,
um einen Kontextbaum zu halten, in dem eine Kombination aus Eingangsdaten
und einem Kontext, der n kontinuierliche Daten umfaßt, denen
die Eingangsdaten folgen, eingetragen ist;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Kontextbaum-Neueintragschritt, um Daten in den Kontextbaum
neu einzutragen, der bei dem Kontextbaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (4) einen Codebaum-Neueintragschritt, um die Daten in den Codebaum
neu einzutragen, der bei dem Codebaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gespeichert wurde;
- (5) einen Neueintragschritt, um die Daten in einem Blatt zu
speichern, das erhalten wird, indem ein Blatt verzweigt wird, das
ein Datenspeicherpunkt an dem Codebaum ist, der bei dem Codebaumhalteschritt
gehalten wird, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (6) einen Kontextänderungsschritt,
um den Kontext zu ändern,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Codebaumhalteschritt nicht gehalten wurde;
- (7) einen Codeausgabeschritt, um einen Code gemäß einer
Gabelung von einem oberen Ende des Codebaums zu einem Blatt auszugeben,
in dem die Eingangsdaten oder ein spezifischer Code in dem Codebaum
gespeichert sind;
- (8) einen Codebaum-Neuanordnungs- oder Umordnungsschritt, um
ein Blatt, in dem die Eingangsdaten oder der spezifische Code in
dem Codebaum gespeichert sind, gegen ein anderes Blatt oder einen
internen Knoten auszutauschen, der als Gabelungspunkt definiert
ist, wobei das obere Ende des Codebaums ausgenommen ist; und
- (9) einen Neueintragschritt, um ein Blatt zu verzweigen, in
dem der spezifische Code gespeichert ist, um den spezifischen Code
und die neuen Daten in zwei jeweiligen neu erhaltenen Blättern einzutragen.
-
Das obige Datenkomprimierungsverfahren dieser
Erfindung funktioniert wie folgt:
- (1) Halten
eines Codebaums, in dem eine Kombination aus Eingangsdaten und einem
Kontext, der aus n kontinuierlichen Daten gebildet ist, denen die
Eingangsdaten folgen, bei dem Kontexthalteschritt;
- (2) Halten von Codebäumen,
die jeweilig für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Neueintragen, bei dem Kontextbaum-Neueintragschritt, der
Daten in dem Kontextbaum, der bei dem Kontexthalteschritt gehalten
wird, falls die Kombination aus den Eingangsdaten und dem Kontext
bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (4) Neueintragen, bei dem Codebaum-Neueintragschritt, der Daten
in dem Codebaum, der bei dem Codebaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (5) Speichern, bei dem Neueintragschritt, der Daten in einem
neuen Blatt, das durch Verzweigen eines Blattes erhalten wird, das
ein Datenspeicherpunkt an dem Codebaum ist, der bei dem Codebaumhalteschritt
gehalten wird, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (6) Ändern,
bei dem Kontextänderungsschritt,
des Kontextes, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (7) Ausgeben eines Codes gemäß der Gabelung, die
sich von einem oberen Ende des Codebaums zu einem Blatt erstreckt,
in dem die Eingangsdaten oder ein spezifischer Code gespeichert
sind, bei dem Codeausgabeschritt;
- (8) Austauschen eines Blattes, in dem die Eingangsdaten oder
der spezifische Code in dem Codebaum gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten, der als Gabelungspunkt
definiert ist, das obere Ende des Codebaums ausgenommen, bei dem
Codebaum-Neuanordnungsschritt; und
- (9) Eintragen des spezifischen Codes und neuer Daten in zwei
Blätter,
die durch Verzweigen eines Blattes, in dem der spezifische Code
gespeichert ist, neu erhalten werden, bei dem Neueintragschritt.
-
Die obige Datenkomprimierungsvorrichtung kann
eine hohe Codierrate im Falle der Daten vorsehen, die den obigen
spezifischen Code relativ oft ausgeben, oder in einem frühen Stadium,
in dem der Eintrag von Kontexten, die bei dem Codebaumhalteschritt
gehalten werden, nicht ausreicht. Falls der Codebaum-Neuanordnungsschritt
vor dem obigen Codebaum-Neueintragschritt
ausgeführt
wird, ist es zum Beispiel möglich,
einen Code oder den spezifischen Code mit nur 2 Bits auszudrücken. Falls
der Codebaum-Neuanordnungsschritt nach dem obigen Codebaum-Neueintragschritt
ausgeführt
wird, ist es möglich,
den spezifischen Code mit nur 1 Bit auszudrücken. Dadurch kann die Codiereffektivität außerordentlich
verbessert werden. Bei dem obigen Codebaum-Neueintragschritt werden
die Daten immer nacheinander neu eingetragen, so daß jedes
Mal nur Kontexte mit hoher Wiederholbarkeit in den höheren Grad
des Codebaums eingetragen werden. Als Resultat ist es möglich, einen
Rückgang
der Codiereffektivität
auf Grund der Existenz von Daten zu verhindern, die einmal in den
Codebaum eingetragen worden sind, tatsächlich aber nicht verwendet
werden. Dadurch kann die Codiereffektivität in hohem Maße weiter
verbessert werden, nachdem genügend
Daten eingetragen worden sind.
-
Das Datenkomprimierungsverfahren
dieser Erfindung dient zum Komprimieren von Eingangsdaten durch
das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit und umfaßt die folgenden Schritte:
- (1) einen Codebaumhalteschritt, um Codebäume zu halten,
in denen jeweils ein Escape-Code eingetragen ist, der als Daten
definiert ist, die bedeuten, daß kein
Dateneintrag vorhanden ist;
- (2) einen Kontextbaumhalteschritt, um einen Kontextbaum zu halten,
in dem eine Kombination aus Eingangsdaten und einem Kontext, der
n kontinuierliche Daten umfaßt,
denen die Eingangsdaten folgen, gespeichert ist;
- (3) einen Codebaum-Neueintragschritt, um Daten in den Kontextbaum
neu einzutragen, der bei dem Kontextbaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontexthalteschritt nicht gehalten wurde;
- (4) einen Codebaum-Neueintragschritt, um Daten in den Codebaum
neu einzutragen, der bei dem Codebaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (5) einen Neueintragschritt, um die Daten in ein Blatt neu einzutragen,
das neu erhalten wird, indem ein Blatt, das ein Datenspeicherpunkt
an dem Codebaum ist, der bei dem Codebaumhalteschritt gehalten wird,
verzweigt wird, falls die Kombination aus den Eingangsdaten und
dem Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (6) einen Kontextänderungsschritt,
um den Kontext zu ändern,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (7) einen Codeausgabeschritt, um einen Code gemäß einer
Gabelung eines Weges auszugeben, der sich von einem oberen Ende
des Codebaums zu einem Blatt erstreckt, in dem die Eingangsdaten
oder ein Escape-Code gespeichert sind;
- (8) einen Codebaum-Neuanordnungsschritt, um ein Blatt, in dem
die Eingangsdaten oder ein Escape-Code gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten, der als Gabelungspunkt
definiert ist, das obere Ende des Codebaums ausgenommen; und
- (9) einen Neueintragschritt, um ein Blatt zu verzweigen, in
dem der Escape-Code gespeichert ist, um den Escape-Code und die
neuen Daten in zwei jeweiligen neu erhaltenen Blättern einzutragen.
-
Das obige Datenkomprimierungsverfahren dieser
Erfindung funktioniert wie folgt:
- (1) Halten
von Codebäumen,
in denen jeweils ein Escape-Code im voraus eingetragen wird, der
als Daten definiert ist, die bedeuten, daß kein Dateneintrag vorhanden
ist, bei dem Codebaumhalteschritt;
- (2) Halten eines Codebaums, in dem eine Kombination aus Eingangsdaten
und einem Kontext, der aus n kontinuierlichen Daten gebildet ist,
denen die Eingangsdaten folgen, gespeichert ist, bei dem Kontextbaumhalteschritt;
- (3) Neueintragen, bei dem Kontextbaum-Neueintragschritt, von
Daten in den Kontextbaum, der bei dem Kontextbaumhalteschritt gehalten
wird, falls die Kombination aus den Eingangsdaten und dem Kontext
bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (4) Neueintragen, bei dem Codebaum-Neueintragschritt, der Daten
in den Codebaum, der bei dem Codebaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (5) Speichern, bei dem Neueintragschritt, der Daten in einem
neuen Blatt, das durch Verzweigen eines Blattes erhalten wird, das
ein Datenspeicherpunkt an dem Codebaum ist, der bei dem Codebaumhalteschritt
gehalten wird, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (6) Ändern,
bei dem Kontextänderungsschritt,
des Kontextes, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde
- (7) Ausgeben eines Codes gemäß der Gabelung eines
Weges von einem oberen Ende des Codebaums zu einem Blatt, in dem
die Eingangsdaten oder ein Escape-Code gespeichert sind, bei dem Codeausgabeschritt;
- (8) Austauschen eines Blattes, in dem die Eingangsdaten oder
ein Escape-Code gespeichert sind, gegen ein anderes Blatt oder einen
internen Knoten, der als Gabelungspunkt definiert ist, das obere
Ende des Codebaums ausgenommen, bei dem Codebaum-Neuanordnungsschritt;
und
- (9) Verzweigen eines Blattes, in dem der Escape-Code gespeichert
ist, um den Escape-Code und die neuen Daten in zwei jeweiligen neu
erhaltenen Blättern
einzutragen.
-
Die obige Datenkomprimierungsvorrichtung kann
eine hohe Codierrate im Falle der Daten vorsehen, die den obigen
spezifischen Code relativ häufig ausgeben,
oder in einem frühen
Stadium, in dem der Eintrag von Kontexten, die bei dem Codebaumhalteschritt
gehalten werden, nicht ausreicht. Falls der Codebaum-Neuanordnungsschritt
vor dem obigen Codebaum-Neueintragschritt ausgeführt wird, ist es zum Beispiel
möglich,
einen Code oder den spezifischen Code mit nur 2 Bits auszudrücken. Falls
der Codebaum-Neuanordnungsschritt nach dem Codebaum-Neueintragschritt
ausgeführt
wird, ist es möglich,
den spezifischen Code mit nur 1 Bit auszudrücken. Dadurch kann die Codiereffektivität außerordentlich verbessert
werden. Bei dem obigen Codebaum-Neueintragschritt werden die Daten
immer nacheinander neu eingetragen, so daß jedes Mal nur Kontexte mit
einer hohen Wiederholbarkeit in den höheren Grad des Codebaums eingetragen
werden. Als Resultat ist es möglich,
einen Rückgang
der Codiereffektivität
auf Grund der Existenz von Daten zu verhindern, die einmal in den
Codebaum eingetragen worden sind, tatsächlich aber nicht verwendet
werden. Dadurch kann die Codiereffektivität in hohem Maße weiter
außerordentlich
verbessert werden, nachdem genügend
Daten eingetragen worden sind.
-
Bei dem Neueintragprozeß bei dem
obigen Codebaum-Neueintragschritt (4) ist es möglich, ein Blatt,
das am weitesten von der Wurzel entfernt ist, die als oberes Ende
des Codebaums definiert ist, von Blättern unter demselben Kontext
zu verzweigen und Daten, die in dem verzweigten Blatt gespeichert
gewesen sind, und neue Daten in zwei jeweiligen, durch die Verzweigung
neu erhaltenen Blättern
einzutragen. Alternativ ist es möglich,
das zuletzt eingetragene Blatt von Blättern unter demselben Kontext
zu verzweigen und Daten, die in dem verzweigten Blatt gespeichert
waren, und neue Daten in zwei jeweiligen, durch die Verzweigung
neu erhaltenen Blättern
einzutragen.
-
Bei dem obigen Neueintragschritt
(5) wird ein Blatt, das von der Wurzel am weitesten entfernt
ist, die als oberes Ende des Codebaums definiert ist, von Blättern unter
demselben Kontext verzweigt, so daß Daten, die in dem verzweigten
Blatt gespeichert waren, und neue Daten in zwei jeweiligen, durch
die Verzweigung neu erhaltenen Blättern eingetragen werden. Alternativ
wird ein Blatt, bei dem der Eintrag zuletzt erfolgte, von Blättern unter
demselben Kontext verzweigt, so daß Daten, die in dem verzweigten Blatt
gespeichert waren, und neue Daten in zwei jeweiligen, durch die
Verzweigung neu erhaltenen Blättern
eingetragen werden.
-
Gemäß dem obigen Datenkomprimierungsverfahren
dieser Erfindung ist es möglich,
eine Codelänge
von Daten mit der niedrigsten Auftrittshäufigkeit, die nicht häufig verwendet
werden, zu verlängern.
Deshalb ist es möglich,
eine Verringerung der Effektivität
des Codierens zum Beispiel auf Grund einer Vergrößerung der Codelänge um 1
Bit zu verhindern und eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
zu erhöhen.
Die neuen Daten, die in dem zuletzt eingetragenen Blatt gespeichert
waren, können
als Daten mit relativ langer Codelänge approximiert werden, so
daß die
Verarbeitungsrate bei der Datenkomprimierung mehr erhöht werden
kann.
-
Das Datendekomprimierungsverfahren
dieser Erfindung dient zum Dekomprimieren von codierten Daten, die
durch Decodieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
in der Vergangenheit erhalten wurden, und umfaßt die folgenden Schritte:
- (1) einen Kontextbaumhalteschritt, um einen
Kontextbaum zu halten, in dem eine Kombination aus decodierten Daten
und einem Kontext gespeichert ist;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum von
Daten zu bestimmen, die bis unmittelbar zuvor decodiert worden sind;
- (4) einen Decodierschritt, um einen Code durch Scannen eines
Weges von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
zu einem Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code
zu decodieren;
- (5) einen Kontextänderungsschritt,
um den Kontext zu ändern,
falls das erreichte Blatt ein spezifischer Code in dem Codebaum
ist;
- (6) einen Codebaum-Neuanordnungsschritt, um Blätter der
decodierten Daten und des spezifischen Codes gegen andere Blätter oder
einen internen Knoten auszutauschen, der ein Gabelungspunkt ist;
- (7) einen Neueintragschritt, um die decodierten Daten in den
Codebaum neu einzutragen, wenn der spezifische Code decodiert ist;
- (8) einen Kontexteintragschritt, um die Daten, die bei dem Neueintragschritt
eingetragen worden sind, in den Kontextbaum bei dem Kontextbaumhalteschritt
einzutragen; und
- (9) einen Neueintragschritt, um dasselbe Blatt wie ein Blatt,
das in einem Codierer selektiert worden ist, um verzweigt zu werden,
zu verzweigen, um die neuen Daten darin einzutragen.
-
Das obige Datendekomprimierungsverfahren
dieser Erfindung funktioniert wie folgt:
- (1)
Halten eines Kontextbaums, in dem eine Kombination aus decodierten
Daten und einem Kontext gespeichert wird, bei dem Kontextbaumhalteschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums eines Codes von decodierten Daten,
die bis unmittelbar zuvor decodiert worden sind, bei dem Codebaumbestimmungsschritt;
- (4) Decodieren eines Codes durch Scannen eines Weges von einer
Wurzel, die ein oberes Ende eines Codebaums darstellt, zu einem
Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code bei dem Decodierschritt;
- (5) Ändern
des Kontextes, falls das erreichte Blatt ein spezifischer Code in
dem Codebaum ist, bei dem Kontextänderungsschritt;
- (6) Austauschen von Blättern
der decodierten Daten und des spezifischen Codes gegen andere Blätter oder
einen internen Knoten, der ein Gabelungspunkt ist, bei dem Codebaum-Neuanordnungsschritt;
- (7) Neueintragen, bei dem Neueintragschritt, der decodierten
Daten in den Codebaum, wenn der spezifische Code decodiert ist;
- (8) Eintragen, bei dem Kontextbaumeintragschritt, der Daten,
die bei dem Neueintragschritt in dem Codebaum eingetragen worden
sind, der bei dem Kontextbaumhalteschritt gehalten wurde; und
- (9) Verzweigen desselben Blattes wie ein Blatt, das in einem
Codierer selektiert worden ist, um verzweigt zu werden, um die neuen
Daten bei dem Neueintragschritt darin einzutragen.
-
Gemäß dem obigen Datendekomprimierungsverfahren
dieser Erfindung kann jedes der Blätter, die in zwei geteilt werden,
eine Codelänge
von zum Beispiel [(Codelänge
eines Blattes vor der Teilung) + 1] Bits haben, und ein Code der
neu eingetragenen Daten oder der spezifische Code kann eine Codelänge von
lediglich 2 Bits bei dem Datenneueintragschritt haben, ähnlich wie
in dem Codierer (bei dem Komprimierungsverfahren). Als Resultat
ist es möglich,
eine Effektivität
beim Decodieren von Daten außerordentlich
zu erhöhen,
falls Daten verarbeitet werden, in denen eine relativ große Anzahl
der spezifischen Codes decodiert wird, oder in einem frühen Stadium,
wenn der Wörterbucheintrag
(Eintrag von Symbolen in dem Codebaum) nicht ausreicht. Falls der
Codebaum-Neuanordnungsschritt vor dem Datenneueintragschritt ausgeführt wird,
können
die decodierten Daten oder der spezifische Code zum Beispiel eine
Codelänge
von lediglich 2 Bits haben. Falls der Codebaum-Neuanordnungsschritt
nach dem Neueintragschritt ausgeführt wird, kann der spezifische
Code eine Codelänge
von nur 1 Bit haben. Dadurch kann eine Effektivität bei der
Datendekomprimierung weiter erhöht
werden. Zusätzlich
dazu führt der
Dekomprimierer denselben Neuein tragschritt wie der Codierer aus,
so daß es
möglich
ist, die Daten, die in dem Komprimierer codiert worden sind, akkurat zu
decodieren.
-
Das Datendekomprimierungsverfahren
dieser Erfindung dient zum Dekomprimieren von Eingangsdaten, die
gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit codiert worden sind,
und umfaßt
die folgenden Schritte:
- (1) einen Codebaumhalteschritt,
um Codebäume zu
halten, in denen jeweils ein Escape-Code im voraus eingetragen wurde,
der als Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind;
- (2) einen Kontextbaumhalteschritt, um einen Kontextbaum zu halten,
in dem eine Kombination aus decodierten Daten und einem Kontext
gespeichert ist;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum von
den Daten zu bestimmen, die bis unmittelbar zuvor decodiert worden
sind;
- (4) einen Decodierschritt, um einen Code durch Scannen eines
Weges von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
zu einem Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code
zu decodieren;
- (5) einen Kontextbaum-Neuanordnungsschritt, um den Kontext zu ändern, falls
das erreichte Blatt ein Escape-Code ist;
- (6) einen Codebaum-Neuanordnungsschritt, um Blätter der
decodierten Daten und eines Escape-Codes gegen andere Blätter oder
einen internen Knoten auszutauschen, der ein Gabelungspunkt ist;
- (7) einen Neueintragschritt, um die decodierten Daten in den
Codebaum neu einzutragen, wenn ein Escape-Code decodiert ist;
- (8) einen Kontexteintragschritt, um die Daten, die bei dem Neueintragschritt
in den Codebaum eingetragen worden sind, bei dem Kontextbaumhalteschritt
einzutragen; und
- (9) einen Neueintragschritt, um dasselbe Blatt wie ein Blatt,
das in einem Codierer selektiert worden ist, um verzweigt zu werden,
zu verzweigen, um die neuen Daten in ihm einzutragen.
-
Das obige Datendekomprimierungsverfahren
dieser Erfindung funktioniert wie folgt:
- (1)
Halten von Codebäumen,
in denen jeweils ein Escape-Code gespeichert wurde, der als Daten definiert
ist, die bedeuten, daß kein
Dateneintrag vorhanden ist, bei dem Codebaumhalteschritt;
- (2) Halten eines Kontextbaums, in dem eine Kombination aus decodierten
Daten und einem Kontext gespeichert wird, bei dem Kontextbaumhalteschritt;
- (3) Bestimmen eines Codebaums eines Codes von Daten, die bis
unmittelbar zuvor decodiert worden sind, bei dem Codebaumbestimmungsschritt;
- (4) Decodieren eines Codes durch Scannen eines Weges von einer
Wurzel, die ein oberes Ende eines Codebaums darstellt, zu einem
Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code bei dem Decodierschritt;
- (5) Ändern
des Kontextes, falls das erreichte Blatt ein Escape-Code ist, bei
dem Kontextänderungsschritt;
- (6) Austauschen von Blättern
der decodierten Daten und eines Escape-Codes gegen andere Blätter oder
einen internen Knoten, der ein Gabelungspunkt ist, bei dem Codebaum-Neuanordnungsschritt;
- (7) Neueintraqen der decodierten Daten in dem Codebaum, wenn
ein Escape-Code decodiert ist, bei dem Neueintragschritt;
- (8) Eintragen, bei dem Kontextbaumeintragschritt, der Daten,
die bei dem Neueintragschritt in dem Codebaum eingetragen worden
sind, der bei dem Kontextbaumhalteschritt gehalten wurde; und
- (9) Verzweigen desselben Blattes wie ein Blatt, das in einem
Codierer selektiert worden ist, um verzweigt zu werden, um darin
die neuen Daten bei dem Neueintragschritt einzutragen.
-
Gemäß dem obigen Datendekomprimierungsverfahren
kann jedes der Blätter,
die in zwei geteilt wurden, eine Codelänge von zum Beispiel [(Codelänge eines
Blattes vor der Teilung) + 1] Bits haben, und ein Code der neu eingetragenen
Daten oder der spezifische Code kann eine Codelänge von lediglich 2 Bits bei
dem Datenneueintragschritt haben, ähnlich wie in dem Codierer
(bei dem Komprimierungsverfahren). Als Resultat ist es möglich, eine
Effektivität
beim Decodieren von Daten außerordentlich zu
erhöhen,
falls Daten verarbeitet werden, in denen eine relativ große Anzahl
der spezifischen Codes decodiert wird, oder in einem frühen Stadium,
wenn der Wörterbucheintrag
(Eintrag von Symbolen in dem Codebaum) nicht ausreicht. Falls der
Codebaum-Neuanordnungsschritt vor dem Datenneueintragschritt ausgeführt wird,
können
die Daten oder der spezifische Code zum Beispiel eine Codelänge von
lediglich 2 Bits haben. Falls der Codebaum-Neuanordnungsschritt nach dem Neueintragschritt
ausgeführt
wird, kann der spezifische Code eine Codelänge von nur 1 Bit haben. Dadurch
kann eine Effektivität
beim Decodieren von Daten weiter erhöht werden. Zusätzlich dazu
führt der
Codierer denselben Neueintragschritt wie der Dekomprimierer aus,
so daß es
möglich
ist, die Daten, die in dem Codierer codiert worden sind, akkurat
zu decodieren.
-
9 ist
ein Blockdiagramm einer Vorrichtung, die zum Implementieren des
oben beschriebenen Datenkomprimierungsverfahrens gemäß dieser Erfindung
verwendet wird. Die in 9 gezeigte
Datenkomprimierungsvorrichtung codiert Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit.
-
In 9 bezeichnet
Bezugszeichen 301 ein Codebaumhaltemittel, bezeichnet 302 ein
Kontextbaumhaltemittel, bezeichnet 303 ein Kontexteintragmittel,
bezeichnet 304 ein Codeeintragmittel, bezeichnet 305 ein
Kontextänderungsmittel,
bezeichnet 306 ein Codiermittel und bezeichnet 307 ein
Codeaktualisierungsmittel.
-
Das Codebaumhaltemittel 301 hält Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der im
voraus als Daten definiert ist, die bedeuten, daß kein Dateneintrag vorhanden ist.
Das Kontextbaumhaltemittel 302 hält einen Kontextbaum, in dem
eine Kombination aus Eingangsdaten und einem Kontext gespeichert
ist. Das Kontexteintragmittel 303 trägt Daten in dem Kontextbaum neu
ein, nachdem ein Escape-Code decodiert worden ist.
-
Das Codeeintragmittel 304 verzweigt
ein Blatt, das ein Datenspeicherpunkt für einen Escape-Code in dem
Codebaum ist, nachdem der Escape-Code codiert worden ist, um die
Daten darin neu einzutragen. Das Kontextänderungsmittel 305 ändert den
Kontext, falls die Kombination aus den Eingangsdaten und dem Kontext
in dem Kontextbaum nicht gespeichert ist.
-
Das Codiermittel 306 gibt
einen Code gemäß einem
Weg von einem oberen Ende des Codebaums zu einem Blatt aus, in dem
die Eingangsdaten oder der Escape-Code gespeichert sind. Das Codeaktualisierungsmittel 307 tauscht
ein Blatt, in dem die decodierten Daten oder der Escape-Code gespeichert sind,
gegen ein anderes Blatt oder einen internen Knoten aus.
-
In der obigen Datenkomprimierungsvorrichtung
hält das
Codebaumhaltemittel 301 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten,
daß kein
Dateneintrag vorhanden ist, und das Kontextbaumhaltemittel 302 hält einen
Kontext baum, in dem eine Kombination aus Eingangsdaten und einem
Kontext gespeichert ist.
-
Das Kontexteintragmittel 303 trägt Daten
in dem Kontextbaum neu ein, nachdem der Escape-Code codiert worden
ist, das Codeeintragmittel 304 verzweigt ein Blatt, das
ein Datenspeicherpunkt für
den Escape-Code in dem Codebaum ist, nachdem der Escape-Code codiert
worden ist, um die Daten darin neu einzutragen, und das Kontextänderungsmittel 305 ändert den
Kontext, falls die Kombination aus den Eingangsdaten und dem Kontext
nicht in dem Kontextbaum gehalten wird.
-
Das Codiermittel 306 gibt
einen Code gemäß einem
Weg von einem oberen Ende des Codebaums zu einem Blatt aus, in dem
die Eingangsdaten oder der Escape-Code gespeichert sind, und das
Codeaktualisierungsmittel 307 tauscht ein Blatt, in dem
die codierten Daten oder der Escape-Code gespeichert sind, gegen
ein anderes Blatt oder einen internen Knoten aus.
-
Die obige Datenkomprimierungsvorrichtung dieser
Erfindung kann ein hohe Codierrate im Falle von Daten vorsehen,
bei denen der Escape-Code relativ oft ausgegeben wird, oder in einem
frühen
Stadium, wenn der Eintrag von Kontexten, die in dem Kontextbaumhaltemittel 301 gehalten
werden, nicht ausreicht. Falls die Codeaktualisierung, die durch das
Codeaktualisierungsmittel 307 ausgeführt wird, vor dem Codeeintrag
erfolgt, der durch das Codeeintragmittel 304 vorgenommen
wird, kann der Code oder der Escape-Code eine Codelänge von
beispielsweise lediglich 2 Bits. haben. Falls die Codeaktualisierung
durch das Codeaktualisierungsmittel 307 nach dem Codeeintrag
durch das Codeeintragmittel 304 ausgeführt wird, kann der Escape-Code
eine Codelänge
von lediglich 1 Bit haben, so daß eine Effektivität beim Codieren
außerordentlich
verbessert werden kann. Ferner wird der Neueintrag eines Codes durch
das Codeeintragmittel 304 immer nacheinander vorgenommen,
so daß es
möglich
ist, eine Effektivitätsverringerung
des Codierens auf Grund der Existenz von Daten, die einmal in den
Codebaum eingetragen worden sind, tatsächlich aber nicht verwendet
werden, zu verhindern. Dadurch kann eine Effektivität des Codierens
außerordentlich
verbessert werden, nachdem Daten in ausreichendem Maße eingetragen
worden sind. Als Resultat kann die Leistung der Datenkomprimierungsvorrichtung
spürbar verbessert
werden.
-
10 ist
ein Blockdiagramm einer Vorrichtung, die zum Implementieren des
oben beschriebenen Datenkomprimierungsverfahrens dieser Erfindung
verwendet wird. Die in 10 gezeigte
Datenkomprimierungsvorrichtung hat ein Codebaumhaltemittel 301,
ein Kontextbaumhaltemittel 302, ein Kontexteintragmittel 303,
ein Kontextänderungsmittel 305,
ein Codiermittel 306 und ein Codeaktualisierungsmittel 307,
die denen von 9 ähnlich sind.
-
Bezugszeichen 310 bezeichnet
ein Verzweigungspositionssuchmittel. Das Verzweigungspositionssuchmittel 310 sucht
ein Blatt, das die längste
Codelänge
an einem Codebaum hat.
-
Bezugszeichen 311 bezeichnet
ein Codeeintragmittel. Das Codeeintragmittel 311 verzweigt
ein Blatt, das ein Datenspeicherpunkt ist, der durch das Verzweigungspositionssuchmittel 310 gesucht
wird, um Daten darin neu einzutragen, nachdem ein Escape-Code codiert
worden ist.
-
In der obigen Datenkomprimierungsvorrichtung
hält das
Codebaumhaltemittel 301 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten,
daß kein
Dateneintrag vorhanden ist, und das Kontextbaumhaltemittel 302 hält einen
Kontextbaum, in dem eine Kombination aus Eingangsdaten und einem
Kontext gespeichert ist.
-
Das Kontexteintragmittel 303 trägt Daten
in den Kontext neu ein, nachdem ein Escape-Code codiert worden ist,
das Verzweigungspositionssuchmittel 310 sucht ein Blatt
mit der längsten
Codelänge, und
das Codeeintragmittel 311 verzweigt ein Blatt, das ein
Datenspeicherpunkt ist, der durch das Verzweigungspositionssuchmittel 310 gesucht
wird, nach dem Codieren des Escape-Codes, um die Daten darin neu
einzutragen.
-
Das Kontextänderungsmittel 305 ändert den Kontext,
falls die Kombination aus den Eingangsdaten und dem Kontext in dem
Kontext nicht gehalten wird, das Codiermittel 306 gibt
einen Code gemäß der Gabelung
eines Weges von einem oberen Ende des Codebaums zu einem Blatt aus,
in dem die Eingangsdaten oder ein Escape-Code gespeichert sind, und
das Codeaktualisierungsmittel 307 tauscht ein Blatt, in
dem die codierten Daten oder der Escape-Code gespeichert sind, gegen
ein anderes Blatt oder einen Knoten aus.
-
Die Datenkomprimierungsvorrichtung
dieser Erfindung kann eine lange Codelänge für selten verwendete Daten vergeben,
die die niedrigste Auftrittshäufigkeit
haben, so daß es
zum Beispiel möglich
ist, einen Rückgang
der Effektivität
beim Codieren auf Grund einer um 1 Bit vergrößerten Codelänge zu verhindern,
wodurch eine Verarbeitungsrate bei der Datenkomprimierung und außerdem eine
Leistung der Datenkomprimierungsvorrichtung außerordentlich verbessert wird.
-
11 ist
ein Blockdiagramm einer Vorrichtung, die zum Implementieren des
oben beschriebenen Datenkomprimierungsverfahrens dieser Erfindung
verwendet wird. Die in 11 gezeigte
Datenkomprimierungsvorrichtung hat ein Codebaumhaltemittel 301,
ein Kontextbaumhaltemittel 302, ein Kontexteintragmittel 303,
ein Kontextänderungsmittel 305,
ein Codiermittel 306 und ein Codeaktualisierungsmittel 307,
die denen von 9 ähnlich sind.
-
Bezugszeichen 308 bezeichnet
ein Verzweigungspositionshaltemittel. Das Verzweigungspositionshaltemittel 308 hält eine
Position eines Blattes, das ein Datenspeicherpunkt für neu eingetragene Daten
in einem Codebaum ist.
-
Bezugszeichen 309 bezeichnet
ein Codeeintragmittel. Das Codeeintragmittel 309 verzweigt
ein Blatt an einer Position, die in dem Verzweigungspositionshaltemittel 308 gehalten
wird, nachdem ein Escape-Code codiert worden ist, um darin die Daten neu
einzutragen.
-
In der obigen Datenkomprimierungsvorrichtung
hält das
Codebaumhaltemittel 301 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten,
daß kein
Dateneintrag vorhanden ist, und das Kontextbaumhaltemittel 302 hält einen
Kontextbaum, in dem eine Kombination aus Eingangsdaten und einem
Kontext gespeichert ist.
-
Das Kontexteintragmittel 303 trägt Daten
in den Kontextbaum neu ein, nachdem der Escape-Code codiert worden
ist, das Verzweigungspositionshaltemittel 308 hält eine
Position eines Blattes, das ein Datenspeicherpunkt für neu eingetragene
Daten in dem Codebaum ist, und das Codeeintragmittel 309 verzweigt
ein Blatt an einer Position, die in dem Verzweigungspositionshaltemittel 308 gehalten
wird, nach dem Codieren des Escape-Codes, um die Daten darin neu
einzutragen.
-
Das Kontextänderungsmittel 305 ändert den Kontext,
falls die Kombination aus den Eingangsdaten und dem Kontext in dem
Kontextbaum nicht gehalten wird, das Codiermittel 306 gibt
einen Code gemäß der Gabelung
eines Weges von einem oberen Ende des Codebaums zu einem Blatt aus,
in dem die Eingangsdaten oder der Escape-Code eingetragen sind,
und das Codeaktualisierungsmittel 307 tauscht ein Blatt,
in dem die Daten oder der Escape-Code gespeichert sind, gegen ein anderes
Blatt oder einen internen Knoten aus, der ein Gabelungspunkt ist.
-
Die obige Datenkomprimierungsvorrichtung dieser
Erfindung kann die neuen Daten, die in dem Blatt gespeichert sind
und zuletzt eingetragen worden sind, Daten approximieren, die eine
relativ lange Codelänge
haben, wodurch eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
erhöht wird
und eine Verarbeitungslast auf der Datenkomprimierungsvorrichtung
außerordentlich
reduziert wird.
-
12 ist
ein Blockdiagramm einer Vorrichtung, die zum Implementieren des
obenerwähnten Datendekomprimierungsverfahrens
dieser Erfindung verwendet wird. Die in 12 gezeigte Datenwiederherstellungsvorrichtung
decodiert einen Code, der gemäß einem
Verlauf von Eingangsdaten in der Vergangenheit codiert worden ist.
-
In 12 bezeichnet
Bezugszeichen 401 ein Codebaumhaltemittel, bezeichnet 402 ein
Kontextbaumhaltemittel, bezeichnet 403 ein Codebaumbestimmungsmittel,
bezeichnet 404 ein Decodiermittel, bezeichnet 405 ein
Kontextänderungsmittel,
bezeichnet 406 ein Codeaktualisierungsmittel, bezeichnet 407 ein
Codeeintragmittel und bezeichnet 408 ein Kontextbaumeintragmittel.
-
Hierbei hält das Codebaumhaltemittel 401 Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß keine Daten eingetragen sind.
Das Kontextbaumhaltemittel 402 hält einen Kontextbaum, in dem
eine Kombination aus Eingangsdaten und einem Kontext gespeichert
ist. Das Codebaumbestimmungsmittel 403 bestimmt einen Codebaum
von Daten, die bis unmittelbar zuvor decodiert worden sind.
-
Ferner decodiert das Decodiermittel 404 einen
Code durch Scannen eines Weges von einer Wurzel, die ein oberes
Ende des Codebaums darstellt, zu einem Blatt, das ein Daten speicherpunkt
ist, gemäß dem Code.
Das Kontextänderungsmittel 405 ändert den
Kontext, falls das erreichte Blatt ein Escape-Code ist. Das Codeaktualisierungsmittel 406 tauscht
Blätter
der decodierten Daten und eines Escape-Codes gegen andere Blätter oder
einen internen Knoten aus, der ein Gabelungspunkt ist.
-
Das Codeeintragmittel 407 verzweigt
ein Blatt des Escape-Codes, falls der Escape-Code decodiert wird,
um die decodierten Daten darin neu einzutragen. Das Kontextbaumeintragmittel 408 trägt die Daten,
die durch das Codeeintragmittel 407 eingetragen worden
sind, in den Kontextbaum ein, der durch das Kontextbaumhaltemittel 402 gehalten
wird.
-
In der obigen Datendekomprimierungsvorrichtung
hält das
Codebaumhaltemittel 401 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten,
daß kein
Dateneintrag vorhanden ist, hält das
Kontexthaltemittel 402 einen Codebaum, in dem eine Kombination
aus decodierten Daten und einem Kontext gespeichert ist, und bestimmt
das Codebaumbestimmungsmittel 403 einen Codebaum eines Codes
von Daten, die bis unmittelbar zuvor decodiert worden sind.
-
Das Decodiermittel 404 decodiert
einen Code durch Scannen eines Weges von einer Wurzel, die ein oberes
Ende des Codebaums darstellt, zu einem Blatt, das ein Datenspeicherpunkt
ist, gemäß dem Code,
und das Kontextänderungsmittel 405 ändert den
Kontext, falls das erreichte Blatt ein Escape-Code ist.
-
Das Codeaktualisierungsmittel 406 tauscht Blätter der
decodierten Daten und des Escape-Codes gegen andere Blätter oder
einen internen Knoten aus, der ein Gabelungspunkt ist, das Codeeintragmittel 407 verzweigt
ein Blatt des Escape-Codes,
wenn der Escape-Code codiert ist, um die Daten darin neu einzutragen,
und das Kontextbaumeintragmittel 408 trägt die Daten, die durch das
Codeeintragmittel 407 eingetragen worden sind, in den Kontextbaum
ein, der durch das Kontextbaumhaltemittel 402 gehalten wird.
-
Die obige Datenwiederherstellungsvorrichtung
dieser Erfindung kann eine hohe Decodierrate im Falle von Daten
vorsehen, bei denen der Escape-Code relativ oft ausgegeben wird,
oder in einem frühen
Stadium, wenn der Eintrag des Kontextbaums, der durch das Kontextbaumhaltemittel 402 gehalten
wird, nicht ausreicht. Falls das Codeeintragmittel 407 den
Eintrag eines Codes vor der Codeaktualisierung durch das Codeaktualisierungsmittel 406 ausführt, kann
der Code oder der Escape-Code zum Beispiel eine Codelänge von
lediglich 2 Bits haben. Falls das Codeaktualisierungsmittel 406 die
Codeaktualisierung vor dem Codeeintrag durch das Codeeintragmittel 407 ausführt, kann
der Escape-Code eine Codelänge
von lediglich 1 Bit haben. Dadurch kann eine Effektivität beim Decodieren
der Daten außerordentlich
verbessert werden. Ferner wird der Neueintrag eines decodierten
Codes durch das Codeeintragmittel 407 immer nacheinander
ausgeführt, so
daß immer
nur Daten mit Wiederholbarkeit in den höheren Grad des Codebaums eingetragen
werden. Dadurch kann eine Verringerung der Effektivität des Decodierens
von Daten auf Grund der Existenz von Daten, die einmal in den Codebaum
eingetragen worden sind, tatsächlich
aber nicht verwendet werden, verhindert werden, so daß eine Effektivität des Decodierens
von Daten weitgehend verbessert werden kann, nachdem Daten in ausreichendem
Maße eingetragen
worden sind. Als Resultat kann eine Leistung der Datendekomprimierungsvorrichtung
spürbar verbessert
werden.
-
13 ist
ein Blockdiagramm einer Vorrichtung, die zum Implementieren des
obenerwähnten Datendekomprimierungsverfahrens
dieser Erfindung verwendet wird. Die in 13 gezeigte Datendekomprimierungsvorrichtung
hat ein Codebaum haltemittel 401, ein Kontextbaumhaltemittel 402,
ein Codebaumbestimmungsmittel 403, ein Decodiermittel 404,
ein Kontextänderungsmittel 405 und
ein Codeaktualisierungsmittel 406, die jenen von 12 ähnlich sind.
-
Bezugszeichen 411 bezeichnet
ein Verzweigungspositionssuchmittel. Das Verzweigungspositionssuchmittel 411 sucht
eine Position eines Blattes mit der längsten Codelänge an dem
Codebaum.
-
Bezugszeichen 412 bezeichnet
ein Codeeintragmittel. Das Codeeintragmittel 412 verzweigt
ein Blatt, das durch das Verzweigungspositionssuchmittel 411 gesucht
wird, nachdem ein Escape-Code codiert worden ist, um neue Daten
darin einzutragen.
-
Bezugszeichen 413 bezeichnet
ein Kontextbaumeintragmittel. Das Kontextbaumeintragmittel 413 trägt Daten,
die durch das Codeeintragmittel 413 eingetragen worden
sind, in den Kontextbaum ein, der durch das Kontextbaumhaltemittel 402 gehalten wird.
-
In der obigen Datenwiederherstellungsvorrichtung
hält das
Codebaumhaltemittel 401 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten,
daß keine
Daten eingetragen sind, hält
das Kontextbaumhaltemittel 402 einen Kontextbaum, in dem
eine Kombination aus decodierten Daten und einem Kontext gespeichert
ist, und bestimmt das Codebaumbestimmungsmittel 403 einen
Codebaum eines Codes von Daten, die bis unmittelbar zuvor decodiert
worden sind.
-
Das Decodiermittel 404 decodiert
einen Code durch Scannen eines Weges von einer Wurzel, die ein oberes
Ende des Codebaums darstellt, zu einem Blatt, das ein Datenspeicherpunkt
ist, und das Kontextänderungsmittel 405 ändert den
Kontext, falls das erreichte Blatt ein Escape-Code ist.
-
Ferner tauscht das Codeaktualisierungsmittel 406 Blätter der
decodierten Daten und des Escape-Codes gegen andere Blätter oder
einen Knoten aus, der ein Gabelungspunkt ist, sucht das Verzweigungspositionssuchmittel 411 eine
Position eines Blattes mit der längsten
Codelänge
an dem Codebaum, verzweigt das Codeeintragmittel 412 ein
Blatt, das durch das Verzweigungspositionssuchmittel 411 gesucht
wurde, um die Daten darin neu einzutragen, und trägt das Kontextbaumeintragmittel 408 die
Daten, die durch das Codebaumeintragmittel 412 eingetragen
worden sind, in den Kontextbaum ein, der durch das Kontextbaumhaltemittel 402 gehalten
wird.
-
Durch die obige Datenwiederherstellungsvorrichtung
dieser Erfindung können
selten verwendete Daten, die eine niedrige Auftrittshäufigkeit
haben, eine längere
Codelänge
haben, so daß es
möglich
ist, eine Verringerung der Effektivität des Codierens von Daten zu
minimieren, die durch eine Erhöhung
der Codelänge
um 1 Bit verursacht wird, wodurch eine Verarbeitungsrate bei der
Datenwiederherstellung außerordentlich
erhöht
werden kann und eine Leistung der Datenwiederherstellungsvorrichtung
spürbar
verbessert werden kann.
-
14 ist
ein Blockdiagramm einer Vorrichtung, die zum Implementieren des
obenerwähnten Datendekomprimierungsverfahrens
dieser Erfindung verwendet wird. Die in 14 gezeigte Datendekomprimierungsvorrichtung
hat ein Codebaumhaltemittel 401, ein Kontextbaumhaltemittel 402,
ein Codebaumbestimmungsmittel 403, ein Decodiermittel 404,
ein Kontextänderungsmittel 405 und
ein Codeaktualisierungsmittel 406, die jenen von 12 ähnlich sind.
-
Bezugszeichen 409 bezeichnet
ein Verzweigungspositionshaltemittel. Das Verzweigungspositionshaltemittel 409 hält eine
Position eines Blattes, das in den Codebaum neu eingetragen worden
ist.
-
Bezugszeichen 410 bezeichnet
ein Codeeintragmittel. Das Codeeintragmittel 410 verzweigt
ein Blatt an einer Position, die in dem Verzweigungspositionshaltemittel 409 gehalten
wird, nachdem ein Escape-Code codiert worden ist, um neue Daten
darin einzutragen.
-
Bezugszeichen 414 bezeichnet
ein Kontextbaumeintragmittel. Das Kontextbaumeintragmittel 414 trägt die Daten,
die durch das Codeeintragmittel eingetragen worden sind, in den
Kontextbaum ein, der in dem Kontextbaumhaltemittel 402 gehalten wird.
-
In der obigen Datendekomprimierungsvorrichtung
hält das
Codebaumhaltemittel 401 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten,
daß keine
Daten eingetragen sind, hält
das Kontextbaumhaltemittel 402 einen Codebaum, in dem eine
Kombination aus decodierten Daten und einem Kontext gespeichert
ist, und bestimmt das Codebaumbestimmungsmittel 403 bestimmt
einen Codebaum von den Daten, die bis unmittelbar zuvor decodiert
worden sind.
-
Das Decodiermittel 404 decodiert
einen Code durch Scannen eines Weges von einer Wurzel, die ein oberes
Ende des Codebaums darstellt, zu einem Blatt, das ein Datenspeicherpunkt
ist, gemäß dem Code,
das Kontextänderungsmittel 405 ändert den
Kontext, falls das erreichte Blatt ein Escape-Code ist, das Codeaktualisierungsmittel 406 tauscht Blätter der
decodierten Daten und des Escape-Codes gegen andere Blätter oder
einen internen Knoten aus, der ein Gabelungspunkt ist, und das Verzweigungspositionshaltemittel 409 hält eine
Position eines Blattes, das in den Codebaum neu eingetragen worden
ist.
-
Ferner verzweigt das Codeeintragmittel 410 ein
Blatt an einer Position, die in dem Verzweigungspositionshaltemittel 409 gehalten
wird, nachdem der Escape-Code codiert worden ist, um die Daten darin neu
einzutragen, und das Kontextbaumeintragmittel 408 trägt die Daten,
die durch das Codeeintragmittel 410 eingetragen worden
sind, in den Kontextbaum ein, der durch das Kontextbaumhaltemittel 402 gehalten
wird.
-
Gemäß der obigen Datendekomprimierungsvorrichtung
dieser Erfindung wird der Neueintrag von Daten an einem Blatt ausgeführt, in
das Daten zuletzt eingetragen worden sind, und die in dem Blatt
gespeicherten Daten, die zuletzt eingetragen worden sind, können Daten
approximiert werden, die eine relativ lange Codelänge haben.
Somit ist es möglich, eine
Verringerung der Effektivität
des Codierens auf Grund einer Vergrößerung einer Codelänge von
selten verwendeten Daten um 1 Bit zu minimieren, so daß eine Verarbeitungsrate
bei der Datendekomprimierung außerordentlich
erhöht
werden kann und ferner eine Leistung der Datenwiederherstellungsvorrichtung
spürbar
verbessert werden kann.
-
(b) Beschreibung der ersten
Ausführungsform
der Erfindung
-
15 ist
ein Blockdiagramm einer Datenkomprimierungsvorrichtung und einer
Datendekomprimierungsvorrichtung gemäß einer ersten Ausführungsform
dieser Erfindung. In 15 bezeichnet Bezugszeichen 1 die
Datenkomprimierungsvorrichtung, die ein eingegebenes Zeichen gemäß einem Verlauf
seines Auftretens in der Vergangenheit codiert, um es zu komprimieren,
bezeichnet 2 die Datendekomprimierungsvorrichtung, die
das Zeichen dekomprimiert, das in der Datenkomprimierungsvorrichtung 1 codiert
worden ist.
-
Die Datenkomprimierungsvorrichtung
führt einen
Kontextsammelschritt 11 aus, um Kontexte von eingegebenen
Zeichenkettendaten zu sammeln, um einen Kontextbaum zu erzeugen,
und einen Splay-Codierschritt 12, um einen Codebaum bei
einer Splay-Operation gemäß den Zeichenketten
der Eingangs daten, die bei dem Kontextsammelschritt 11 erhalten
wurden, zu erzeugen und zu aktualisieren.
-
Andererseits führt die Datendekomprimierungsvorrichtung 2 einen
Splay-Codierschritt 21 aus, um einen Codebaum bei der Splay-Operation
gemäß den Zeichenketten
der dekomprimierten Daten zu erzeugen und zu aktualisieren, die
in der Datenkomprimierungsvorrichtung 1 codiert worden
sind, und einen Kontextsammelschritt 22, um Zeichenketten als dekomprimierte
Daten zu sammeln.
-
Im folgenden wird die Datenkomprimierungsvorrichtung
als Codierer und die Datendekomprimierungsvorrichtung als Decodierer
bezeichnet.
-
(1) Beschreibung des Codierers
-
16(a) und 16(b) zeigen ein Beispiel
für einen
Kontextbaum, der bei dem Kontextsammelschritt 11 erzeugt
wird. 16(a) zeigt ein
Beispiel, bei dem Zeichenketten in einem Speicher in Form einer
Liste gespeichert werden, um den Kontextbaum innerhalb eines kurzen
Zeitraumes bei einem Hashing-Verfahren zu durchsuchen. 16(b) zeigt ein Wörterbuch
(eine Liste) in Baumstruktur, worin die Zeichenketten wie in einer
Elternbeziehung gespeichert werden.
-
Die Adresse, die in 16(a) gezeigt ist, wird in Hexadezimaldarstellung
ausgedrückt.
Bei dem in 16(a) gezeigten
Beispiel beträgt
die maximale Größe des Kontextbaums
4K Knoten (4 KW).
-
Falls somit alle Zeichen im voraus
eingetragen werden, ist eine Position eines Bruder-Knotens in der
ersten Ebene, die mit der Wurzel verbindet, zuvor bekannt, so daß ein direkter
Zugriff ohne Bearbeitung der Liste bei der Suche möglich ist.
-
In der zweiten Ebene und darunter
sind Adressen von Kind-Knoten und rechten Bruder-Knoten gespeichert.
Bei einer Suche wird auf eine Zeichenkette zugegriffen, indem die
Liste bearbeitet wird, während
gespeicherte Zeichen in Form von einer Liste kollationiert werden,
bis die Zeichenkette mit den gespeicherten Zeichen koinzidiert.
-
Wenn der Kontextbaum initialisiert
wird, werden die Adressen auf bis zu 100 gesetzt. Zu dieser Zeit
wird der Dateiend-Code (engl.: End of File code) (EOF) in eine Adresse 100 in
der ersten Ebene eingetragen, und ein Speicher unter einer Adresse 101 dient
für einen
neuen Eintrag.
-
17 zeigt
ein Beispiel für
einen Codebaum, der bei dem obenerwähnten Splay-Codierschritt 12 erzeugt
wird.
-
Der Codebaum wird bei der Initialisierung, wie
in 17 gezeigt, im wesentlichen
auf dieselbe Weise wie bei der Splay-Tree-Codierung eingerichtet.
-
Falls die maximale Größe des Codebaums bis
zu 4K Knoten (4 KW) entsprechend 16(b) beträgt, werden
die Knoten in dem Codebaum in zwei Typen klassifiziert, nämlich in
einen inneren Knoten (mit einem Kind-Knoten) und einen äußeren Knoten (ein
Ende von jedem Code ohne Blatt oder Kind-Knoten).
-
Bei der Splay-Codierung werden drei
Arrays verwendet, das heißt,
ein oberes, ein linkes und ein rechtes, um auf den Codebaum zuzugreifen,
wie in 18 gezeigt.
-
In dem oberen Array wird eine Adresse
von jedem Knoten bis zu seinem Eltern-Knoten gespeichert. In dem
linken Array wird eine Adresse von jedem Knoten bis zu seinem linken
Kind-Knoten gespeichert. In dem rechten Array werden Adressen von
jedem Knoten bis zu dem rechten Kind-Knoten gespeichert.
-
In dem oberen Array werden innere
Knoten in den führenden
4 KW [Adresse (hexadezimal) 000-FFF] gespeichert, und äußere Knoten
werden in den übrigen
4 KW [Adresse (hexadezimal) 1000-1FFF] gespeichert.
-
Auf die obige Art ist es möglich, einen
Code für
jeden Knoten in dem Kontextbaum mit einer Adresse des Codebaums
in Entsprechung zu bringen; ein Knotenzeiger (Zahl) eines Kontextbaums
+ 4K.
-
Übrigens
hat das obere Array eine Breite von 13 Bits, und die linken und
rechten Arrays haben jeweils eine Breite von 12 Bits.
-
Unter Bezugnahme auf 19(a) und 19(b) wird
als nächstes
die Basisoperation des Codebaums, der die obige Struktur hat, zu
der Zeit der Aktualisierung beschrieben.
-
19(a) zeigt
eine Basisoperation des Splay-Codes zu der Zeit der Aktualisierung.
Wenn auf ein Zeichen A zugegriffen wird, wie in 19(a) gezeigt, wird ein Knoten A gegen
einen Knoten C an einem Zweig ausgetauscht, der entgegengesetzt
zu und zwei Stufen über
einem Zweig angeordnet ist, an dem der Knoten A angebracht ist.
-
Falls auf ein Zeichen C von den Zeichen
A bis E zugegriffen wird, wird der Codebaum zum Beispiel so umgeformt,
wie es in 19(b) gezeigt
ist.
-
Die obenerwähnte Basisoperation wird nämlich zweimal
wiederholt, um den Codebaum zu aktualisieren.
-
Die Basisoperation beim zweiten Mal
dient zum Aktualisieren einer Länge
des Eltern-Knotens von dem Knoten, der beim ersten Mal aktualisiert worden
ist.
-
Falls eine Tiefe des Codebaums tiefer
wird, gestattet es die Wiederholung der obigen Basisoperation, wie
oben erwähnt,
einen Abstand von der Wurzel bis zu dem Knoten C, auf den zugegriffen
wird (Code 0110), auf die Hälfte
zu reduzieren (Code 10). Diese dynamische Rekombination des Codebaums von
der Wurzel bis zu dem Knoten, auf den zugegriffen wird, gestattet
es, daß die
Codetabelle an Eingangsdaten anpaßbar ist.
-
Mit anderen Worten, die Codeaktualisierung der
Splay-Codes ist
wie die sogenannte Move-to-Front-Operation in der linearen Liste,
die in einem Binärbaum
ausgeführt
wird.
-
Unter Bezugnahme auf die Schritte
E1 bis E31 in einem Flußdiagramm,
das in 20 gezeigt ist,
werden als nächstes
ein Prozeß zum
Erzeugen eines Kontextbaums bei dem Kontextsammelschritt 11 und
ein Prozeß zum
Erzeugen und Aktualisieren des Codebaums bei dem Splay-Codierschritt 12,
wie oben erwähnt,
eingehender beschrieben. Hierbei wird ein Eingangszeichen als K
bezeichnet (K ist ein beliebiges Zeichen), und ein Zeichen, das
unmittelbar vor der Eingabe des Zeichens K eingegeben wurde, wird
als P bezeichnet (P ist ein beliebiges Zeichen).
-
Ein Kontextbaum, ein Codebaum und
das unmittelbar vorausgehende Zeichen P werden initialisiert (Schritt
E1).
-
Es wird eine Prüfung diesbezüglich ausgeführt, ob
alle Zeichen, die eingegeben worden sind, codiert sind oder nicht
(Schritt E2). Falls irgendein Eingangszeichen uncodiert verblieben
ist, wird eine Länge
L einer Zeichenkette auf Null gesetzt (Schritt E3), und das Zeichen
K wird eingegeben (Schritt E4).
-
Dann wird eine Prüfung diesbezüglich ausgeführt, ob
das unmittelbar vorausgehende Zeichen P in dem Kontextbaum unter
sich einen Kind-Knoten hat (Schritt E5). Falls das Zeichen P keinen Kind-Knoten
hat, wird ein Code des Grades 0 des Eingangszeichens K ausgegeben
(Schritt E6), und das Eingangszeichen K wird in den Kontextbaum
als Kind-Knoten unter dem unmittelbar vorausgehenden Zeichen P eingetragen
(Schritt E7).
-
Auf der Seite des Codebaums wird
ein Knoten, der zum Eintragen des Zeichens K und eines Escape-Codes
verwendet wird, unter dem unmittelbar vorausgehenden Zeichen P erzeugt,
und dann wird das Zeichen K eingetragen (Schritt E8).
-
Ein Beispiel für einen Algorithmus zum Erzeugen
eines Knotens ist in 30 gezeigt.
-
Das unmittelbar vorausgehende Zeichen wird
in das Eingangszeichen K geändert
(Schritt E16). Eine Prüfung
diesbezüglich
wird ausgeführt,
ob eine Länge
L' der unmittelbar
vorausgehenden Zeichenkette einer maximalen Länge Lmax der Zeichenkette gleich
ist oder nicht (Schritt E24).
-
Falls die Länge L' der unmittelbar vorausgehenden Zeichenkette
der maximalen Zeichenkettenlänge
Lmax nicht gleich ist, wird eine Prüfung diesbezüglich vorgenommen,
ob die unmittelbar vorausgehende Zeichenkette mit dem Code des Grades
1 codiert und ausgegeben worden ist oder nicht (Schritt E25).
-
Falls die unmittelbar vorausgehende
Zeichenkette nicht mit dem Primärcode
codiert worden ist, wird eine Länge
L einer fokussierten Zeichenkette auf die Länge L' der unmittelbar vorausgehenden Zeichenkette
verschoben (Schritt E28). Es folgt eine Prüfung in bezug darauf, ob das
Zeichen K codiert worden ist oder nicht (Schritt E9). Falls das
Zeichen K codiert worden ist, wird der obige Prozeß ab Schritt E2
wiederholt (JA-Route bei Schritt E9). Falls das Zeichen K nicht
codiert worden ist, wird der obige Prozeß ab Schritt E3 wiederholt
(NEIN-Route bei Schritt E9).
-
Falls ein Zeichen, das in dem Kind-Knoten gespeichert
ist, mit dem Eingangszeichen K bei dem obenerwähnten Schritt E10 koinzidiert,
wird eine Länge
der Zeichenkette um 1 vergrößert (Schritt E17).
Es wird eine Prüfung
diesbezüglich
ausgeführt, ob
eine Länge
dieser Zeichenkette der maximalen Codelänge Lmax, die im voraus festgelegt
wurde, gleich ist oder nicht (Schritt E18).
-
Falls sie nicht gleich ist, wird
eine Prüfung diesbezüglich ausgeführt, ob
alle Zeichen der Eingangsdaten codiert worden sind oder nicht (Schritt E19).
Falls irgendein Zeichen verbleibt, das nicht codiert worden ist,
werden die Eingangszeichen bis jetzt zu dem unmittelbar vorausgehenden
Zeichen P verschoben (Schritt E20), und es wird noch ein Zeichen
K eingegeben (Schritt E21). Die Prozedur kehrt dann zu dem Prozeß bei dem
obenerwähnten
Schritt E10 zurück,
wo eine Prüfung
diesbezüglich
ausgeführt
wird, ob ein Zeichen, das in dem Kind-Knoten gespeichert ist, mit
dem Zeichen K koinzidiert oder nicht.
-
Falls es nicht koinzidiert, wird
eine Prüfung diesbezüglich ausgeführt, ob
eine Länge
der Zeichenkette 0 ist oder nicht (Schritt E11). Falls die Länge L gleich
oder größer als
1 ist, mit anderen Worten, das unmittelbar vorausgehende Zeichen
P hat einen Kind-Knoten, aber das entsprechende Zeichen K ist noch
nicht hinzugefügt,
wird ein Escape-Code unter dem unmittelbar vorausgehenden Zeichen
P ausgegeben und ein Code des Grades 0 des Zeichens K ausgegeben
(Schritt E12).
-
Ferner wird das Zeichen K als Bruder-Knoten des
Kind-Knotens unter
dem unmittelbar vorausgehenden Zeichen P in dem Codebaum eingetragen (Schritt
E13). Der Escape-Code unter dem unmittelbar vorausgehenden Zeichen
P in dem Codebaum wird in einen Escape-Code und einen Code des Zeichens
K geteilt, und der Code des Zeichens K wird hinzugefügt (Schritt
E14). Codelängen
des Escape-Codes und des Codes des Grades 0 K in dem Codebaum werden
als Splay-Codes aktualisiert (Schritt E15).
-
Es ist möglich, wie oben erwähnt, eine
verlängerte
Zeichenkette einer codierten Zeichenkette einzutragen, bis die verlängerte Zeichenkette
eine vorbestimmte maximale Zeichenkettenlänge erreicht.
-
Danach wird über die obenerwähnten Schritte
E16 und E24 wieder eine Prüfung
diesbezüglich ausgeführt, ob
die unmit telbar vorausgehende Zeichenkette als Code des Grades 1
ausgegeben ist oder nicht (Schritt E25).
-
Genauer gesagt, falls die unmittelbar
vorausgehende Zeichenkette als Primärcode des Grades 1 codiert
und ausgegeben ist, wird eine verlängerte Zeichenkette, die die
unmittelbar vorausgehende Zeichenkette ist, zu der ein führendes
Zeichen des verlängerten
Zeichens (der Kette) hinzugefügt
wurde, in den Kontextbaum eingetragen (Schritt E26). Ein Code der
verlängerten
Zeichenkette, die codiert worden ist, wird in den Codebaum eingetragen (Schritt
E27). Dann wird der Prozeß ab
Schritt E28 wiederholt.
-
Das obige Eintragen des Codes wird
so vorgenommen, um den Code des unmittelbar vorausgehenden Zeichens
zu verzweigen und den Code des Grades 1 der Zeichenkette hinzuzufügen, zu
der das Zeichen K hinzugefügt
wurde. Beim Verzweigen der Zeichenkette wird der Escape-Code verzweigt,
da er als Code der codierten Zeichenkette betrachtet wird, um einen
Code der ursprünglichen
Zeichenkette und einen Code der Zeichenkette zu erzeugen, zu der das
Zeichen K hinzugefügt
wurde.
-
Das unmittelbar vorausgehende Zeichen, das
codiert worden ist, wird, wie oben erwähnt, zuerst als eine in das
Wörterbuch
eingetragene Zeichenkette eingetragen, und dann wird eine Zeichenkette
codiert, die diesem unmittelbar vorausgehenden Zeichen folgt.
-
Falls die Länge L der Zeichenkette der
maximalen Codelänge
Lmax, die im voraus festgelegt wurde, bei dem obigen Schritt E18
gleich ist, oder falls die Länge
L der Zeichenkette bei Schritt E11 gleich 0 ist, wird ein Code des
Grades 1 ausgegeben, der einer Referenznummer eines Zeichens (einer Kette)
des Kontextbaums entspricht (Schritt E22). Eine Codelänge des
Codes des Grades 1, der von dem Codebaum ausgegeben wurde, wird
als Splay-Code aktualisiert (Schritt E23), und danach wird der Prozeß ab dem
obenerwähnten
Schritt E24 ausgeführt.
-
Der obige Regelschleifenprozeß dient
zum Verlängern
der Anzahl von eingetragenen Zeichen (einer Länge einer Zeichenkette), falls
eine Kombination aus dem unmittelbar vorausgehenden Zeichen P und
dem Eingangszeichen K in den Kontextbaum eingetragen worden ist,
um sie durch eine Einheit einer Zeichenkette einzutragen.
-
Falls alle Eingangszeichen bei dem
obenerwähnten
Schritt E2 codiert worden sind, wird eine Prüfung diesbezüglich vorgenommen,
ob das unmittelbar vorausgehende Zeichen P in dem Kontextbaum unter
sich einen Kind-Knoten hat oder nicht (Schritt E29). Falls das unmittelbar
vorausgehende Zeichen P einen Kind-Knoten hat, wird ein Escape-Code
unter dem unmittelbar vorausgehenden Zeichen P ausgegeben (NEIN-Route von Schritt
E29 zu Schritt E30). Dann wird ein Code des Grades 0 von einem EOF,
der Dateiende bedeutet, ausgegeben (Schritt E31), und danach wird
der Prozeß beendet (NEIN-Route von Schritt
E29 zu Schritt E31).
-
Falls das unmittelbar vorausgehende
Zeichen P keinen Kind-Knoten hat, wird ein Code des Grades 1 von
EOF ausgegeben, und der Prozeß wird beendet.
-
Bei dem Datenkomprimierungsverfahren zum
Codieren einer Zeichenkette als Eingangsdaten gemäß einem
Verlauf ihres Auftretens in der Vergangenheit, um diese zu komprimieren,
werden Zeichenketten von Eingangsdaten jeweilige Nummern verliehen
und in das Wörterbuch
eingetragen, während
die Splay-Codes entsprechend jeder der Zeichenketten bei dem obigen
Prozeß codiert
und aktualisiert werden.
-
Unter Bezugnahme auf 21 bis 28 wird das
Aktualisieren und Erzeugen des Kontextbaums und des Codebaums als
nächstes
eingehender beschrieben, wobei das obige Eingangszeichen K als Beispiel
auf irgendeinen der Buchstaben a, b und c begrenzt ist und Zeichen "abc, abc, ab und
b" sukzessive eingegeben
werden.
-
Den Zeichen a, b und c und einem
Endcode EOF, der ausgegeben wird, nachdem alle Eingangsdaten codiert
worden sind, werden im voraus jeweilige Nummern verliehen, wie in 21(a) und 21(b) gezeigt, und als a1,
b2, c3, EOF4 sowohl in den Kontextbaum als auch in den
Codebaum eingetragen.
-
Durch das Initialisieren des Kontextbaums wird
jedes der Zeichen a, b und c, die an erster Stelle eingetragen worden
sind, zu einem unmittelbar vorausgehenden Zeichen, wie oben erwähnt. Falls
kein Kontext vorhanden ist, der dem unmittelbar vorausgehenden Zeichen
folgt, dient das unmittelbar vorausgehende Zeichen auch als unabhängige einzige Referenznummer.
Bei der folgenden Beschreibung wird angenommen, daß das Zeichen
c ein erstes unmittelbar vorausgehendes Zeichen ist.
-
Der Codebaum ist, wie in 21(b) gezeigt, ein binärer Baum,
bei dem ein Code "0" dem eingetragenen
Zeichen zugeordnet wird, wenn ein Weg von der Wurzel zu einem Knoten
an dem Knoten nach links unten verläuft, während "1" dem
eingetragenen Zeichen zugeordnet wird, wenn der Weg von der Wurzel
zu einem Knoten an dem Knoten nach rechts unten verläuft. Zu
der Zeit des Codierens wird ein Weg der Referenznummer eines entsprechenden Zeichens
von dem Knoten zu der Wurzel gestapelt, wird der Weg umgekehrt und
wird ein Code "0" oder "1" in Abhängigkeit davon zugeordnet,
ob der Weg nach links oder nach rechts abfällt, wodurch ein Codewort erhalten
werden kann, das der Referenznummer von jenem Zeichen entspricht.
-
Die Codes des Grades 0 der Zeichen
a1, b2, c3, EOF4 lauten "00, 01, 10 bzw. 11".
-
Wenn eine Zeichenkette "abc" in einem in 21(a) und 21(b) gezeigten Zustand eingegeben wird,
wird ein neuer Knoten unter "c" (c3)
in dem Kontextbaum erzeugt, da angenommen wird, daß das Zeichen
c (c3), das eingetragen worden ist, ein
unmittelbar vorausgehendes Zeichen ist, und das erste Zeichen "a5" der Zeichenkette "abc" und ein Escape-Code (ESC6), der keinen Eintrag des Zeichens "a5" darstellt, werden
eingetragen.
-
Da auf einer Seite des Codebaums "a" in den Codebaum eingetragen worden
ist, wird ein Knoten, bei dem "a" eingetragen worden
ist, wie in 22(b) gezeigt,
gegen einen Knoten höheren
Grades von "c" ausgetauscht, das
das unmittelbar vorausgehende Zeichen ist, und werden "a" und ein Escape-Code (ESC) eingetragen,
wobei dieses "c" als neue Wurzel angesehen
wird (Codierung des Grades 1).
-
Der obige Prozeß wird an den Zeichen "b" und "c" in
der Zeichenkette "abc" ausgeführt. Dadurch
werden der Kontextbaum und der Codebaum, wenn "b" eingegeben
wird, so wie in 23(a) bzw. 23 (b) gezeigt. Wenn als
nächstes "c" eingegeben wird, werden der Kontextbaum
und der Codebaum jeweilig so wie in 24(a) und 24(b) gezeigt.
-
Dieser Prozeß entspricht dem obenerwähnten Regelschleifenprozeß, der über die
JA-Route bei Schritt E5, die NEIN-Route bei Schritt E10 und die NEIN-Route
bei Schritt E25 ausgeführt
wird, die in 20 gezeigt
sind.
-
Falls kein Kind-Knoten unter einem
unmittelbar vorausgehenden Zeichen in dem Kontextbaum existiert,
werden nämlich
Knoten, die verwendet werden, um ein Eingangszeichen und einen Escape-Code
in ihnen einzutragen, unter dem unmittelbar vorausgehenden Zeichen
neu erzeugt, um sie dort einzutragen.
-
Falls dem Codebaum dasselbe Zeichen
wie ein Zeichen, das in der Vergangenheit eingetragen worden ist,
wieder eingegeben wird, wird ein Knoten, in den das Zeichen in der
Vergangenheit eingetragen worden ist, gegen einen Knoten höheren Grades
eines Knotens ausgetauscht, in den ein unmittelbar vorausgehendes
Zeichen des eingegebenen Zeichens eingetragen ist, wird der Knoten,
in den das Zeichen in der Vergangenheit eingetragen worden ist,
zu dem höheren
Grad verschoben, wodurch ein Abstand von der Wurzel zu dem Knoten
von jenem Zeichen auf die Hälfte
verringert wird, um eine Codelänge
zu verkürzen.
-
Wenn eine Zeichenkette "abc" sukzessive eingegeben
wird, wird versucht, nur ein Zeichen "a" in
der Zeichenkette "abc" unter "c9" einzutragen, welches
das letzte Zeichen "c" in der Zeichenkette "abc" ist, die an erster
Stelle eingegeben worden ist, und als unmittelbar vorausgehendes
Zeichen betrachtet. Jedoch ist "a5" schon
unter "c3" in
dem Codebaum eingetragen worden, wie in 24(a) gezeigt, so daß ein einzutragendes Zeichen
von einem Zeichen "a" auf zwei Zeichen "ab" verlängert wird
und "b11" unter "a5" eingetragen wird,
wie in 25(a) gezeigt.
-
Zu dieser Zeit wird ein Escape-Code
(ESC), der unter "c" zusammen mit "a" gespeichert ist, verzweigt, um einen
neuen Knoten zu erzeugen, in den das eingetragene "ab", das durch Verlängern erhalten
wurde, in dem Kontextbaum eingetragen wird.
-
Falls versucht wird, "b" der Zeichenkette "abc" in
den Kontextbaum einzutragen, wird sukzessive ein Zeichen, das einzutragen
ist, von einem Zeichen "b" auf zwei Zeichen "bc" verlängert, und
dann wird "c12" unter "b," eingetragen, wie
in 25(a) gezeigt, da "b11" schon unter "a5" eingetragen worden ist,
wie in 25(a) gezeigt.
-
Zu dieser Zeit wird in dem Codebaum
ein Knoten eines Escape-Codes (ESC), der unter "a" zusammen
mit "b" gespeichert ist,
verzweigt, um einen neuen Knoten zu erzeugen, und das "bc", das durch Verlängern um
ein Zeichen in den Kon textbaum eingetragen wurde, wird darin eingetragen,
wie in 26(b) gezeigt.
-
Falls das letzte Zeichen "c" der nächsten Zeichenkette "abc" eingetragen wird,
wird der obige Prozeß ausgeführt. Resultierende
Zustände
des Kontextbaums und des Codebaums sind in 27(a) bzw. 27 (b) gezeigt (bis zu diesem Punkt
sind "abc abc" eingegeben worden).
-
Falls ferner eine Zeichenkette "ab" in den Kontextbaum
eingetragen wird, wird versucht, ein Zeichen "a" unter
einem unmittelbar vorausgehenden Zeichen "c12" einzutragen. Jedoch
ist unter "c9" schon "a13" gespeichert, wie
oben angegeben, so daß die
Anzahl von einzutragenden Zeichen um eins vergrößert wird, um "ab" zu ergeben, und
dann wird versucht, "b" unter "a13" einzutragen.
-
Jedoch ist schon "b11" unter "a5" gespeichert, wie
in 27(a) gezeigt, so
daß die
Anzahl von einzutragenden Zeichen um eins vergrößert wird, um "abb" zu erhalten, und
dann wird "b" unter "b11" eingetragen.
-
Zu dieser Zeit wird in dem Codebaum
ein Knoten, in dem "ab" gespeichert ist,
verzweigt, um in ihm "abb" einzutragen.
-
Der obige Prozeß entspricht dem obenerwähnten Regelschleifenprozeß, der über die
JA-Route bei Schritt E5, die JA-Route bei Schritt E10 und die NEIN-Route
bei Schritt E25 ausgeführt
wird.
-
Falls nämlich dann, wenn eine Zeichenkette eingegeben
wird, schon eine Kombination aus einem unmittelbar vorausgehenden
Zeichen und einem Zeichen in der Zeichenkette in dem Kontextbaum
gespeichert worden ist, wird die Anzahl von einzutragenden Zeichen
um eins vergrößert, und
es wird ein Zeichen eingetragen, das nicht eingetragen worden ist.
-
Zu dieser Zeit wird in dem Codebaum
ein Knoten eines Escape-Codes (ESC), der zusammen mit dem unmittelbar
voraus gehenden Zeichen gespeichert worden ist, verzweigt, um einen
neuen Knoten zu erzeugen, und diese Zeichenkette wird in ihm eingetragen.
-
Eine Eingabe der Zeichen "abc abc ab b", wie oben erwähnt, ist
vollendet, und ein Code, der jedem der Zeichen zugeordnet wird,
ist so wie in 29 gezeigt.
-
Die Zeichen "abc",
die an erster Stelle eingegeben worden sind, werden Zeichen für Zeichen
codiert, wie in 29 gezeigt.
Dementsprechende Codes lauten "00", "01" bzw. "10" und umfassen jeweils zwei
Bits.
-
Codewörter, die einer Zeichenkette "abc" entsprechen, die
als zweites eingegeben worden ist, lauten "0", "0" bzw. "0" und
umfassen jeweils ein Bit, auf Grund von Beziehungen zu jeweiligen
unmittelbar vorausgehenden Zeichen.
-
Ferner wird ein Code einer Zeichenkette
aus den zwei Zeichen "ab" zugeordnet, die
als nächstes eingegeben
worden ist. Eine Zeichenkette, die aus zwei Zeichen gebildet ist,
wird durch ein Codewort aus nur zwei Bits ausgedrückt, wie
in 30 gezeigt.
-
Ein Zeichen "b",
das zuletzt eingegeben worden ist, stellt einen Fall dar, wo kein
Zeichen vorhanden ist, das einer Verbindung der existierenden unmittelbar
vorausgehenden Zeichen entspricht. Das Zeichen "b" wird
somit durch eine Kombination aus drei Bits von einem ESC und einem
Codewort von einem einzigen Zeichen ausgedrückt.
-
Gemäß dem Datenkomprimierungsverfahren
dieser Erfindung wird ein Zeichen (Kette), das zu komprimieren ist,
mit einer ihm verliehenen Nummer in den Kontextbaum in einer Baumstruktur
eingetragen und wird ein Codebaum entsprechend dem Kontextbaum erzeugt
und aktualisiert, während
eine Splay-Codierung
ausgeführt
wird. Deshalb ist es möglich,
einen Prozeß aus
zwei Stufen auszuführen, das
heißt,
eine Stufe zum Konstruieren eines Wahrscheinlichkeitsmodells, um
eine Häufigkeit
des Auftretens eines auftretenden Zeichens zu bestimmen, und eine
Stufe, um jedem Zeichen einen Code zuzuordnen, so daß eine Verarbeitungsrate
bei der Datenkomprimierung außerordentlich
erhöht
werden kann.
-
Das obige Wahrscheinlichkeitsmodell
wird konstruiert, indem immer dann, wenn ein Zeichen eingegeben
wird, Knoten des Codebaums erzeugt und aktualisiert werden (Splay-Prozeß). Auf
diese Weise kann eine Last eines enormen Volumens der arithmetischen
Berechnung, um ein Wahrscheinlichkeitsmodell zu rekonstruieren,
das bei jeder Zeicheneingabe schon konstruiert worden ist, reduziert
werden, wodurch eine Verarbeitungsrate der Datenkomprimierung erhöht wird.
-
Bei dem Datenkomprimierungsverfahren dieser
Erfindung wird immer dann, wenn dasselbe Zeichen wie ein Zeichen
auftritt, das in der Vergangenheit komprimiert (codiert) worden
ist, ein Knoten des Codebaums desselben Zeichens, das in der Vergangenheit
eingetragen worden ist, gegen einen Knoten eines höheren Grades
(bei dem Splay-Prozeß)
ausgetauscht, um eine Länge
des Codes auf die Hälfte
zu verringern. Deshalb ist es möglich,
einen Code jenes Zeichens (Kette) durch eine geringere Anzahl von
Bits auszudrücken,
wenn die Häufigkeit des
Auftretens desselben Zeichens (Kette) zunimmt, so daß ein Effekt
der Komprimierung außerordentlich verbessert
werden kann.
-
Bei dem Datenkomprimierungsverfahren dieser
Erfindung wird ein Zeichen nicht Zeichen für Zeichen codiert, wie in dem
Fall, wenn die obenerwähnte
Zeichenkette "ab" codiert wird, sondern
das Zeichen wird als Zeichenkette in einer Einheit von einer Vielzahl
von Zeichen codiert, wodurch eine Verarbeitungsrate bei der Codierung
mit variabler Länge erhöht wird.
Gemäß dieser
Erfindung ist eine zu codierende Einheit eine Zeichenkette, so daß eine Informationsquelle expandiert
werden kann und eine Codiereffektivität bei der Splay-Codierung außerordentlich
verbessert werden kann.
-
(2) Beschreibung des Decodierers
-
Als nächstes folgt eine Beschreibung
eines Prozesses zum Dekomprimieren von Daten bei dem Kontextsammelschritt 21 und
dem Splay-Codierschritt 22 in der obenerwähnten Datendekomprimierungsvorrichtung 2,
die in 17 gezeigt ist,
der codierte (komprimierte) Daten als Eingangscodes eingegeben werden,
unter Bezugnahme auf die Schritte D1 bis D24 in einem Flußdiagramm
von 31.
-
Diese Datendekomprimierung ist im
wesentlichen eine Umkehrung des Codierprozesses, der hinsichtlich
des Codierers beschrieben worden ist.
-
Genauer gesagt, ein Kontextbaum und
ein Codebaum werden initialisiert, und ein unmittelbar vorausgehendes
Zeichen P wird initialisiert, um auf "0" gesetzt
zu werden (Schritt D1). Eine Länge
der Kette L wird auf "0" gesetzt (Schritt
D2). Es folgt eine Prüfung
diesbezüglich,
ob ein Kind-Knoten unter dem unmittelbar vorausgehenden Zeichen
in dem Kontextbaum vorhanden ist (Schritt D3).
-
Falls kein Kind-Knoten vorhanden
ist, wird ein Zeichen "K" decodiert, wobei
ein Eingangscode ein Null-Code ist (NEIN-Route von Schritt D3 zu Schritt
D4). Es folgt eine Prüfung
diesbezüglich,
ob das codierte Zeichen "K" ein EOF-Code ist oder nicht (Schritt
D5).
-
Falls das codierte Zeichen "K" kein EOF-Code ist, schreitet die Prozedur
längs der
NEIN-Route voran, wird das codierte Zeichen "K" ausgegeben (Schritt
D6) und wird das Zeichen in den Kontextbaum eingetragen (Schritt
D7). Der Schritt D7 wird genauso wie der Schritt E7 bei dem Codierprozeß ausgeführt, der
unter Bezugnahme auf 17 oben beschrieben
worden ist.
-
Genauso wie bei Schritt E8 bei dem
Codierprozeß werden
Knoten für
das Zeichen "K" und einen Escape-Code
unter dem unmittelbar vorausgehenden Zeichen "P" in
dem Codebaum erzeugt (Schritt D8), und das unmittelbar vorausgehende
Zeichen "P" wird für das Zeichen "K" eingetragen (Schritt D17).
-
Die folgenden Schritte D20 bis D23
werden genauso wie die Schritte E20 bis E23 des Codierprozesses
ausgeführt.
Eine Länge
L' der unmittelbar
vorausgehenden Zeichenkette wird durch eine Länge L einer fokussierten Zeichenkette
ersetzt (Schritt D24), und die Prozedur kehrt zu dem obigen Schritt
D2 zurück.
-
Falls bei Schritt D3 ein Kind-Knoten
unter dem unmittelbar vorausgehenden Zeichen "P" in
dem Kontextbaum vorhanden ist, wird ein eingegebener Code codiert,
wobei er als Code des Grades 1 von dem Codebaum angesehen wird,
um eine Referenznummer eines Zeichens (Kette) in dem Kontextbaum zu
erhalten (JA-Route von Schritt D3 zu Schritt D9).
-
Es folgt eine Prüfung diesbezüglich, ob
die codierte Referenznummer ein Escape-Code ist oder nicht (Schritt
D10). Falls sie kein Escape-Code ist, verläuft die Prozedur über die
NEIN-Route und wird der nächste
Code codiert, da das Eingangszeichen als Code des Grades 0 angesehen
wird, um ein Zeichen "K" zu erhalten (NEIN-Route
von Schritt D10 zu Schritt D11).
-
Genauso wie bei dem obigen Schritt
D5 wird eine Prüfung
diesbezüglich
ausgeführt,
ob das decodierte Zeichen "K" ein EOF-Code ist
oder nicht (Schritt D12). Falls das decodierte Zeichen "K" kein EOF-Code ist, verläuft die
Prozedur über
die NEIN-Route und wird ein Zeichen "K" ausgegeben (Schritt
D13).
-
Genauso wie bei den Schritten E13
bis E15 bei dem Codierprozeß wird
das Zeichen "K" in den Kontextbaum
eingetra gen (Schritt D14). Das Zeichen "K" wird
unter dem unmittelbar vorausgehenden Zeichen "P" hinzugefügt (Schritt
D15). Ein Escape-Code und eine Codelänge des Codes des Grades 0 "K" des Codebaums werden als Splay-Codes
aktualisiert (Schritt D16).
-
Danach wird ein Prozeß ab Schritt
D17 ausgeführt.
-
Ein Splay-Code wird jedem einzelnen
Zeichen zugeordnet, wie oben erwähnt.
Falls ein Splay-Code eines Zeichens, dessen Zeichenkette, die einer
unmittelbar vorausgehenden Zeichenkette folgt, nicht in den Zeichenketten
enthalten ist, die in dem Wörterbuch
gesammelt worden sind, kann der Code aktualisiert werden und kann
das codierte Zeichen im Anschluß an
das obenerwähnte
unmittelbar vorausgehende Zeichen in den Kontextbaum eingetragen
werden.
-
Falls die codierte Referenznummer
bei Schritt D10 ein Escape-Code ist, verläuft die Prozedur über die
JA-Route, um eine Zeichenkette zu dekomprimieren, die der Referenznummer
in dem Kontextbaum entspricht, um sie auszugeben (Schritt D18).
Der letzte Buchstabe des Zeichens (der Kette) wird durch das unmittelbar
vorausgehende Zeichen "P" ersetzt (Schritt
D19).
-
Danach wird ein Prozeß ab dem
obigen Schritt D20 ausgeführt.
-
Das unmittelbar vorausgehende Zeichen, das
decodiert worden ist, kann zuerst in das Wörterbuch als Zeichenkette eingetragen
werden, wie oben erwähnt,
die in das Wörterbuch
einzutragen ist, und die Zeichenkette im Anschluß an das unmittelbar vorausgehende
Zeichen kann decodiert werden.
-
Falls das decodierte Zeichen bei
Schritt D4 oder bei Schritt D12 ein EOF-Code ist, verläuft die Prozedur über die
JA-Route und beendet den Dekomprimierungsprozeß.
-
Zeichenketten von dekomprimierten
Daten werden in dem Kontextbaum gesammelt und mit jeweiligen Nummern
eingetra gen, wie oben erwähnt. Einhergehend
damit wird ein Splay-Code
jeder der decodierten Zeichenketten zugeordnet, und eine Zeichenkette,
die einer Wörterbuchnummer
entspricht, wird mit einem Splay-Code decodiert und aktualisiert. Eine
verlängerte
Zeichenkette einer codierten Zeichenkette wird eingetragen, bis
sie eine vorbestimmte maximale Länge
einer Zeichenkette erreicht, und ein Splay-Code wird eingetragen,
der dieser verlängerten
Zeichenkette entspricht.
-
Das Zeichen "K",
das bei dem Kontextsammelschritt 11 und dem Splay-Codierschritt 12 in
der Datenkomprimierungsvorrichtung 1 komprimiert und codiert
worden ist, wird dekomprimiert, wie oben erwähnt.
-
Bei dem Datendekomprimierungsverfahren gemäß dieser
Erfindung wird ein decodiertes Zeichen (Kette), dem eine Nummer
verliehen wurde, in den Kontextbaum eingetragen, und ein Codebaum wird
konstruiert, der eine Codetabelle ist, die dem Kontextbaum entspricht,
wodurch es möglich
ist, einen Prozeß aus
zwei Stufen auszuführen,
das heißt, eine
Stufe zum Suchen eines Codes, der mit einem codierten Code in der
Codetabelle koinzidiert, und eine Stufe zum Ausgeben eines Zeichens,
das einem koinzidierenden Code entspricht, als decodiertes Zeichen.
Somit ist das Datenwiederherstellungsverfahren dieser Erfindung
effektiv, um eine Verarbeitungsrate bei der Datendekomprimierung
zu erhöhen.
-
Das obige Wahrscheinlichkeitsmodell
wird konstruiert, indem Knoten in dem Codebaum (bei dem Splay-Prozeß) immer
dann, wenn ein Zeichen eingegeben wird, erzeugt und aktualisiert
werden. Auf diese Weise kann eine Last eines enormen Berechnungsvolumens,
um eine Codetabelle zu rekonstruieren, die bei jeder Zeicheneingabe
schon konstruiert worden ist, reduziert werden, wodurch eine Verarbeitungsrate
bei der Datendekomprimierung weiter erhöht werden kann.
-
Bei dem Datendekomprimierungsverfahren dieser
Erfindung wird immer dann, wenn derselbe Code wie ein Code auftritt,
der in der Vergangenheit decodiert worden ist, ein Knoten in dem
Codebaum, in den derselbe Code in der Vergangenheit eingetragen
worden ist, gegen einen Knoten höheren
Grades (bei dem Splay-Prozeß)
ausgetauscht, um eine Codelänge
auf die Hälfte
zu reduzieren. Als Resultat ist es möglich, einen Code mit einer
geringeren Bitanzahl auszudrücken,
wenn derselbe Code häufiger auftritt.
In dem Fall, wenn derselbe Code wiederholt codiert wird, kann eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden.
-
Bei dem Datendekomprimierungsverfahren dieser
Erfindung wird ein Zeichen nicht Zeichen für Zeichen decodiert, sondern
als Zeichenkette in einer Einheit, die eine Vielzahl von Zeichen
umfaßt.
Auf diese Weise kann eine dekomprimierbare Informationsquelle expandiert
werden und eine Effektivität
bei der Datendekomprimierung außerordentlich
verbessert werden.
-
Die Beschreibung erfolgte bei dieser
Ausführungsform
anhand des Beispiels, bei dem eine Zeichenkette im Anschluß an ein
unmittelbar vorausgehendes Zeichen als Kontext gesammelt und codiert und
decodiert wird. Es ist jedoch nicht erforderlich, an dem unmittelbar
vorausgehenden Zeichen festzuhalten, sondern es ist möglich, einen
Kontext zu sammeln, der zwei vorherigen Zeichen folgt, und ihn zu codieren
und zu decodieren.
-
Die Beschreibung erfolgte bei dieser
Ausführungsform
anhand des Beispiels, bei dem die Kontexte dynamisch gesammelt werden
und bei einem Splay-Prozeß codiert
und decodiert werden. Diese Erfindung ist jedoch nicht auf das dynamische
Sammeln der Kontexte begrenzt, sondern es ist auch möglich, statische
Kontexte zu verwenden, die im voraus von repräsen tativen Mustern gesammelt
wurden, und sie bei dem Splay-Prozeß zu codieren
und zu decodieren.
-
Die Beschreibung erfolgte bei dieser
Ausführungsform
anhand des Beispiels, bei dem alle eingegebenen Daten bei einer
Codierung mit variabler Länge
(Splay-Codierung) dynamisch codiert werden. Es ist jedoch möglich, Daten
mit einem beträchtlichen Volumen
zu codieren, dann die Aktualisierungsoperation der Splay-Codierung
zu stoppen und die Daten bei einer statischen Codierung mit variabler
Länge zu codieren.
In dem Fall ist es lediglich erforderlich, solch eine Anordnung
zwischen dem Decodierer und dem Codierer vorzusehen, daß der Decodierer
und der Codierer synchron miteinander arbeiten.
-
Die Beschreibung erfolgte bei dieser
Ausführungsform
anhand des Beispiels, bei dem Daten, die zu komprimieren sind, Zeichen
oder Zeichenketten sind. Das Datenkomprimierungsverfahren und Datendekomprimierungsverfahren
gemäß dieser
Erfindung ist jedoch auf alle Daten wie z. B. Bilddaten, Audiodaten,
etc., anwendbar.
-
(c) Beschreibung der zweiten
Ausführungsform
-
Als nächstes folgt die Beschreibung
einer zweiten Ausführungsform
gemäß dieser
Erfindung.
-
32 ist
ein Blockdiagramm einer Datenkomprimierungsvorrichtung und einer
Datendekomprimierungsvorrichtung, die verwendet werden, um ein Datenkomprimierungsverfahren
und ein Datendekomprimierungsverfahren gemäß einer zweiten Ausführungsform
dieser Erfindung auszuführen.
In 32 codiert eine
Datenkomprimierungsvorrichtung 3 Eingangsdaten gemäß einem
Verlauf des Auftretens der Daten in der Vergangenheit, um sie zu komprimieren.
Eine Datendekomprimierungsvorrichtung 4 decodiert Codes,
die durch die Datenkomprimierungsvorrichtung 3 codiert
worden sind.
-
Im folgenden wird die Datenkomprimierungsvorrichtung 3 als
Codierer bezeichnet, und die Datendekomprimierungsvorrichtung 4 wird
als Decodierer bezeichnet. In der folgenden Beschreibung haben ein
Kontextbaum und ein Codebaum dieselbe Funktion wie jene, die in
der ersten Ausführungsform
beschrieben worden sind.
-
(1) Beschreibung des Codierers
-
33 ist
ein Blockdiagramm, das eine interne Struktur der obigen Datenkomprimierungsvorrichtung 3 zeigt.
Wie in 33 gezeigt,
bezeichnen Bezugszeichen 100A-1 bis 100A-n (n
ist eine natürliche
Zahl) Vordatenhalteeinheiten, bezeichnet 101A eine Kontextverlaufshalteeinheit,
bezeichnet 102A eine Codebaumhalteeinheit, bezeichnet 103A eine Codebaumbestimmungseinheit,
bezeichnet 104A eine Codiereinheit, bezeichnet 105A eine
Codebaumaktualisierungseinheit und bezeichnet 106A eine
Kontextaktualisierungseinheit.
-
Die Vordatenhalteeinheiten (Vordatenhaltemittel) 100A-1~100A-n dienen
zum Halten eines Kontextes, der aus einer Anzahl von n Daten gebildet ist,
die bis unmittelbar vor Eingabe von Daten K (im folgenden gelegentlich
als Symbol K bezeichnet) eingegeben worden sind.
-
Die Kontextverlaufshalteeinheit (ein
Verlaufshaltemittel) 101A hält eine Kombination aus den eingegebenen
Daten K und einem Kontext. Die Codebaumhalteeinheit (ein Codebaumhaltemittel) 102A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind. Die Codebaumbestimmungseinheit (ein Codebaumbestimmungsmittel) 103A bestimmt
einen Codebaum von den Daten bis zur Eingabe der Daten K, die in
den Vordatenhalteeinheiten 100A-1~100A-n gehalten werden.
-
Die Codiereinheit (ein Codeausgabemittel) 104A codiert
die Daten K und gibt die codierten Daten K gemäß einer Gabelung aus, die sich
von einem Knoten erstreckt, der auf einem Weg von einer Wurzel eines
Codebaums (einem oberen Ende des Codebaums), der durch die Codebaumbestimmungseinheit 103A selektiert
wurde, zu einem Blatt desselben liegt, in dem die Daten K gespeichert
sind.
-
Die Codebaumaktualisierungseinheit
(ein Codebaumaktualisierungsmittel) 105A tauscht ein codiertes
Blatt gegen ein anderes Blatt oder einen anderen internen Knoten
aus. Die Kontextaktualisierungseinheit (ein Vordatenaktualisierungsmittel) 106A trägt die Daten
K in die Vordatenhalteeinheiten 100A-1~100A-n ein.
-
34 ist
ein Blockdiagramm, das eine interne Struktur der obenerwähnten Codiereinheit 104A zeigt.
Um die codierten Daten K auszugeben, die gemäß einer Gabelung codiert wurden,
die sich von einem Knoten erstreckt, wie oben erläutert, enthält die Codiereinheit 104A,
wie in 34 gezeigt, eine
Unterscheidungseinheit von Knoten höheren Grades 41, eine
Knotennummerverwaltungseinheit (Speicher) 42, eine Positionsunterscheidungseinheit 43,
eine Verriegelung 44 und einen Stapelspeicher 45.
-
Die Unterscheidungseinheit von Knoten
höheren
Grades 41 erhält
eine Knotennummer eines Knotens höheren Grades von einer Knotennummer einer
Wurzel des Codebaums und einer Knotennummer eines Blattes des Kontextbaums.
Die Knotennummerverwaltungseinheit (Speicher) 42 verwaltet Knotennummern
des Kontextbaums und des Codebaums. Die Positionsunterscheidungseinheit 43 unterscheidet
einen Gabelungszustand eines Knotens.
-
Die Verriegelung 44 dient
zum temporären Halten
einer Knotennummer eines Blattes. Der Stapelspeicher hält temporär einen
Code der Daten K, die von der Positionsunterscheidungseinheit 43 ausgegeben
werden, und gibt sukzessive Codes aus, die in ihm gehalten werden,
wenn er ein Endsignal empfängt.
-
In der obigen Datenkomprimierungsvorrichtung
mit der obigen Struktur, die in 33 gezeigt
ist, halten die Vordatenhalteeinheiten 100A-1~100A-n einen
Kontext, der aus einer Anzahl von n Eingangsdaten gebildet ist,
die bis zur Eingabe der Daten K eingegeben worden sind. Die Kontextverlaufshalteeinheit 101A hält eine
Kombination aus Eingangsdaten und einem Kontext. Die Codebaumhalteeinheit 102A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind.
-
Die Codebaumbestimmungseinheit 103A bestimmt
einen Codebaum von Daten aus Eingangsdaten, die bis zu einer Eingabe
von jenen Daten eingegeben worden sind, die in den Vordatenhalteeinheiten 100A-1~100A-n gehalten
werden. Die Codiereinheit 104A gibt einen Code (einzigartige
Daten) aus, der durch "0" oder "1" ausgedrückt wird, gemäß einer
Gabelung, die sich von einem Knoten erstreckt, der auf einem Weg
von einer Wurzel (einem oberen Ende) eines Codebaum, der durch die
Codebaumbestimmungseinheit 103A selektiert wurde, zu einem Blatt
desselben liegt, in dem die Daten K gespeichert sind.
-
Die Codebaumaktualisierungseinheit 105A als
Codebaumaktualisierungsmittel tauscht ein codiertes Blatt gegen
ein anderes Blatt oder einen anderen internen Knoten aus. Die Vordatenaktualisierungseinheit 106A trägt die Daten
K in das Vordatenhaltemittel 100A-1 ein.
-
Die obige Operation wird unter Bezugnahme auf
die Schritte A1 bis A6 in dem in 35 gezeigten Flußdiagramm
eingehender beschrieben.
-
Zunächst werden Kontextzeichenketten
P, die in den Vordatenhalteeinheiten 100A-1~100A-n gehalten
werden, initialisiert (Schritt A1), und dann werden die zu codierenden
Daten K eingegeben (Schritt A2).
-
Die Codebaumbestimmungseinheit 103A bestimmt
einen Codebaum entsprechend einem Kontext P von der Kontextver laufshalteeinheit 101A, die
einen Verlauf des Kontextes hält,
der in den Vordatenhalteeinheiten 100A-1~100A-n gehalten
wird, und sendet eine Knotennummer (ID) eines Blattes, in dem die
Daten K gehalten werden, und eine Knotennummer (ID) eines Knotens
einer Wurzel des Kontextes P, die von dem bestimmten Codebaum erhalten wird,
und Informationen, die in der Kontextverlaufshalteeinheit 101A gespeichert
sind. Die Codiereinheit 104A gibt einen Code gemäß der Gabelung
eines Knotens aus, der sich von einem Blatt eines Symbols K (der
Daten K) zu der Wurzel des Codebaums erstreckt, der dem Kontext
P entspricht (Schritt A3). Übrigens
wird ein Prozeß,
der durch die Codiereinheit 104A ausgeführt wird, später unter
Bezugnahme auf 36 eingehender
beschrieben.
-
Nach dem Codieren in der Codiereinheit 104A tauscht
die Codebaumaktualisierungseinheit 105A ein Blatt des Ereignisses
K an dem Codebaum gegen ein anderes Blatt oder einen anderen Knoten aus
(Schritt A4), speichert es in der Codebaumhalteeinheit 102A zurück und aktualisiert
dadurch den Codebaum. Ein Prozeß,
der durch die Codebaumaktualisierungseinheit 105A ausgeführt wird,
wird später unter
Bezugnahme auf 37 eingehender
beschrieben.
-
Die Kontextaktualisierungseinheit 106A sondert
die ältesten
Daten aus (Daten, die in der Vordatenhalteeinheit 100-n gehalten
werden), trägt
die Eingangsdaten K als Kontext in der Vordatenhalteeinheit 100A-1 ein,
wodurch die Kontextzeichenkette P aktualisiert wird (Schritt A5).
-
Es wird geprüft, ob das Codieren aller Daten beendet
ist oder nicht (Schritt A6). Falls es nicht beendet ist, wird ein
Prozeß ab
Schritt A2 wiederholt. Falls es beendet ist, ist der Codierprozeß vollendet (JA-Route
bei Schritt A6).
-
Die Ordnung des Knotenrekombinationsprozesses
(Schritt A4) und des Kontextaktualisierungsprozesses (Schritt A5)
ist nicht auf das obige Beispiel begrenzt. Der Kontextaktualisierungsprozeß (Schritt A5)
kann vor dem Knotenrekombinationsprozeß ausgeführt werden (Schritt A4). Alternativ
ist es möglich, die
obigen Prozesse parallel auszuführen.
-
Wie bei Schritt A3 erwähnt, wird
als nächstes unter
Bezugnahme auf die Schritte B1 bis B8 in 36 ein Prozeß beschrieben, der durch die
Codiereinheit 104A mit der in 34 gezeigten und oben erläuterten
Struktur ausgeführt
wird.
-
Zunächst wird der Stapelspeicher 45 (ein Kellerspeicher)
initialisiert (Schritt B1). Ein Adressenzeiger eines gegenwärtigen Knotens
L wird auf ein Blatt an dem Codebaum des Kontextes P eingestellt, in
dem die Daten K gespeichert sind (Schritt B2).
-
Die Knotennummer (ID) des Blattes,
in dem die Daten K gehalten werden, die von dem obengenannten Schritt
A3 zugeführt
wird, wird von der Verriegelung 44 zu der Positionsunterscheidungseinheit 43 gesendet.
Die Positionsunterscheidungseinheit 43 erhält von der
Knotennummerverwaltungseinheit 42 Informationen darüber, auf
welcher Seite eines Knotens höheren
Grades der Knoten der empfangenen Knotennummer liegt, und unterscheidet,
ob der durch die Informationen empfangene Knoten auf der rechten
Seite des Knotens höheren
Grades liegt (Schritt B3).
-
Falls der empfangene Knoten auf der
rechten Seite des Knotens höheren
Grades liegt, wird "1" auf den Stapelspeicher 45 draufgelegt
(an ihn ausgegeben) (JA-Route bei Schritt B3 zu Schritt B4). Falls er
auf der linken Seite liegt, wird "0" auf
den Stapelspeicher 45 draufgelegt (an ihn ausgegeben) (NEIN-Route
bei Schritt B3 zu Schritt B5).
-
Eine Knotennummer (ID), das heißt, eine
andere Knotennummer der Wurzel des Kontextes P, die von dem obengenannten
Schritt A3 zugeführt
wird, wird zu der Unterscheidungsein heit von Knoten höheren Grades 41 gesendet.
Die Unterscheidungseinheit von Knoten höheren Grades 41 unterscheidet, ob
der empfangene Knoten (oder ein Blatt) eine Wurzel ist oder nicht
(Schritt B6).
-
Falls er eine Wurzel ist, gibt die
Unterscheidungseinheit von Knoten höheren Grades 41 ein Endsignal
aus (JA-Route bei
Schritt B6). Falls er keine Wurzel ist, greift die Unterscheidungseinheit
von Knoten höheren
Grades 41 auf die Knotennummer-(ID)-Verwaltungseinheit 42 zu,
um eine Nummer dieses Knotens (oder des Blattes) oder eines Knotens
höheren
Grades (U) zu erhalten, und verschiebt einen Adressenzeiger zu dem
Knoten höheren
Grades, da dieser Knoten (U) als neuer gegenwärtiger Knoten L angesehen wird.
Dann wird der Prozeß ab Schritt
B3 wiederholt (NEIN-Route bei Schritt B6 zu Schritt B7).
-
Durch das Wiederholen des Prozesses,
bis der Adressenzeiger die Wurzel erreicht, wird ein Weg von dem
Blatt zu der Wurzel, der durch "1" oder "0" ausgedrückt wird, in dem Stapelspeicher 45 gespeichert.
-
Dieser Weg wird umgekehrt ab einem
Bit niedrigeren Grades bitweise ausgegeben (Pop-up-Ausgabe), so
daß der
Weg von der Wurzel zu dem Blatt als Code ausgegeben wird (Schritt
B8).
-
Wie bei Schritt A4 erwähnt, wird
als nächstes ein
Prozeß zum
Austauschen eines Blattes des Symbols K gegen ein anderes Blatt
oder einen Knoten, der durch die Codebaumaktualisierungseinheit 105A ausgeführt wird,
unter Bezugnahme auf die Schritte C1 bis C9 in 37 eingehender beschrieben.
-
Zuerst wird ein Adressenzeiger eines
Knotens Z, der ein Objekt des Austauschs ist, auf das Blatt K eingestellt
(Schritt C1). Ein Knoten höheren Grades
des Knotens Z wird dann auf einen Knoten U0 gesetzt (Schritt C2).
-
Es wird unterschieden, ob der Knoten
höheren
Grades U0 von K eine Wurzel des Codebaums ist oder nicht (Schritt
C3). Falls er eine Wurzel ist, ist der Austauschprozeß abgeschlossen
(JA-Route bei Schritt C3 zu Schritt C9). Falls er keine Wurzel ist, wird
ein höherer
Knoten des Knotens U0 auf einen Knoten U1 gesetzt (NEIN-Route bei
Schritt C3 zu Schritt C4), und es wird unterschieden, auf welcher Seite
des Knotens höheren
Grades U1 vom Knoten U0 der Knoten U0 liegt (Schritt C5).
-
Falls U0 auf der rechten Seite von
U1 liegt, wird ein Knoten, der auf der linken Seite des Knotens U1
liegt, auf den Knoten X gesetzt (JA-Route bei Schritt C5 zu Schritt
C6), und der Knoten Z wird gegen den Knoten X ausgetauscht (Schritt
C8). Mit anderen Worten, ein Knoten auf der linken Seite des Knotens
U1 wird mit dem Blatt K rekombiniert.
-
Falls der Knoten U0 auf der linken
Seite von U1 liegt, wird ein Knoten, der auf der rechten Seite des
Knotens U1 liegt, auf den Knoten X gesetzt (NEIN-Route bei Schritt
C5 zu Schritt C7), und ein Knoten Z wird gegen den Knoten X ausgetauscht (Schritt
C8). Mit anderen Worten, ein Knoten auf der rechten Seite des Knotens
U1 wird mit dem Blatt K rekombiniert.
-
Ferner wird ein Adressenzeiger des
Knotens Z auf den Knoten U1 eingestellt (Schritt C9). Die Prozedur
kehrt dann zu dem obigen Schritt C2 zurück. Bei Schritt C3 wird der
Prozeß wiederholt,
bis bestimmt wird, daß ein
Knoten höheren
Grades des eingestellten Adressenzeigers eine Wurzel ist, mit anderen
Worten, daß der
Adressenzeiger auf einem Knoten genau unter der Wurzel ist.
-
Durch den obigen Prozeß wird ein
Abstand von der Wurzel zu dem Blatt, auf das zugegriffen wird, (eine
Codelänge)
halbiert.
-
Durch das Wiederholendes obigen Prozesses
an allen Eingangszeichen kann eine Zeichenkette codiert werden.
-
In der Datenkomprimierungsvorrichtung
zum Ausführen
des Datenkomprimierungsverfahrens gemäß der zweiten Ausführungsform
dieser Erfindung wird ein Zeichen, das zu codieren ist, wie oben
beschrieben, mit seiner Nummer in den Kontextbaum in einer Baumstruktur
eingetragen, und ein Codebaum entsprechend diesem Kontextbaum wird
erzeugt und aktualisiert, während
eine Splay-Codierung ausgeführt
wird. Dadurch ist es möglich,
einen Prozeß aus zwei
Stufen gleichzeitig auszuführen,
das heißt,
eine Stufe zum Konstruieren eines Wahrscheinlichkeitsmodells durch
das Bestimmen einer Auftrittshäufigkeit
eines auftretenden Zeichens, um einen Code jedem Zeichen zuzuordnen,
um eine Codetabelle zu bilden, und eine Stufe zum Ausgeben eines
Codes eines Zeichens, das zu codieren ist, von der Codetabelle.
Auf diese Weise kann eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
erhöht werden.
-
Wie oben angegeben, wird immer dann, wenn
ein Zeichen eingegeben wird, ein Knoten des Codebaums erzeugt und
aktualisiert (im Splay-Prozeß),
um ein Wahrscheinlichkeitsmodell zu konstruieren. Auf diese Weise
kann eine Last eines enormen Volumens einer arithmetischen Operation
zum Rekonstruieren eines Wahrscheinlichkeitsmodells, das bei jeder
Zeicheneingabe schon konstruiert worden ist, reduziert werden, wodurch
eine Verarbeitungsrate bei der Datenkomprimierung weiter erhöht wird.
-
Ferner wird immer dann, wenn dasselbe
Zeichen wie ein Zeichen auftritt, das in der Vergangenheit bereits
komprimiert (codiert) worden ist, ein Knoten des Codebaums desselben
Zeichens, das in der Vergangenheit bereits eingetragen worden ist,
gegen einen Knoten höherer
Ordnung ausgetauscht, um (bei dem Splay-Prozeß) eine Länge einer Codelänge auf
die Hälfte
zu verringern. Deshalb ist es möglich, ein
Zeichen (Kette) mit einer geringeren Anzahl von Bits auszudrücken, wenn
dasselbe Zeichen (Kette) häufiger
auftritt. Dadurch kann ein Effekt der Komprimierung außerordentlich
verbessert werden.
-
(2) Beschreibung des Decodierers
-
38 ist
ein Blockdiagramm, das eine interne Struktur der obenerwähnten Datendekomprimierungsvorrichtung 4 zeigt.
Wie in 38 gezeigt, bezeichnen
die Bezugszeichen 200A-1~200A-n (n ist eine natürliche Zahl)
Vordatenhalteeinheiten, bezeichnet 201A eine Kontextverlaufshalteeinheit,
bezeichnet 202A eine Codebaumhalteeinheit, bezeichnet 203A eine
Codebaumbestimmungseinheit, bezeichnet 204A eine Decodiereinheit,
bezeichnet 205A eine Codebaumaktualisierungseinheit und
bezeichnet 206 eine Kontextaktualisierungseinheit.
-
Die Vordatenhalteeinheiten (ein Vordatenhaltemittel) 200A-1~200A-n dienen
zum Halten einer Anzahl von n Daten, die vor dem Decodieren eines Codes
decodiert worden sind. Die Kontextverlaufshalteeinheit (ein Verlaufshaltemittel) 201A hält eine Kombination
aus einem decodierten Symbol und einem Kontext. Die Codebaumhalteeinheit
(ein Codebaumhaltemittel) 202A hält Codebäume, die jeweils für jeden
Kontext unabhängig
sind.
-
Die Codebaumbestimmungseinheit (ein
Codebaumbestimmungsmittel) 203A bestimmt einen Codebaum,
um ein Symbol zu decodieren, von Kontexten, die in den Vordatenhalteeinheiten 200A-1~200A-n gehalten
werden. Die Decodiereinheit (ein Decodiermittel) 204A gibt
ein Symbol aus, das in einem Blatt gespeichert ist, das durch Scannen
eines Weges von einer Wurzel eines Codebaums (einem oberen Ende
eines Codebaums), der in der Codebaumbestimmungseinheit 203A selektiert wurde, zu
einem Knoten (einer Gabelung) desselben. gemäß einem Code erreicht wird.
-
Die Codebaumaktualisierungseinheit
(ein Codelängenaktualisierungsmittel) 205A tauscht
ein decodiertes Blatt gegen ein anderes Blatt oder einen Knoten
aus. Die Kontextaktualisierungseinheit (ein Vordatenaktualisierungsmittel) 206A trägt ein decodiertes
Symbol in die Vordatenhalteeinheiten 200A-1~200A-n ein.
-
39 ist
ein Blockdiagramm, das eine interne Struktur der obenerwähnten Decodiereinheit 204A zeigt.
Um ein Symbol auszugeben, das in einem Blatt gespeichert ist, das
durch Scannen eines Weges von einer Wurzel eines Codebaums, der durch
die Codebaumbestimmungseinheit 203A selektiert wurde, zu
einem Knoten gemäß einem
Code erreicht wird, enthält
die Decodiereinheit 204A, wie in 39 gezeigt, eine Knotennummerverwaltungseinheit
(Speicher) 42, eine Verriegelung 48, eine Unterscheidungseinheit
von Knoten niedrigeren Grades 46 und eine Blatt/Knoten-Unterscheidungseinheit 47.
-
Die Knotennummerverwaltungseinheit (Speicher) 42 ist
jener ähnlich,
die in dem obenerwähnten
Codieren vorgesehen ist, der in 34 gezeigt
ist, und verwaltet die Knotennummer eines Kontextbaums und eines
Codebaums.
-
Die Unterscheidungseinheit von Knoten niedrigeren
Grades 46 erhält
eine Knotennummer eines Knotens niedrigeren Grades von einem Code, eine
Knotennummer einer Wurzel des Codebaums und Informationen, die in
der Knotennummerverwaltungseinheit 42 gespeichert sind.
Die Blatt/Knoten-Unterscheidungseinheit 47 unterscheidet,
ob ein Knoten niedrigeren Grades ein Blatt oder ein Knoten ist,
gemäß Informationen,
die von der Unterscheidungseinheit von Knoten niedrigeren Grades 46 und der
Knotennummerverwaltungseinheit 42 zugeführt werden. Die Verriegelung 48 hält temporär eine Knotennummer
einer Wurzel.
-
In der obigen Struktur halten die
Vordatenhalteeinheiten 200A-1~200A-n einen Kontext (Daten)
in der Anzahl n, der vor dem Decodieren eines Codes decodiert worden
ist, und die Codehalteeinheit 202A hält Codebäume, die jeweils für jeden
Kontext unabhängig
sind.
-
Die Codebaumbestimmungseinheit 203A bestimmt
einen Codebaum, der verwendet wird, um Daten K zu decodieren, von
einem Kontext, der in der Vordatenhalteeinheit 200A-1~200A-n gehalten
wird. Die Decodiereinheit 204A gibt Daten K aus, die in
einem Blatt gespeichert sind, das durch Scannen eines Weges von
einer Wurzel (einem oberen Ende) eines Codebaums, der durch die
Codebaumbestimmungseinheit 203A selektiert wurde, zu einem
Knoten (einer Gabelung) desselben gemäß einem Code der codierten
Daten K erreicht wird.
-
Die Codebaumaktualisierungseinheit 205A als
Codelängenaktualisierungsmittel
tauscht ein decodiertes Blatt gegen ein anderes Blatt oder einen
internen Knoten aus. Die Vordatenaktualisierungseinheit 206A trägt die decodierten
Daten K als letzten Kontext in die Vordatenhalteeinheit 200A-1 ein.
-
Als nächstes wird der obige Prozeß unter
Bezugnahme auf die Schritte F1 bis F6 in einem Flußdiagramm
von 40 eingehender
beschrieben.
-
Zunächst wird eine Anzahl von n
Kontextzeichenketten P, die in den Vordatenhalteeinheiten 200A-1~200A-n gehalten
werden, initialisiert (Schritt F1). Dann wird ein Symbol (Daten)
K, das zu decodieren ist, eingegeben (Schritt F2).
-
Die Codebaumbestimmungseinheit 203A bestimmt
einen Codebaum entsprechend einem Kontext P von der Kontextverlaufshalteeinheit 201A, die
einen Verlauf der Kontexte hält,
die in den Vordatenhalteeinheiten 200A-1~200A-n gehalten werden, und
sendet eine Knotennummer (ID) des bestimmten Codebaums und einen
Code des Ereignisses K, der zu decodieren ist, zu der Decodiereinheit 204A.
Die Decodiereinheit 204A scant einen Weg an dem bestimmten
Codebaum von der Wurzel zu einem Blatt, in dem das Ereignis K gespeichert
ist, gemäß dem zugeführten Code
und decodiert einen Code (Schritt F3). Übrigens wird ein Prozeß, der durch
die Decodiereinheit 204A ausgeführt wird, später unter
Bezugnahme auf 41 eingehender
beschrieben.
-
Nach dem Decodieren tauscht die Codebaumaktualisierungseinheit 205A ein
Blatt an dem Codebaum des Ereignisses K, das decodiert worden ist,
gegen ein anderes Blatt oder einen internen Knoten aus (Schritt
F4) und speichert es in der Codebaumhalteeinheit 202A zurück, um den
Codebaum zu aktualisieren. Der Prozeß zum Austauschen von Knoten,
der durch die Codebaumaktualisierungseinheit 205A ausgeführt wird,
wird genauso wie der Prozeß bei
den Schritten C1 bis C9 vorgenommen, die durch die Codebaumaktualisierungseinheit 105A ausgeführt werden,
die zuvor unter Bezugnahme auf das Flußdiagramm von 37 beschrieben worden ist.
-
Die Kontextaktualisierungseinheit 206A sondert
die ältesten
Daten (Daten, die in der Vordatenhalteeinheit 200A-n gehalten werden)
aus und aktualisiert die Kontextzeichenkette P durch Eintragen des decodierten
Symbols (Daten) K als Kontext in der Vordatenhalteeinheit 200A-1.
-
Es wird geprüft, ob das Decodieren aller
Daten beendet ist oder nicht (Schritt F6). Falls es nicht beendet
ist, wird der Prozeß ab
Schritt F2 wiederholt (NEIN-Route bei Schritt F6). Falls es beendet
ist, ist der Decodierprozeß vollendet
(JA-Route bei Schritt F6).
-
Genauso wie bei dem Codierprozeß kann die Ordnung
der obenerwähnten
Prozesse, das heißt, der
Prozeß zum
Austauschen von Knoten (bei Schritt F4) und der Prozeß zum Aktua lisieren
des Kontextes (bei Schritt F5), verändert werden. Alternativ ist
es möglich,
die obigen Prozesse parallel auszuführen.
-
Wie bei Schritt F3 angegeben, wird
als nächstes
der Codierprozeß,
der durch die Decodiereinheit 204A mit der obigen Struktur
ausgeführt
wird, die in 39 gezeigt
ist, unter Bezugnahme auf die Schritte G1 bis G7 in einem Flußdiagramm
in 41 beschrieben.
-
Die Unterscheidungseinheit von Knoten niedrigeren
Grades 46 setzt eine Knotennummer (ID) der Wurzel, die
von der Codebaumbestimmungseinheit 203A zugeführt wird,
auf einen Knoten Z (Schritt G1). Die Unterscheidungseinheit von
Knoten niedrigeren Grades 46 setzt auch einen Code (von
1 Bit) des zu decodierenden Symbols K, der von derselben Codebaumbestimmungseinheit 203A über die
Verriegelung 48 zugeführt
worden ist, auf C (Schritt G2).
-
Es wird geprüft, ob der Code des zu decodierenden
Symbols K, der auf C gesetzt wurde, mit "1" koinzidiert
oder nicht (Schritt G3). Falls er mit "1" koinzidiert
(im Falle von JA), wird ein Knoten auf der rechten Seite des Knotens
Z auf Z gesetzt (JA-Route bei Schritt G3 zu Schritt G4). Falls er
nicht "1" ist (das heißt, er ist "0"), wird ein Knoten auf der linken Seite des
Knotens Z auf den Knoten Z gesetzt (NEIN-Route bei Schritt G3 zu
Schritt G5). Die Unterscheidungseinheit von Knoten niedrigeren Grades 46 erhält eine Knotennummer
des Knotens Z von der Knotennummerverwaltungseinheit 42 auf
der Basis einer Knotennummer des Knoten, der auf den Knoten Z gesetzt
wurde, und sendet jene Knotennummer zu der Blatt/Knoten-Unterscheidungseinheit 47.
Die Blatt/Knoten-Unterscheidungseinheit 47 erhält Positionsinformationen
des Knotens Z mit der zugeführten Knotennummer
von der Knotennummerverwaltungseinheit 42 und prüft, ob jene
Knotennummer Z ein Knoten oder ein Blatt ist (Schritt G6).
-
Falls der Knoten Z kein Blatt ist
(NEIN-Route bei Schritt G6), kehrt die Prozedur zu Schritt G2 zurück, und
der Prozeß wird
wiederholt, bis ein Blatt erreicht wird, in dem das zu decodierende
Symbol K gespeichert ist.
-
Falls der Knoten Z ein Blatt ist
(JA-Route bei Schritt G6), bedeutet dies, daß das zu decodierende Ereignis
K gefunden worden ist, und die Blatt/Knoten-Unterscheidungseinheit 47 sendet
ein Symbol-(Ereignis)-Ausgabesignal zu der Knotennummerverwaltungseinheit 42.
Die Knotennummerverwaltungseinheit 42, die jenes Signal
empfangen hat, gibt das Symbol K aus, das in jenem Blatt gespeichert
ist (Schritt G7), und gibt ein Endsignal für diesen Decodierprozeß aus.
-
Wie oben kann durch Verfolgen eines
mit Zahlenwerten "1" und "0" ausgedrückten Weges an dem Codebaum,
der in dem Codierer erzeugt wurde, bis hinab zu einem Blatt, in
dem das Ereignis K gespeichert ist, das codierte Ereignis K decodiert
werden.
-
In der Datendekomprimierungsvorrichtung, die
verwendet wird, um das Datendekomprimierungsverfahren gemäß der zweiten
Ausführungsform dieser
Erfindung auszuführen,
wird ein decodiertes Zeichen mit seiner eigenen Nummer in einen
Kontextbaum in einer Baumstruktur eingetragen und wird ein Codebaum
entsprechend dem Kontextbaum erzeugt und aktualisiert, während die
Splay-Operation an ihm ausgeführt
wird. Deshalb ist es möglich,
einen Prozeß aus
zwei Stufen gleichzeitig auszuführen, das
heißt,
eine Stufe, um einen Code zu suchen, der mit einem zu decodierenden
Code eines Zeichens koinzidiert, und eine Stufe, um ein Zeichen,
das dem koinzidierenden Code entspricht, als decodiertes Zeichen
auszugeben. Auf diese Weise kann eine Verarbeitungsrate bei der
Datenwiederherstellung außerordentlich
erhöht
werden.
-
Genauso wie in dem Decodierer wird
das Wahrscheinlichkeitsmodell konstruiert, indem Knoten des Codebaums
bei dem Splay-Prozeß immer
dann erzeugt und aktualisiert werden, wenn ein Zeichen eingegeben
wird, so daß ein
enormes Volumen einer arithmetischen Operation, um das Wahrscheinlichkeitsmodell
zu rekonstruieren, das bereits bei jeder Zeicheneingabe konstruiert
worden ist, unerläßlich wird,
und eine Verarbeitungsrate bei der Datenwiederherstellung wird dadurch
außerordentlich
erhöht.
-
Genauso wie in dem Decodierer wird
ferner immer dann, wenn derselbe Code wie ein Code auftritt, der
in der Vergangenheit bereits decodiert worden ist, ein Knoten des
Codebaums desselben Codes, der in der Vergangenheit eingetragen
worden ist, gegen einen Knoten höheren
Grades (bei dem Splay-Prozeß)
ausgetauscht, um eine Codelänge
auf die Hälfte
zu verringern. Dadurch kann ein Code mit der geringeren Anzahl von
Bits ausgedrückt
werden, wenn derselbe Code häufiger
decodiert wird, so daß ein
Effekt der Wiederherstellung außerordentlich
verbessert wird.
-
(b-1) Beschreibung der
ersten Abwandlung der zweiten Ausführungsform der Erfindung
-
Die nächste Beschreibung betrifft
eine erste Abwandlung der zweiten Ausführungsform gemäß dieser
Erfindung.
-
(1) Beschreibung des Codierers
-
42 ist
ein Blockdiagramm, das eine interne Struktur einer Datenkomprimierungsvorrichtung 3 als
Abwandlung der zweiten Ausführungsform dieser
Erfindung zeigt. Wie in 42 gezeigt,
ist die Datenkomprimierungsvorrichtung 3 dieser Erfindung mit
einer Kontextunterscheidungseinheit 108A und einer Kontextänderungseinheit 110A zusätzlich zu den
Elementen versehen, die unter Bezugnahme auf 33 in der zweiten Ausführungsform
beschrieben worden sind. Anstelle der Decodiereinheit 104A und der
Codebaumhalteeinheit 105A von 33 sind eine Codiereinheit 104A' und eine Codebaumhalteeinheit 107A vorgesehen.
-
Deshalb wird die Beschreibung von
den Elementen in 42,
die dieselben wie jene in 33 sind,
hier weggelassen, und im folgenden werden nur die Elemente beschrieben,
die sich von jenen in 33 unterscheiden.
-
Die Codiereinheit 104A' als Codeausgabemittel
und Escape-Code-Ausgabemittel gibt einen Escape-Code gemäß einer
Gabelung aus, die sich von einem Knoten erstreckt, der auf dem Weg
von einer Wurzel eines Codebaums zu einem Blatt liegt, in dem der
Escape-Code gespeichert ist, falls kein Symbol in den Codebaum eingetragen
ist, oder gibt einen Code eines Symbols gemäß einer Gabelung aus, die sich
von einem Knoten erstreckt, der auf dem Weg von der Wurzel des Codebaums
zu einem Blatt liegt, in dem das Symbol gespeichert ist, falls das
Symbol in den Codebaum eingetragen ist.
-
Die Codiereinheit 104A' als Steuermittel
wiederholt einen Prozeß,
bis Daten decodiert sind, falls ein Escape-Code codiert ist.
-
Die Codebaumhalteeinheit (ein Codebaumhaltemittel) 107A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind, in denen im voraus ein Escape-Code (ESC) eingetragen wurde,
der bedeutet, daß kein
Symbol gespeichert ist. Die Kontextunterscheidungseinheit (ein Kontextunterscheidungsmittel) 108A unterscheidet,
ob ein Symbol in einem Codebaum gespeichert ist oder nicht, der
durch die Codebaumbestimmungseinheit 103 bestimmt wurde. Die
Kontextänderungseinheit
(ein Kontextänderungsmittel) 110A verringert
eine Länge
eines Kontextes, falls das Symbol nicht in dem Codebaum gespeichert
ist.
-
In der Datenkomprimierungsvorrichtung 3 von 42 mit solch einer Struktur,
die sich von der in 33 gezeigten
unterscheidet, gibt die Codiereinheit 104A' einen ESC-Code gemäß einer
Gabelung aus, die sich von einem Knoten erstreckt, der auf dem Weg
von einer Wurzel eines Codebaums zu einem Blatt liegt, in dem der
ESC gespeichert ist, falls in dem Codebaum kein Symbol K gespeichert
ist, oder gibt einen Code des Symbols K gemäß einer Gabelung aus, die sich
von einem Knoten auf dem Weg von einer Wurzel eines Codebaums zu
dem Blatt erstreckt, in dem das Symbol K gespeichert ist, falls
das Symbol K in dem Codebaum gespeichert ist.
-
Falls der ESC codiert wird, wiederholt
die Codiereinheit 104A' einen
Prozeß,
bis die Daten (Symbol) K codiert sind.
-
Die Codebaumhalteeinheit 107A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind und in denen im voraus ein ESC-Code gespeichert wurde, der
bedeutet, daß kein
Symbol eingetragen ist.
-
Der obige Prozeß wird im folgenden unter Bezugnahme
auf die Schritte H1 bis H11 in dem in 43 gezeigten Flußdiagramm eingehender beschrieben.
-
Die Kontextänderungseinheit 110A initialisiert
eine Kontextzeichenkette PO von allen Kontexten, die in der Vordatenhalteeinheit 200A-1~200A-n gehalten
werden (Schritt H1). Die Kontextzeichenkette PO wird auf einen Kontext
P gesetzt (Schritt H2). Dann werden Daten (Symbol) K eingegeben,
die zu codieren sind (Schritt H3).
-
Die Kontextänderungseinheit 110A sendet den
Kontext P und Informationen über
die Daten K zu der Kontextverlaufshalteeinheit 101A und
der Codebaumbestimmungseinheit 103A. Die Kontextverlaufshalteeinheit 101A sendet
die Informationen über den
Kontext P, die von der Kontextänderungseinheit
110A zugeführt wurden,
zu der Kontextunterscheidungseinheit 108A.
-
Die Kontextunterscheidungseinheit 108A unterscheidet,
ob ein Symbol K in dem Kontext P gespeichert ist, gemäß den empfangenen
Informationen über
den Kontext P (Schritt H4).
-
Falls das Symbol K in den Kontext
P eingetragen worden ist, weist die Kontextverlaufshalteeinheit 101A die
Codiereinheit 104A' an,
einen Escape-Code (ESC) zu codieren. Die Codiereinheit 104A' gibt einen
Code aus, der einer Gabelung eines Knotens auf dem Weg von einem
Blatt des Escape-Codes (ESC) zu einer Wurzel an einem Codebaum entspricht,
der dem Kontext P entspricht, um den Escape-Code zu codieren (NEIN-Route bei Schritt
H4 zu Schritt H5).
-
Die Codiereinheit 104A' weist die Codebaumaktualisierungseinheit 105A durch
die Codebaumbestimmungseinheit 103A an, den Codebaum zu
aktualisieren. Die Codebaumaktualisierungseinheit 105A tauscht
ein Blatt des ESC an dem Codebaum gegen ein anderes Blatt oder einen
internen Knoten aus (Schritt H6).
-
Der Grad des Kontextes P (ein Anfangszustand
des Codebaums hat den Grad 0) wird in den nächst niedrigeren Grad verändert (Schritt
H7). Die Prozedur kehrt zu Schritt H4 zurück, und der Prozeß wird wiederholt,
bis entschieden wird, daß das
Symbol K in dem Kontext P eingetragen ist (das heißt, bis bei
Schritt H4 durch JA beurteilt wird, daß das Symbol K in dem Kontext
P eingetragen ist).
-
Falls das Symbol K bei dem obigen
Schritt H4 in dem Kontext P gespeichert ist (das heißt, bis bei
Schritt H4 durch JA beurteilt wird, daß das Symbol K in dem Kontext
P gespeichert ist), weist die Kontextverlaufshalteeinheit 101A die
Codiereinheit 104A' an,
das Symbol K zu codieren. Die Codiereinheit 104A' gibt einen
Code gemäß einer
Gabelung eines Knotens von einem Blatt des Symbols K zu der Wurzel aus,
um es zu codieren (JA-Route bei Schritt H4 zu Schritt H8).
-
Die Codiereinheit 104A' weist die Codebaumaktualisierungseinheit 105A durch
die Codebaumbestimmungseinheit 103A an, den Codebaum zu
aktualisieren. Die Codebaumaktualisierungseinheit 105A tauscht
ein Blatt des Ereignisses gegen ein anderes Blatt oder einen internen
Knoten aus (Schritt H9).
-
Die Kontextänderungseinheit 106A sondert die ältesten
Daten aus (Daten, die in der Vordatenhalteeinheit 100A-n gehalten
werden), und trägt
einen Kontext der Eingangsdaten K in der Vordatenhalteeinheit 100A-1 ein.
Die Kontextänderungseinheit 110A aktualisiert
eine Kontextzeichenkette PO auf der Basis jener Informationen (Schritt
H10).
-
Es wird geprüft, ob das Codieren aller Daten beendet
ist oder nicht (Schritt H11). Falls es nicht beendet ist, wird der
Prozeß nach
Schritt H2 wiederholt, bis das Codieren aller Daten beendet ist
(JA-Route bei Schritt H11). Falls es beendet ist, ist der gesamte Prozeß für das Codieren
vollendet.
-
Detailliertere Informationen über den
Codeausgabeprozeß bei
den obigen Schritten H5 und H8 bieten die Schritte B1 bis B8, die
unter Bezugnahme auf 36 in
der zweiten Ausführungsform
beschrieben worden sind. Detailliertere Informationen über den
Knotenrekombinationsprozeß bieten
die Schritte C1 bis C9, die unter Bezugnahme auf 37 in der zweiten Ausführungsform
beschrieben worden sind.
-
Wie oben angegeben, wird in der Datenkomprimierungsvorrichtung
gemäß der ersten
Abwandlung der zweiten Ausführungsform
dieser Erfindung ein Escape-Code (ESC) im voraus in den Codebaum eingetragen,
der bedeutet, daß kein
Symbol eingetragen ist, und wird ein Code dieses Escape-Codes ausgegeben,
während
das zu codierende Symbol nicht in einem Kontext enthalten ist, der
im voraus eingetragen worden ist (mit anderen Worten, bis ein Kontext,
der das Symbol enthält,
gefunden wird und das Symbol codiert wird). Demzufolge ist es nicht
erforderlich, im voraus alle Kombinationen von Symbolen (Kontexten)
einzutragen, die als Eingangsdaten auftreten, so daß ein Volumen
eines Speichers, der verwendet wird, um Kontexte darin einzutragen,
außerordentlich
reduziert werden kann.
-
Wie oben angegeben, kann eine Codelänge eines
Escape-Codes, der
ausgegeben wird, während kein
Symbol in einem Kontext enthalten ist, und im voraus eingetragen
worden ist, bei dem Splay-Prozeß verringert
(halbiert) werden, so daß eine
Zeitperiode, die erforderlich ist, um einen Kontext zu finden, in
dem das Symbol eingetragen ist, und es zu codieren, verkürzt werden
kann. Dies gestattet es, die Verarbeitungsrate bei der Datenkomprimierung
in hohem Maße
zu erhöhen
und auch eine Prozeßlast
auf der Datenkomprimierungsvorrichtung in hohem Maße zu verringern.
-
(2) Beschreibung des Decodierers
-
44 zeigt
eine interne Struktur einer Datendekomprimierungsvorrichtung 4 als
erste Abwandlung der zweiten Ausführungsform dieser Erfindung.
Wie in 44 gezeigt,
hat die Datenwiederherstellungsvorrichtung 4 eine Kontextänderungseinheit 210A zusätzlich zu
den Elementen, die unter Bezugnahme auf 38 beschrieben worden sind. Anstelle
der Decodiereinheit 204A und der Codebaumhalteeinheit 205A sind
eine Decodiereinheit 204A' und eine
Codebaumhalteeinheit 207A vorgesehen.
-
Die Beschreibung von Elementen, die
mit denselben Bezugszeichen wie in 38 versehen sind,
wird hier weggelassen. Im folgenden werden nur Elemente beschrieben,
die sich von denen in 38 unterscheiden.
-
Die Codebaumhalteeinheit (ein Codebaumhaltemittel) 207A hält einen
Codebaum, in den ein Escape-Code eingetragen worden ist. Die Kontextänderungseinheit
(ein Kontextänderungsmittel) 210A sondert
eingegebene Daten aus, wenn Ausgangsdaten ein Escape-Code sind,
um einen Kontext zu verkürzen.
-
Die Decodiereinheit 204A' gibt Daten
aus, die in einem Blatt gespeichert sind, das durch Scannen eines
Weges von einer Wurzel eines Codebaums, der durch die Codebaumbestimmungseinheit 203A selektiert
wurde, zu einem Knoten (einer Gabelung) gemäß einem Code erreicht wird,
der in dem obengenannten Codierer codiert worden ist.
-
Die Decodiereinheit 204A' als Steuermittel bewirkt,
daß die
Kontextänderungseinheit 210A einen
Kontext zurücksetzt,
wenn ein Escape-Code decodiert wird, wie oben angegeben, und führt eine Steuerung
aus, um den Prozeß zu
wiederholen, bis Daten ohne einen Escape-Code codiert sind.
-
In der Datendekomprimierungsvorrichtung mit
der obigen Struktur, die in 44 gezeigt
ist und sich von jener von 38 unterscheidet,
hält die
Codebaumhalteeinheit 207A einen Codebaum, in dem ein ESC
im voraus eingetragen worden ist, und die Kontextänderungseinheit 210A sondert
eingegebene Daten K aus, wenn die Daten K, die von der Kontextänderungseinheit 210A ausgegeben
werden, ein ESC sind, um den Kontext zu verkürzen.
-
Die Decodiereinheit 204A' gibt die Daten
K aus, die in einem Blatt gespeichert sind, das durch Scannen eines
Weges von einer Wurzel eines Codebaums, der durch die Codebaumbestimmungseinheit 203A selektiert
wurde, zu einem Knoten erreicht wird. Der ESC wird decodiert, die
Kontextänderungseinheit 210A ändert den
Grad des Kontextes und wiederholt den Prozeß, bis die Daten K ohne den
ESC decodiert sind.
-
Als nächstes wird die obige Operation
unter Bezugnahme auf die Schritte J1 bis J9 in einem Flußdiagramm,
das in 45 gezeigt ist,
eingehender beschrieben.
-
Zunächst initialisiert die Kontextänderungseinheit 210A eine
Kontextzeichenkette PO von allen Kontexten, die in den Vordatenhalteeinheiten 200A-1~200A-n gehalten
werden (Schritt J1). Die Kontextzeichenkette PO wird auf einen Kontext
P gesetzt (Schritt J2).
-
Die Kontextänderungseinheit 110A sendet diesen
Kontext P zu der Kontextverlaufshalteeinheit 201A und der
Codebaumbestimmungseinheit 203A. Die Codebaumbestimmungseinheit 203A selektiert (bestimmt)
einen Codebaum gemäß dem empfangenen
Kontext P (Schritt J3) und sendet den bestimmten Codebaum zu der
Decodiereinheit 204A'.
-
Die Decodiereinheit 204A' decodiert einen Code
durch Scannen eines Weges von einer Wurzel zu einem Blatt an dem
bestimmten Codebaum gemäß einem
Code, der in dem Codierer codiert worden ist (Schritt J4). Eine
detailliertere Beschreibung des Prozesses, der durch die Decodiereinheit 204A' ausgeführt wird,
bieten übrigens
die Schritte G1 bis G7, die unter Bezugnahme auf 41 in der zweiten Ausführungsform
beschrieben worden sind.
-
Die Decodiereinheit 204A' prüft, ob ein
decodiertes Symbol K ein ESC (ein Escape-Code) ist oder nicht (Schritt
J5). Falls das decodierte Ereignis ein ESC ist, sendet die Decodiereinheit 204A' ein ESC-Signal
zu der Kontextänderungseinheit 210A (JA-Route
bei Schritt J5).
-
Die Kontextänderungseinheit 210A,
die dieses ESC-Signal empfangen hat, ändert den Grad des Kontextes
P in den nächst
niedrigeren Grad (wodurch ein Kontext P zum Beispiel den Grad (n-1)
erhält,
ungeachtet der ältesten
Daten, die in der Vordatenhalteeinheit 200A-n gehalten
werden) (Schritt J6). Die Kontextänderungseinheit 210A sendet
diesen Kontext P zu der Kontextverlaufshalteeinheit 201 und der
Codebaumbestimmungseinheit 203. Die Prozedur kehrt zu Schritt
J3 zurück.
-
Und zwar wird der Prozeß ab Schritt
J2 wiederholt, bis die Decodiereinheit 204A' das Symbol K ohne einen ESC decodiert.
-
Falls das decodierte Symbol K kein
ESC ist, wird ein Blatt des decodierten Symbols K gegen ein anderes
Blatt oder einen internen Knoten ausgetauscht (NEIN-Route bei Schritt
J5 zu Schritt J7). Weitere Einzelheiten zu dem Prozeß des Austauschens
von Blättern
oder Knoten enthalten die Schritte C1 bis C9 im Flußdiagramm,
das unter Bezugnahme auf 37 in
der zweiten Ausführungsform
beschrieben worden ist.
-
Die Kontextaktualisierungseinheit 206A sondert
die ältesten
Daten aus (Daten, die in der Vordatenhalteeinheit 200A-n gehalten
werden) und fügt das
decodierte Symbol K als Kontext in die Vordatenhalteeinheit 200A-1 ein,
um es einzutragen, um die Kontextzeichenkette PO zu aktualisieren
(Schritt J8).
-
Dann wird geprüft, ob das Decodieren aller Daten
beendet ist oder nicht (Schritt J9). Falls es nicht beendet ist,
wird der Prozeß ab
Schritt J2 wiederholt (NEIN-Route bei Schritt J9 zu Schritt J2). Falls
es beendet ist, ist der Decodierprozeß vollendet (JA-Route bei Schritt
J9).
-
Genauso wie bei dem oben angegebenen Beispiel
des Codierers ist die Ordnung des Prozesses zum Austauschen von
Knoten (bei Schritt J7) und des Prozesses zum Aktualisieren des
Kontextes (bei Schritt J8) nicht auf das obige Beispiel begrenzt.
Der Kontextaktualisierungsprozeß (Schritt
J8) kann vor dem Knotenrekombinationsprozeß (Schritt J7) ausgeführt werden,
oder beide Prozesse können
parallel ausgeführt
werden.
-
In der Datenwiederherstellungsvorrichtung gemäß der ersten
Abwandlung der zweiten Ausführungsform
dieser Erfin dung wird ein Escape-Code (ESC) im voraus in einen Codebaum
eingetragen, der bedeutet, daß kein
Symbol eingetragen ist. Falls ein decodiertes Symbol der Escape-Code
ist, wird ein Kontext verkürzt
(geändert),
bis ein Code ohne den Escape-Code
(das heißt,
ein zu decodierender Code eines Symbols) decodiert wird und ein
zu decodierender Code des Symbols gesucht wird. Demzufolge ist es
nicht erforderlich, im voraus alle Kombinationen von Symbolen (Kontexten),
die als Eingangsdaten auftreten, in den Codebaum einzutragen, so
daß ein Volumen
eines Speichers, der verwendet wird, um die Kontexte darin einzutragen,
außerordentlich
reduziert werden kann.
-
Solange ein decodiertes Symbol ein
Escape-Code ist, wird bei dem Splay-Prozeß eine Codelänge des
Escape-Codes auf die Hälfte
verringert. Dadurch kann eine Zeitperiode, die benötigt wird,
bis ein Kontext, der das zu decodierende Symbol enthält, gefunden
ist und das Symbol decodiert ist, verringert werden, wodurch eine
Verarbeitungsrate bei der Datendekomprimierung in hohem Maße erhöht werden kann
und eine Verarbeitungslast auf der Datendekomprimierungsvorrichtung
in hohem Maße
verringert werden kann.
-
(b-2) Beschreibung der
zweiten Abwandlung der zweiten Ausführungsform der Erfindung
-
Die nächste Beschreibung betrifft
eine zweite Abwandlung der zweiten Ausführungsform dieser Erfindung.
-
(1) Beschreibung des Codierers
-
46 zeigt
eine interne Struktur einer Datenkomprimierungsvorrichtung 3 als
zweite Abwandlung gemäß der zweiten
Ausführungsform
dieser Erfindung. Wie in 46 gezeigt,
hat die Datenkomprimierungsvorrichtung 3 gemäß dieser
Ausführungsform
eine Codeeintrageinheit 112A zusätzlich zu den Elementen, die
bei der ersten Abwandlung der zweiten Ausführungsform unter Bezugnahme
auf 38 beschrieben
worden sind.
-
Deshalb wird die Beschreibung der
Elemente von 46, die
dieselben wie jene von 33 sind,
hier weggelassen.
-
Die Codeeintrageinheit 112A trägt Daten
K in einen Codebaum ein, falls die Eingangsdaten K in dem Codebaum
nicht gespeichert sind.
-
Bei der obigen Struktur kann die
Codeeintrageinheit 112A die Daten K in den Codebaum eintragen,
falls die Eingangsdaten K in dem Codebaum nicht gespeichert sind.
-
Als nächstes wird die obige Operation
unter Bezugnahme auf die Schritte K1 bis K12 beschrieben, die in 47 gezeigt sind. Die in 47 gezeigten Prozesse,
den Schritt K8 ausgenommen, sind jedoch genau dieselben wie die
Schritte H1 bis H11, die unter Bezugnahme auf das Flußdiagramm
von 43 bei der ersten
Abwandlung gemäß der zweiten
Ausführungsform
beschrieben worden sind.
-
Mit anderen Worten, derselbe Prozeß wie der
Prozeß bei
den Schritten H1 bis H7 in 43 wird
bei den Schritten K1 bis K7 in dieser Ausführungsform ausgeführt, wonach
ein Prozeß bei
Schritt K8 ausgeführt
wird.
-
Genauer gesagt, falls die Kontextunterscheidungseinheit 108A entscheidet,
daß das
Symbol K nicht in dem Codebaum gespeichert ist (NEIN-Route bei Schritt
K4), aktualisiert die Codebaumaktualisierungseinheit 105A einen
Code des ESC durch Austauschen eines Blattes des ESC gegen ein anderes Blatt
oder einen internen Knoten an dem Codebaum (Schritt K6). Die Kontextverlaufshalteeinheit 101A sendet
einen gegenwärtigen
Kontext P zu der Codeeintrageinheit 112A. Die Kontextänderungseinheit 110A verändert den
Grad des Kontextes P in den nächst
niedrigeren Grad, um ihn zu ändern (Schritt K7).
Deshalb trägt
die Codeeintrageinheit 112A das Symbol K in den Codebaum
ein (Schritt K8).
-
Falls bei Schritt K4 entschieden
wird, daß das
Ereignis K in dem Kontextbaum gespeichert ist, wird derselbe Prozeß wie der
obengenannte Prozeß bei
den Schritten H8 bis H11, die in 43 gezeigt sind,
bei den Schritten K9 bis K12 ausgeführt.
-
Die Datenkomprimierungsvorrichtung
gemäß der zweiten
Abwandlung der zweiten Ausführungsform
dieser Erfindung kann denselben Effekt wie der Codierer gemäß der ersten
Abwandlung der zweiten Ausführungsform
vorsehen, da die Schritte dieser Abwandlung außer Schritt K8 genau dieselben wie
die Schritte des Prozesses in dem Codierer gemäß der ersten Abwandlung der
zweiten Ausführungsform
sind.
-
Wie oben angegeben, wird es durch
Vorsehen von Schritt 8 möglich, ein Symbol in den Codebaum
einzutragen, während
ein Escape-Code codiert wird, so daß ein Symbol, das nicht im
voraus gespeichert wurde, in einem frühen Stadium (in einem höheren Grad)
beim nächsten
Codieren codiert werden kann. Dadurch kann der Komprimierungseffekt mit
fortschreitender Codierung mehr verstärkt werden.
-
(2) Beschreibung des Decodierers
-
48 zeigt
eine interne Struktur einer Datendekomprimierungsvorrichtung 4 gemäß einer zweiten
Abwandlung der zweiten Ausführungsform dieser
Erfindung. Wie in 48 gezeigt,
hat die Datendekomprimierungsvorrichtung 4 eine Codeeintrageinheit 212A zusätzlich zu
den Elementen des Dekomprimierers gemäß der ersten Abwandlung der zweiten
Ausführungsform,
die unter Bezugnahme auf 44 beschrieben
worden sind. Die Codeeintrageinheit 212A ist entsprechend
der Struktur des Codierers vorgesehen (siehe 46).
-
Deshalb wird die Beschreibung der
Elemente von 48, die
dieselben wie jene von 44 sind,
hier weggelassen.
-
Wenn ein ESC (Escape-Code) bei dem
Decodierprozeß von
Daten, die in dem Codierer codiert worden sind, decodiert wird,
trägt die
Codeeintrageinheit 212A einen Code dieser decodierten Daten
in alle Codebäume
ein, die einem Kontext entsprechen.
-
Zusätzlich zu der Operation des
in 44 gezeigten Dekomprimierers
trägt die
Codeeintrageinheit 212A einen Code von decodierten Daten
K in alle Codebäume
ein, die dem Kontext entsprechen, wenn ein Escape-Code beim Decodieren
der codierten Daten K decodiert wird.
-
Als nächstes wird die obige Operation
unter Bezugnahme auf die Schritte L1 bis L10 in 49 eingehender beschrieben.
-
Wie in 49 gezeigt, wird bei den Schritten L1
bis L4 ein Prozeß ausgeführt, der
dem Prozeß bei den
Schritten J1 bis J4 ähnlich
ist, der unter Bezugnahme auf 45 beschrieben
worden ist und in dem Dekomprimierer gemäß der ersten Abwandlung der
zweiten Ausführungsform
ausgeführt
wird.
-
Bei Schritt L4 tauscht die Codebaumaktualisierungseinheit 205A,
nachdem die Decodiereinheit 204A einen Code decodiert hat,
ein Blatt des decodierten Symbols K gegen ein anderes Blatt oder
einen internen Knoten aus (Schritt L5).
-
Falls der ESC (der Escape-Code) in
der Vergangenheit decodiert worden ist und die Codebaumaktualisierungseinheit 205A ein
ESC-Signal von der Decodiereinheit 204A zu diesem Zeitpunkt empfangen
hat, trägt
die Codebaumaktualisierungseinheit 205A das Symbol K in
alle Codebäume
ein, in denen dieser ESC gespeichert worden ist (Schritt L6).
-
Es wird entschieden, ob das decodierte
Symbol K ein ESC ist oder nicht (Schritt L7). Falls das decodierte
Symbol K ein ESC ist, wird ein ESC-Signal, das angibt, daß das decodierte
Symbol K ein ESC ist, zu der Kontextaktualisierungseinheit 210A und
der Codeeintrageinheit 212A gesendet. Die Kontextänderungseinheit 210A,
die dieses ESC-Signal empfangen hat, ändert den Grad des Kontextes
P in den nächst
niedrigeren Grad, um ihn abzuändern (JA-Route
bei Schritt L7 zu Schritt L8). Die Prozedur kehrt dann zu Schritt
L3 zurück,
und der Prozeß wird wiederholt,
bis das Symbol K ohne einen ESC decodiert ist.
-
Wie auf obige Weise erzeugt dann,
falls das Symbol K, das in der Decodiereinheit 204A decodiert wird,
ein ESC ist, die Codeeintrageinheit 212A ein neues Blatt
an dem Codebaum. Falls die Decodiereinheit 204A das Symbol
K ohne einen ESC decodiert, wird dieses Symbol K in allen neu erzeugten Blättern gespeichert,
wodurch das genannte Symbol in alle Codebäume eingetragen werden kann,
in denen der ESC decodiert worden ist.
-
Falls das Symbol K kein ESC bei dem
obigen Schritt L7 ist, sondert die Kontextaktualisierungseinheit 206A die ältesten
Daten aus (Daten, die in der Vordatenhalteeinheit 200A-n gehalten
werden) und trägt
das decodierte Symbol K als Kontext in die Vordatenhalteeinheit 200A-1 ein,
um die Kontextzeichenkette PO zu aktualisieren (Schritt L9).
-
Dann wird geprüft, ob alle Daten decodiert worden
sind oder nicht (Schritt L10). Falls sie nicht decodiert worden
sind, wird der Prozeß ab
Schritt L2 wiederholt (NEIN-Route bei Schritt L10). Falls sie decodiert
sind, ist der Decodierprozeß vollendet (JA-Route
bei Schritt L10).
-
Falls die Decodiereinheit 204A einen
ESC decodiert, trägt
die Codebaumeintrageinheit 212A, wie oben angegeben, das
Symbol K in den Codebaum in dem Decodierer neu ein, genauso wie
in dem Codierer.
-
Die Datenwiederherstellungsvorrichtung
gemäß der zweiten
Abwandlung der zweiten Ausführungsform
dieser Erfindung kann denselben Effekt wie der Decodierer gemäß der ersten
Abwandlung der zweiten Ausführungsform
ergeben. Zusätzlich dazu
wird ein Code eines Symbols, der zu decodieren ist, in den Codebaum
eingetragen, während
ein Code eines Escape-Codes
decodiert wird, so daß ein Symbol,
das in dem Codebaum nicht gespeichert worden ist, in einem frühen Stadium
beim nächsten Decodieren
decodiert werden kann, genauso wie in dem Codierer. Dies gestattet
eine Verstärkung
des Dekomprimierungseffektes, wenn der Decodierprozeß an Daten,
wie beispielsweise Zeichen, weiter voranschreitet, und eine weitgehende
Reduzierung einer Verarbeitungslast auf der Datendekomprimierungsvorrichtung.
-
(b-3) Beschreibung der
dritten Abwandlung der zweiten Ausführungsform
-
Als nächstes folgt die Beschreibung
einer dritten Abwandlung gemäß der zweiten
Ausführungsform
dieser Erfindung.
-
(1) Beschreibung des Codierers
-
In einer Datenkomprimierungsvorrichtung 3 gemäß der dritten
Abwandlung dieser Ausführungsform
trägt die
Kontextänderungseinheit 110A als
Verlaufseintragmittel, anders als bei der oben beschriebenen zweiten
Abwandlung der zweiten Ausführungsform,
falls ein ESC während
des Codierens der Daten K auch nur einmal decodiert wird, eine Kombination
aus einem Kontext unmittelbar vor dem Codieren dieser Daten und
diesen Daten in die Kontextverlaufshalteeinheit 101A ein,
und die Codeeintrageinheit 112A trägt die Daten neu in den Codebaum
ein, der einen Escape-Code hat, der unmittelbar vor dem Codieren
dieser Daten decodiert wurde.
-
Unter Bezugnahme auf die Schritte
M1 bis M13, die in 50 gezeigt
sind, wird die obige Operation als nächstes eingehender beschrieben.
-
Wie in 50 gezeigt, ist ein Prozeß bei den Schritten
M1 bis M9 den Schritten H1 bis H9 von 43 gemäß der ersten Abwandlung der
zweiten Ausführungsform ähnlich.
-
Falls das Symbol K der Eingangsdaten
in dem Kontext P gespeichert ist (JA-Route bei Schritt M4), geht
die Prozedur über
Schritt M8 zu Schritt M9 über,
wo der Codebaum umgeformt wird. Danach wird geprüft, ob das Symbol K, das durch
die Decodiereinheit 104 bei Schritt M8 codiert wurde, ein
ESC ist oder nicht (Schritt M10).
-
Falls das codierte Symbol K ein ESC
ist, trägt die
Codeeintrageinheit 112A das Symbol K in einen Codebaum
ein, der dem Kontext P' unmittelbar
vor dem Codieren des Symbols K entspricht (JA-Route bei Schritt
M10 zu Schritt M11). Die Kontextaktualisierungseinheit 106A trägt den Kontext
P mit dem Symbol K als letzten Kontext in die Vordatenhalteeinheit 100A-1 ein.
-
Gemäß diesen Informationen fügt die Kontextänderungseinheit 110A die
Daten K in die Kontextzeichenkette PO ein, um sie zu aktualisieren (Schritt
M12), und trägt
sie in die Kontextverlaufshalteeinheit 101A ein.
-
Da die Daten K in den Codebaum des
Kontextes P' unmittelbar
vor dem Codieren der Daten K bei Schritt M11 (das heißt, ein
zuletzt codierter Kontext) gespeichert werden, trägt nämlich die
Kontextänderungseinheit 106A eine
Kombination aus den Daten K und dem Kontext P' unmittelbar vor dem Codieren der Daten
K in die Kontextverlaufshalteeinheit 101A ein.
-
Falls das codierte Symbol K kein
ESC ist (NEIN-Route bei Schritt M10), überspringt die Prozedur den
Schritt M11 und geht zu dem obigen Schritt M12 über.
-
Dann wird geprüft, ob das Decodieren aller Daten
beendet ist oder nicht (Schritt M13). Falls es nicht beendet ist
(NEIN-Route bei Schritt M13), kehrt der Prozeß zu Schritt M2 zurück, und
der Prozeß wird wiederholt,
bis das Codieren aller Daten beendet ist. Falls es beendet ist,
ist der Codierprozeß vollendet (JA-Route
bei Schritt M13).
-
Die Datenkomprimierungsvorrichtung
gemäß der dritten
Abwandlung der zweiten Ausführungsform
dieser Erfindung kann, wie oben angegeben, denselben Effekt wie
der Codierer gemäß der zweiten
Abwandlung der zweiten Ausführungsform ergeben.
Zusätzlich
dazu wird dann, falls ein Symbol in einem zuvor eingetragenen Kontext
nicht enthalten ist, dieses Symbol nur in einen Codebaum eines Escape-Codes
eingetragen, der zuletzt codiert wurde, so daß ein Volumen eines Speichers,
der zum Eintragen von neuem Kontext verwendet wird, außerordentlich
reduziert werden kann. Dadurch kann eine Leistung der Datenkomprimierungsvorrichtung
in hohem Maße
verbessert werden.
-
Ferner wird ein Knoten eines Codebaums
eines neu eingetragenen Symbols immer dann ausgetauscht, wenn dasselbe
Symbol später
eingetragen wird, um die Codelänge
(bei dem Splay-Prozeß)
zu verkürzen.
Deshalb ist es möglich,
eine Codelänge eines
Codes nur eines Symbols, das tatsächlich häufig auftritt, zu verkürzen. Dadurch
kann der Komprimierungseffekt der Datenkomprimierungsvorrichtung außerordentlich
verbessert werden.
-
(2) Beschreibung des Decodierers
-
In der Datendekomprimierungsvorrichtung gemäß der dritten
Abwandlung dieser Ausführungsform
trägt die
Kontextänderungseinheit 210A als
Verlaufseintragmittel, anders als bei der Datendekomprimierungsvorrichtung,
die in 48 gezeigt ist,
einen Kontext zu der Zeit des letzten Decodierens eines ESC (eines
Escape-Codes) bei dem Decodierprozeß der codierten Daten K, die
in dem Codierer codiert worden sind, und die Daten K in der Kontextverlaufshalteeinheit 201A ein,
und die Codeeintrageinheit 212A trägt einen Code der Daten K in
einen Codebaum ein, der dem Kontext zu der Zeit des letzten Decodierens
des ESC bei dem Decodierprozeß der Daten
K entspricht.
-
Als nächstes wird die obige Operation
unter Bezugnahme auf die Schritte N1 bis N10 in 51 eingehender beschrieben.
-
Wie in 51 gezeigt, ist ein Prozeß bei Schritt
N1 bis N5 jenem bei den Schritten K1 bis K5 ähnlich, die in 49 gezeigt sind und in Verbindung mit
dem obigen Dekomprimierer gemäß der zweiten Abwandlung
der zweiten Ausführungsform
beschrieben worden sind.
-
In dem Dekomprimierer gemäß dieser
Ausführungsform
wird ein Blatt des Symbols K, das bei Schritt N5 decodiert worden
ist, gegen ein anderes Blatt oder einen internen Knoten ausgetauscht,
und dann wird geprüft,
ob das decodierte Symbol K ein ESC ist oder nicht (Schritt N6).
-
Falls das decodierte Symbol K ein
ESC ist, wird die Zahl des Grades des Kontextes P geändert (JA-Route
bei Schritt N6 zu Schritt N7). Der Prozeß kehrt zu Schritt N3 zurück, und
der Prozeß wird
wiederholt, bis das Symbol K ohne einen ESC decodiert wird.
-
Falls das decodierte Symbol K kein
ESC ist, erzeugt die Codebaumaktualisierungseinheit 205A ein
neues Blatt nur an einem Codebaum, in dem ein ESC unmittelbar zuvor
decodiert worden ist. Die Codebaumeintrageinheit 212A trägt das Symbol
K in das neue Blatt an diesem Codebaum ein (NEIN-Route bei Schritt
N6 zu Schritt N8).
-
Die Kontextaktualisierungseinheit 206A sondert
die ältesten
Daten aus (Daten, die in der Vordatenhalteeinheit
200A-n gehalten
werden) und trägt das
decodierte Symbol K als Kontext in die Vordatenhalteeinheit 200A-1 ein,
um die Kontextzeichenkette PO zu aktualisieren (Schritt N9).
-
Es wird geprüft, ob das Decodieren aller
Daten beendet ist oder nicht (Schritt N10). Falls es nicht beendet
ist, wird der Prozeß ab
Schritt N2 wiederholt (NEIN-Route bei Schritt N10 zu Schritt N2).
Falls es beendet ist, ist der Decodierprozeß vollendet.
-
Die Datendekomprimierungsvorrichtung
gemäß der dritten
Abwandlung der zweiten Ausführungsform
ergibt denselben Effekt wie der Dekomprimierer gemäß der zweiten
Abwandlung der zweiten Ausführungsform.
Zusätzlich
dazu wird dann, falls ein Symbol nicht in einem zuvor eingetragenen
Kontext enthalten ist, ein Code dieses Symbols nur in einen Codebaum
eines Escape-Codes neu eingetragen, der zuletzt decodiert worden
ist, so daß immer nur
ein Eintrag für
ein Symbol erforderlich ist. Dadurch kann ein Volumen eines Speichers,
der zum Verwalten von Knoten-IDs zum Eintragen von Codes von neuen
Symbolen verwendet wird, außerordentlich
reduziert werden, wodurch die Leistung der Datendekomprimierungsvorrichtung
in hohem Maße verbessert
wird.
-
Ferner wird ein Knoten an dem Codebaum, in
dem ein neues Symbol gespeichert ist, immer dann ausgetauscht, wenn
dasselbe Symbol später
eingetragen wird, um die Codelänge
(bei dem Splay-Prozeß)
zu verringern, so daß nur
ein Symbol, das tatsächlich
häufig
auftritt, einen Code mit kürzerer
Länge haben
kann. Dadurch kann der Dekomprimierungseffekt der Datendekomprimierungsvorrichtung außerordentlich
verstärkt
werden.
-
(3) Beschreibung der dritten
Ausführungsform
der Erfindung
-
Als nächstes folgt die Beschreibung
einer dritten Ausführungsform
dieser Erfindung. Eine Datenkomprimierungsvor richtung und eine Datendekomprimierungsvorrichtung
gemäß dieser
Ausführungsform
dienen zum Ausführen
des Datenkomprimierungsverfahrens und des Datendekomprimierungsverfahrens
dieser Erfindung, wie in 32 gezeigt,
genauso wie bei der zweiten Ausführungsform.
-
Genauso wie bei der zweiten Ausführungsform
wird die Datenkomprimierungsvorrichtung als Codierer bezeichnet
und wird die Datendekomprimierungsvorrichtung als Dekomprimierer
bezeichnet. Ein Kontextbaum und ein Codebaum, die in der folgenden
Beschreibung vorkommen, haben dieselben Strukturen wie jene gemäß der ersten
Ausführungsform.
-
(1) Beschreibung des Codierers
-
52 ist
ein Blockdiagramm, das eine interne Struktur einer Datenkomprimierungsvorrichtung 3 zeigt
(siehe 32), die dazu
dient, ein Datenkomprimierungsverfahren gemäß der dritten Ausführungsform
dieser Erfindung auszuführen.
In 52 bezeichnet Bezugszeichen 301B eine
Codebaumhalteeinheit, bezeichnet 302B eine Kontextbaumhalteeinheit,
bezeichnet 303B eine Kontexteintrageinheit, bezeichnet 305B eine
Kontextänderungseinheit,
bezeichnet 306B eine Codiereinheit, bezeichnet 307B eine
Codeänderungseinheit,
bezeichnet 321B eine Kontexthalteeinheit und bezeichnet 322B eine
Codeeintrageinheit.
-
Die Codebaumhalteeinheit (ein Codebaumhaltemittel) 301B hält einen
Codebaum, in dem ein Escape-Code (ESC) im voraus eingetragen wurde (das
heißt,
Daten, die bedeuten, daß Daten
nicht eingetragen sind). Die Kontextbaumhalteeinheit (ein Kontextbaumhaltemittel) 302B hält einen
Kontextbaum, in dem eine Kombination aus einem Symbol K (Eingangsdaten)
und einem Kontext eingetragen ist.
-
Die Kontexteintrageinheit (ein Kontexteintragmittel) 303B trägt das Symbol
K neu in einen Kontextbaum ein, nach dem der Escape-Code codiert worden
ist. Die Kontextbaumhalteeinheit 321B hält temporär das eingegebene Symbol K.
-
Nachdem der Escape-Code codiert worden ist,
verzweigt die Kontexteintrageinheit (ein Codeeintragmittel) 322B ein
Blatt (einen Punkt, um Daten darin zu speichern) des Escape-Codes an dem Codebaum,
der in der Codebaumhalteeinheit (dem Codebaumhaltemittel) 301B gehalten
wird, um das Symbol K neu einzutragen.
-
Zu diesem Zweck enthält die Codeeintrageinheit 322B eine
Erzeugungseinheit von neuen Knoten-IDs 61, eine Verriegelung 62 und
eine Elterninformationsaktualisierungseinheit 63, die später unter Bezugnahme
auf 53 beschrieben
sind. Im Inneren der Codebaumhalteeinheit 301B sind eine
Halteinheit von externen Knoten (Blatt-IDs) 64, eine Halteeinheit
von internen Knoten (Knoten-IDs) 65, eine ESC-ID-Halteeinheit 66 und
eine Codebaumverwaltungseinheit 67 vorgesehen.
-
Die Kontextänderungseinheit 305B ändert einen
Kontext, falls eine Kombination aus einem Symbol K und einem Kontext
nicht in dem Kontextbaum gehalten wird.
-
Die Codiereinheit 306B gibt
einen Code, der mit "1" und "0" ausgedrückt wird, gemäß einer
Gabelung von einem oberen Ende des Codebaums zu einem Blatt aus,
in dem das Symbol K oder ein Escape-Code gespeichert ist.
-
Die Codeaktualisierungseinheit 307B tauscht
Blätter,
in denen das codierte Symbol K und ein Escape-Code gespeichert sind,
gegen andere Blätter
oder einen internen Knoten aus.
-
Wie in 53 gezeigt, erzeugt im Inneren der Codeeintrageinheit 322B die
Erzeugungseinheit von neuen Knoten-IDs 61 zwei neue Knoten-IDs (ID-1,
ID-2), wenn sie ein Aktualisierungssignal von der Kontexthalteeinheit 302B empfängt. Die
Verriegelung 62 hält
temporär
ein ID (ESC-ID) eines Escape-Codes.
-
Die Elterninformationsaktualisierungseinheit 63 empfängt Elterninformationen,
die aus drei Arten von Informationen (ESC-ID, ID-1 und ID-2) gebildet sind,
ein Knoten-ID eines Knotens höheren
Grades, der ein Objekt des Prozesses ist, ein Knoten-ID eines Knotens
niedrigeren Grades, der auf der unteren rechten Seite liegt, und
ein Knoten-ID eines Knotens niedrigeren Grades, der auf der unteren
linken Seite liegt, aktualisiert diese Elterninformationen und sendet
sie zu der Codebaumhalteeinheit 301B.
-
In der Codebaumhalteeinheit 301B hält die Halteeinheit
von externen Knoten (Blatt-IDs) 64 Blatt-IDs von Blättern an
einem Codebaum, worin jeweils Daten gespeichert sind, hält die Halteeinheit von
internen Knoten (Knoten-IDs) 65 Knoten-IDs von Knoten eines Codebaums und hält die ESC-ID-Halteeinheit 66 einen
Escape-Code eines Codebaums und ein ID dieses Escape-Codes.
-
Die Codebaumverwaltungseinheit 67 empfängt ein
Kontext-ID von der
Codebaumhalteeinheit 302B und sendet dieses Kontext-ID
zu der Halteeinheit von externen Knoten (Blatt-IDs) 64, der Halteeinheit von
internen Knoten (Knoten-IDs) 65 und der ESC-ID-Halteeinheit 66.
-
In der Datenkomprimierungsvorrichtung 3 mit
der obigen Struktur gemäß der dritten
Ausführungsform
dieser Erfindung hält
die Codehalteeinheit 301B einen Codebaum, in dem ein Escape-Code
im voraus gespeichert ist, hält
die Kontextbaumhalteeinheit 302B einen Kontextbaum, in
dem eine Kombination aus einem Symbol K und einem Kontext P gespeichert
ist, und decodiert die Kontexteintrageinheit 303B den Escape-Code
und trägt
dann das Symbol K in den Kontextbaum neu ein.
-
Die Kontexthalteeinheit 321B hält temporär den Kontext
P. Die Codeeintrageinheit 322B codiert dann den Codebaum,
verzweigt ein Blatt des Escape-Codes an dem Codebaum und trägt das Symbol K
neu ein.
-
Die Kontextänderungseinheit 305B ändert den
Kontext P, falls eine Kombination aus dem eingegebenen Signal K
und dem Kontext P in dem Kontextbaum nicht gespeichert ist.
-
Die Codiereinheit 306B gibt
einen Code gemäß der Gabelung
eines Weges von einem oberen Ende des Codebaums zu einem Blatt aus,
in dem Eingangsdaten oder ein Escape-Code gespeichert sind. Die
Codeaktualisierungseinheit 307B tauscht Blätter, in
denen codierte Daten und ein Escape-Code gespeichert sind, gegen
andere Blätter
oder einen Knoten aus.
-
57(a) zeigt
ein Beispiel für
einen Codebaum, während 57(b) ein Beispiel für einen
Kontextbaum zeigt. Wie in 57(a) gezeigt,
hat der Codebaum ID-Nummern (0– 10)
von einer Wurzel und von Knoten als interne Knoten und von Blättern als externe
Knoten.
-
Andererseits hat der Kontextbaum,
wie in 57(b) gezeigt,
ein ID eines Kontextes und ID-Nummern von Symbolen, die in den Kontext
eingetragen worden sind. Die ID-Nummer des Kontextes ist mit einer
ID-Nummer einer Wurzel des Codebaums identisch, und die ID-Nummern
der Symbole sind mit der ID-Nummer von jeweiligen Blättern identisch.
-
Die obige Operation wird als nächstes unter Bezugnahme
auf die Schritte P1 bis P16, die eine Operation des Dekomprimierers
gemäß dieser
Erfindung darstellen, der in 54 bis 56 gezeigt ist, eingehender
beschrieben.
-
In der folgenden Beschreibung der
Operation wird angenommen, daß der
Codebaum und der Kontextbaum die oben beschriebenen Strukturen haben.
-
Wie in 54 gezeigt, wird dann, wenn ein Symbol
K eingegeben wird (Schritt P1), ein Kontext P, der in der Kontexthalteeinheit 321B gehalten
wird, an die Kontextänderungseinheit 305B ausgegeben (Schritt
P2).
-
Die Kontextänderungseinheit 305B empfängt den
Kontext P und das Symbol K und trifft die Entscheidung, ob das Symbol
K in dem Kontext P gespeichert ist oder nicht. Falls das Symbol
K nicht in dem Kontext P gespeichert ist, gibt die Kontextbaumhalteeinheit 302B ein
Kontextänderungssignal
an die Kontextänderungseinheit 305B aus
(Schritt P3).
-
Die Kontextänderungseinheit 305B sondert als
Antwort auf das Kontextänderungssignal
ein Zeichen des höchsten
Grades aus (das heißt,
ein Blatt, das von der Wurzel an dem Kontextbaum am weitesten entfernt
ist) und sendet den Kontext P mit dem nächst niedrigeren Grad zu der
Kontextbaumhalteeinheit 302B (Schritt P4).
-
Dieser Prozeß wird wiederholt, bis ein
Kontext P bestimmt wird, in dem das Symbol K gespeichert ist.
-
Wie in 55 gezeigt, sendet die Kontextbaumhalteeinheit 302B ein
ID (Nummer) des Kontextes P und ein ID des Symbols K (oder eines
ESC, falls das Symbol K nicht gespeichert ist) zu der Codiereinheit 306B (Schritt
P5). Die Codiereinheit 306B überträgt das empfangene ID so wie
es ist zu der Codebaumhalteeinheit 301B (Schritt P6).
-
Die Codebaumhalteeinheit 301B sendet
eine ID-Nummer eines Knotens höheren
Grades des empfangenen ID und Informationen darüber, ob das von der Codiereinheit 306B zugeführte ID
auf der linken Seite oder der rechten Seite des Knotens höheren Grades
liegt, zu der Codiereinheit 306B (Schritt P7).
-
Die Codiereinheit 306B gibt "1" als Code aus, falls das ID zum Beispiel
auf der rechten Seite liegt, oder gibt "0" als
Code aus, falls das ID auf der linken Seite liegt, gemäß den Positionsinformationen über einen
Knoten, der das ID hat, das von der Codiereinheit 306B zugeführt wurde
(Schritt P8).
-
Falls das ID des Knotens höheren Grades, das
zusammen mit den obigen Positionsinformationen zugeführt wird,
mit einem ID (Wurzel-ID) des Kontextes P koinzidiert, das von der
Kontexthalteeinheit 302B zugeführt wurde, ist der Codierprozeß vollendet.
-
Falls sie nicht koinzidieren, gibt
die Codiereinheit 306B das ID jenes Kontextes P an die
Codeänderungseinheit 307B aus
(auf derselben Route bei Schritt P6) und erhält ein ID eines Knotens höheren Grades
und dessen Positionsinformationen von der Codebaumhalteeinheit 301B.
-
Der obige Prozeß wird wiederholt, bis eine ID-Nummer
des Knotens höheren
Grades, die von der Codebaumhalteeinheit 301B zugeführt wird,
mit einem ID des Kontextes P koinzidiert.
-
Nach Vollendung dieses Prozesses
empfängt
die Codeänderungseinheit 307B ein
ID des Kontextes P (das heißt,
ein Wurzel-ID des Codebaums) und ein Blatt-ID des codierten Symbols
K von der Codiereinheit 306B (Schritt P9) und tauscht diese Knoten
(bei dem Splay-Prozeß)
aus, um so die Codelänge
zu aktualisieren. Dieser Knotenaustauschprozeß wird auf dieselbe Weise wie
bei der ersten und zweiten Ausführungsform
ausgeführt.
-
In dem Fall, wenn das Symbol K eingegeben und
in dem Kontext P gespeichert worden ist, wird dann, falls das Symbol
K weiter eingegeben wird, ein Knoten des Symbols K, das gespeichert
worden ist, gegen einen Knoten höheren
Grades ausgetauscht, um die Codelänge auf die Hälfte (1/2)
zu reduzieren.
-
Falls das Symbol K nicht in dem obigen
Kontext P gespeichert ist, empfängt
die Kontexteintrageinheit 310B, wie in 56 gezeigt, einen Kontext P, um eingetragen
zu werden, von der Kontextänderungseinheit 305B (Schritt 10).
Einhergehend damit empfängt
die Kontexteintrageinheit 310B das Symbol K (Schritt P11)
und gibt ein ID des eingetragenen Symbols an die Kontexthalteeinheit 302B aus
(Schritt P12). Die Kontexthalteeinheit 302B trägt das Symbol K
unter dem Kontext P neu ein.
-
Andererseits empfängt die Codeeintrageinheit 322B einen
Codebaum, um einen Code darin einzutragen, von der Codebaumhalteeinheit 301B (Schritt
P13). Die Codeeintrageinheit 322B empfängt auch das Symbol K, um eingetragen
zu werden, und ein ID des Symbols, um eingetragen zu werden, von der
Kontextbaumhalteeinheit 302B (Schritte P14 und P15), trägt das Symbol
K in den Codebaum neu ein und speichert es wieder in der Codebaumhalteeinheit 301B (Schritt
P16).
-
Wie oben angegeben, wird das Symbol,
das nicht in den Kontext P eingetragen worden ist, eingetragen (codiert).
-
Die Operation der Codeeintrageinheit 322B, um
den Escape-Code zu codieren und ein Blatt des Escape-Codes eines
Codebaums zu verzweigen, der in der Codebaumhalteeinheit 301B gehalten
wird, um das Symbol K neu einzutragen (bei den Schritten P13 bis
P16), wird unter Bezugnahme auf 53 als nächstes eingehender
beschrieben.
-
Zunächst empfängt die Codebaumverwaltungseinheit 67,
die in der Codebaumhalteeinheit 301B vorgesehen ist, ein
Kontext-ID und sendet eine ESC-Adresse des Kontextes an die ESC-ID-Halteeinheit.
-
Die ESC-ID-Halteeinheit 66 empfängt die ESC-Adresse
und gibt ein ID des ESC und ein Symbol (einen ESC in diesem Fall),
das an diesem ID gespeichert ist, aus. Die Codeeintrageinheit 322B bewirkt,
daß die
Verriegelung 62 das ESC-ID und den ESC verriegelt.
-
Die Erzeugungseinheit von neuen IDs 61 sendet
zwei ID-Nummern
(ID-1 und ID-2) als Antwort auf ein Aktualisierungssignal. Ein ID-1
ward zusammen mit dem ESC, der als neues ESC-ID in der ESC-ID-Halteeinheit 66 verriegelt
wurde, in der Codebaumhalteeinheit 301B gespeichert.
-
In dem Codebaum sind IDs und Elterninformationen
gespeichert, die Positionsinformationen der IDs darstellen. Diese
Elterninformationen sind aus drei Arten von Informationen gebildet,
das heißt, aus
einem eigenen ID eines Knotens höheren
Grades, einem Knoten-ID, das auf der unteren rechten Seite von seinem
eigenen liegt, und einem Knoten-ID, das auf der unteren linken Seite
von seinem eigenen liegt.
-
Die Elterninformationsaktualisierungseinheit 63 aktualisiert
die Elterninformationen als Antwort auf die drei IDs (das heißt, das
ESC-ID, das ID-1 und das ID-2 vor der Änderung). Genauer gesagt, es
werden Informationen eingetragen, das heißt, das ESC-ID wird als ID
höheren
Grades des ID-1 und ID-2 eingetragen, das ID-1 wird auf der unteren
rechten Seite des ESC-ID positioniert, und das ID-2 wird auf der unteren
linken Seite des ESC-ID positioniert.
-
Die Elterninformationen werden zusammen mit
jedem ID in der Knoten-ID-Halteeinheit 65 der Codebaumhalteeinheit 301B gespeichert.
-
Andererseits werden ein eingetragenes Symbol
und ein neues ID (ID-2) in der Blatt-ID-Halteeinheit 64 der
Codebaumhalteeinheit 301B eingetragen.
-
Durch den obigen Prozeß wird das
neue ESC-ID (ID-1) für
den ESC eingetragen, wird das alte ESC-ID als Knoten-ID zusammen
mit den Elterninformationen in der Knoten-ID-Halteeinheit gehalten, werden
das neue ID (ID-2) und das Symbol K als neues Blatt in der Blatt-ID-Halteeinheit
gehalten und wird das Symbol K durch Verzweigen eines Blattes an
dem Codebaum eingetragen, der in der Codebaumhalteeinheit 301B gehalten
wird und in dem der Escape-Code gespeichert ist. Damit ist ein Prozeß zum Neueintragen
des Symbols K vollendet.
-
Die Operation, die unter Bezugnahme
auf 53 bis 56 beschrieben worden ist,
wird als Flußdiagramm
in 58 zusammengefaßt.
-
Zuerst wird "0" für einen
Kontext P0 eingegeben, und der Kontext P0 wird initialisiert (Schritt Q1). Der Kontext
P0 wird als Variable für einen Kontext P eingegeben
(Schritt Q2). Übrigens
ist der Kontext P0 ein Zeichen (Symbol),
das unmittelbar zuvor eingegeben und codiert worden ist. Falls zum
Beispiel ein Codieren gemäß dieser
Ausführungsform
ein Modell unter Verwendung eines Kontextes n-ten Grades ist, werden
(n-1) Zeichen, die bis unmittelbar zuvor eingegeben und codiert
worden sind, in dem Kontext P0 gespeichert.
-
Wenn das Symbol K eingegeben wird,
wird eine Suche danach ausgeführt,
ob das Symbol K in dem Kontextbaum des Kontextes P gespeichert ist (Schritt
Q3).
-
Falls das Symbol K nicht in dem Kontextbaum
des Kontextes P gespeichert ist, wird ein Code eines ESC (ein Escape-Code) ausgegeben (NEIN-Route
bei Schritt Q3 zu Schritt Q4), und ein Blatt, in dem der ESC eines
Codebaums entsprechend dem Kontext P vorhanden ist, wird bei der Splay-Operation
verarbeitet (Schritt Q5).
-
Dann wird ein Blatt des obigen ESC
verzweigt (Schritt Q6). Der ESC und das Symbol K werden in jeweilige
neue Blätter
eingetragen, die durch das Verzweigen erhalten wurden (Schritt Q7).
Das Symbol K wird auch in den Kontextbaum des Kontextes P eingetragen.
-
Nachdem das Symbol K wie oben eingetragen
worden ist, wird ferner das älteste
Zeichen in dem Kontext P ausgesondert. Als nächstes wird ein Kontext P,
der den nächst
niedrigeren Grad hat, als Kontext P neu zugeordnet, um den Kontext
P zu ändern
(Schritt Q8).
-
Durch Rückkehr zu Schritt Q3 wird der
Prozeß zum
sukzessiven Ändern
des Kontextes P fortgesetzt, bis festge stellt wird, daß das Symbol
K in dem Kontext P gespeichert ist.
-
Falls das Symbol K in dem Kontextbaum
des Kontextes P gespeichert ist, wird ein Code des Symbols K ausgegeben
(JA-Route bei Schritt
Q3 zu Schritt Q9), und ein Blatt eines Codebaums, in dem das Symbol
K entsprechend diesem Kontext P gespeichert ist, wird bei der Splay-Operation
verarbeitet (Schritt Q10).
-
Nach dem Codieren des Symbols K wird
das Symbol K zusätzlich
in den Kontext P0 eingetragen, um den Kontext
P0 zu aktualisieren (Schritt Q11). (Zum
Beispiel wird das Symbol K zusätzlich
zu dem Kontext P0 hinzugefügt, und
das älteste
Zeichen in dem Kontext P0 wird ausgesondert.)
-
Dann wird geprüft, ob das Codieren aller Zeichen
(Symbole) beendet ist oder nicht (Schritt Q12). Falls es nicht beendet
ist (NEIN-Route bei Schritt Q12), kehrt der Prozeß zu Schritt
Q2 zurück,
und der Prozeß wird
wiederholt, bis das Codieren aller Zeichen beendet ist.
-
Bei dem obigen Prozeß, der in 58 gezeigt ist, wird ein
Blatt eines ESC bei der Splay-Operation verarbeitet, nachdem der
ESC und das Symbol K eingetragen worden sind. Die Ordnung von diesem Prozeß kann umgekehrt
ausgeführt
werden. In diesem Fall sind die Verarbeitungsschritte so wie in 59 gezeigt.
-
Die Prozesse bei den Schritten R1
bis R3 und bei den Schritten R9 bis R12 sind jenen bei den Schritten
Q1 bis Q3 und bei den Schritten Q9 bis Q12 in 58 ähnlich,
wie in 59 gezeigt.
-
Falls das Symbol K bei Schritt R3
nicht in dem Kontext P gespeichert ist, wird ein Code des ESC ausgegeben
(Schritt R4). Dann wird ein Blatt des ESC verzweigt (Schritt R5),
und der ESC und das Symbol K werden in neue Blätter eingetragen (Schritt R6).
-
Nachdem der ESC und das Symbol K
eingetragen worden sind, wie oben angegeben, wird ein Blatt des
ESC bei der Splay-Operation verarbeitet (Schritt R7).
-
Genauso wie bei Schritt Q8 in 58 wird der Kontext P geändert (Schritt
R12), und der Prozeß wird
wiederholt, bis das Symbol K bei Schritt R3 detektiert wird.
-
In dem Fall, wenn Zeichen (Symbole)
A bis E in dem Codebaum bereits codiert und eingetragen worden sind,
wie in 60(a) gezeigt,
wird dann, falls das Symbol K als Zeichen F bei den obigen Schritten
R1 bis R12 (oder bei den Schritten Q1 bis Q12 in 58) verarbeitet wird, ein Blatt des
ESC an dem Blatt mit der Nummer 6 verzweigt, und der ESC und das
Zeichen F werden in Blätter
mit den Nummern 11 und 12 eingetragen, die neu
erzeugt werden.
-
In dem Fall, wenn der Kontext, der
bei dem obigen Prozeß verwendet
wird, zum Beispiel ein Kontext des Grades 3 ist, wird dann, wenn
das Symbol K mit dem Grad 0 (in einem Anfangszustand) codiert wird,
das Symbol K in jeden der Kontexte des Grades 1, des Grades 2 und
des Grades 3 eingetragen (im folgenden wird die Art des Eintragens
in allen Graden als Volleintragstyp bezeichnet).
-
Die Schritte N1 bis N12 in 58 und die Schritte Q1
bis Q12 in 59 zeigen
einen Prozeß, um
das Symbol K in die Kontexte aller Grade immer dann einzutragen,
wenn der ESC codiert wird, wie oben angegeben. Es ist jedoch möglich, das
Symbol K nur in einem Kontext eines gewissen Grades einzutragen,
der unmittelbar vor dem Codieren (Eintragen) des Symbols K codiert
worden ist. In diesem Fall ist ein Flußdiagramm dieses Prozesses
so wie in 61 gezeigt.
-
Genauer gesagt, bei dem in 61 gezeigten Prozeß wird ein
Kontext P0 initialisiert und auf 0 gesetzt
(Schritt T1). Der Kontext P0 wird für einen Kontext
(eine Variable) P eingegeben, und 0 wird für einen Kontext (eine Variable)
X eingegeben (Schritt T2).
-
Dann wird eine Suche ausgeführt, ob
ein Symbol K in dem Kontext P gespeichert ist oder nicht (Schritt
T3). Falls das Symbol K nicht in dem Kontext P gespeichert ist,
wird ein Prozeß ausgeführt, der
jenem bei den obengenannten Schritten Q4 und Q5 (siehe 58) ähnlich ist (NEIN-Route bei
Schritt T3 zu Schritt T4 und Schritt T5).
-
Danach wird der Kontext P für den Kontext
X eingegeben (Schritt T6). Der Kontext P wird dann geändert (Schritt
T7). Der Prozeß wird
wiederholt, bis herausgefunden wird, daß das Symbol K in dem Kontext
P gespeichert ist.
-
Falls das Symbol K in dem Kontext
P bei dem obigen Schritt T3 gespeichert ist, wird ein Prozeß ausgeführt, der
jenem bei den Schritten Q9 bis Q11 (siehe 58) oder bei den Schritten R9 bis R11 (siehe 59) ähnlich ist (Schritte T8 bis
T10).
-
Danach wird ein Blatt eines ESC des
Kontextes X verzweigt (Schritt T11). Der ESC und das Symbol K werden
in zwei neue Blätter
eingetragen, die durch das Verzweigen erhalten werden (Schritt T12).
-
Ferner wird geprüft, ob das Codieren aller Zeichen
(Symbole) beendet ist oder nicht (Schritt T13). Falls es nicht beendet
ist, wird der Prozeß nach Schritt
T2 wiederholt (NEIN-Route bei Schritt T13). Falls es beendet ist,
ist der Codierprozeß vollendet (JA-Route
bei Schritt T13).
-
Durch den obigen Prozeß wird das
Symbol K nicht in die Kontexte aller Grade eingetragen, sondern
nur in den Kontext (Kontext X) eines gewissen Grades unmittelbar
vor dem Codieren des Symbols (im folgenden wird eine Art des Eintragens
eines Symbols K nur in einen Kontext eines Grades unmittelbar vor
dem Codieren des Symbols als sequentieller Eintragstyp bezeichnet).
-
In der Datenkomprimierungsvorrichtung
gemäß der dritten
Ausführungsform
dieser Erfindung kann, falls das Symbol K in dem Kontext P nicht
gespeichert ist, der Escape-Code (ESC) zu der Zeit des Verzweigens
und Eintragens eine Codelänge
von [(eine Codelänge
eines Blattes vor dem Verzweigen) + 1] Bits haben, und der neu eingetragene
Code und der Escape-Code
können
eine Codelänge
von lediglich 2 Bits haben. Im Falle einer Datenausgabe, bei der
eine relativ große
Anzahl von Escape-Code verarbeitet wird, oder in einem Anfangsstadium,
in dem der Wörterbucheintrag
(Eintrag von Symbolen in einen Codebaum) nicht ausreicht, kann diese
Erfindung eine hohe Codierrate vorsehen.
-
Der Splay-Prozeß, der vor einem Neueintrag eines
Symbols ausgeführt
wird, wie oben angegeben, läßt eine
Codelänge
eines Codes oder eines Escape-Codes von lediglich 2 Bits zu, oder
der Splay-Prozeß,
der nach einem Neueintrag eines Symbols ausgeführt wird, läßt eine Codelänge eines Escape-Codes
von lediglich 1 Bit zu. Deshalb ist es möglich, eine Codiereffektivität außerordentlich
zu verbessern.
-
Im Falle des obenerwähnten sequentiellen Eintragstyps
wird das Symbol immer nacheinander eingetragen. Falls dasselbe Symbol
zwei- oder dreimal auftritt, wird das Symbol zweitens oder drittens so
eingetragen, daß nur
ein Symbol mit Wiederholbarkeit in dem höheren Grad des Codebaums eingetragen
wird. Demzufolge ist es möglich,
eine Verringerung der Codiereffektivität zu verhindern, die durch die
Existenz eines Symbols bewirkt wird, das einmal eingetragen worden
ist, aber nicht häufig
verwendet wird, wodurch die Codiereffektivität außerordentlich verbessert wird,
nachdem die ausreichende Anzahl von Symbolen in dem Wörterbuch
eingetragen worden ist.
-
Der sequentielle Eintragstyp erfordert
eine kleinere Speicherkapazität
(Wörterbuchkapazität) als der
Volleintragstyp.
-
(2) Beschreibung des Decodierers
-
62 ist
ein Blockdiagramm, das eine interne Struktur der Datendekomprimierungsvorrichtung 4 zeigt
(siehe 32), die dazu
dient, das Datendekomprimierungsverfahren gemäß der dritten Ausführungsform
dieser Erfindung auszuführen.
In 62 bezeichnet Bezugszeichen 401B eine
Codebaumhalteeinheit, bezeichnet 402B eine Kontextbaumhalteeinheit,
bezeichnet 403B eine Kontextänderungseinheit, bezeichnet 404B eine
Decodiereinheit, bezeichnet 407B eine Codeeintrageinheit,
bezeichnet 408B eine Kontexteintrageinheit, bezeichnet 409B eine
Verriegelung und bezeichnet 421B eine Kontexthalteeinheit.
-
Die Codebaumhalteeinheit (ein Codebaumhaltemittel) 401B hält einen
Codebaum, in dem ein Escape-Code (ESC) (das heißt, Daten, die bedeuten, daß keine
Daten gespeichert sind) im voraus eingetragen wurde. Die Kontextbaumhalteeinheit
(ein Kontextbaumhaltemittel) 402B hält einen Kontextbaum, in dem
eine Kombination aus einem decodierten Symbol (Daten) und einem
Kontext eingetragen ist.
-
Die Kontextänderungseinheit 403B sucht
einen Kontextbaum, der in der Kontextbaumhalteeinheit 402B gehalten
wird, und ändert
den Kontext, falls ein erreichtes Blatt ein Escape-Code ist. Wenn
ein Symbol K eingegeben wird, das in dem Codierer codiert worden
ist, decodiert die Decodiereinheit 404B einen Code des
Symbols K durch Scannen eines Weges von einer Wurzel (einem oberen
Ende) eines Codebaums, der in der Codebaumhalteeinheit 401B gehalten
wird, zu einem Blatt (einem Datenspeicherpunkt) gemäß dem Code
des Symbols K.
-
Die Codeänderungseinheit 406B tauscht Blätter des
decodierten Symbols K und des Escape-Codes gegen andere Blätter oder
einen Knoten aus, der ein Gabelungspunkt ist.
-
Die Codeeintrageinheit (ein Codeeintragmittel) 407B,
die als Codebaumbestimmungsmittel fungiert, bestimmt einen Codebaum,
der in der Codebaumhalteeinheit 401B gehalten wird, in
der ein Code des Symbols K gespeichert ist, von einem Symbol, das
bis unmittelbar vor dem Decodieren des Symbols K decodiert worden
ist. Wenn ein Escape-Code codiert ist, verzweigt die Codeeintrageinheit 407B ein
Blatt des Escape-Codes, der in jenem Codebaum gespeichert ist, um
ein neues Blatt zu erzeugen, und trägt das decodierte Symbol K
in dieses Blatt neu ein.
-
Zu diesem Zweck haben die Codeeintrageinheit 407B und
die obenerwähnte
Codebaumhalteeinheit 401 dieselben internen Strukturen
(siehe 53) wie die
Codeeintrageinheit 322B und die Codebaumhalteeinheit 301B in
dem Komprimierer (siehe 52).
-
Die Kontexteintrageinheit 408B trägt das Symbol
K, das durch die Codeeintrageinheit 407 eingetragen worden
ist, in einen Kontextbaum ein, der in der Kontextbaumhalteeinheit 402B gehalten
wird. Die Verriegelung 409B hält temporär das Symbol K, das in der
Codiereinheit 404B codiert worden ist. Die Kontexthalteeinheit 421B hält das codierte
Symbol K.
-
Die obenerwähnte Codebaumhalteeinheit 401B kann
einen Codebaum halten, in dem ein Escape-Code zuvor gespeichert
worden ist. Die Kontextbaumhalteeinheit 402B kann einen
Kontextbaum halten, in dem eine Kombination aus dem decodierten Symbol
K und einem Kontext P gespeichert ist.
-
Die Kontextänderungseinheit 403B kann
einen Kontext ändern,
falls ein erreichtes Blatt ein Escape-Code ist. Die Decodiereinheit 404B kann
einen Code des Symbols K durch Scannen eines Weges von einer Wurzel
zu einem Blatt eines Codebaums gemäß einem Code des codierten
Symbols K decodieren.
-
Die Codeänderungseinheit 406,
die auch als Codebaumbestimmungsmittel dient, kann einen Codebaum,
in dem ein Code des Symbols K gehalten wird, von einem Symbol bestimmen,
das bis unmittelbar zuvor decodiert worden ist, und Blätter des
decodierten Symbols K und eines Escape-Codes gegen andere Blätter oder
einen internen Knoten austauschen.
-
Wenn die Codeeintrageinheit 407B einen Escape-Code
decodiert, wird ein Blatt des Escape-Codes verzweigt, um ein neues
Blatt zu erzeugen, und das decodierte Symbol K wird in dieses neue Blatt
neu eingetragen.
-
Die Kontexteintrageinheit 408B kann
das Symbol K, das durch die Codeeintrageinheit 407B eingetragen
worden ist, in einen Kontextbaum eintragen, der in der Kontextbaumhalteeinheit 402B gehalten
wird. Die Verriegelung 409B kann das Symbol K temporär halten,
das durch die Decodiereinheit 204B decodiert worden ist.
Die Kontexthalteeinheit 421B kann das Symbol K temporär halten,
das durch die Decodiereinheit 204B decodiert worden ist.
-
Die obige Operation wird als nächstes unter Bezugnahme
auf die Schritte U1 bis U14 in 63 und 64, die eine Operation des
Dekomprimierers zeigen, eingehender beschrieben.
-
Die Kontexthalteeinheit 421B hält, wie
in 63 gezeigt, Symbole
(einen Kontext), die bis zu jener Zeit codiert worden sind, und
gibt sie an die Kontextänderungseinheit 403B aus
(Schritt U1). Die Kontextänderungseinheit 403B gibt
den Kontext, der von der Kontexthalteeinheit 421B zugeführt wird,
so wie er ist beim ersten Mal an die Kontextbaumhalteeinheit 402B aus
(Schritt U2).
-
Die Kontextbaumhalteeinheit 402B gibt
ein ID des Kontextes, das heißt,
ein Wurzel-ID, das von der Kontextände rungseinheit 403B zugeführt wird, an
die Decodiereinheit 404B aus (Schritt U3). Zu dieser Zeit
verlangt die Decodiereinheit 404B ein ID eines Knotens,
der auf der unteren rechten Seite liegt, falls ein Code (1 Bit)
für das
zugeführte
Wurzel-ID zum Beispiel "1" ist, oder ein ID
eines Knotens, der auf der unteren linken Seite liegt, falls ein
Code "0" ist, von der Codebaumhalteeinheit 401B (Schritt
U4) .
-
Die Codebaumhalteeinheit 401B sendet
ein Knoten-ID eines verlangten Knotens (oder eines Blattes) als
Antwort zu der Decodiereinheit 404B (Schritt US).
-
Die Codiereinheit 404B und
die Codebaumhalteeinheit 401B wiederholen den obigen Prozeß, bis ein
Blatt-ID oder ein Blatt erhalten wird, das ein Ende des Codebaums
darstellt.
-
Genauer gesagt, die Decodiereinheit 404B verfolgt
einen Codebaum, der in der Codebaumhalteeinheit 401B gehalten
wird, gemäß einem
Code, der in dem Codierer codiert worden ist, bis ein Blatt erreicht
wird, in dem das zu decodierende Symbol K gespeichert ist.
-
Wenn ein Blatt gefunden wird, das
ein Objekt ist, decodiert die Decodiereinheit 404B dieses
Blatt. Die Codeänderungseinheit 406B verarbeitet
dieses decodierte Blatt bei der Splay-Operation genauso wie in dem
Codierer, um die Codelänge
zu aktualisieren.
-
Falls das Symbol, das bei diesem
Prozeß decodiert
worden ist, ein ESC ist, sendet die Decodiereinheit 404B dieses
Symbol (ESC) zu der Verriegelung (Schritt U6). Die Verriegelung
hält dieses
Symbol temporär
und sendet es zu der Kontextänderungseinheit 403B (Schritt
U7). Die Kontextänderungseinheit 403B führt einen
Kontextänderungsprozeß aus, der
jenem in dem Codierer ähnlich
ist, um es wieder zu decodieren.
-
Falls das bei dem obigen Prozeß durch
die Decodiereinheit 404B decodierte Symbol ein Symbol ohne
einen ESC ist, das heißt,
das Symbol K, sendet die Decodiereinheit 404B dieses decodierte
Symbol K über
die Verriegelung 409B und die Kontexthalteeinheit 421B zu
der Kontexteintrageinheit 408B (Schritte U8 bis U11), wie
in 64 gezeigt. Die
Kontexteintrageinheit 408B trägt dieses Symbol K in die Kontextbaumhalteeinheit 402B neu
ein.
-
Die Codeeintrageinheit 407B empfängt ein Wurzel-ID
eines Kontextes P, in dem das Symbol K gespeichert ist und der von
der Kontextbaumhalteeinheit 407B zugeführt wurde (Schritt U12), und
sendet dieses Wurzel-ID zu der Codebaumhalteeinheit 401B (Schritt
U13).
-
Die Codehalteeinheit 401B sendet
ein Wurzel-ID eines Codebaums, der ein Wurzel-ID hat, das mit dem
Wurzel-ID des zugeführten
Kontextes P identisch ist, zu der Codeeintrageinheit 407B zurück (Schritt
U14). Die Codeeintrageinheit 407B trägt einen neuen Code des Symbols
K in den Codebaum ein, der dieses Wurzel-ID hat (dieselbe Route
wie bei Schritt U13).
-
Der obige Prozeß in dem Dekomprimierer, bei
dem die Codeeintrageinheit 407B das Symbol K in der Codebaumhalteeinheit 401B einträgt, ist
dem Prozeß in
dem Codierer ähnlich,
bei dem die Codeeintrageinheit 322B das Symbol K in der
Codebaumhalteeinheit 301B einträgt.
-
Falls der Eintragsprozeß in dem
Codierer vom Volleintragstyp ist, der in Verbindung mit dem Codierer
beschrieben worden ist, wie in 58 und 59 gezeigt, sollte der Prozeß in dem
Dekomprimierer vom selben Volleintragstyp sein, wobei der ESC in alle
decodierten Kontexte eingetragen wird. Falls der Prozeß vom sequentiellen
Eintragstyp ist, der in 61 gezeigt
ist, sollte der Prozeß in
dem Dekomprimierer vom selben sequentiellen Eintragstyp ein, wobei
das Symbol K in einem Kontext eines ESC eingetragen wird, der zuletzt
decodiert worden ist.
-
Genauso wie bei der Beschreibung
des Codierers kann der obige Prozeß in dem Decodierer in einem
Flußdiagramm
in 65 dargestellt werden.
-
Ein Zahlenwert des Maximalgrades
wird für einen
Kontext (eine Variable) P0, eingegeben,
um ihn zu initialisieren (Schritt V1). Der Kontext P0 wird
dann für
einen Kontext P eingegeben (Schritt V2).
-
Falls nämlich versucht wird, einen
Code zu codieren, wird zunächst
ein Prozeß mit
einem Kontext mit dem Maximalgrad ausgeführt.
-
Ein Code, der in einem Blatt eines
Codebaums gespeichert ist, der dem Kontext P mit dem Maximalgrad
entspricht, wird decodiert (Schritt V3).
-
Dann wird geprüft, ob dieser decodierte Code
ein Symbol ist oder nicht (Schritt V4). Falls der decodierte Code
kein Symbol sondern ein ESC ist, wird ein Blatt des decodierten
ESC bei der Splay-Operation genauso wie in dem Codierer verarbeitet
(NEIN-Route bei Schritt V4 zu Schritt V5). Das Symbol höchsten Grades
(das älteste
Symbol) in dem Kontext P wird ausgesondert, und der Grad des Kontextes
wird in den nächst
niedrigeren Grad verändert,
um aktualisiert zu werden (Schritt V6). Die Prozedur kehrt zu Schritt
V2 zurück.
Mit anderen Worten, die Gradzahl des Kontextes P wird ausgehend
von dem höchsten
Grad nacheinander dekrementiert, bis ein Symbol ohne einen ESC (das
heißt,
das Symbol K) decodiert wird, um eine Suche nach dem Kontext P vorzunehmen,
in dem das Symbol K gespeichert ist.
-
Falls das decodierte Signal ein Symbol
ist, bedeutet dies, daß das
Symbol K decodiert ist, und so wird dieses Symbol ausgegeben (JA-Route
bei Schritt V4 zu Schritt V7). Ein Blatt dieses Symbols K wird bei
der Splay-Operation auf dieselbe Weise wie in dem Codierer verarbeitet,
um eine Codelänge
des Symbols K zu verkürzen
(zu aktualisieren) (Schritt V8).
-
Ferner wird das Symbol K zusätzlich in
dem Kontext P0 eingetragen (Schritt V9).
Der ESC wird ausgesondert. Übrigens
wird die Änderung
dieses Kontextes P0 genauso wie in dem Codierer
ausgeführt.
-
Das decodierte Symbol K wird durch
Verzweigen eines Blattes des ESC auf dieselbe Eintragsweise wie
bei dem Codierer, wie zum Beispiel auf die Volleintragsweise, neu
eingetragen, falls bei dem Codierer die Volleintragsweise zum Einsatz kommt
(Schritt V10).
-
Dann wird geprüft, ob das Decodieren aller eingegebenen
Codes beendet ist oder nicht (Schritt V11). Falls es nicht beendet
ist (NEIN-Route bei Schritt V11), kehrt die Prozedur zu Schritt
V2 zurück, und
der Prozeß wird
wiederholt, bis das Decodieren aller Codes vollendet ist.
-
Wie oben angegeben, wird in der Datendekomprimierungsvorrichtung
gemäß der dritten
Ausführungsform
dieser Erfindung ein Blatt, das an dem Codebaum bereits existiert,
in zwei geteilt, damit eine Codelänge dieses Blattes bei dem
Prozeß zum
Neueintragen eines Symbols genauso wie in dem Dekomprimierer [(eine
Codelänge
des zuvor geteilten Blattes) + 1] Bits beträgt, wodurch eine Codelänge des
neu eingetragenen Symbols K oder eines Escape-Codes lediglich 2
Bits ausmachen kann. Somit kann eine Effektivität bei der Datendekomprimierung außerordentlich
verbessert werden, falls Daten verarbeitet. werden, bei denen eine
relativ große
Anzahl von Escape-Codes codiert wird, oder in einem Stadium, in
dem der Wörterbucheintrag
nicht ausreicht.
-
Wie oben angegeben, gestattet der Splay-Prozeß vor dem
Neueintrag eines Symbols eine Codelänge des decodierten Symbols
oder eines Escape-Codes von lediglich 2 Bits. Der Splay-Prozeß nach dem
Neueintrag gestattet eine Codelänge
eines Escape-Codes von lediglich 1 Bit. Demzufolge ist es möglich, eine
Effektivität
bei der Datendekomprimierung außerordentlich
zu verbessern.
-
Wie oben angegeben, führt der
Dekomprimierer denselben Eintragsprozeß wie der Dekomprimierer aus,
so daß Codes
akkurat decodiert werden können.
-
(c-1) Beschreibung einer
ersten Abwandlung der dritten Ausführungsform der Erfindung
-
Als nächstes folgt die Beschreibung
einer ersten Abwandlung gemäß der dritten
Ausführungsform
dieser Erfindung. Eine Datenkomprimierungsvorrichtung und. eine
Datendekomprimierungsvorrichtung gemäß der ersten Abwandlung dieser
Ausführungsform
dienen auch zum Ausführen
des Datenkomprimierungsverfahrens und des Datendekomprimierungsverfahrens,
das in 32 gezeigt ist,
genauso wie in der oben angegebenen dritten Ausführungsform.
-
Genauso wie in der dritten Ausführungsform wird
eine Datenkomprimierungsvorrichtung 3 als Komprimierer
bezeichnet und wird eine Datendekomprimierungsvorrichtung 4 als
Decodierer bezeichnet.
-
(1) Beschreibung des Codierers
-
Der Codierer hat dieselbe Struktur
wie jener, der in der dritten Ausführungsform beschrieben wurde,
die in 52 gezeigt ist.
-
Um ein Symbol in einem Blatt einzutragen, das
die längste
Codelänge
an einem Codebaum hat, der in dem Codebaumhaltemittel 301B gehalten
wird, enthält
die Codeeintrageinheit 322B gemäß dieser Ausführungsform,
die in 52 gezeigt ist,
eine Erzeugungseinheit von neuen Knoten-IDs 61, eine Verriegelung 62,
eine Elterninformationsaktualisierungsein heit 63 und eine
Detektionseinheit der längsten Codelänge (ein
Gabelungspositionssuchmittel) 69, wie in 66 gezeigt. Die Codebaumhalteeinheit 301B hat
dementsprechend eine Halteeinheit von internen Knoten (Knoten-IDs) 65,
eine Codebaumverwaltungseinheit 67 und eine Halteeinheit
von externen Knoten/ESC-IDs (Blatt-IDs) 68.
-
In der Codeeintrageinheit 322B erzeugt
die Erzeugungseinheit von neuen Knoten-IDs 61 zwei neue
Knoten-IDs (ID-1 und ID-2) als Antwort auf ein Aktualisierungssignal
von der Kontextbaumhalteeinheit 302B. Die Verriegelung 62 verriegelt
ein Blatt-ID, das durch die Detektionseinheit der längsten Codelänge 69 detektiert
wurde.
-
Die Elterninformationsaktualisierungseinheit 63 empfängt Elterninformationen,
die aus drei Arten von Informationen (ESC-ID, ID-1 und ID-2) gebildet sind,
das heißt,
ein ID des Knotens höheren
Grades, der ein Objekt des Prozesses ist, ein ID des Knotens niedrigeren
Grades, der unten rechts vom Objektknoten liegt, und ein ID des
unteren Knotens, der unten links vom Objektknoten liegt, aktualisiert
diese Elterninformationen und sendet sie zu der Codebaumhalteeinheit 301B.
-
Die Detektionseinheit des längsten Codes (das
Gabelungspositionssuchmittel) 69 erhält ein Knoten-ID eines Codebaums
von der Codebaumhalteeinheit 301B, um ein ID (ID-0) eines Blattes
mit der längsten
Codelänge
an diesem Codebaum zu detektieren.
-
In der Codebaumhalteeinheit 301B hält die Halteeinheit
von internen Knoten (Knoten-IDs) 65 Knoten-IDs des Codebaums
und hält
die Halteeinheit von externen Knoten/ESC-IDs (Blatt-IDs) 68 Blatt-IDs
des Codebaums.
-
Die Codebaumverwaltungseinheit 67 empfängt ein
Kontext-ID von der
Kontextbaumhalteeinheit 302B und sendet dieses Kontext-ID
zu der Halteeinheit von internen Knoten (Knoten- IDs) 65 und der Halteeinheit
von externen Knoten/ESC-IDs (Blatt-IDs) 68.
-
Mit den obigen Strukturen der Codeeintrageinheit 322B und
der Codebaumhalteeinheit 301B sucht die Codeeintrageinheit 322B ein
Blatt mit der längsten
Codelänge
an dem Codebaum, der in der Codebaumhalteeinheit 301B gehalten
wird, verzweigt das Blatt mit der längsten Codelänge, das durch
die Suche erhalten wird, nach dem Codieren eines Escape-Codes, und trägt ein Symbol
K neu darin. ein.
-
Als nächstes wird der obige Prozeß unter
Bezugnahme auf die Schritte W1 bis W13 eines in 67 gezeigten Flußdiagramms eingehender beschrieben.
-
Um einen Kontext zu suchen, der das
Symbol K enthält,
wird ein Kontext (ein Kontext P) selektiert, der in der Kontexthalteeinheit 302B gehalten wird
(Schritte W1 und W2). Dann wird geprüft, ob das Symbol K in diesem
Kontext P gespeichert ist oder nicht (Schritt W3). Falls das Symbol
K in dem Kontext P gespeichert ist, wird ein Prozeß ausgeführt, der
jenem bei den obenerwähnten
Schritten Q9 bis Q12 in der dritten Ausführungsform, die in 58 gezeigt sind, ähnlich ist
(Schritte W9 bis W12).
-
Falls das Symbol K nicht in dem Kontext
P eingetragen ist, gibt die Codiereinheit 306B einen Code
eines ESC genauso wie bei den Schritten Q4 und Q5 in 58 aus (Schritt W4). Die
Codeänderungseinheit 307B verarbeitet
ein Blatt des ESC an dem Codebaum, der in der Codebaumhalteeinheit 301B gehalten
wird, bei der Splay-Operation (Schritt W5) .
-
Danach empfängt die Codebaumhalteeinheit 301B ein
ID (ein Wurzel-ID) des Kontextes P von der Kontextbaumhalteeinheit 302B und
sendet das Knoten-ID dieses Kontextes P und Elterninformationen davon
zu der Detektionseinheit des längsten
Codes 69.
-
Die Detektionseinheit des längsten.
Codes 69 detektiert ein ID (ID-0) eines Blattes X(p), das
die längste
Codelänge
hat, von den Elterninformationen (Schritt W6).
-
Dann sendet die Detektionseinheit
des längsten
Codes 69 das ID, das heißt, das ID-0 des detektierten
Blattes X(p), zu der Blatt-ID-Halteeinheit 68. Die Verriegelung 70 verriegelt
dieses ID-0 und ein Symbol, das in dem ID-0 gespeichert ist.
-
Die Erzeugungseinheit von neuen Knoten-IDs 71 erzeugt
zwei neue Knoten-IDs (ID-0 und ID-2). Laie Elterninformationsaktualisierungseinheit 63 empfängt drei
IDs (ID-0, ID-1 und ID-2), um die Elterninformationen zu aktualisieren.
Die Elterninformationsaktualisierungseinheit 63 trägt diese
Knoten-IDs in die Knoten-ID-Halteeinheit 65 in der Codebaumhalteeinheit 301B ein.
-
Andererseits werden das Symbol K,
das einzutragen ist, nämlich
das neue ID (ID-2), und ein Symbol, das in das ID-0 und das ID-1
eingetragen worden ist, jeweilig als neue Blätter in die Blatt-ID-Halteeinheit 68 in
der Codebaumhalteeinheit 301B eingetragen (Schritt W7).
-
Durch den obigen Prozeß wird ein
Blatt, das die längste
Codelänge
hat, ein interner Knoten, und zwei neue Blätter werden unter diesem Knoten
eingetragen.
-
Dann wird der Kontext P geändert (Schritt W8).
Der obige Prozeß wird
wiederholt, bis detekaiert wird, daß das Symbol K in dem Kontext
P gespeichert ist.
-
In der Datenkomprimierungsvorrichtung
gemäß der ersten
Abwandlung der dritten Ausführungsform
dieser Erfindung wird ein Blatt X(p) mit der längsten Codelänge (das
heißt,
das am weitesten von der Wurzel entfernte Blatt) detektiert, und
dieses Blatt wird verzweigt, um das Symbol K und ein Symbol, das
in dem X(p) eingetragen worden ist, in den Codebaum neu einzutragen.
Dafür kann
die erste Abwandlung der dritten Ausführungsform dieser Erfindung
dahingehend von Vorteil sein, daß zusätzlich zu dem Vorteil, der
durch den Codierer gemäß der dritten
Ausführungsform
geboten wird, eine Verringerung der Codiereffektivität, die dadurch
verursacht wird, daß die
Codelänge
um ein Bit verlängert
wird, da (die längste
Codelänge)
= (Symbol, dessen Auftrittshäufigkeit
die kleinste ist), auf ein Minimum herabgedrückt werden kann. Dies kann
eine weitgehende Verbesserung einer Verarbeitungsrate bei der Datenkomprimierung
und eine weitgehende Reduzierung einer Verarbeitungslast auf der
Datenkomprimierungsvorrichtung ermöglichen.
-
(2) Beschreibung des Decodierers
-
Eine Datenwiederherstellungsvorrichtung 4 gemäß der ersten
Abwandlung dieser Ausführungsform
hat eine Struktur, die jener von 62 ähnlich ist.
Eine Codeeintrageinheit 407B und eine Codebaumhalteeinheit 401B in
dem Dekomprimierer haben interne Strukturen, die denen der Codeeintrageinheit 322B bzw.
der Codebaumhalteeinheit 301B in dem Codierer ähnlich sind
(siehe 66).
-
Da die Codeeintrageinheit 407B und
die Codebaumhalteeinheit 401B dieselbe Struktur wie die (Codeeintrageinheit 322B bzw,
die Codebaumhalteeinheit 301B in dem Codierer haben, ist
ein Prozeß, der
in der Codeeintrageinheit 407B ausgeführt wird, um ein decodiertes
Symbol in der Codebaumhalteeinheit 401B neu einzutragen,
derselbe wie jener, der in dem Codierer ausgeführt wird.
-
Es reicht aus, einen Prozeß zum Decodieren eines
Symbols K, das in dem Codierer codiert worden ist, genauso wie bei
dem obenerwähnten
Prozeß (bei
den Schritten V1 bis V11) auszuführen,
die in 65 gemäß der ersten
Ausführungsform
gezeigt sind. Bei Schritt V10, der in 65 gezeigt ist, wird derselbe Prozeß wie bei
den Schritten W7 und W8 in dem Codierer ausgeführt (siehe 67).
-
Somit wird in der Datendekomprimierungsvorrichtung
gemäß der ersten
Abwandlung der dritten Ausführungsform
dieser Erfindung ein Blatt X(p) mit der längsten Codelänge (das
heißt,
das am weitesten von der Wurzel entfernte Blatt) an einem Codebaum
eines Kontextes P detektiert, wird dieses Blatt X(p) verzweigt und
werden ein Symbol K und ein Symbol, das in X(p) gespeichert worden
ist, in dem Codebaum neu eingetragen, genauso wie in dem Codierer
gemäß der dritten
Ausführungsform. Deshalb
kann die Datenkomprimierungsvorrichtung gemäß der ersten Abwandlung der
dritten Ausführungsform
dieser Erfindung dahingehend von Vorteil sein, daß zusätzlich zu
dem Vorteil, der durch den Codierer gemäß der dritten Ausführungsform
geboten wird, eine Verringerung der Codiereffektivität, die dadurch
verursacht wird, daß die
Codelänge
um ein Bit verlängert
wird, auf Grund von (längste
Codelänge)
= (Symbol, dessen Auftrittshäufigkeit
die kleinste ist), auf ein Minimum herabgedrückt: werden kann. Dies kann
eine weitgehende Verbesserung einer Verarbeitungsrate bei der Datenkomprimierung
und eine weitgehende Reduzierung einer Verarbeitungslast auf der
Datenkomprimierungsvorrichtung ermöglichen.
-
Wie oben angegeben, gestattet derselbe Eintragsprozeß für ein Symbol
in dem Codierer und Decodierer ein akkurates Decodieren des Symbols, das
in dem Codierer codiert worden ist.
-
(c-2) Beschreibung der
zweiten Abwandlung der dritten Ausführungsform der Erfindung
-
Als nächstes folgt eine Beschreibung
einer zweiten Abwandlung gemäß der dritten
Ausführungsform
dieser Erfindung.
-
(1) Beschreibung des Codierers
-
Ein Komprimierer dieser Ausführungsform hat
dieselbe Struktur wie jener, der in der dritten Ausführungsform
beschrieben worden ist, die in 52 gezeigt
ist.
-
Eine Codeeintrageinheit 322B dieser
Ausführungsform,
die in 52 gezeigt ist,
ist versehen mit einer Erzeugungseinheit von neuen Knoten-IDs 61,
einer Verriegelung 62, einer Elterninformationsaktualisierungseinheit 63 und
einer Halteeinheit von zuletzt eingetragenen IDs 70, um
ein Blatt zu verzweigen, das in einem Codebaum neu eingetragen wurde,
der in einer Codebaumhalteeinheit 301B gehalten wird, um
ein Symbol darin einzutragen. Die Codebaumhalteeinheit 301B enthält eine
Halteeinheit von externen Knoten (Blatt-IDs) 64, eine Halteeinheit
von internen Knoten (Knoten-IDs) 65, eine ESC-ID-Halteeinheit 66 und
die Codebaumverwaltungseinheit 67.
-
In der obigen Struktur bezeichnen
dieselben Bezugszeichen dieselben und entsprechenden Teile in 53 oder 66, und deren detaillierte Beschreibung
wird hier übersprungen.
-
Die Halteeinheit von zuletzt eingetragenen IDs
(ein Gabelungspositionshaltemittel) 70, die in dieser Ausführungsform
neu vorgesehen ist, hält
ein ID eines Blattes, das zuletzt in einem Codebaum eingetragen
worden ist, der in der Codebaumhalteeinheit 301B gehalten
wird.
-
Da die Codeeintrageinheit 322B und
die Codebaumhalteeinheit 301B die obigen Strukturen haben,
verzweigt die Codeeintrageinheit 322B das letzte Blatt,
in dem ein Symbol zuletzt eingetragen worden ist, an dem Codebaum,
der in der Codebaumhalteeinheit 301B gehalten wird, und
trägt ein
Symbol K in dieses neu erzeugte Blatt ein.
-
Als nächstes wird der obige Prozeß unter
Bezugnahme auf die Schritte X1 bis X13 in 69 eingehender beschrieben.
-
In dem obigen Prozeß wird ein
ID des zuletzt eingetragenen Blattes, das zuletzt eingetragen worden
ist, in der Halteeinheit von zuletzt eingetragenen IDs 70 gehalten,
und das ID wird verzweigt, um für
einen Neueintrag verwendet zu werden.
-
Genauer gesagt, um einen Kontext
zu suchen, der ein Symbol K enthält,
wird ein Kontext (ein Kontext P) selektiert, der in der Kontexthalteeinheit 302 gehalten
wird (Schritte X1 und X2). Es wird geprüft, ob das Symbol K in diesem
Kontext gespeichert ist oder nicht (Schritt X3). Falls das Symbol
K gespeichert ist, wird derselbe Prozeß wie bei den Schritten W10
bis W13 in67 ausgeführt, die
in der dritten Ausführungsform
beschrieben worden sind (JA-Route
bei Schritt X3 zu den Schritten X10 bis X13).
-
Falls das Symbol K in dem Kontext
P nicht gespeichert ist, gibt die Codiereinheit 306B einen Code
eines ESC genauso wie bei den Schritten X4 und X5 aus, die in 67 gezeigt sind (Schritt
X4). Die Codeänderungseinheit 307B verarbeitet
ein Blatt des ESC des Codebaums, der in der Codebaumhalteeinheit 301B gehalten
wird, bei der Splay-Operation
(Schritt X5).
-
Danach gibt die Codebaumhalteeinheit 301B ein
ID (ein Wurzel-ID) des Kontextes P so wie es ist an die Halteeinheit
von zuletzt eingetragenen IDs 70 aus.
-
Die Halteeinheit von zuletzt eingetragenen IDs 70 sendet
ein Blatt-ID (ID-0) des zuletzt eingetragenen Blattes X(p) eines
Codebaums, der dem Kontext P entspricht, zu der Blatt-ID-Halteeinheit 64 in der
Codebaumhalteeinheit 301B. Die Verriegelung 62 verriegelt
das ID-0 und ein Symbol, das in dem ID-0 gehalten wird.
-
Die Erzeugungseinheit von neuen IDs 61 erzeugt
zwei neue IDs (ID-1 und ID-2). Die Elterninformationsaktualisierungseinheit 63 empfängt drei
IDs (ID-0, ID-1 und ID-2), um Elterninformationen zu aktualisieren,
um das Blatt X(p) zu verzweigen (Schritt X6). Diese Informationen
werden in die Knoten-ID-Halteeinheit 65 in der Codebaumhalteeinheit 301B eingetragen.
-
Andererseits werden das eingetragene
Symbol K, das einzutragen ist, und ein Symbol, das in dem Blatt
X (p) gespeichert worden ist, als neue Blätter in der Blatt-ID-Halteeinheit 64 in
der Codebaumhalteeinheit 301B eingetragen (Schritte X7
und X8). Das ID-2, das ein neues ID ist, wird in der Halteeinheit
von zuletzt eingetragenen IDs 70 gespeichert.
-
Der Kontext P wird dann geändert (Schritt X9)
. Der obige Prozeß wird
wiederholt, bis detektiert wird, daß das Symbol K in dem Kontext
P eingetragen ist.
-
Durch den obigen Prozeß wird dann,
wenn ein neues Symbol K eingegeben wird, das zuletzt eingetragene
Blatt, das unmittelbar vor der Eingabe des Symbols K eingetragen
worden ist, geteilt, um das Symbol K darin einzutragen.
-
Wie oben angegeben, wird in der Datenkomprimierungsvorrichtung
gemäß der zweiten
Abwandlung der dritten Ausführungsform
dieser Erfindung ein Symbol in einem Codebaum eingetragen, indem ein
Blatt verzweigt wird, in dem ein Symbol unmittelbar zuvor eingetragen
worden ist, um das Symbol darin einzutragen, um (ein Symbol eines
Blattes, das unmittelbar zuvor eingetragen worden ist) an (ein Symbol
mit relativ langer Codelänge)
zu approximieren. Wie bei der ersten Abwandlung der dritten Ausführungsform
erwähnt,
ist es möglich,
den Prozeß zum
Detektieren eines Blattes mit der längsten Codelänge zu überspringen,
wodurch eine Verarbeitungsrate bei der Datenkomprimierung erhöht wird.
-
(2) Beschreibung des Decodierers
-
Der Dekomprimierer hat, genauso wie
der Codierer, dieselbe Struktur wie der Codierer, der in der dritten
Ausführungsform
beschrieben worden ist, die in 62 gezeigt
ist. Eine Codeeintrageinheit 407B und eine Codebaumhalteeinheit 401B in
dem Dekomprimierer haben dieselbe interne Struktur wie die Codeeintrageinheit 322B bzw.
die Codebaumhalteeinheit 301B in dem Dekomprimierer (siehe 68).
-
Da die Codeeintrageinheit 407B und
die Codebaumhalteeinheit 401B dieselben Strukturen wie die
Codeeintrageinheit 322B bzw. die Codebaumhalteeinheit 301B in
dem Codierer haben, ist ein Prozeß, der durch die Codeeintrageinheit 407B ausgeführt wird,
um einen Code eines decodierten Symbols in der Codebaumhalteeinheit 401B neu
einzutragen, genauso wie in dem Codierer, dem Dekomprimierer gemäß der ersten
Abwandlung der dritten Ausführungsform ähnlich.
-
Demzufolge wird ein Prozeß zum Decodieren
eines Symbols K, das in dem Codierer gemäß dieser Ausführungsform
codiert worden ist, auf dieselbe Weise wie in 65 gemäß der dritten Ausführungsform
ausgeführt
(Schritte V1 bis V11). Mit anderen Worten, der ähnliche Prozeß wie bei
den Schritten X6 bis X8 in 69,
der ein Eintragsprozeß in dem
Codierer ist, wird bei Schritt V11 in 65 ausgeführt.
-
Wie oben angegeben, wird in der Datenkomprimierungsvorrichtung
gemäß der zweiten
Abwandlung der dritten Ausführungsform
dieser Erfindung ein Blatt eines Symbols, das unmittelbar zuvor
eingetragen worden ist, verzweigt, um ein Symbol in dieses Blatt
an einem Codebaum auf dieselbe Weise wie in dem Codierer neu einzutragen,
um (ein Symbol eines Blattes, das unmittelbar zuvor eingetragen wurde)
an (ein Symbol mit einer relativ langen Codelänge) zu approximieren. Deshalb
ist es möglich,
einen Prozeß zum
Detektieren eines Blattes mit der längsten Codelänge zu überspringen,
wie in der ersten Abwandlung der dritten Ausführungsform erwähnt, um
dadurch eine Verarbeitungsrate bei der Datendecodierung außerordentlich
zu erhöhen.
-
Wenn ein Symbol in einen Codebaum
in dem Dekomprimierer eingetragen wird, wird derselbe Prozeß wie in
dem Codierer ausgeführt.
Dies gestattet ein akkurates Decodieren eines Symbols, das in dem Codierer
codiert worden ist.
-
In der dritten Ausführungsform
und deren Abwandlungen wird das Verfahren, das in dem Codierer ausgeführt wird,
in Abhängigkeit
von zu codierenden Daten oder einem System verändert. Somit ist es möglich, eine
ID-Nummer, die angibt, welches System eingesetzt wird, zu dem Header-Abschnitt vor
der Übertragung
der codierten Daten hinzuzufügen
und ein Eintragsverfahren, das in dem Codierer verwendet worden
ist, gemäß der ID-Nummer
zu bestimmen, um es in dem Dekomprimierer zu selektieren.