DE69532775T2 - Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät - Google Patents

Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät Download PDF

Info

Publication number
DE69532775T2
DE69532775T2 DE69532775T DE69532775T DE69532775T2 DE 69532775 T2 DE69532775 T2 DE 69532775T2 DE 69532775 T DE69532775 T DE 69532775T DE 69532775 T DE69532775 T DE 69532775T DE 69532775 T2 DE69532775 T2 DE 69532775T2
Authority
DE
Germany
Prior art keywords
data
code
context
tree
code tree
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69532775T
Other languages
English (en)
Other versions
DE69532775D1 (de
Inventor
Kimitaka Nakahara-ku Murashita
Yoshiyuki Nakahara-ku Okada
Shigeru Nakahara-ku Yoshida
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of DE69532775D1 publication Critical patent/DE69532775D1/de
Application granted granted Critical
Publication of DE69532775T2 publication Critical patent/DE69532775T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

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

Description

  • 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.

Claims (16)

  1. Datenkomprimierungsverfahren zum Komprimieren von Eingangsdaten durch das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens der Eingangsdaten in der Vergangenheit, das folgende Schritte umfaßt: Ausführen eines Kontextsammelschrittes zum Halten einer Vielzahl von Kontexten, die gemäß Kombinationen aus Eingangsdaten und aus n kontinuierlichen Daten, die den Eingangsdaten vorausgehen, auftraten und jeweils eine Verbindung zwischen Eingangsdaten und unmittelbar vorausgehenden Eingangsdaten bedeuten; Ausführen eines Codebaumhalteschrittes zum Halten von Codebäumen, die jeweils für jeden der genannten Kontexte unabhängig sind und jeweils Codes haben, die jeweilig als einzigartige Daten gemäß einer der Verbindung der Eingangsdaten und der unmittelbar vorausgehenden Eingangsdaten entsprechenden Gabelung von Knoten definiert sind, die ein Gabelungspunkt auf einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet, zu einem Blatt an dem Codebaum ist; Ausführen eines Codeausgabeschrittes, falls Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt gehalten wurde, zum Ausgeben eines Codes gemäß der Gabelung der Knoten von der Wurzel zu dem Blatt an einem Codebaum, der dem Kontext entspricht, in dem die genannten Daten gespeichert sind; Ausführen eines Codebaum-Neuanordnungsschrittes zum Austauschen eines Blattes, in dem die genannten Daten gespeichert sind, gegen ein anderes Blatt oder einen internen Knoten in dem Codebaum nach einem Prozeß bei dem Codeausgabeschritt.
  2. Datenkomprimierungsverfahren nach Anspruch 1, das ferner folgende Schritte umfaßt: Ausführen eines Kontextunterscheidungsschrittes zum Unterscheiden, ob die genannte Kombination bei dem Kontextsammelschritt gehalten wurde; Ausführen eines Escape-Code-Halteschrittes zum Halten, an dem genannten Codebaum, eines Blattes, in dem ein Escape-Code im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind; falls die genannte Kombination in einem Verlauf bei dem Kontextsammelschritt nicht gehalten wurde, Ausgeben des genannten Escape-Codes, wobei ein Prozeß, um einen Kontext der genannten Daten zu verkürzen, wiederholt wird, bis eine Kombination erhalten wird, die bei dem Kontextsammelschritt gehalten wurde.
  3. Datenkomprimierungsverfahren nach Anspruch 1, das ferner folgende Schritte umfaßt: Ausführen eines Kontextunterscheidungsschrittes zum Unterscheiden, ob die genannte Kombination bei dem Kontextsammelschritt gehalten wurde; Ausführen eines Escape-Code-Halteschrittes zum Halten, an dem genannten Codebaum, eines Blattes, in dem ein Escape-Code im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind; Ausführen eines Kontext-Neueintragschrittes zum Neueintragen der genannten Kombination bei dem Kontextsammelschritt, falls die genannte Kombination in einem Verlauf bei dem Kontextsammelschritt nicht gehalten wurde; Ausführen eines Codebaum-Neueintragschrittes zum Neueintragen, falls die genannte Kombination in einem Verlauf bei dem Kontextsammelschritt nicht gehalten wurde, der genannten Daten in dem genannten Codebaum, der dem Kontext entspricht; falls die genannte Kombination in dem Verlauf bei dem Kontextsammelschritt nicht gehalten wurde, Ausgeben eines Codes des genannten Escape-Codes, wobei gleichzeitig die genannte Kombination in dem Verlauf eingetragen wird, die genannten Daten in dem genannten Codebaum eingetragen werden, der dem Kontext entspricht, und ein Prozeß, um den Kontext der genannten Daten zu verkürzen, wiederholt wird, bis eine Kombination erhalten wird, die bei dem Kontextsammelschritt gehalten wurde.
  4. Datenkomprimierungsverfahren nach Anspruch 1, das ferner folgende Schritte umfaßt: Ausführen eines Kontextunterscheidungsschrittes zum Unterscheiden, ob die genannte Kombination bei dem Kontextsammelschritt gehalten wurde; Ausführen eines Escape-Code-Halteschrittes zum Halten, an dem genannten Codebaum, eines Blattes, in dem ein Escape-Code im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind; Ausführen eines Kontext-Neueintragschrittes zum Neueintragen der genannten Kombination bei dem Kontextsammelschritt, falls die genannte Kombination in einem Verlauf bei dem Kontextsammelschritt nicht gehalten wurde; Ausführen eines Codebaum-Neueintragschrittes zum Neueintragen, falls die genannte Kombination in einem Verlauf bei dem Kontextsammelschritt nicht gehalten wurde, der genannten Daten in dem genannten Codebaum, der dem Kontext entspricht; Eintragen, bei dem Kontext-Neueintragschritt und dem Codebaum-Neueintragschritt, nur einer Kombination aus einem unmittelbar vorausgehenden Kontext, für den entschieden wurde, in dem Verlauf enthalten zu sein, und den genannten Daten.
  5. Datendekomprimierungsverfahren zum Dekomprimieren von codierten Daten, die durch das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden, das folgende Schritte umfaßt: Ausführen eines Kontextsammelschrittes zum Halten einer Vielzahl von Kontexten, die gemäß einer Kombination aus decodierten Daten und n kontinuierlichen Daten, die decodiert wurden und den genannten decodierten Daten vorausgehen, auftraten und eine Verbindung zwischen decodierten Daten und unmittelbar vorausgehenden decodierten Daten darstellen; Ausführen eines Codebaumhalteschrittes zum Halten von Codebäumen, die jeweils für jeden der genannten Kontexte unabhängig sind und jeweils Codes haben, die jeweilig als einzigartige Daten gemäß einer der Verbindung der decodierten Daten und der unmittelbar vorausgehenden decodierten Daten entsprechenden Gabelung von Knoten definiert sind, die ein Gabelungspunkt auf einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet, zu einem Blatt an dem Codebaum ist; Ausführen eines Codebaumbestimmungsschrittes zum Bestimmen eines Codebaums, der Daten hat, die den codierten Daten entsprechen, auf der Basis der genannten Kontexte von Daten, die bis unmittelbar zuvor decodiert worden sind; Ausführen eines Decodierschrittes zum Decodieren der genannten Daten von dem genannten Codebaum, der bei dem Codebaumbestimmungsschritt bestimmt wurde, und eines Codes der genannten Daten; Ausführen eines Codebaum-Neuanordnungsschrittes zum Austauschen eines Blattes, das ein Datenspeicherpunkt an dem Codebaum ist, gegen ein anderes Blatt oder einen internen Knoten, der ein Gabelungspunkt an dem genannten Codebaum ist, unter Verwendung desselben Mittels als Komprimierer, nachdem die genannten Daten bei dem Decodierschritt decodiert worden sind.
  6. Datendekomprimierungsverfahren nach Anspruch 5, ferner mit folgendem Schritt: Eintragen eines Escape-Codes im voraus, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind, in jedem der genannten Codebäume, die jeweiligen Kontexten entsprechen, wobei dann, falls der genannte Escape-Code bei dem Decodierschritt decodiert wird, ein Prozeß wiederholt wird, um eine Länge eines Kontextes zu verkürzen, bis ein Code ohne den genannten Escape-Code decodiert ist.
  7. Datendekomprimierungsverfahren nach Anspruch 5, das ferner folgende Schritte umfaßt: Ausführen eines Kontext-Neueintragschrittes zum Neueintragen der genannten Daten bei dem Kontextsammelschritt; Ausführen eines Codebaum-Neueintragschrittes zum Neueintragen der decodierten Daten in dem genannten Codebaum, der dem Kontext entspricht; falls ein Escape-Code, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind, decodiert wird, Ausführen des Kontext-Neueintragschrittes und des Codebaum-Neueintragschrittes, wobei ein Prozeß wiederholt wird, um eine Länge des Kontextes zu verkürzen, bis ein Code ohne den genannten Escape-Code decodiert ist.
  8. Datendekomprimierungsverfahren nach Anspruch 5, das ferner folgende Schritte umfaßt: Ausführen eines Kontext-Neueintragschrittes zum Neueintragen der genannten Daten bei dem Kontextsammelschritt; Ausführen eines Codebaum-Neueintragschrittes zum Neueintragen der decodierten Daten in dem Codebaum, der dem Kontext entspricht; falls der genannte Escape-Code in einem Prozeß auch nur einmal decodiert wird, bis ein Code ohne den Escape-Code decodiert wird, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind, Neueintragen der decodierten Daten in einem Kontext, der unmittelbar vor dem Decodieren eines Codes ohne den Escape-Code erhalten wurde, bei dem Kontext-Neueintragschritt und dem Codebaum-Neueintragschritt.
  9. Datenkomprimierungsvorrichtung, die Eingangsdaten gemäß einem Verlauf des Auftretens der Eingangsdaten in der Vergangenheit codiert, um die Eingangsdaten zu komprimieren, mit: einem Vordaten-Haltemittel (100), das n kontinuierliche Eingangsdaten hält; einem Verlaufshaltemittel (101), das eine Vielzahl von Kontexten hält, die gemäß einer Kombination aus Eingangsdaten und den n Daten, die den genannten Eingangsdaten vorausgehen, auftraten, und jeweils eine Verbindung zwischen Eingangsdaten und unmittelbar vorausgehenden Eingangsdaten bedeuten; einem Codebaumhaltemittel (102), das Codebäume hält, die jeweils für jeden der genannten Kontexte unabhängig sind und jeweils Codes haben, die jeweilig als einzigartige Daten gemäß einer der Verbindung der Eingangsdaten und der unmittelbar vorausgehenden Eingangsdaten entsprechenden Gabelung von Knoten definiert sind, die ein Gabelungspunkt auf einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet, zu einem Blatt an dem Codebaum ist; einem Codebaumbestimmungsmittel (103), das einen Codebaum bestimmt, der Daten hat, die dem Kontext entsprechen, der bis unmittelbar zuvor erhalten wurde und in dem Verlaufshaltemittel (101) gehalten wird; einem Codeausgabemittel (104), das einen Code gemäß der Gabelung von der Wurzel des genannten Codebaums, der durch das Codebaumbestimmungsmittel (103) selektiert wurde, zu dem Blatt, in dem die genannten Daten gespeichert sind, ausgibt; einem Codebaum-Neuanordnungsmittel (105), welches das Blatt, in dem die genannten Daten gespeichert sind, gegen ein anderes Blatt oder einen internen Knoten austauscht; einem Vordaten-Aktualisierungsmittel (106), das die genannten Daten in dem Vordaten-Haltemittel (100) einträgt.
  10. Datenkomprimierungsvorrichtung nach Anspruch 9, bei der das Codebaumhaltemittel (102) als Codebaumhaltemittel (107) konstruiert ist, das die genannten Codebäume hält, die jeweils für jeden Kontext unabhängig sind und in denen ein Escape-Code, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind, im voraus eingetragen wurde, welche Datenkomprimierungsvorrichtung ferner umfaßt: ein Kontextunterscheidungsmittel (108), das unterscheidet, ob die genannten Daten in dem genannten Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel (103) bestimmt wurde; ein Escape-Code-Ausgabemittel (109), das einen Escape-Code gemäß der Gabelung von den Knoten von der Wurzel des genannten Codebaums zu einem Blatt ausgibt, in dem der Escape-Code gespeichert ist, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind; ein Kontextänderungsmittel (110), das eine Länge n des Kontextes verkürzt, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind; ein Steuermittel, das einen Prozeß wiederholt, bis die genannten Daten codiert sind, falls der genannte Escape-Code codiert wird; und bei der das Codeausgabemittel (111) den genannten Code der genannten Daten gemäß der Gabelung von der Wurzel des genannten Codebaums zu dem Blatt ausgibt, in dem die genannten Daten gespeichert sind, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind.
  11. Datenkomprimierungsvorrichtung nach Anspruch 9, bei der das Codebaumhaltemittel (102) als Codebaumhaltemittel (107) konstruiert ist, das die genannten Codebäume hält, die jeweils für die Kontexte unabhängig sind und in denen ein Escape-Code, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind, im voraus eingetragen wurde, welche Datenkomprimierungsvorrichtung ferner umfaßt: ein Kontextunterscheidungsmittel (108), das unterscheidet, ob die genannten Daten in dem genannten Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel (103) bestimmt wurde; ein Escape-Code-Ausgabemittel (109), das den Escape-Code gemäß der Gabelung von dem oberen Ende des genannten Codebaums zu einem Blatt ausgibt, in dem der Escape-Code gespeichert ist, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind; ein Verlaufseintragmittel (112), das die genannte Kombination in dem Verlaufshaltemittel (101) einträgt, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind; ein Codeeintragmittel (113), das die genannten Daten in dem genannten Codebaum neu einträgt, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind; ein Kontextänderungsmittel (110), das eine Länge n des Kontextes verkürzt, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind; und ein Steuermittel (116), das einen Prozeß wiederholt, bis die genannten Daten codiert sind, falls der genannte Escape-Code codiert wird; und bei der das Codeausgabemittel (104) als Codeausgabemittel (111) konstruiert ist und den genannten Code der genannten Daten gemäß der Gabelung von der Wurzel des genannten Codebaums zu dem Blatt ausgibt, in dem die genannten Daten gespeichert sind, falls die genannten Daten in dem genannten Codebaum gespeichert sind.
  12. Datenkomprimierungsvorrichtung nach Anspruch 9, bei der das Codebaumhaltemittel (102) als Codebaumhaltemittel (107) konstruiert ist, das die genannten Codebäume hält, die jeweils für die Kontexte unabhängig sind und in denen ein Escape-Code, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind, im voraus eingetragen wurde, welche Datenkomprimierungsvorrichtung ferner umfaßt: ein Kontextunterscheidungsmittel (108), das unterscheidet, ob die genannten Daten in dem genannten Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel (103) bestimmt wurde; ein Escape-Code-Ausgabemittel (109), das den Escape-Code gemäß der Gabelung von der Wurzel des genannten Codebaums zu einem Blatt ausgibt, in dem der Escape-Code gespeichert ist, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind; ein Kontextänderungsmittel (110), das eine Länge n des Kontextes verkürzt, falls die genannten Daten in dem genannten Codebaum nicht gespeichert sind; ein Verlaufseintragmittel (114), das die Kombination aus den genannten Daten und dem Kontext in dem Verlaufshaltemittel (101) einträgt; ein Codeeintragmittel (115), das die genannten Daten in einem Codebaum neu einträgt; und ein Steuermittel (117), das bewirkt, daß das Verlaufseintragmittel (114) eine Kombination aus einem Kontext unmittelbar vor dem Codieren der genannten Daten und den genannten Daten in dem Verlaufshaltemittel einträgt, falls der genannte Escape-Code beim Codieren der genannten Daten auch nur einmal codiert wird, und bewirkt, daß das Codeeintragmittel (115) die genannten Daten in einem Codebaum neu einträgt, der einen Escape-Code hat, der unmittelbar vor dem Codieren der genannten Daten codiert worden ist; bei der das Codeausgabemittel (104) als Codeausgabemittel (111) konstruiert ist und den genannten Code der genannten Daten gemäß der Gabelung von der Wurzel des genannten Codebaums zu dem Blatt ausgibt, in dem die genannten Daten gespeichert sind, falls die genannten Daten in dem genannten Codebaum gespeichert sind.
  13. Datendekomprimierungsvorrichtung, die einen Code decodiert, der gemäß einem Verlauf des Auftretens in der Vergangenheit codiert worden ist, mit: einem Vordaten-Haltemittel (200), das n Daten hält, die vor dem Decodieren eines Codes decodiert worden sind; einem Verlaufshaltemittel (201), das eine Vielzahl von Kontexten hält, die gemäß Kombinationen aus decodierten Daten und n kontinuierlichen Daten, die decodiert wurden und den genannten decodierten Daten vorausgehen, auftraten und eine Verbindung zwischen decodierten Daten und unmittelbar vorausgehenden decodierten Daten bedeuten; einem Codebaum-Haltemittel (202), das Codebäume hält, die jeweils für jeden der genannten Kontexte unabhängig sind und jeweils Codes haben, die jeweilig als einzigartige Daten gemäß einer der Verbindung von decodierten Daten und der unmittelbar vorausgehenden decodierten Daten entsprechenden Gabelung von Knoten definiert sind, die ein Gabelungspunkt auf einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet, zu einem Blatt an dem Codebaum ist; einem Codebaumbestimmungsmittel (203), das einen Codebaum bestimmt, der Daten hat, die den codierten Daten entsprechen, auf der Basis der genannten Kontexte von Daten, die in dem Verlaufshaltemittel (201) gehalten werden; einem Decodiermittel (204), das die codierten Daten durch Scannen des genannten Codebaums, der durch das Codebaumbestimmungsmittel (203) selektiert wurde, ab der Wurzel gemäß einem Code der codierten Daten decodiert; einem Codebaum-Neuanordnungsmittel (205), das ein Blatt, in dem der Code gespeichert ist, gegen ein anderes Blatt oder einen internen Knoten austauscht; und einem Vordaten-Aktualisierungsmittel (206), das die decodierten Daten in dem Vordaten-Haltemittel (200) einträgt.
  14. Datendekomprimierungsvorrichtung nach Anspruch 13, bei der das Codebaum-Haltemittel (202) konstruiert ist als Codebaum-Haltemittel (207), das die genannten Codebäume hält, in denen ein Escape-Code, der als Daten definiert ist, die bedeuten, daß Daten nicht gespeichert sind, im voraus eingetragen wurde, welche Datendekomprimierungsvorrichtung ferner umfaßt: ein Kontextänderungsmittel (208), das die genannten Daten verwirft, falls ausgegebene Daten der genannte Escape-Code sind, um den Kontext zu verkürzen; und ein Steuermittel (213), das bewirkt, daß das Kontextänderungsmittel (208) den Kontext zurücksetzt, wenn der genannte Escape-Code decodiert wird, und einen Prozeß wiederholt, bis ein Code ohne den genannten Escape-Code decodiert ist.
  15. Datendekomprimierungsvorrichtung nach Anspruch 13, bei der das Codebaum-Haltemittel (202) als Codebaum-Haltemittel (207) konstruiert ist, das die genannten Codebäume hält, in denen ein Escape-Code im voraus gespeichert wurde, welche Datendekomprimierungsvorrichtung ferner umfaßt: ein Kontextänderungsmittel (208), das die genannten Daten verwirft, falls Ausgangsdaten der genannte Escape-Code sind, um den Kontext zu verkürzen; ein Verlaufseintragmittel (209), das alle erhaltenen Kontexte, wenn der genannte Escape-Code bei einem Decodierprozeß decodiert wird, und decodierte Daten in dem Verlaufshaltemittel (201) einträgt; ein Codeeintragmittel (210), das einen Code der genannten Daten in allen Codebäumen einträgt, die dem Kontext entsprechen, der zu der Zeit des Decodierens des genannten Escape-Codes bei dem Decodierprozeß für die genannten Daten erhalten wurde; und ein Steuermittel, das bewirkt, daß das Kontextänderungsmittel (208) den Kontext zurücksetzt, wenn der genannte Escape-Code decodiert wird, und einen Prozeß wiederholt, bis der genannte Escape-Code decodiert ist.
  16. Datendekomprimierungsvorrichtung nach Anspruch 13, bei der das Codebaum-Haltemittel (202) als Codebaum-Halte mittel (207) konstruiert ist, das die genannten Codebäume hält, in denen ein Escape-Code, der als Daten definiert ist, die bedeuten, daß Daten nicht eingetragen sind, im voraus gespeichert wurde, welche Datendekomprimierungsvorrichtung ferner umfaßt: ein Kontextänderungsmittel (208), das die genannten Daten verwirft, falls ausgegebene Daten der genannte Escape-Code sind, um den Kontext zu verkürzen; ein Verlaufseintragmittel (211), das einen Kontext zu der Zeit des letzten Decodierens des genannten Escape-Codes bei einem Decodierprozeß für die genannten Daten und die decodierten Daten in dem Verlaufshaltemittel (201) einträgt; ein Codee intragmittel (212), das einen Code der genannten Daten in einem Codebaum entsprechend einem Kontext zu der Zeit des letzten Decodierens des genannten Escape-Codes bei dem Decodierprozeß für die genannten Daten einträgt; und ein Steuermittel (213), das bewirkt, daß das Kontextänderungsmittel (208) den Kontext zurücksetzt, falls der genannte Escape-Code decodiert wird, und einen Prozeß wiederholt, bis ein Code ohne den genannten Escape-Code decodiert ist.
DE69532775T 1994-07-20 1995-04-21 Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät Expired - Lifetime DE69532775T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP16850294 1994-07-20
JP16850294A JP3278297B2 (ja) 1994-07-20 1994-07-20 データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置

Publications (2)

Publication Number Publication Date
DE69532775D1 DE69532775D1 (de) 2004-04-29
DE69532775T2 true DE69532775T2 (de) 2004-09-23

Family

ID=15869263

Family Applications (3)

Application Number Title Priority Date Filing Date
DE69535118T Expired - Lifetime DE69535118T2 (de) 1994-07-20 1995-04-21 Verfahren zur Datenkomprimierung und -dekomprimierung und zugehöriges Datenkomprimierungs- und -dekomprimierungsgerät
DE69527679T Expired - Lifetime DE69527679T2 (de) 1994-07-20 1995-04-21 Verfahren zur Datenkomprimierung und -Dekomprimierung
DE69532775T Expired - Lifetime DE69532775T2 (de) 1994-07-20 1995-04-21 Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE69535118T Expired - Lifetime DE69535118T2 (de) 1994-07-20 1995-04-21 Verfahren zur Datenkomprimierung und -dekomprimierung und zugehöriges Datenkomprimierungs- und -dekomprimierungsgerät
DE69527679T Expired - Lifetime DE69527679T2 (de) 1994-07-20 1995-04-21 Verfahren zur Datenkomprimierung und -Dekomprimierung

Country Status (4)

Country Link
US (1) US5907637A (de)
EP (3) EP1289153B1 (de)
JP (1) JP3278297B2 (de)
DE (3) DE69535118T2 (de)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3421700B2 (ja) * 1998-01-22 2003-06-30 富士通株式会社 データ圧縮装置及び復元装置並びにその方法
US6377930B1 (en) 1998-12-14 2002-04-23 Microsoft Corporation Variable to variable length entropy encoding
US6404931B1 (en) 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
JP2000201080A (ja) * 1999-01-07 2000-07-18 Fujitsu Ltd 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
GB2350984B (en) * 1999-06-11 2003-10-15 Mitel Corp Synchronisation method and system
JP2001136535A (ja) * 1999-08-25 2001-05-18 Fuji Xerox Co Ltd 画像符号化装置および量子化特性決定装置
US7054953B1 (en) * 2000-11-07 2006-05-30 Ui Evolution, Inc. Method and apparatus for sending and receiving a data structure in a constituting element occurrence frequency based compressed form
US7424409B2 (en) * 2001-02-20 2008-09-09 Context-Based 4 Casting (C-B4) Ltd. Stochastic modeling of time distributed sequences
US7092942B2 (en) * 2002-05-31 2006-08-15 Bea Systems, Inc. Managing secure resources in web resources that are accessed by multiple portals
JP2004221633A (ja) * 2003-01-09 2004-08-05 Ricoh Co Ltd 画像処理装置、画像処理用プログラム及び記憶媒体
WO2004070955A1 (ja) * 2003-02-03 2004-08-19 Sharp Kabushiki Kaisha 符号化装置及び方法、復号装置及び方法、プログラム、並びに記録媒体
GB2400291A (en) * 2003-04-05 2004-10-06 Autodesk Canada Inc Image processing using switch nodes
KR100959532B1 (ko) * 2003-12-18 2010-05-27 엘지전자 주식회사 Cavlc 복호 방법
JP2005217842A (ja) * 2004-01-30 2005-08-11 Fujitsu Ltd データ圧縮方法、データ復元方法及びそのプログラム
JP2005234687A (ja) * 2004-02-17 2005-09-02 Sony Corp メモリ管理方法、画像処理装置およびメモリ管理プログラム
US7403495B2 (en) * 2004-06-30 2008-07-22 Sap Ag Method and system for compressing a tree
US8203972B2 (en) * 2004-06-30 2012-06-19 Sap Ag Method and system for compressing a tree
US7660475B2 (en) * 2004-12-22 2010-02-09 Ntt Docomo, Inc. Method and apparatus for coding positions of coefficients
JP4707198B2 (ja) * 2006-10-19 2011-06-22 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置
US7573407B2 (en) * 2006-11-14 2009-08-11 Qualcomm Incorporated Memory efficient adaptive block coding
CN101584120B (zh) 2007-01-19 2013-01-09 三菱电机株式会社 表装置、可变长度编码装置、可变长度解码装置
US7605721B2 (en) * 2007-11-30 2009-10-20 Red Hat, Inc. Adaptive entropy coding compression output formats
US7518538B1 (en) * 2007-11-30 2009-04-14 Red Hat, Inc. Adaptive entropy coding compression with multi-level context escapes
US8396850B2 (en) * 2009-02-27 2013-03-12 Red Hat, Inc. Discriminating search results by phrase analysis
US8527500B2 (en) * 2009-02-27 2013-09-03 Red Hat, Inc. Preprocessing text to enhance statistical features
US8386511B2 (en) * 2009-02-27 2013-02-26 Red Hat, Inc. Measuring contextual similarity
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US10891659B2 (en) * 2009-05-29 2021-01-12 Red Hat, Inc. Placing resources in displayed web pages via context modeling
WO2010144497A2 (en) * 2009-06-09 2010-12-16 Sony Corporation Design trees for adaptive coding of images and videos using set partitioning in generalized hierarchical trees having directionality
US8321326B2 (en) * 2009-09-15 2012-11-27 Auerbach Group Llc Method and system for enhancing the efficiency of a digitally communicated data exchange
US20130099946A1 (en) * 2011-10-21 2013-04-25 International Business Machines Corporation Data Compression Utilizing Variable and Limited Length Codes
US9013760B1 (en) 2012-02-15 2015-04-21 Marvell International Ltd. Method and apparatus for using data compression techniques to increase a speed at which documents are scanned through a scanning device
DE102016200032A1 (de) * 2015-01-06 2016-07-07 Ignis Innovation Inc. System und Verfahren zum Extrahieren von Korrelationskurven für eine organische Leuchtvorrichtung
US10361712B2 (en) * 2017-03-14 2019-07-23 International Business Machines Corporation Non-binary context mixing compressor/decompressor
US10613797B2 (en) * 2017-06-13 2020-04-07 ScaleFlux, Inc. Storage infrastructure that employs a low complexity encoder
WO2020215216A1 (zh) * 2019-04-23 2020-10-29 Oppo广东移动通信有限公司 图像解码方法、解码器以及存储介质
CN111181568A (zh) * 2020-01-10 2020-05-19 深圳花果公社商业服务有限公司 数据压缩装置及方法、数据解压装置及方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3835467A (en) * 1972-11-10 1974-09-10 Ibm Minimal redundancy decoding method and means
US4500955A (en) * 1981-12-31 1985-02-19 International Business Machines Corporation Full word coding for information processing
US4626829A (en) * 1985-08-19 1986-12-02 Intelligent Storage Inc. Data compression using run length encoding and statistical encoding
US4853696A (en) * 1987-04-13 1989-08-01 University Of Central Florida Code converter for data compression/decompression
US4847677A (en) * 1988-04-27 1989-07-11 Universal Video Communications Corp. Video telecommunication system and method for compressing and decompressing digital color video data
US5131053A (en) * 1988-08-10 1992-07-14 Caere Corporation Optical character recognition method and apparatus
JPH088642B2 (ja) * 1989-07-27 1996-01-29 富士通株式会社 網点画像データ圧縮装置
US4955066A (en) * 1989-10-13 1990-09-04 Microsoft Corporation Compressing and decompressing text files
US5254990A (en) * 1990-02-26 1993-10-19 Fujitsu Limited Method and apparatus for compression and decompression of data
EP0470798B1 (de) * 1990-08-06 1997-10-29 Fujitsu Limited Wörterbuch-Suchsystem
EP0688104A2 (de) * 1990-08-13 1995-12-20 Fujitsu Limited Verfahren und Vorrichtung zur Datenkomprimierung
US5151950A (en) * 1990-10-31 1992-09-29 Go Corporation Method for recognizing handwritten characters using shape and context analysis
JP3083550B2 (ja) * 1990-11-20 2000-09-04 富士通株式会社 データ圧縮及び復元方法
JP3053656B2 (ja) * 1991-02-26 2000-06-19 富士通株式会社 データ圧縮における辞書登録方式
JPH04286084A (ja) * 1991-03-15 1992-10-12 Fujitsu Ltd データ圧縮および復元方式
JPH05152971A (ja) * 1991-11-29 1993-06-18 Fujitsu Ltd データ圧縮・復元方法
US5377281A (en) * 1992-03-18 1994-12-27 At&T Corp. Knowledge-based character recognition
FR2690388A1 (fr) * 1992-04-22 1993-10-29 Rockwell Abs France Dispositif support de vitre dans un lève-vitre de véhicule automobile et lève-vitre incorporant ce dispositif.
KR950000286B1 (ko) * 1992-05-28 1995-01-12 삼성전자 주식회사 산술 부호화 장치 및 방법
JPH0618412A (ja) * 1992-07-02 1994-01-25 Fuji Photo Film Co Ltd 走査型屈折率顕微鏡
EP0582907A3 (de) * 1992-08-10 1995-05-10 Stac Electronics Inc Verfahren und Vorrichtung zur Datenkomprimierung unter Verwendung von Zeichenkettenanpassung-Suche und Huffmankodierung.

Also Published As

Publication number Publication date
EP0695040A3 (de) 1996-09-04
DE69527679T2 (de) 2002-12-05
EP1024600A2 (de) 2000-08-02
EP0695040A2 (de) 1996-01-31
DE69535118D1 (de) 2006-08-31
EP1024600B1 (de) 2004-03-24
EP0695040B1 (de) 2002-08-07
EP1289153B1 (de) 2006-07-19
DE69532775D1 (de) 2004-04-29
EP1024600A3 (de) 2000-09-20
JP3278297B2 (ja) 2002-04-30
JPH0830432A (ja) 1996-02-02
EP1289153A3 (de) 2003-04-09
EP1289153A2 (de) 2003-03-05
US5907637A (en) 1999-05-25
DE69535118T2 (de) 2006-12-21
DE69527679D1 (de) 2002-09-12

Similar Documents

Publication Publication Date Title
DE69532775T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE19622045C2 (de) Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist
DE60129643T2 (de) Verfahren und Gerät für die Ermittlung vom längsten Prefixzusammenbringen in einem Kommunikationsnetz
DE69916661T2 (de) Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge
DE60035171T2 (de) Verfahren und Schaltungen zum schnellen Auffinden des minimalen / maximalen Wertes in einer Menge von Zahlen
DE4340591C2 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE4437790B4 (de) Verfahren und Vorrichtung zur Verwendung von endlichen Automaten zur Durchführung einer Kanalmodulation und einer Fehlerkorrektur und einer Entropie-Kodierung
DE60100416T2 (de) Dekoder für Kode variabler Länge
DE69832593T2 (de) Netzwerk zur datencodierung
DE60316696T2 (de) Verfahren zum Routen von Datenpaketen und Routing-Vorrichtung
DE69915725T2 (de) Datenkompression unter Verwendung von Primzahlexponenten
DE60107964T2 (de) Vorrichtung zur kodierung und dekodierung von strukturierten dokumenten
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE112011104005T5 (de) Verfahren und Datenverarbeitungssystem zum Kodieren von in einer spaltenorientierten Weise gespeicherten Daten, Datenverarbeitungsprogramm und Computerprogrammprodukt
DE69820230T2 (de) N-weg verarbeitung von bitketten in einer datenflussarchitektur
DE60225785T2 (de) Verfahren zur codierung und decodierung eines pfades in der baumstruktur eines strukturierten dokuments
DE19625157A1 (de) Datenkompressions- und -expansionsverfahren
DE69133481T2 (de) Verfahren und Vorrichtung zur Kompression und Dekompression von Daten
DE4322995C2 (de) Decoder und Decodierungsverfahren für Codes variabler Länge
DE60002580T2 (de) 3d maschenkompression und -kodierung
DE19653133A1 (de) System und Verfahren zur pre-entropischen Codierung
JP3425143B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: SEEGER SEEGER LINDNER PARTNERSCHAFT PATENTANWAELTE