DE69133481T2 - Verfahren und Vorrichtung zur Kompression und Dekompression von Daten - Google Patents

Verfahren und Vorrichtung zur Kompression und Dekompression von Daten Download PDF

Info

Publication number
DE69133481T2
DE69133481T2 DE69133481T DE69133481T DE69133481T2 DE 69133481 T2 DE69133481 T2 DE 69133481T2 DE 69133481 T DE69133481 T DE 69133481T DE 69133481 T DE69133481 T DE 69133481T DE 69133481 T2 DE69133481 T2 DE 69133481T2
Authority
DE
Germany
Prior art keywords
character
dictionary
sequence
code
registered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69133481T
Other languages
English (en)
Other versions
DE69133481D1 (de
Inventor
Shigeru Yoshida
Yasuhiko Atsugi-shi Nakano
Yoshiyuki Okada
Hirotaka Atsugi-shi Chiba
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
Priority claimed from JP2045163A external-priority patent/JP3038223B2/ja
Priority claimed from JP2062325A external-priority patent/JP2590287B2/ja
Priority claimed from JP2070379A external-priority patent/JP2774350B2/ja
Priority claimed from JP2275835A external-priority patent/JP2825960B2/ja
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of DE69133481D1 publication Critical patent/DE69133481D1/de
Application granted granted Critical
Publication of DE69133481T2 publication Critical patent/DE69133481T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft ein Verfahren zum Komprimieren und Dekomprimieren von Daten und, im besonderen, ein Verfahren zum Komprimieren und Dekomprimieren von Daten in dem LZW-(Lempel-Ziv-Welch)-System, das für eine Codierung des inkrementalen Parsing-Typs bei einer Universalcodierung verwendet wird.
  • Der Prozeß und die Vorrichtung gemäß der vorliegenden Erfindung sind zum Beispiel in einem Bilddatenkomprimierungssystem zum Setzen des computerisierten Typs (computerized type setting: CTS) in einem Zeitungssatzherstellungssystem, bei einer Dateikomprimierung in einer Dateiorganisationsvorrichtung eines elektronischen Rechnersystems, bei einer Datenkomprimierung zum Speichern in einem Speichermedium wie etwa einer Magnetplatte und dergleichen einsetzbar.
  • STAND DER TECHNIK
  • In einem LZW-System nach Stand der Technik werden, wenn ein Codieren ausgeführt wird, indem die eingegebene Zeichensequenz in voneinander gesonderte Segmente einer Zeichensequenz getrennt wird, die gegenwärtig codierten Zeichensequenzen als unabhängig auftretend von den zuvor codierten Zeichensequenzen angesehen.
  • Daher stellt solch ein Verfahren kein Problem bei einer Informationsquelle dar, in der jedes Zeichen in der Zeichensequenz unabhängig von den vorhergehenden Zeichen auftritt, nämlich bei einer speicherlosen Informationsquelle. Viele Daten, wie etwa praktische Phrasen, werden jedoch als abhängig auftretend von den zuvor auftretenden Zeichen angesehen, nämlich als Informationsquelle mit einem Speicher. Nach Stand der Technik kann bei dem Codieren in einem LZW-System keine Hysterese des Auftretens der Zeichensequenz genutzt werden, weshalb sich auch nach der Datenkomprimierung ein Redundanzproblem ergibt, das mit der Auftrittsabhängigkeit der Zeichensequenz zusammenhängt.
  • Es sei erwähnt, daß in der Akte der vorliegenden Erfindung eine Worteinheit von Daten als Zeichen bezeichnet wird und Daten, die aus einer Vielzahl von sequentiellen Wörtern gebildet sind, als Zeichensequenz bezeichnet werden.
  • Datenkompression und -dekompression auf inkrementale Parsing-Weise gemäß einem LZ-System (Lempel-Ziv-System) oder dem LZW-System nach dem Stand der Technik wurde offenbart in der geprüften japanischen Patentveröffentlichung (Kokoku) 63-56726, dem US-Patent 4,464,465, dem US-Patent 4,558,302 und in dem Artikel von Francis Bacon, "How to quadruple dial-up communications efficiency", XP 2082980.
  • OFFENBARUNG DER ERFINDUNG
  • Eine Aufgabe der Erfindung ist es, eine größere Effizienz bei der Datencodierung durch die Verwendung eines Index bereitzustellen, der basiert auf der Abhängigkeit des letzten Zeichens der unmittelbar vorhergehenden codierten Zeichensequenz, wobei die Abhängigkeit beim Ausführen der Codierung und Decodierung durch die Bezeichnung eines aus einer Vielzahl von Wörterbüchern integriert wird und die anfängliche Registrierung der Vielzahl von Wörterbüchern vereinfacht wird.
  • Gemäß der Erfindung wird ein Verfahren zum Komprimieren und Dekomprimieren von Daten auf inkrementale Parsing-Weise geschaffen, bei dem eine Codierung durchgeführt wird durch das Bezeichnen der Referenzzahl einer Partialsequenz mit einer maximalen Längenkoinzidenz von den codierten Partialsequenzen, die in einem Wörterbuch registriert sind, hinsichtlich einer empfangenen Zeichensequenz, durch Bezeichnen einer neuen Referenzzahl für eine Partialsequenz, welche erhalten wird, indem ein Zeichen zu einer als Codewort erhaltenen Referenzzahl hinzugefügt wird, und durch Registrieren der mit der neuen Referenzzahl bezeichneten Partialsequenz in dem Wörterbuch, und bei dem eine Decodierung durchgeführt wird durch das Suchen nach Partialsequenzen, welche in dem Wörterbuch registriert sind, unter der Verwendung eines Codeworts, das durch die Referenzzahl der Partialsequenz repräsentiert wird, durch Wiederherstellen der ursprünglichen Partialsequenz, durch Bezeichnen einer neuen Referenzzahl für eine Partialsequenz, die erhalten wird, indem das Startzeichen der gegenwärtig wiederhergestellten Partialsequenz zu dem zuvor verarbeiteten Codewort hinzugefügt wird, und durch Registrieren der mit der neuen Referenzzahl bezeichneten Partialsequenz in dem Wörterbuch,
    dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst:
    Erstellen eines Referenzwörterbuchs durch eine Gruppe von Wörterbüchern, umfassend:
    eine Anzahl von Wörterbüchern, welche geringer ist als die Anzahl von allen Arten der zu verarbeitenden Zeichen, und für jedes Wörterbuch anfänglich mit Bezeichnungen der Referenzzeichen registrierte Zeichensequenzen, welche mit einer höheren Auftretefrequenz auftreten und umfassen ein Zeichen von allen Arten der Zeichen pro Zeichen oder eine Vielzahl von Zeichen pro Zeichen;
    Codieren der empfangenen Zeichensequenzen durch Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe von Wörterbüchern gemäß der Suchinformation, welche die Abhängigkeitsbeziehung zu den codierten Zeichensequenzen repräsentiert; und
    falls eine empfangene Zeichensequenz nicht in dem bezeichneten Wörterbuch existiert, Registrieren einer Zeichensequenz mit einer Bezeichnung einer neuen Referenzzahl, welche Zeichensequenz erhalten wird, indem ein Sequenzzeichen zu der Referenzzahl einer codierten Zeichensequenz hinzugefügt wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist eine erläuternde Darstellung, die ein Datenkomprimierungs- und -wiederherstellungsverfahren im LZW-System des inkrementalen Parsing-Typs nach Stand der Technik zeigt;
  • 2 und 3 sind Darstellungen, die einen Prozeß zum Codieren und Decodieren in einem LZW-System auf inkrementale Parsing-Weise nach Stand der Technik zeigen;
  • 4 ist eine Darstellung, die ein exemplarisches System zum Implementieren eines Verfahrens zur Datenkomprimierung und -dekomprimierung zeigt;
  • 5 ist eine Darstellung, die die Konstruktion einer Speichervorrichtung für Programme und einer Speichervorrichtung für Daten zeigt, die in dem System von 4 eingesetzt werden;
  • 6 ist ein Flußdiagramm, das eine Operation des Systems von 4 zeigt;
  • 7 und 8 sind Flußdiagramme zur Erläuterung der Operation, die dem Flußdiagramm von 6 zugeordnet ist;
  • 9 ist ein Flußdiagramm zum Zeigen eines Prozesses zur Erzeugung des Anfangswertes eines Wörterbuchs mit Musterdaten;
  • 10 ist ein Flußdiagramm, das einen Prozeß zur Komprimierung eines Wörterbuchs zeigt;
  • 11 ist ein Flußdiagramm, das einen Codierprozeß zeigt;
  • 12 ist ein Flußdiagramm, das einen Decodierprozeß zeigt;
  • 13 ist eine Darstellung, die die Registrierung eines Zusatzcodes zeigt;
  • 14 ist eine Darstellung, die Daten zeigt, die in einer Speichervorrichtung entsprechend einer Kette (oder Zeichensequenz) registriert sind;
  • 15 ist eine Darstellung, die die Operation zum Decodieren zeigt;
  • 16 ist eine Darstellung eines anderen exemplarischen Systems zum Implementieren eines Verfahrens zur Datenkomprimierung und -dekomprimierung;
  • 17 ist ein Flußdiagramm, das einen Prozeß zum Erzeugen eines komprimierten Codes zeigt;
  • 18 ist eine Darstellung, die ein Beispiel für eine optimale Codekonvertierung zeigt;
  • 19 ist eine Darstellung, die ein Beispiel für das Festlegen eines optimalen Codes für jeweilige Einheiten eines Referenzwörterbuchs zeigt;
  • 20 ist eine Darstellung, die ein Beispiel für einen komprimierten Code zeigt, auf den der optimale Code angewendet wird;
  • 21 ist eine Darstellung, die das Resultat einer Messung für die Anzahl von Auftritten eines Übergangs zwischen Zeichengruppen zeigt;
  • 22 ist eine Darstellung, die die Ordnung der Übergangsauftrittsrate zwischen den Zeichengruppen zeigt;
  • 23 ist eine Darstellung, die ein Beispiel für einen optimalen Code und ein Codewort durch einen Übergangscode zeigt;
  • 24 ist eine Darstellung einer beispielhaften Ausführungsform des Systems zum Implementieren eines Verfahrens zur Datenkomprimierung und -dekomprimierung gemäß der Erfindung;
  • 25 ist eine Darstellung, die eine Speichervorrichtung zum Speichern eines Programms und eine Speichervorrichtung zum Speichern von Daten zeigt;
  • 26 ist eine Darstellung, die einen Codieralgorithmus zeigt;
  • 27 ist eine Darstellung, die einen Decodieralgorithmus zeigt;
  • 28 ist eine Darstellung eines anderen exemplarischen Systems zum Implementieren eines Verfahrens zur Datenkomprimierung und -dekomprimierung;
  • 29 ist eine Darstellung, die einen Baum von Wörterbüchern zeigt, wobei das letzte Zeichen von Zeichensequenzen als Wurzel verwendet wird;
  • 30 ist eine Darstellung, die die Architektur zum Ausführen eines Decodierens eines Datenkomprimierungscodes in eine Zeichensequenz zeigt;
  • 31 ist eine Darstellung, die ein Beispiel für eine Vorrichtung zum Codieren zeigt;
  • 32 ist ein Flußdiagramm, das eine Operation der Codiervorrichtung zeigt;
  • 33 und 34 sind Darstellungen, die Beispiele für ein Gesamtwörterbuch und ein Individualwörterbuch zeigen;
  • 35 ist eine Darstellung eines Baums von Individualwörterbüchern;
  • 36 ist eine Darstellung, die ein Codewort zeigt;
  • 37 ist eine Darstellung, die ein Beispiel für eine Vorrichtung zum Decodieren zeigt;
  • 38(A), (B) und (C) sind Flußdiagramme, die einen Codierprozeß zeigen;
  • 39 ist eine Darstellung, die Beispiele für einen Baum von Wörterbüchern und das Codieren einer Zeichensequenz zeigt; und
  • 40 ist eine Darstellung zum Beschreiben einer Vorrichtung zur Datenkomprimierung und -wiederherstellung als Zusammenfassung.
  • BESTER MODUS ZUM AUSFÜHREN DER ERFINDUNG
  • Bevor die bevorzugten Ausführungsformen beschrieben werden, erfolgt die jeweilige Erläuterung für ein Datenkomprimierungssystem des inkrementalen Parsing-Typs nach Stand der Technik unter Bezugnahme auf 1, für den Codierprozeß in einem LZW-System nach Stand der Technik unter Bezugnahme auf 2 und für einen Decodierprozeß unter Bezugnahme auf 3.
  • Ein Datenkomprimierungssystem von 1 hat einen Komprimierer 1 und ein Wörterbuch 2. Eine Zeichensequenz, die zum Beispiel nur aus den Zeichen a, b, c gebildet ist, nämlich ababcbabab, wird eingegeben. Hinsichtlich der eingegebenen Zeichensequenz wird eine Kette von individuellen Zeichen a, b, c in dem Wörterbuch 2 jeweilig als Anfangswerte entsprechend den Nummern 1, 2, 3 registriert. Ketten der Sequenz von Zeichen ab, ba, abc, cb, bab, baba, aa, aaa, aaaa werden in dem Wörterbuch 2 entsprechend den Nummern 4 bis 12 durch Lernen registriert. Hinsichtlich des Wörterbuchs 2 führt der Komprimierer 1 eine Suche unter Verwendung der registrierten Ketten aus. In dem Komprimierer 1 erfolgt die Komprimierung unter Verwendung der in dem Wörterbuch 2 registrierten Ketten, und die resultierenden komprimierten Daten werden ausgegeben.
  • Bei einem LZW-System-Codierprozeß, bei dem ein wiederbeschreibbares Wörterbuch verwendet wird, wird nach Stand der Technik die eingegebene Zeichensequenz in voneinander gesonderte Zeichensequenzen, d. h., Ketten geteilt. Solche Ketten werden in dem Wörterbuch mit Referenznummern in der Ordnung des Auftretens registriert, und die gegenwärtig eingegebene Zeichensequenz wird durch die Referenznummer der Zeichensequenz beschrieben, die in dem Wörterbuch registriert ist und eine maximale Länge einer koinzidierenden Sequenz von Zeichen hat.
  • Bei dem LZW-System-Codierprozeß von 2 wird bei Schritt S1 das Codieren nach dem vorläufigen Registrieren von Ketten, die aus einzelnen Zeichen gebildet sind, für alle Zeichen in dem Wörterbuch initiiert. Beim Codieren wird bei Schritt S1 eine Suche im Wörterbuch nach dem führenden Zeichen K ausgeführt, um die Referenznummer ω zu finden und diese als Präfix-Kette festzulegen. Dann wird das nächste Zeichen K der eingegebenen Daten bei Schritt S2 ausgelesen. Danach wird bei Schritt S3 eine Prüfung vorgenommen, um zu bestimmen, ob alle eingegebenen Zeichen ausgelesen sind. Anschließend wird bei Schritt S4 eine Suche im Wörterbuch nach "ωK" ausgeführt, das gebildet wird, indem das bei Schritt S2 ausgelesene Zeichen K zu der Präfix-Kette ω hinzugefügt wird. Wenn bei Schritt S4 die Kette "ωK" in dem Wörterbuch nicht existiert, geht der Prozeß zu Schritt S6 über, um einen Code (ω) auszugeben, der für ω als Referenznummer ω für die Kette K repräsentativ ist, die bei Schritt S1 erhalten wurde, und die Kette "ωK" wird mit einer neuen Referenznummer in dem Wörterbuch registriert. Ferner wird das bei Schritt S2 eingegebene Zeichen K durch die Referenznummer ω ersetzt. Weiterhin wird die Adresse n des Wörterbuchs inkrementiert. Dann kehrt der Prozeß zu Schritt S2 zurück, um das nächste Zeichen K zu lesen.
  • Wenn andererseits die Kette "ωK" in dem Wörterbuch vorhanden ist, wird die Kette "ωK" durch die Referenznummer ω bei Schritt S5 ersetzt. Dann kehrt der Prozeß zu Schritt S2 zurück, um eine Suche zum Auffinden der maximalen Koinzidenz zu wiederholen, bis das Auffinden der Kette "ωK" in dem Wörterbuch unmöglich wird.
  • Der Decodierprozeß in 3 wird durch die Operation ausgeführt, die zu der Codierung in 2 entgegengesetzt ist.
  • Beim Decodieren in 3 wird das Decodieren nach dem vorläufigen Registrieren von Ketten von einzelnen Zeichen als Anfangswerte bezüglich aller Zeichen im Wörterbuch ähnlich wie beim Codieren initiiert.
  • Zuerst wird bei Schritt S1 der erste Code, nämlich die Referenznummer, ausgelesen. Dann wird der gegenwärtige Code als alter Code OLDcode festgelegt. Da der erste Code mit der Referenznummer von einem der einzelnen Zeichen koinzidiert, die bereits im Wörterbuch registriert sind, wird die Zeichencode-(K)-Koinzidenz mit dem Eingangscode herausgefunden und das Zeichen K ausgegeben.
  • Es sei erwähnt, daß das Zeichen K in FINchar für einen späteren Ausnahmeprozeß angeordnet wird. Dann geht der Prozeß zu Schritt S2 über, um den nächsten Code auszulesen und als INcode festzulegen. Bei Schritt S3 wird eine Prüfung ausgeführt, um zu bestimmen, ob der ausgelesene Code ein neuer Code ist oder nicht, nämlich das Vorhandensein oder Nichtvorhandensein der Beendigung der Codeeingabe. Dann geht der Prozeß zu Schritt S4 über, um zu prüfen, ob der bei Schritt S3 eingegebene Zahlencode definiert ist, d. h., im Wörterbuch registriert ist oder nicht. Normalerweise wurde das eingegebene Codewort im Wörterbuch bei dem vorhergehenden Prozeß registriert, und der Prozeß geht zu Schritt S5 über, um den Kettencode (ωK) entsprechend dem Zahlencode aus dem Wörterbuch auszulesen. Bei Schritt S6 wird das Zeichen K temporär gestapelt, und unter Verwendung des Referenznummerncodes (ω) kehrt der Prozeß zu Schritt S5 zurück. Die Prozesse der Schritte S5 und S6 werden wiederholt, bis die Referenznummer ω eine für das einzelne Zeichen K ist. Schließlich geht der Prozeß zu Schritt S7 über, um die bei Schritt S6 gestapelten Zeichen auf LIFO-(Last In First Out)-Art auszugeben (Auslesen des zuletzt Eingeschriebenen). Gleichzeitig werden bei Schritt S7 der zuvor verwendete Code ω und das Startzeichen K der gegenwärtig dekomprimierten Zeichensequenz kombiniert und wird der Kette, die als "ω·K" beschrieben wird, eine neue Referenznummer verliehen, um sie in dem Wörterbuch zu registrieren.
  • Ein Beispiel für ein anderes System zum Implementieren eines Verfahrens zur Datenkomprimierung und -dekomprimierung ist in 4 gezeigt.
  • In dem System von 4, das ein Datenkomprimierungssystem unter Verwendung eines LZW-Codes als Code des inkrementalen Parsing-Typs ist, wird beim Codieren die eingegebene Zeichensequenz durch Bezeichnung durch eine Referenznummer der Kette mit maximaler Längenkoinzidenz von bereits codierten Ketten, die in dem Wörterbuch registriert sind, codiert, wird ferner zu der durch die Referenznummer identifizierte Kette das nächste einzelne Zeichen hinzugefügt, um eine Kette zu bilden, um eine neue Referenznummer im Wörterbuch 105 zu registrieren, und wird beim Decodieren mit dem Codewort, das durch die Referenznummer der Kette identifiziert wird, eine Suche im Wörterbuch 105 ausgeführt, um die Originalkette wiederherzustellen, und dann wird das Startzeichen der gegenwärtig dekomprimierten Kette zu der zuvor dekomprimierten Kette hinzugefügt, um sie in dem Wörterbuch durch das Bezeichnen einer neuen Referenznummer zu registrieren.
  • In dem System von 4 werden bei der Initialisierung des Wörterbuchs 105, was die gewünschten Muster der Zeichensequenzen anbelangt, die mit hoher Häufigkeit auftretenden Ketten von den im Wörterbuch durch einen Codierprozeß registrierten Ketten als bereits codierte Ketten angesehen und in dem Wörterbuch 105 als Anfangswerte registriert.
  • In dem System von 4 werden Musterdaten durch Daten vorbereitet, in denen besondere Arten von verschiedenen Arten von Daten als Eingangsdaten häufig auftreten. Mit diesem Muster wird ein Wörterbuch durch LZW-Codierung für die Daten des Musters erstellt, die mit hoher Häufigkeit auftreten, wie in 6 (S1) gezeigt. Dann wird das Wörterbuch komprimiert, indem in dem erstellten Wörterbuch nur Ketten, die mit hoher Häufigkeit auftreten, zum Bilden der Anfangswerte des Wörterbuchs beibehalten werden (S2).
  • Dann wird, wie in 7 und 8 gezeigt, nach der Initialisierung eines Prozesses zum Registrieren der Anfangswerte, die durch Lernen der Daten des Musters erhalten werden, die LZW-Codierung und LZW-Decodierung ausgeführt, so daß selbst in dem Anfangsabschnitt der Eingangsdaten eine ausreichende Menge von Ketten in dem Wörterbuch registriert ist und daher ein erhöhtes Komprimierungsverhältnis erreicht werden kann.
  • In der Praxis sind bei der LZW-Codierung von Musterdaten Zähler für jede Referenznummer in dem Wörterbuch vorgesehen, um das Auftreten der Verwendung der relevanten Referenznummern während eines Codierprozesses zu zählen. Dann werden die Ketten mit kleinen Zählerwerten aus dem Wörterbuch gelöscht, und nur Ketten mit hoher Auftrittshäufigkeit werden beibehalten, um das Wörterbuch zu erhalten. Dann wird das Codieren und Decodieren entweder bei einem Verfahren zum Codieren oder Decodieren ausgeführt, nachdem die mit hoher Häufigkeit auftretenden Ketten in dem Wörterbuch als Anfangswert registriert sind, oder, als Alternative, bei einem Verfahren zum Codieren oder Decodieren durch Festlegen der mit hoher Häufigkeit auftretenden Ketten als nichtwiederbeschreibbaren, feststehenden Abschnitt am Anfang des Wörterbuchs als Anfangswerte.
  • Die Konstruktion einer Speichervorrichtung für ein Programm und einer Speichervorrichtung für Daten, die in dem System von 4 verwendet werden, ist in 5 gezeigt. Bei der Konstruktion von 5 bezeichnet 112 eine CPU als Steuermittel. Mit der CPU 112 sind ein Programmspeicher 114 und ein Datenspeicher 126 verbunden.
  • In dem Programmspeicher ist ein Steuerprogramm 116 vorgesehen, ein Maximalkoinzidenz-Suchprogramm zum Suchen der maximalen Koinzidenz unter Verwendung eines LZW-Codes, ein Codierprogramm 120 zum Konvertieren der eingegebenen Zeichensequenzen in LZW-Codes, ein Decodierprogramm zum Dekomprimieren der Codes, die durch das Codierprogramm 120 in LZW-Codes konvertiert wurden, in die Originalzeichensequenzen und ein Wörterbuchanfangswert-Erzeugungsprogramm 124 zum Erzeugen eines Wörterbuchanfangswertes mit Ketten, die mit hoher Häufigkeit im Register des Wörterbuchs auftreten und durch LZW-Codierung bezüglich der Daten des gewünschten Musters erhalten wurden.
  • Andererseits ist in dem Datenspeicher ein Datenpuffer zum Speichern von zu codierenden Zeichensequenzen und von zu decodierenden Codesequenzen vorgesehen, und ein Wörterbuch 110, das zum Codieren und Decodieren bezüglich eines LZW-Codes verwendet wird und von Zeit zu Zeit aktualisiert wird.
  • Im folgenden wird die Datenkomprimierung bei der Konstruktion von 5 erläutert.
  • Zunächst werden vor dem Codieren und Decodieren gewünschte Daten des Musters in dem Datenpuffer 128 des Datenspeichers 126 gespeichert. Als Musterdaten werden spezifische Arten von Daten verwendet, die statistisch mit hoher Häufigkeit auftreten. Unter der Bedingung, daß die Musterdaten in dem Datenpuffer 128 gespeichert sind, initiiert die CPU 112 ein Wörterbuchanfangswert-Erzeugungsprogramm 124, um einen Prozeß zum Erzeugen des Anfangswertes des Wörterbuchs auszuführen. Praktisch verwendet das Wörterbuchanfangswert-Erzeugungsprogramm 124 das Codierprogramm 120, um einen LZW-Codierprozeß bezüglich der Daten des Musters in dem Datenpuffer 128 auszuführen, und es registriert Daten, die aus den codierten Ketten gebildet sind, mit den Referenznummern in dem Wörterbuch 110 der Ordnung nach. Bei der Registrierung für das Wörterbuch werden die Zähler mit jeweiligen Referenznummern beliefert. Wenn eine Suche nach der maximalen Koinzidenz über die Referenznummern der Ketten ausgeführt wird, wird der Zähler bei jedem Auftreten inkrementiert. Deshalb kann die Häufigkeit des Auftretens von jeweiligen Ketten gezählt werden.
  • Wenn die LZW-Codierung bezüglich der Musterdaten vollendet ist, wird der Wörterbuchanfangswert erzeugt, indem das Wörterbuch 110 auf solch eine Weise komprimiert wird, daß von dem Wörterbuch 110, das in dem Datenspeicher erhalten wurde, nur Ketten beibehalten werden, deren Anzahl in dem Zähler gleich oder größer als ein Schwellenwert T ist.
  • Der so erhaltene Wörterbuchanfangswert wird in einer spezifischen Zone in dem Datenspeicher gespeichert und in dem Wörterbuch 110 während des Initialisierungsprozesses zum Codieren und Decodieren registriert. Andererseits ist es auch möglich, den Wörterbuchanfangswert in dem führenden Abschnitt des Wörterbuchs aufzubewahren, das zum Codieren und Decodieren verwendet wird, und den Abschnitt mit den Wörterbuchanfangswerten zur Wiederbeschreibbarkeitssperrzone zu erklären.
  • Als nächstes wird der Prozeß zum Erzeugen des Wörterbuchanfangswertes mit den Daten des Musters unter Bezugnahme auf 9 erläutert.
  • Zuerst wird bei Schritt S1 das Wörterbuch initialisiert, um das erste Zeichen der Zeichensequenz zu enthalten, die die Daten des Musters darstellt. Und zwar wird der erste Zeichencode i in der Adresse i des Wörterbuchs registriert. Als nächstes wird unter Verwendung eines Zählwertes n der registrierten Anzahl von Ketten als Anzahl von Zeichen n von allen einzelnen Zeichen die Referenznummer ω, die durch eine Suche im Wörterbuch nach dem ersten Zeichen K der sukzessive eingegebenen Zeichen erhalten wird, als Präfix-Kette ω festgelegt.
  • Bei der Initialisierung bei Schritt S1 ist es möglich, alle einzelnen Zeichen der Zeichensequenz, die die Daten des Musters darstellt, mit den Referenznummern in dem Wörterbuch zu registrieren.
  • Dann geht der Prozeß zu Schritt S2 über. Das nächste eingegebene Zeichen K wird ausgelesen. Bei Schritt S3 wird eine Prüfung ausgeführt, um zu bestimmen, ob das Zeichen K vorhanden ist, und zwar wird eine Prüfung ausgeführt, um zu bestimmen, ob das Lesen der eingegebenen Zeichensequenz vollendet ist oder nicht. Dann geht der Prozeß zu Schritt S4 über. Bei Schritt S4 wird eine Prüfung ausgeführt, um zu bestimmen, ob eine Kette "ωK", die durch Kombinieren der Referenznummer ω des eingegebenen Startzeichens, d. h., der Präfix-Kette ω, mit dem zweiten eingegebenen Zeichen K gebildet wird, in dem Wörterbuch vorhanden ist.
  • Da diesmal nur zwei Zeichen eingegeben werden, ist die Zeichensequenz "ωK" in dem Wörterbuch nicht vorhanden. Deshalb geht der Prozeß zu Schritt S5 über, um die Kette "ωK" in der Adresse n des Wörterbuchs zu registrieren. Dann wird das zweite Zeichen K durch die Präfix-Kette "ω" ersetzt. Ferner wird ein Zählwert cnt(n) zum Zählen des Auftretens des Erscheinens der Referenznummer "ω" erzeugt und auf Null zurückgesetzt. Weiterhin wird der Zählwert n, der für die Nummer der gegenwärtigen Registrierung repräsentativ ist, inkrementiert.
  • Falls bei Schritt S4 die Kette "ωK" in dem Wörterbuch vorhanden ist, geht der Prozeß zu Schritt S5 über. Dann wird die Kette "ωK" durch die Präfix-Kette "ω" ersetzt. Da die Referenznummer "ω" verwendet wird, wird dadurch der Zählwert cnt(n) inkrementiert, der für die Kette der Referenznummer ω repräsentativ ist.
  • Wenn das Verarbeiten aller Zeichen vollendet ist, indem der obige Prozeß der Schritte S2 bis S6 wiederholt wird, springt der Prozeß von Schritt S3 zu Schritt S7, um die letzte Adresse und den Inhalt des zu jener Zeit erhaltenen Wörterbuchs in die Speichervorrichtung zu schreiben, und dann ist der Prozeß zum Erzeugen des Wörterbuchs beendet.
  • Hinsichtlich des so erzeugten Wörterbuchs ist ein Prozeß zum Komprimieren des Wörterbuchs, um nur Ketten mit hoher Auftrittshäufigkeit beizubehalten, in 10 gezeigt.
  • Zuerst wird bei Schritt S1 die letzte Adresse und der Inhalt des durch den Prozeß von 9 erhaltenen Wörterbuchs in den Speicher geschrieben. Dann wird die Adresse i des Wörterbuchs auf Null zurückgesetzt.
  • Anschließend wird bei Schritt S2 die Adresse des Wörterbuchs inkrementiert. Bei Schritt S3 wird eine Prüfung ausgeführt, um zu bestimmen, ob die letzte Adresse erreicht ist. Dann geht der Prozeß zu Schritt S4 über, um zu prüfen, ob der Zählwert cnt(i) der Wörterbuchadresse i kleiner als der Schwellenwert T ist, der für die vorbestimmte Auftrittshäufigkeit repräsentativ ist.
  • Wenn der Zählwert cnt(i) kleiner als der Schwellenwert T ist, geht der Prozeß zu Schritt S5 über, um einen Löschprozeß zum Löschen der gegenwärtigen Wörterbuchadresse i und Ersetzen der Wörterbuchadresse i durch die Wörterbuchadresse j auszuführen. Anschließend wird bei Schritt S6 eine Prüfung ausgeführt, um zu bestimmen, ob die Wörterbuchadresse j unmittelbar im Anschluß an die gelöschte Wörterbuchadresse i innerhalb der letzten Adresse n liegt. Falls sie innerhalb der letzten Adresse n liegt, geht der Prozeß dann zu Schritt S7 über, um eine Prüfung auszuführen, um zu bestimmen, ob die Ketten in den Wörterbuchadressen im Anschluß an die Adresse i eine Referenznummer ω größer als i = ω haben.
  • Wenn die Kette eine Referenznummer größer als die Referenznummer ω in den Adressen im Anschluß an die gelöschte Wörterbuchadresse i hat, geht der Prozeß zu Schritt S8 über. Dann wird der Wert der Referenznummer der Ketten um "1" dekrementiert. Danach wird bei Schritt S9 die Kette "ωK" in der Wörterbuchadresse j an einer vorhergehenden Wörterbuchadresse j – 1 registriert. Danach wird die verarbeitete Wörterbuchadresse j für den nächsten Prozeßzyklus auf j + 1 inkrementiert, und dann kehrt der Prozeß zu Schritt S6 zurück. Die Prozesse der Schritte S6, S7, S8 und S9 werden wiederholt, bis die Wörterbuchadresse j die letzte Adresse n überschreitet. Und zwar werden die Prozesse auf solch eine Weise wiederholt, daß dann, wenn die Ketten eine Auftrittshäufigkeit haben, die unter dem Schwellenwert liegt, die Referenznummern der Ketten in den der Adresse der gelöschten Ketten nachfolgenden Adressen um 1 verringert werden und deren Registrieradresse um 1 verschoben wird.
  • Wenn die Prozesse der Schritte S6 bis S9 vollendet sind, geht der Prozeß zu Schritt S10 über. Da eine Kette gelöscht worden ist, wird die letzte Adresse n um 1 dekrementiert. Dann kehrt der Prozeß zu Schritt S2 zurück, um die Wörterbuchadresse i zu inkrementieren und eine Prüfung der Auftrittshäufigkeit der nächsten Kette auszuführen. Die Prozesse werden wiederholt, bis bei Schritt S3 die letzte Adresse n detektiert wird.
  • Wenn bei Schritt S3 detektiert wird, daß die letzte Adresse n erreicht ist, geht der Prozeß dann zu Schritt S11 über, um die letzte Adresse n und den Inhalt des Wörterbuchs in die Speichervorrichtung zu schreiben, um die Erzeugung des Anfangswertes des komprimierten Wörterbuchs zu vollenden.
  • Das Flußdiagramm des Codierprozesses unter Verwendung des so erzeugten Wörterbuchanfangswertes ist in 11 gezeigt.
  • Beim Codieren wird zuerst bei Schritt S1 der Wörterbuchanfangswert, der bezüglich der Daten des im voraus selektierten Musters erzeugt wurde, aus der Speichervorrichtung ausgelesen, und die letzte Adresse n des ausgelesenen Wörterbuchs und der Inhalt des Wörterbuchs werden in den Speicher geschrieben, der als Wörterbuch zu verwenden ist. Dieser Prozeß des Schreibens des Wörterbuchanfangswertes ist der Punkt, der sich von dem Codierprozeß nach Stand der Technik unterscheidet. Anschließend wird bei Schritt S1 hinsichtlich des ersten eingegebenen Zeichens K eine Suche im Wörterbuch ausgeführt, um die Referenznummer der Koinzidenzkette als Präfix-Kette zu verwenden. Dann wird bei Schritt S2 das nächste Zeichen K eingegeben. Bei Schritt S3 wird eine Prüfung ausgeführt, um zu bestimmen, ob die Zeicheneingabe beendet ist oder nicht. Danach wird eine Prüfung ausgeführt, um zu bestimmen, ob die Kette "ωK" in dem Wör terbuch existiert, die durch Kombinieren des gegenwärtig eingegebenen Zeichens K mit der Präfix-Kette ω gebildet wurde.
  • Bei dem herkömmlichen Verfahren ist im Anfangsstadium der eingegebenen Daten das Verhältnis des Vorhandenseins der Kette (ωK) in dem Wörterbuch klein. Da der durch Lernen der Musterdaten erhaltene Wörterbuchanfangswert bereits gespeichert ist, wird in dem Flußdiagramm von 9 bei Schritt S4 bestimmt, daß die Kette "ωK" in dem Wörterbuch vorhanden ist, und der Prozeß geht zu Schritt S5 über, um die Präfix-Kette ω durch die Kette "ωK" zu ersetzen, so daß der Prozeß zu Schritt S2 zurückkehrt. Anschließend wird der Suchprozeß zum Auffinden der maximalen Koinzidenz wiederholt, bis ein Erhalten von Resultaten bei der Suche unmöglich wird. Als Resultat können, auch zur Referenz der eingegebenen Daten, die Ketten von Strings, die aus dem Wörterbuch herausgesucht werden können, vergrößert werden, um das Komprimierungsverhältnis zu verbessern.
  • Wenn natürlich die Kette (ωK) in dem Wörterbuch nicht gefunden wird, geht der Prozeß zu Schritt S6 über, um die gegenwärtige Referenznummer ω als Code(ω) auszugeben, und eine Kette, die aus der gegenwärtig verarbeiteten Referenznummer ω und dem nächsten Zeichen K gebildet ist, wird in dem Wörterbuch mit einer neuen Referenznummer registriert. Dann wird die Präfix-Kette durch ein neues einzelnes Zeichen ersetzt. Danach kehrt der Prozeß zu Schritt S2 zurück, um einen Codierprozeß zum Erhalten der maximalen Koinzidenz einer neuen Kette auszuführen.
  • Das Flußdiagramm des Decodierprozesses ist in 12 gezeigt. Bei Schritt S1 wird der durch die Prozesse des Flußdiagramms von 9 und 10 erhaltene Wörterbuchanfangswert aus dem Speicher gelesen, und die letzte Adresse und der Inhalt des gelesenen Wörterbuchs wird in den Speicher geschrieben, der als Wörterbuch zum Decodieren verwendet wird.
  • Sobald die Registrierung des Wörterbuchanfangswertes, der bereits erhalten worden ist, im Wörterbuch vollendet ist, wird bei Schritt S2 der erste Code ausgelesen. Bei Schritt S3 wird eine Prüfung ausgeführt, um zu bestimmen, ob das Auslesen der Codeeingabe vollendet ist. Dann wird bei Schritt S4 eine Prüfung ausgeführt, um zu bestimmen, ob der Code in dem Wörterbuch definiert ist. wenn bei Schritt S4 bestimmt wird, daß der Code in dem Wörterbuch definiert ist, geht der Prozeß zu Schritt S5 über, um die Kette "ωK" mit der entsprechenden Referenznummer auszulesen. Sobald die Kette "ωK" erhalten ist, wird das Zeichen K bei Schritt S6 gestapelt. Dann wird bei Schritt S5 eine Suche nach der Referenznummer ω ohne das Zeichen K ausgeführt, um die nächste Kette "ωK" zu erhalten. Die Prozesse der Schritte S5 und S6 werden wiederholt, bis die Referenznummer ω zu dem Zeichen K zurückkehrt. Anschließend wird bei Schritt S7 die Sequenz der bei Schritt S6 gestapelten Zeichen auf LIFO-Art ausgegeben.
  • Wenn bei Schritt S4 die Kette nicht in dem Wörterbuch definiert ist, wird bei Schritt S8 ein Ausnahmeprozeß ausgeführt, der auf Grund der Registrierung des Wörterbuchanfangswertes selten initiiert wird, und das Vorkommnis ist unwesentlich. Deshalb kann das Decodieren von dem Code in die Zeichensequenz fast immer ohne Ausführung der Ausnahmeverarbeitung erfolgen.
  • Da angesichts des Decodierens die Registrierung als Ketten in dem Wörterbuch sogar für den ersten Code bereits vorhanden ist, wie erwähnt, kann beim Decodieren entsprechend dem Flußdiagramm von 12 auch der Startcode in die Kette dekomprimiert werden. Im Gegensatz dazu muß bei dem herkömmlichen Decodierverfahren die Dekomprimierung für das Startzeichen initiiert werden.
  • Es sei erwähnt, daß beim Codieren und Decodieren entsprechend 11 und 12 das Codieren oder Decodieren nach dem Registrieren des Anfangswertes des Wörterbuchs von der Speichervorrichtung beginnt, wobei die Erfindung aber nicht auf diesen spezifischen Prozeß begrenzt sein soll, sondern der Anfangswert des Wörterbuchs kann in der führenden Sektion des Wörterbuchs als Sperrsektion angeordnet werden, die nicht wiederbeschreibbar ist, um dadurch das Löschen während der Initialisierung des Wörterbuchs zu verhindern und das Codieren und Decodieren unter Verwendung solch eines Wörterbuchs auszuführen.
  • Obwohl in der obigen Beschreibung der Anfangswert des Wörterbuchs bezüglich einer einzelnen Zeichensequenz erzeugt wird, die die Daten des Musters bildet, sollte der Prozeß nicht auf den oben beschriebenen Prozeß beschränkt sein, und es ist möglich, den Anfangswert des Wörterbuchs aus den Daten zu erzeugen, die durch Verbinden von Daten von einer Vielzahl von Mustern gebildet werden. Ferner ist es auch möglich, daß nach dem Registrieren des Anfangswertes, der bezüglich Daten eines Musters erzeugt wurde, ein Prozeß ausgeführt wird, um das Wörterbuch bezüglich Daten eines anderen Musters zu erzeugen und nur Ketten mit hoher Auftrittshäufigkeit in dem so erzeugten Wörterbuch zu extrahieren, um solche extrahierten Ketten zu akkumulieren, um den Anfangswert des Wörterbuchs für Daten von einer Vielzahl von Mustern gemeinsam zu bilden.
  • Ein Beispiel für ein anderes System zum Komprimieren und Dekomprimieren von Daten ist in 16 gezeigt.
  • In dem System von 16 bezeichnet 201 einen Zeichensequenzzuführabschnitt, bezeichnet 202 einen Eingabepuffer zum temporären Speichern der eingegebenen Zeichensequenz und bezeichnet 203 eine Codiervorrichtung, die einen Referenzwörterbuchkonsultationsabschnitt 209 umfaßt, zum Vergleichen der eingegebenen Daten mit dem Referenzwörterbuch, einen Codeworterzeugungsabschnitt 210, einen Referenzwörterbuchregistrierabschnitt 211 zum Registrieren der Ketten in dem Referenzwörterbuch, einen Optimalcodekonvertierungsabschnitt 212 zum Bestimmen von optimalen Codes für jede der Referenzwörterbucheinheiten, einen Zählabschnitt für registrierte Ketten 213 zum Zählen der Anzahl von registrierten Zeichen bezüglich jeder der Referenzwörterbucheinheiten und einen Optimalcodebezeichnungsabschnitt 214 zum Bezeichnen des optimalen Codes für jede der Referenzwörterbucheinheiten. 204 bezeichnet einen Bezeichnungsabschnitt eines temporären oder provisorischen Codes zum provisorischen Bezeichnen von Codes, die für die Referenzwörterbucheinheiten repräsentativ sind, bevor die optimalen Werte festgelegt werden. 205 bezeichnet das Referenzwörterbuch, das aus einer Vielzahl von Referenzwörterbucheinheiten gebildet ist und in der Form dargestellt ist, wenn es 16 Gruppen der Referenzwörterbucheinheiten umfaßt. Die Referenzwörterbucheinheiten können zum Beispiel die Codewörter von Ketten der Ketten speichern, die den Zeichensequenzen von gegenseitig verschiedenen Zeichengruppen entsprechen, so daß die Referenzwörterbucheinheit 205-1 Ketten mit dem Startzeichen a enthält und die Referenzwörterbucheinheit 205-2 Ketten mit dem Startzeichen b enthält. 206 bezeichnet eine Ausgabesektion eines komprimierten Codes.
  • Bezüglich der Operation des Systems von 16 ist das Beispiel für die Konvertierung von dem provisorischen Code in den optimalen Code hinsichtlich des Codewortformates in 18 gezeigt. Das gezeigte Codewortformat 217 umfaßt einen Code 218 der Referenzwörterbucheinheit und einen Index 219, der für die Registrierposition der Referenzwörterbucheinheit repräsentativ ist. Das Codewort 221 nach der Konvertierung in den optimalen Wert für die Referenznummer bezüglich des Codewortformates 220 gemäß dem provisorischen Code der Referenzwörterbucheinheit ist gezeigt.
  • Die Operation des Systems von 16 ist wie folgt.
  • Zuerst wird die eingegebene Zeichensequenz 201 in dem Eingabepuffer 202 gespeichert. Durch das Referenzwörterbuchvergleichsmittel wird die Zeichensequenz mit jeweiligen Referenzwörterbucheinheiten 205-1, 205-2, ..., 205-16 zum Selektieren der Zeichenkette mit maximaler Koinzidenz von den zuvor registrierten Ketten verglichen.
  • Dann wird in der Codeworterzeugungssektion 210 das Codewortformat 217 mit der Nummer 218 der Referenzwörterbucheinheit, die die selektierte Kette enthält, und dem Index 219 erzeugt, der die Registrierposition der selektierten Kette in der Referenzwörterbucheinheit angibt. Dabei wird der Identifikationscode der Referenzwörterbucheinheit mit dem provisorischen Code, der durch das Festlegungsmittel des provisorischen Codes 204 festgelegt wurde, beibehalten, bis der Komprimierungsprozeß für alle Zeichen der eingegebenen Zeichensequenz zu einer Zeit übertragen ist.
  • Dann führt die Referenzwörterbuchregistriersektion 211 die Registrierung für die Kette, die aus dem Segment der eingegebenen Zeichensequenz, die mit der maximalen Koinzidenz koinzidiert, und dem nächsten Zeichen gebildet ist, in der entsprechenden Referenzwörterbucheinheit aus.
  • Hierbei zählt die Zählsektion für registrierte Ketten 213 die Anzahl von registrierten Ketten, und zwar die Anzahl von Daten, die in dem Wörterbuch registriert sind, zum Beispiel für die Ketten, die das Startzeichen haben, oder als Alternative die Rate des Auftretens eines Übergangs zu jener der Referenzwörterbucheinheiten, in die die Kette gehört, die sich aus der Referenzwörterbucheinheit ergibt und das letzte Zeichen der Zeichensequenz vor einer zufälligen Zeichensequenz enthält.
  • Sobald der Komprimierungsprozeß für alle zu einer Zeit übertragenen Zeichen vollendet ist, leitet die Optimalcodefestlegungssektion 214 die Übergangsgewißheit für jeweilige Referenzwörterbucheinheiten auf der Basis der Anzahlen der registrierten Ketten von jeweiligen Referenzwörterbucheinheiten und des Auftretens eines Übergangs zwischen den Referenzwörterbucheinheiten ab, um Codewörter für die Referenzwörterbucheinheiten festzulegen, die eine hohe Anzahl von registrierten Ketten oder eine hohe Übergangsgewißheit haben, die kürzer als das Codewort sind, das denen mit einer niedrigen Anzahl von registrierten Ketten oder einer niedrigen Übergangsgewißheit verliehen wird.
  • Mit dem so erhaltenen optimalen Code konvertiert die Optimalcodekonvertierungssektion 212 die Codewörter, die aus den provisorischen Codes für die Referenzwörterbucheinheiten erzeugt wurden, in den optimalen Code.
  • Ein Beispiel für das Codewort 220, das durch den provisorischen Code der Referenzwörterbucheinheit beschrieben ist, ist dargestellt. Ferner ist auch das Beispiel für den optimalen Code 221 der Referenzwörterbucheinheit gezeigt, der aus dem Codewort 220 konvertiert wurde.
  • Ein Flußdiagramm, das einen Prozeß zum Erzeugen des komprimierten Codes zeigt, ist in 17 dargestellt.
  • In 17 bezeichnet ω die registrierten Ketten und bezeichnet K ein Zeichensymbol gleich neben der Kettenkoinzidenz mit der registrierten Kette ω in dem Referenzwörterbuch. Die Prozesse sind wie folgt:
  • (S1) Das Referenzwörterbuch wird initialisiert.
  • (S2) Zum Beispiel werden den Referenzwörterbucheinheiten unvoreingenommen provisorische Codes verliehen.
  • Anschließende Prozesse hinsichtlich der Verarbeitung des Startzeichens der eingegebenen Zeichensequenz (erstens) und der Verarbeitung der zweiten und nachfolgenden Zeichen (zweitens) werden separat erläutert.
  • (Erstens)
  • Prozeß zum Auslesen des führenden Zeichens der eingegebenen Zeichensequenz
  • (S3) Das Startzeichen der eingegebenen Zeichensequenz wird gelesen.
  • (S4) Es wird geprüft, ob ein Zeichen gleich neben dem ausgelesenen Zeichen vorhanden ist. Falls es vorhanden ist, wird das nächste existierende Zeichen ausgelesen. Da der Fall, daß das nächste Zeichen bei (S4) nicht vorhanden ist, die Vollendung des Komprimierungsprozesses durch das Auslesen aller eingegebenen Zeichen angibt, geht der Prozeß normalerweise als nächstes zu Schritt (S5) über, außer in dem Fall, wenn nur ein einzelnes Zeichen zu übertragen ist.
  • (S5) Beim Schritt des Auslesens des Startzeichens der eingegebenen Zeichensequenz besteht natürlich keine Möglichkeit zum Schreiben in das Wörterbuch, und der Prozeß geht zu Schritt (S7) über.
  • (S7) Beim Registrieren der Kette entspricht das Startzeichen der eingegebenen Zeichensequenz dabei dem Index des Referenzwörterbuchs und wird die Registrierung des Codes ausgeführt.
  • (S8) Um die registrierten Ketten zu zählen, oder die Rate des Auftretens eines Übergangs zu jeder der Referenzwörterbucheinheiten, in die die Kette gehört, die sich aus der Referenzwörterbucheinheit ergibt und die das letzte Zeichen der Zeichensequenz vor einer zufälligen Zeichensequenz enthält, wird die Registriernummer um 1 inkremen tiert. Dann kehrt der Prozeß zu (S3) zurück, um zur Wiederholung das nächste Zeichen auszulesen (S4).
  • (Zweitens)
  • Prozeß für die zweiten und nachfolgenden Zeichen in der eingegebenen Zeichensequenz
  • (S3) Das nächste Zeichen K wird ausgelesen.
  • (S4) Falls kein Zeichen vorhanden ist, bedeutet das, daß der Prozeß bis zu dem letzten Zeichen für das übertragene Dokument vollendet ist.
  • (S5) Wenn ein ausgelesenes Zeichen bei (S4) existiert, geht der Prozeß zu (S5) über. Falls die Kette ωK nicht gefunden wird, werden die Prozesse der Schritte (S7) und (S8) wieder ausgeführt, und der Prozeß kehrt zu Schritt (S3) zurück.
  • (S6) Wenn ωK in dem Wörterbuch bei (S5) existiert, da die Kette bereits registriert worden ist, wird ωK der Ketten beim Vergleichen der Zeichensequenz mit dem Referenzwörterbuch durch ω ersetzt. Dann kehrt der Prozeß wieder zu Schritt (S3) zurück, um das nächste Zeichen auszulesen, um den Prozeß zu wiederholen. Wenn bei (S4) kein Zeichen detektiert wird, da der Prozeß für alle Zeichen vollendet ist, geht der Prozeß zu Schritt (S9) über.
  • (S9) Die Anzahl von Ketten, die in jeder Referenzwörterbucheinheit registriert sind, oder das Auftreten eines Übergangs zwischen den Referenzwörterbucheinheiten wird gezählt:
  • (S10) Unter Berücksichtigung der Anzahl von registrierten Ketten in der Referenzwörterbucheinheit und der Rate des Auftretens eines Übergangs zwischen den Referenzwörterbucheinheiten wird der optimale Code für die Referenzwörterbucheinheit festgelegt.
  • (S11) Ein Konvertierungsprozeß zum Konvertieren der provisorischen Codes, die in den Codewörtern vorgesehen sind und für die Referenzwörterbucheinheiten repräsentativ sind, in die optimalen Codes wird ausgeführt.
  • (S12) Der komprimierte Code wird ausgegeben.
  • Wie oben erwähnt, kann auch dann, wenn ein großes Referenzwörterbuch verwendet wird, da das Wörterbuch geteilt wird, der Index der Registrierketten mit kurzen Codes beschrieben werden, und daher können die Codes effektiv erzeugt werden.
  • Obwohl die Codewörter durch Teilen des Wörterbuchs zunehmen, kann dadurch, daß die Codes, die die Referenzwörterbucheinheit repräsentieren, als Code mit variabler Länge gebildet werden, das Verhältnis der Codewörter in dem komprimierten Code der gesamten eingegebenen Zeichensequenz reduziert werden.
  • Wie erwähnt, werden auch dann, wenn das Wörterbuch groß wird, die Codes von Indizes nicht länger, und das Komprimierungsverhältnis kann nicht reduziert werden, aber es kann eine zufriedenstellende Datenkomprimierung erreicht werden, die dem vergrößerten Wörterbuch entspricht.
  • Ein Beispiel für die Festlegung des optimalen Codes für die Einheit des Referenzwörterbuchs ist in 19 gezeigt.
  • In 19 ist ein Beispiel für die Zuordnung von Indizes für Registrierkomponenten für den Fall gezeigt, daß drei Referenzwörterbucheinheiten vorgesehen sind.
  • Wenn die Zeichenkette zum Beispiel nur aus a, b und c gebildet ist, ist T1 eine Gruppe der Ketten, deren Startzeichen a ist, ist T2 eine Gruppe der Ketten, deren Startzeichen b ist, und ist T3 eine Gruppe der Ketten, deren Startzeichen c ist. Die Ketten werden in den Referenzwörterbucheinheiten entsprechend den Startzeichen registriert.
  • Anstelle des Zuordnens einer Indexnummer, die jedem Knoten entspricht, wird praktisch eine Nummer in der Registrierordnung verliehen.
  • Das Codewort, das die Zeichenkette beschreibt, ist gebildet, wie in 19 gezeigt, aus einer Baumnummer 224, die die Nummer der Referenzwörterbucheinheit darstellt, und dem Index 222, der die Registrierposition darstellt.
  • Zum Beispiel kann die Kette, die an der Registrierposition 8 der Referenzwörterbucheinheit 3 (T3) registriert ist, durch die Nummer der Referenzwörterbucheinheit T3 und die Registrierposition 8 beschrieben werden, wie in 19 gezeigt.
  • In 19 wird, wie gezeigt, der Nummer, die für die Referenzwörterbucheinheit repräsentativ ist, nämlich der Baumnummer, für den Baum mit einer großen Anzahl von Knoten, wie etwa T1, der 20 Knoten hat, der kurze Code "0" zugeordnet. Andererseits werden den Bäumen mit einer kleinen Anzahl von Knoten, wie etwa T2, T3, die längeren Codes "10" und "01" verliehen.
  • Der komprimierte Code, auf den der optimale Code angewendet wird, ist in 20 gezeigt.
  • In 20 wird das System zum Konvertieren eines ZL-Systems (Ziv-Lemple-System) des inkrementalen Parsing-Typs für die eingegebene Zeichensequenz aabababaaba ... erläutert.
  • In 20 ist der komprimierte Code der eingegebenen Zeichensequenz gezeigt, nämlich der komprimierte Code, der durch Komprimieren der eingegebenen Zeichensequenz abgeleitet wird, wenn die Nummern der Referenzwörterbucheinheiten durch die provisorischen Codes "000" und "001" beschrieben werden.
  • In 20 ist auch der komprimierte Code der eingegebenen Zeichensequenz gezeigt, wenn die provisorischen Codes der Referenzwörterbucheinheiten in die optimalen Codes konvertiert werden.
  • 21 und 23 zeigen andere Beispiele.
  • 21 ist ein Beispiel für den Übergang von dem letzten Zeichen zu dem führenden Zeichen in der sequentiellen Zeichensequenzkomponente. In der Tabelle von 21 sind die Resultate der Messung der Rate des Auftretens des Übergangs zwischen den Zeichengruppen gezeigt.
  • In 21 bezeichnet 251 eine vorhergehende registrierte Kette bezüglich der gegenwärtig registrierten Kette, bezeichnet 252 die gegenwärtig registrierte Kette, bezeichnet 253 die nächste registrierte Kette, ist 254 das letzte Zeichen der genannten vorhergehenden registrierten Kette 251, bezeichnet 255 das Startzeichen der gegenwärtig registrierten Kette, ist 256 das letzte Zeichen der gegenwärtig registrierten Kette und bezeichnet 257 das Startzeichen der nächsten registrierten Kette.
  • In 21 sind die Referenzwörterbucheinheiten, nämlich die Wurzeln des Baums in 19, auf 16 festgelegt, und zwar die Gewißheit des Übergangs zwischen den Bäumen, in die jeweilige Zeichen angesichts des Übergangs zwischen den letzten Zeichen und den Startzeichen in der Serie der Zeichensequenz gehören. Wenn die Wahrscheinlichkeit des Übergangs hoch ist, wird der kurze Code festgelegt, und wenn die Gewißheit gering ist, wird der längere Code selektiert. Solche Codes werden zusammen mit dem Index als Codewort zugeordnet.
  • In 21 sind die Meßwerte für das Auftreten des Übergangs zu der Gruppennummer, in die das Startzeichen der gegenwärtig registrierten Kette gehört, von der Gruppennummer, in die das letzte Zeichen der genannten vorhergehenden Kette gehört, nämlich 16 Gruppen, in dem Baum von 19 gezeigt.
  • In 21 stellt jede Zahl die Anzahl des Auftretens dar. Zum Beispiel ist von der Gruppennummer 4 zu der Gruppennummer 6 die Rate des Auftretens des Übergangs mit 83mal angegeben.
  • 22 sind neugeschriebene Daten des Meßwertes von 21, um die Ordnung des Auftretens des Übergangs zu bestimmen.
  • In 22 ist eine Ordnung für das Auftreten des Übergangs von der Gruppennummer, in die das letzte Zeichen der vorhergehenden registrierten Kette gehört, zu der Gruppennummer, in die das Startzeichen der gegenwärtig registrierten Kette gehört, bezüglich irgendeiner vorhergehenden Gruppennummer angegeben.
  • Die Zahl 0 gibt an, daß die Anzahl von Übergängen maximal ist, und die Zahl 15 gibt an, daß die Anzahl von Übergängen minimal ist.
  • Zum Beispiel ist die Ordnung des Übergangs von der Gruppennummer 4 der vorhergehenden registrierten Kette zu der Gruppennummer 6 der gegenwärtigen registrierten Kette als zweithöchste Ordnung von Übergängen zu der Gruppennummer der gegenwärtigen registrierten Kette in allen Fällen angegeben.
  • In 23 ist das Verfahren zum Zuordnen des optimalen Codes für die Referenzwörterbucheinheit, nämlich die Gruppennummer von 21, auf der Basis des Resultats von 21 gezeigt.
  • In 23 ist ein Beispiel für den Code zum Zuordnen des Codewortes gemäß der Ordnung der Häufigkeit des Übergangs zwischen den registrierten Kettengruppennummern gezeigt.
  • Der kurze Code wird bei einer hohen Auftrittshäufigkeit verliehen, und im Gegensatz dazu wird ein langer Code verliehen, wenn die Auftrittshäufigkeit niedrig ist.
  • Hier wird der Codierprozeß für die gegenwärtig regi strierte Kette in der Gruppennummer 6 betrachtet.
  • Dann wird die Gruppennummer der vorhergehenden regi strierten Kette mit 0 angenommen.
  • In diesem Fall beträgt, wie in der Tabelle von 22 gezeigt, die Häufigkeit 10. Dafür wird ein optimaler Code 1110101 zugeordnet.
  • In 23 ist das Codewort gezeigt.
  • Wie erwähnt, ist zum Interpretieren des Codewortes die Referenzwörterbucheinheit erforderlich, in die das letzte Zeichen der vorhergehenden Kette gehört. Da das letzte Zeichen der vorhergehenden Kette jedoch der komprimierten Codesequenz zugeführt wird, die ausgegeben wird, kann die Gruppennummer der gegenwärtigen Gruppe von jener Ausgabe unterschieden werden.
  • Ein Beispiel eines Systems zur Datenkomprimierung und -dekomprimierung gemäß der Erfindung ist in 24 gezeigt.
  • Das System von 24 zeigt das Codieren der eingegebenen Zeichensequenz in einen LZW-System-Code durch das Identifizieren der Kette mit maximaler Koinzidenz in den registrierten und bereits codierten Ketten in dem Wörterbuch 310 mit der Referenznummer.
  • In dem System von 24 ist das Wörterbuch 310 aus einer Wörterbuchgruppe gebildet, die eine vorbestimmte Anzahl von Wörterbüchern 310-1 bis 310-N enthält, deren Anzahl kleiner als die Anzahl aller Zeichenarten ist. In jedem Wörterbuch werden anfangs alle Zeichenarten mit Referenznummern registriert.
  • Bei dem Prozeß des Codierens der eingegebenen Zeichen sequenz wird das spezifische Wörterbuch 310-i von der Wörterbuchgruppe gemäß Indexinformationen identifiziert, die für den Verlauf oder die Historie repräsentativ sind, nämlich für die Abhängigkeit von der zuvor codierten Kette. Zur selben Zeit, wenn die eingegebene Zeichensequenz in dem bezeichneten Wörterbuch nicht gefunden werden kann, wird die Kette, die durch Hinzufügen eines Zeichens zu der zuvor codierten Kette gebildet wird, mit der neuen Referenznummer registriert.
  • Bei dem Prozeß des Codierens der eingegebenen Zeichensequenz wird das spezifische Wörterbuch 310-1 von der Wörterbuchgruppe gemäß dem Index identifiziert, der von dem Teil des letzten Zeichencodes der zuvor codierten Kette erhalten wird. Genauer gesagt, gemäß den Indexinformationen, die durch das obere Bit des letzten Zeichencodes der unmittelbar zuvor codierten Kette dargestellt werden, wird das spezifische Wörterbuch 310-i von der Wörterbuchgruppe identifiziert.
  • Andererseits ist es beim Prozeß des Codierens der eingegebenen Zeichensequenz auch möglich, das spezifische Wörterbuch von den Wörterbuchgruppen gemäß den Indexinformationen zu identifizieren, die durch Tabellenkonsultation hinsichtlich des letzten Zeichencodes der unmittelbar zuvor codierten Kette erhalten werden. Praktisch wird das spezifische Wörterbuch 310-i von der Wörterbuchgruppe gemäß Indexinformationen identifiziert, die durch Konsultation der Tabelle hinsichtlich des oberen Bits des letzten Zeichencodes der unmittelbar zuvor codierten Kette erhalten werden.
  • Das System von 24 betrifft das Datendekomprimierungssystem zum Dekomprimieren der Originalzeichensequenz aus dem codierten Codewort durch Bezeichnen der Referenznummer der Kette mit maximaler Koinzidenz von den bereits codierten Ketten der eingegebenen Zeichensequenz, die in dem Wörterbuch registriert sind. Das Wörterbuch 310 ist aus Wörterbuchgruppen gebildet, die eine vorbestimmte Anzahl von Wörterbüchern 310-1 bis 310-N enthalten, welche Anzahl kleiner als die Anzahl von allen Zeichenarten ist. In jedem Wörterbuch werden anfangs alle Zeichenarten mit Referenznummern registriert. Bei Wiederherstellung des Eingangscodes wird die Wiederherstellung durch das Identifizieren eines der spezifischen Wörterbücher 310-1 von den Wörterbuchgruppen gemäß den Indexinformationen ausgeführt, die für die Abhängigkeit von der zuvor wiederhergestellten Kette repräsentativ sind. Bei jeder Wiederherstellung muß die Kette, die durch Hinzufügen des führenden Zeichens der gegenwärtig dekomprimierten Kette zu der Referenznummer der zuvor dekomprimierten Kette mit der neuen Referenznummer registriert werden. Hierbei ist die Bezeichnung des spezifischen Wörterbuchs 310-i dieselbe wie jene beim Codieren.
  • Mit dem System von 24 kann der folgende Effekt erreicht werden.
  • Erstens hat die Hysterese, die für die Abhängigkeit von dem Endzeichen der unmittelbar vorhergehenden Kette repräsentativ ist, als Original 256 Bedingungen. Da das Auftreten der Zeichen ein Gefälle hat, werden einige Bedingungen von den 256 Bedingungen selten auftreten. Durch Markieren des Verlaufs des letzten Zeichens werden die Bedingungen reduziert, um eine bedeutend kleinere Anzahl von Bedingungen zu erhalten, wie z. B. 8 bis 16 Bedingungen. So kann die Anzahl von Wörterbüchern reduziert werden.
  • Da die Anzahl von Zuständen des Verlaufs klein ist, ist die Anzahl der Registrierungen aller 256 Arten von Zeichen als Anfangswerte in jedem Wörterbuch die Anzahl des Verlaufs, d. h., die Anzahl von Wörterbüchern multipliziert mit 256, so daß die Vergeudung der Prozesse nicht signifikant ist.
  • Als Lösung zum Reduzieren des Verlaufs, indem zum Beispiel die oberen 4 Bits des letzten Zeichens der bereits codierten unmittelbar vorhergehenden Kette verwendet werden, beläuft sich der Verlauf natürlich auf 16 Arten. Als Lösung zum Reduzieren des Verlaufs ist es wünschenswert, die in der Ordnung erscheinenden Bedingungen zu bilden, um das Wörterbuch effektiv zu verwenden. Es ist jedoch nicht erforderlich, Rohdaten in dem Zeichen zu verwenden, und statt dessen ist es möglich, die Hystereseanzahl zu reduzieren, indem historische oder Verlaufsbedingungen der unmittelbar vorhergehenden Kette bezeichnet werden, nämlich der Index des Wörterbuchs, indem eine Konsultationstabelle (look-up table: LUT) vorbereitet wird, die mit dem letzten Zeichen der unmittelbar vorhergehenden codierten Kette für die Verlaufsbedingung korreliert.
  • Die Konstruktion der Programmspeichervorrichtung und der Datenspeichervorrichtung für das System von 24 ist in 25 gezeigt.
  • In 25 bezeichnet 312 eine CPU als Steuermittel. Mit der CPU 312 sind der Programmspeicher 314 und der Datenspeicher 326 verbunden.
  • Der Programmspeicher 314 speichert ein Steuerprogramm 316, ein Maximalkoinzidenzsuchprogramm 318 zum Suchen der maximalen Koinzidenz unter Verwendung des LZW-Codes, ein Codierprogramm 320 zum Konvertieren der eingegebenen Zeichensequenz in den LZW-System-Code, ein Decodierprogramm 322 für den LZW-Code, der durch das Codierprogramm 320 konvertiert wurde, in die Originalzeichenkette und das Wörterbuchanfangswert-Erzeugungsprogramm 324 zum anfänglichen Registrieren aller Zeichenarten, wie z. B. 256 Zeichenarten, des Objektes zur Verarbeitung.
  • In dem Datenspeicher 326 ist ein Datenpuffer 328 zum Speichern der zu codierenden Zeichensequenz und der zu decodierenden Codesequenz vorgesehen, und das Wörterbuch 310, das während des Codierens und Decodierens bezüglich der Codes des LZW-Systems verwendet wird und gleichzeitig sukzessive erstellt wird. Das Wörterbuch 310 umfaßt 16 Wörter- bücher 310-1 bis 310-16 für 256 Arten von Zeichen, wenn es durch die Indexinformationen klassifiziert wird, die für die Abhängigkeit von den oberen 4 Bits des letzten Zeichencodes der bereits codierten Kette repräsentativ sind. Obwohl der Index des Wörterbuchs mit den oberen 4 Bits des letzten Zeichencodes der codierten Kette direkt gebildet werden kann, bezieht sich die folgende Erläuterung auf die Art und Weise der Bezeichnung durch das Lesen des Indexes des Wörterbuchs unter Bezugnahme auf die Konsultationstabelle (LUT).
  • Im folgenden wird die Datenkomprimierung und -wiederherstellung kurz erläutert.
  • Unter der Steuerung des Steuerprogramms 316 triggert die CPU 312 das Wörterbuchanfangswert-Erzeugungsprogramm 324, um den Prozeß zum Erzeugen des Wörterbuchanfangswertes auszuführen. In der Praxis registriert das Wörterbuchanfangswert-Erzeugungsprogramm 324 jede der 256 Arten von Zeichen mit jeweilig zugeordneten Referenznummern in den 16 Wörterbüchern 310-1 bis 310-16.
  • Der Datenpuffer 328 des Datenspeichers 326 speichert temporär, für extern eingegebene Daten, eine Vielzahl von Zeichen mit vorbestimmter Länge, die zu codieren sind. Der Datenpuffer überträgt sie Zeichen für Zeichen gemäß der Anforderung von dem Codierprogramm 320. Immer wenn der Datenpuffer leer wird, empfängt er eine Vielzahl von Zeichen auf ähnliche Weise.
  • Der Algorithmus zum Codieren wird unter Bezugnahme auf das Flußdiagramm von 26 erläutert.
  • Zuerst wird bei S1 der folgende Prozeß ausgeführt.
    • (i) In jedem von N Wörterbüchern Di, wobei i = 1, ..., N ist, die durch das letzte Zeichen der unmittelbar vorhergehenden Kette selektiert werden, werden alle Zeichenarten von einzelnen Zeichenketten als Anfangswerte registriert. Für alle 256 Arten von Zeichen ist die Anzahl der Wörterbücher relativ klein, d. h., 16.
    • (ii) Die insgesamte Anzahl der Referenznummern von jedem Wörterbuch Di wird durch die Gesamtanzahl Ni verwaltet, und für Ni wird bei der Initialisierung für N Wörterbücher Ni = Zeichenarten + 1festgelegt.
    • (iii) Der Verlauf, nämlich die oberen 4 Bits des letzten Zeichencodes der unmittelbar vorhergehenden Kette, ab der unmittelbar vorhergehenden Kette wird als PK verwendet. Dann wird PK = 0 als Anfangswert von PK festgelegt.
    • (iv) Unter Verwendung des Startzeichens als Eingabe K wird diese Eingabe K in die Präfix-Kette ω konvertiert.
    • (v) Auf der Basis des letzten Zeichens der unmittelbar vorhergehenden Kette wird die Konsultationstabelle zum Korrelieren der Verlaufsbedingung erstellt. Da hier im Anfangsstadium keine unmittelbar vorhergehende Kette vorhanden ist, wird K1, das das letzte Zeichen der unmittelbar vorhergehenden Kette angibt, auf K1 = 0 gesetzt. Die Konsultationstabelle wird so erstellt, daß dann, wenn K1 = 0 ist, der diesbezüglich erhaltene Index PK = 0 ist.
  • Nach Vollendung des Prozesses von S1, wie oben erläutert, wird das Codieren auf die bei den Schritten S4 und S7 gezeigte Weise ausgeführt. Die Prozesse bei den Schritten S4 und S7 sind dieselben wie jene nach Stand der Technik.
  • Statt der Verwendung eines einzigen Wörterbuchs wie bei der LZW-Codierung nach Stand der Technik wird jedoch anfangs bei S1 und anschließend bei S6 das spezifische Wörterbuch DPK von einer Vielzahl von Wörterbüchern durch (K1) = PK der Verlaufstabelle LUT bezeichnet, was durch Bezugnahme auf die Konsultationstabelle erhalten wird. Durch Ausführen eines Vergleichs mit den registrierten Ketten in dem selektierten Wörterbuch DPK wird eine Suche nach der maximalen Koinzidenz ausgeführt. In der Kette, die mit der maximalen Koinzidenz koinzidiert, wird das nächste Zeichen hinzugefügt, um eine Kette ωK zu bilden, und dann wird die Kette ωK in dem selektierten Wörterbuch DPK registriert.
  • Nach Registrierung im Wörterbuch DPK wird ein Zähler NPK, der die Referenznummer des Wörterbuchs DPK verwaltet, um eins auf NPK = NPK + 1 inkrementiert. Andererseits wird beim Selektieren des Wörterbuchs für die nächste Kette die Verlaufsbedingung PK unter Verwendung der Konsultationstabelle K1 hinsichtlich des letzten Zeichens K1 abgeleitet.
  • Unter Bezugnahme auf das Flußdiagramm von 27 wird der Algorithmus zum Decodieren erläutert.
  • Das Decodieren ist die umgekehrte Operation des Codierprozesses. Zunächst ist die Initialisierung des Wörterbuchs bei S1(A) dieselbe wie bei dem Codierprozeß. Die Prozesse bei S1(B) bis S9 sind dieselben wie nach Stand der Technik. Nach dem Decodieren der Referenznummer ω aus dem Eingangscode S4 wird jedoch das Wörterbuch DPK unter Verwendung der Verlaufsbedingung PK selektiert, die von dem letzten Zeichen der unmittelbar vorhergehenden Kette abgeleitet wird, und von dem selektierten Wörterbuch DPK wird die Kette entsprechend der Referenznummer ω erhalten.
  • Das Registrieren einer neuen Kette im Wörterbuch ist im wesentlichen dasselbe wie bei der LZW-Codierung. Das Registrieren ist jedoch um einen Zyklus verzögert. Und zwar wird im Falle einer Codierung, nach dem Codieren der betreffenden Kette, die Kette ω mit einem Zusatzzeichen, nämlich die betreffende Kette plus ein Zeichen, in dem Wörterbuch registriert. Jedoch wird beim Decodieren, wenn ein Zeichen zu der betreffenden Kette hinzugefügt wird, um die Registrie rang mit dem Startzeichen der nächsten Kette vorzunehmen, die Registrierung nach Vollendung der Dekomprimierung für die nächste Kette vorgenommen.
  • Praktisch wird, wie bei S9 gezeigt, die Kombination aus der Referenznummer OLDω der unmittelbar vorhergehenden Kette und dem Startzeichen K1 der dekomprimierten Kette in dem Wörterbuch DPK1 registriert, das gemäß der Verlaufsbedingung PK1 selektiert wird, die von dem letzten Zeichen der unmittelbar vorhergehenden Kette erhalten wird. Um die Erweiterung der dekomprimierten Kette für die nächste Registrierung vorzubereiten, wird deshalb die gegenwärtige Verlaufsbedingung PK zu PK1 verschoben, und die neue Verlaufsbedingung wird von dem letzten Zeichen K2 der dekomprimierten Kette erhalten.
  • Obwohl die obige Erläuterung auf das Beispiel des Erstellens von 16 Wörterbüchern für alle 256 Arten von Zeichen gerichtet ist, wird es als vorteilhaft empfunden, das die Anzahl von Wörterbüchern nicht spezifiziert sein soll, da die gegebene Anzahl in einer angemessenen Anzahl selektiert werden kann, die kleiner als die Anzahl aller Arten von Zeichen ist.
  • Ferner kann die Anzahl von Arten von Zeichen nach Bedarf angemessen selektiert werden.
  • Ein anderes System zur Datenkomprimierung und -dekomprimierung ist in 28 gezeigt.
  • 28 zeigt ein Beispiel, bei dem in dem Fall, wenn die Zeichensequenz nur aus den 3 Zeichen a, b, c gebildet ist, das Wörterbuch bezüglich der jeweiligen letzten Zeichen der unmittelbar vorhergehenden Ketten erzeugt wird, und das so erzeugte Wörterbuch hat keinen registrierten Anfangswert.
  • In 28 bezeichnet 401 einen Zeichensequenzzuführabschnitt und bezeichnet 402 Wörterbuchregistrierindizes "I(n)" der registrierten Ketten für jeden Baum mit den Wurzeln der letzten Zeichen. Zum Beispiel lautet bei dem Baum mit der Wurzel (a) der Index für die Ketten ab, abc jeweilig 0, 1 usw. 403 bezeichnet einen Zeichensequenzleseabschnitt zum Lesen der eingegebenen Zeichensequenz eine nach der anderen. 404 bezeichnet die betreffende gegenwärtige Kette. 405 bezeichnet einen Wörterbuchkonsultationsabschnitt zum Vergleichen der gegenwärtigen Kette mit dem Wörterbuch zum Auslesen der Kette mit der maximalen Koinzidenz der gegenwärtigen Kette bezüglich der registrierten Ketten. 408 bezeichnet einen Codierabschnitt, der das Codieren auf der Basis des registrierten Index für die maximale Koinzidenz der Kette ausführt, und für die neu auftretende Kette mit der maximalen Koinzidenz und einem zusätzlichen nächsten Zeichen wird der Index bezüglich des letzten Zeichens der unmittelbar vorhergehenden Kette angegeben. 409 bezeichnet einen Wörterbuchregistrierabschnitt zum Registrieren der gegenwärtigen Kette in dem Wörterbuch, 410 ist der Speicherabschnitt für letzte Zeichen zum Speichern des letzten Zeichens der maximalen Koinzidenz. 411 bezeichnet ein Beispiel für einen Baum eines Wörterbuchs, wobei das letzte Zeichen als Wurzel verwendet wird.
  • Die Operation des Systems von 28 wird praktisch erläutert, indem das Beispiel zum Codieren der eingegebenen Zeichensequenz "ababcb ..." verwendet wird.
  • Der Baum der Wörterbücher mit Wurzeln des letzten Zeichens der unmittelbar vorhergehenden Kette muß für das (a) des Baums mit der Wurzel (a) und das (a) des Baums mit der Wurzel (b) bezüglich der Ketten mit dem letzten Zeichen (a) im Anschluß an das (a) und der Kette mit dem letzten Zeichen (b) im Anschluß an (a), wenn die Kette (a) auszugeben ist, wie in 29 gezeigt, gesondert ausgeben.
  • Um ein einzelnes Zeichen auszugeben, das jeweiligen Wurzeln zugeordnet ist, muß eines von zwei Verfahren verwen det werden, und zwar (i) durch vorläufiges Erzeugen der Anfangswerte für das Codieren und Decodieren mit den Zeichen, die die Wurzel des Baums bilden, und einem Zusatzzeichen, wie etwa "aa, ab, ac, ba, ...", um das (a) im Anschluß an (a) und das (b) im Anschluß an (a) usw. gesondert auszugeben, oder (ii), wenn ein einzelnes Zeichen auftritt, um einer der Wurzeln des Baums zugeordnet zu werden, wird das einzelne Zeichen als Rohdaten ausgegeben.
  • Hier erfolgt die Beschreibung für den Fall, wenn unter Verwendung des letzten Zeichens der unmittelbar vorhergehenden Kette als Wurzel eines Baums des Wörterbuchs und ohne Registrieren des Anfangswertes, der der Wurzel zugeordnet ist, das Signalzeichen, das der Wurzel des Baums direkt zugeordnet ist, als Rohdaten ausgegeben wird.
  • (Erstens) Der Zeichenleseabschnitt 403 liest das erste Zeichen (a) und bildet es zur Kette 404. Der Wörterbuchkonsultationsabschnitt 405 konsultiert das Wörterbuch, um zu bestätigen, daß das (a) nicht registriert worden ist.
  • Der Codierabschnitt 408 legt den Index 0 als Code fest, der die Rohdaten bezeichnet.
  • Der Wörterbuchregistrierabschnitt 409 registriert (a) für das Wörterbuch des Baums des letzten Zeichens 0 der unmittelbar vorhergehenden Kette an einer Registrierposition "n = 1".
  • Gleichzeitig werden der Index 0 und das Zeichen (a) ausgegeben.
  • Dann wird (a) als letztes Zeichen der unmittelbar vorhergehenden Kette gespeichert.
  • (Zweitens) Das zweite Zeichen b wird gelesen.
  • Dann wird bezüglich der Kette ab, die aus dem letzten Zeichen a der unmittelbar vorhergehenden Kette und dem eingegebenen Zeichen b gebildet ist, das Wörterbuch konsultiert. Da ab noch nicht registriert ist, wird die Kette "ab" dann an der Registrierposition "2" des Wörterbuchs mit dem Baum der Wurzel (a) als erste registrierte Sequenz registriert.
  • Da hierbei das gegenwärtig eingegebene (b) das Zeichen ist, das an dem Baum mit der Wurzel (a) erscheint, werden dann der Index 0 und das (b) als Rohdaten ausgegeben. Dann wird (b) als letztes Zeichen der unmittelbar vorhergehenden Kette gespeichert.
  • (Drittens) Dann wird das dritte Zeichen (a) eingegeben.
  • Dann wird das Wörterbuch hinsichtlich der Kette "ba" konsultiert, die aus dem letzten Zeichen (b) der unmittelbar vorhergehenden Kette und dem gegenwärtig ausgelesenen (a) gebildet ist.
  • Da (ba) nicht existiert, wird dann die Kette "ba" an der Position des Wörterbuchs "n = 3" als Startzeichen des Wörterbuchs des Baums mit der Wurzel (b) der unmittelbar vorhergehenden Kette registriert.
  • Das letzte Zeichen (a) der unmittelbar vorhergehenden Kette wird gespeichert, das als letztes Zeichen der unmittelbar vorhergehenden Kette ausgegeben wird.
  • (Viertens) Das vierte Zeichen (b) wird gelesen.
  • Dann wird mit dem letzten Zeichen (a) des unmittelbar vorhergehenden Zeichens und dem ausgelesenen Zeichen (b) das Wörterbuch hinsichtlich der Kette "ab" konsultiert. Da "ab" an der Registrierposition "3" bereits registriert worden ist, wird das nächste Zeichen (c) gelesen.
  • Da die Kette "abc" in dem Wörterbuch noch nicht registriert ist, führt der Codierabschnitt 408 ein Codieren für die maximale Koinzidenz "ab" durch den Index 1 aus, der das vierte Zeichen b von dem "ab" in dem Baum mit der Wurzel (a) angibt. Gleichzeitig wird an der Registrierposition "4" des Wörterbuchs die neu auftretende Kette "abc" als zweite Kette des Baums mit der Wurzel (a) registriert.
  • Das letzte Zeichen (b) des ausgegebenen Zeichens mit maximaler Koinzidenz wird als letztes Zeichen der unmittelbar vorhergehenden Kette gespeichert.
  • (Fünftens) Das fünfte Zeichen (c) wird gelesen.
  • Mit dem gespeicherten letzten Zeichen (c) und dem gelesenen (b) wird eine Kette (bc) aufgestellt, und da (bc) noch nicht registriert worden ist, wird die Kette (bc) als Startkette für das Wörterbuch des Baums mit der Wurzel (b) an der Registrierposition "5", nämlich "Index 5", registriert.
  • Dann ist (c) das Zeichen, das direkt mit der Wurzel des Baums des Wörterbuchs mit der Wurzel (b) verbunden ist, und der Index 0 und das Zeichen (c) werden als Rohdaten ausgegeben.
  • Durch Fortfahren mit den ähnlichen Prozessen wird anschließend der Ausgabecode "0a0b0a10c ..." erhalten.
  • Die Konstruktion zum Ausführen eines Decodierens für den Datenkomprimierungscode der Kette in dem System von 28 ist in 30 gezeigt.
  • Bei der Konstruktion von 30 bezeichnet 421 einen empfangenen Code. 422 bezeichnet das aus dem Eingangscode wiederhergestellte Wörterbuch. 423 ist ein Auslesemittel. 424 ist ein Index und das letzte Zeichen der dekomprimierten unmittelbar vorhergehenden Kette, die durch den Eingangscode bezeichnet wird. 425 bezeichnet den Wörterbuchkonsultationsabschnitt. 426 bezeichnet den Kettendecodierabschnitt zum Decodieren der Kette aus der registrierten Kette in dem Wörterbuch entsprechend dem Index und dem letzten Zeichen des unmittelbar vorhergehenden Zeichens. 427 bezeichnet eine Ausgabesektion von decodierten Zeichen zum Ausgeben des dekomprimierten Zeichens. 428 bezeichnet den Speicherabschnitt von dekomprimierten Zeichen für das letzte Zeichen der dekomprimierten Kette. 429 bezeichnet einen Wörterbuchdekomprimierungsabschnitt zum Registrieren der Kette, die aus der dekomprimierten Kette und dem Startzeichen des anschließend dekomprimierten Zeichens gebildet ist, in dem Baum des letzten Zeichens der unmittelbar vorhergehenden Kette mit dem Index.
  • Im folgenden wird ein Beispiel für die Decodieroperation für den codierten Code "0a0b0a10 ..." beschrieben.
  • (Erstens) Der Eingangscodeleseabschnitt 423 liest den Eingangscode (a) aus. Da der gelesene Code Rohdaten umfaßt, decodiert der Kettendecodierabschnitt 426 das Zeichen (a) und gibt es aus. Dann wird das Zeichen (a) an der Registrierposition "1" des dekomprimierten Wörterbuchs 422 als Baum des letzten Zeichens 0 der unmittelbar vorhergehenden Kette registriert. Gleichzeitig wird das letzte Zeichen (a) der decodierten Kette gespeichert.
  • (Zweitens) Ähnlich wird der nächste Code (1b) gelesen, und da dieser Code auch die Lebenddaten sind, wird das Zeichen (b) decodiert und ausgegeben. Ferner wird die Kette (ab), die aus dem gespeicherten Zeichen (a) und dem gegenwärtig gelesenen Zeichen (b) gebildet ist, an der Registrierposition "2" des Wörterbuchs registriert, das (a) als Wurzel hat. Weiterhin wird das letzte Zeichen (b) der decodierten Kette gespeichert.
  • (Drittens) Als nächstes wird der Code (a) gelesen. Die Kette (a) wird dekomprimiert. Die Kette (ba), die aus dem gespeicherten letzten Zeichen (b) und dem gegenwärtig gelesenen (a) gebildet ist, wird an der Registrierposition "3" des Wörterbuchs des Baums mit (b) als Wurzel mit dem Index "1" registriert. Dann wird das dekomprimierte (a) gespeichert.
  • (Viertens) Der vierte Code 1 wird gelesen. Da nun der Eingangscode des letzten Zeichens (a) des unmittelbar vorhergehenden Zeichens 1 ist, liest der Wörterbuchkonsultationsabschnitt 425 die Kette (ab) unter Bezugnahme auf das Wörterbuch. Dann decodiert der Kettendecodierabschnitt 426 die Kette "ab". Auf der Basis der decodierten Kette und des letzten Zeichens (a) der unmittelbar vorhergehenden letzten Kette gibt ferner der Ausgabeabschnitt von decodierten Zeichen 427 das Zeichen (b) aus. Der Speicherabschnitt des letzten Zeichens 428 speichert das letzte Zeichen (b) der decodierten Kette.
  • (Fünftens) Der fünfte Code (c) wird gelesen.
  • Da dies die Rohdaten sind, wird das Zeichen (c) decodiert. Dann wird die Kette abc, die aus der Kette ab gebildet ist, die bei dem (vierten) Schritt decodiert wurde, und aus dem gegenwärtig decodierten Zeichen (c), an der Registrierposition "4" des Wörterbuchs des Baums mit (a) als Wurzel mit dem Index "2" registriert, und somit ist das Wörterbuch wiederhergestellt.
  • Bei der obigen Beschreibung wurde der Prozeß zum Erzeugen des Baums des Wörterbuchs für jedes letzte Zeichen der unmittelbar vorhergehenden Kette erläutert, wobei die Erfindung aber nicht auf den spezifischen Prozeß begrenzt sein sollte, und es ist möglich, die letzten Zeichen in Abhängigkeit von ihren Arten zu vereinigen und den Baum des Wörterbuchs für jeweilige Gruppen zum Registrieren der nachfolgenden Ketten zu erzeugen.
  • Ein Beispiel für die in dem System von 28 zu verwendende Codiervorrichtung ist in 31 gezeigt.
  • In der Vorrichtung von 31 wird das Wörterbuch für ein unitäres Wörterbuch zum Registrieren der Ketten und ein Individualwörterbuch zum Registrieren der Indizes, wobei die Kette der Registrierposition in dem unitären Wörterbuch bezüglich des letzten Zeichens der unmittelbar vorhergehenden Kette zugeordnet wird, separat erzeugt.
  • In der Vorrichtung von 31 bezeichnet 430 einen Speicher zum Speichern der empfangenen Zeichensequenz K zum Codieren der eingegebenen Zeichensequenz. 431 bezeichnet einen Speicher zum Speichern des Kettencodes ω. 432 ist ein Speicher zum Speichern des letzten Zeichens PK der unmittelbar vorhergehenden Kette. 433 bezeichnet einen Speicher zum Speichern des letzten Zeichens der gegenwärtigen Kette, die zu codieren ist. 434 bezeichnet das unitäre Wörterbuch D(n), das einen Speicher umfaßt. 435 sind Individualwörterbücher, die einen Speicher umfassen und bezüglich jedes der 256 Zeichen, wie etwa 0, a, b, c, ... gebildet sind. 436 bezeichnet einen Zähler zum Messen der Tiefe der Registrierungshierarchie von Ketten in dem Baum des Wörterbuchs. 437-1 bis 437-255 sind Zähler für den jeweiligen Index m(0) bis m(255) des Individualwörterbuchs 0 bis 255. 438 ist ein Zähler für die Registriernummer n des unitären Wörterbuchs. 439 ist ein Wörterbuchkonsultations- und -erzeugungsmittel zum Konsultieren des Wörterbuchs und Erzeugen des Wörterbuchs. 440 bezeichnet ein Codeerzeugungsmittel zum Codieren der gelesenen Codes. 441 bezeichnet ein Codeausgabemittel zum Ausgeben der erzeugten Codes der Ketten. 442 bezeichnet eine CPU zum Ausführen und Steuern des Prozesses der Datencodierung gemäß den Programmen.
  • Die Operationsprozesse zum Codieren in der Vorrichtung von 31 sind in 32 gezeigt.
  • Beispiele für das unitäre Wörterbuch und das Individualwörterbuch, wenn die Zeichensequenz "ababcbaba ..." lautet, sind in 33 und 34 gezeigt.
  • Ein Beispiel für den Baum des Individualwörterbuchs, wenn die Zeichensequenz codiert wird, ist in 35 gezeigt.
  • Wenn bei dem Beispiel von 35 das Zeichen, das mit der Wurzel des Baums des letzten Zeichens der unmittelbar vorhergehenden Kette direkt verbunden ist, zuerst auftritt, wird das Zeichen als Rohdaten verwendet und wird das einzelne Zeichen zugeführt.
  • Ein Beispiel für das Codewort ist in 36 gezeigt. Der Modus 1 zeigt den Fall, wenn das Zeichen, das direkt mit der Wurzel des Baums von jedem Individualwörterbuch verbunden ist, neu auftritt.
  • Im Modus 1 wird die Kombination aus dem Index 0, der nämlich die Rohdaten bezeichnet, und den Rohdaten des Zeichens als Codewort zugeführt.
  • Wenn der Index des Zeichens oder einer Kette erscheint, der nicht 0 ist, wird der Index in jedem Baum als Codewort zugeführt, wie in 36 gezeigt.
  • Im folgenden wird das Flußdiagramm in 32 erläutert.
  • Ein Anfangsbedingungsfestlegungsschritt S1 zeigt den Fall, wenn 256 Individualwörterbücher vorgesehen werden. Um die Offenbarung jedoch zu vereinfachen, wird das Codieren der Zeichensequenz betrachtet, welche Zeichensequenz "ababc ..." nur aus den Zeichen a, b, c gebildet ist.
  • Zuerst erfolgt bei S1 die Initialisierung des gesamten Systems.
  • Als Anfangsbedingung (Bedingung 1) wird das letzte Zeichen PK der unmittelbar vorhergehenden Kette auf 0 gesetzt. (Bedingung 2) Die Anfangswerte des Speichers zum Speichern des Kettencodes werden in diesem Fall auf 0 gesetzt. In der Zeichnung wird der Anfangswert auf 256 gesetzt. (Bedingung 3) Der Meßzähler für die Tiefe DP des Baums des Wörterbuchs wird auf 0 gesetzt. (Bedingung 4) Die Startadresse, die für die Startregistrierposition des unitären Wörterbuchs repräsentativ ist, wird in diesem Fall auf 4 gesetzt. In der Zeichnung wird die Startadresse auf 256 gesetzt. Die Nummern von Indizes der Individualwörterbücher werden jeweilig auf 0 gesetzt. Da die Individualwörterbücher in der Zeichnung für vier Zeichen erstellt werden, d. h., 0, a, b, c, wird die Nummer m(0), m(a), m(b), m(c) von Indizes, die für jeweilige Wörterbücher registriert sind, auf 0 gesetzt.
  • (Erstens) Bei S2 wird das Startzeichen a der eingegebenen Zeichensequenz ababcbaba ... ausgelesen.
  • Die Beurteilung bei S3 bestimmt, ob das Lesen der Zeichensequenz vollendet ist, um den Prozeß zu beenden. Nach der Beurteilung bei Schritt S3 geht der Prozeß zu S4 über.
  • Da die Kette (a) im Anschluß an die unmittelbar vorhergehende Kette 0 noch nicht in dem unitären Wörterbuch registriert ist, geht der Prozeß zu S6 über.
  • Da die Tiefe DP zu dieser Zeit 0 ist, geht der Prozeß zu S12 über.
  • Da der gegenwärtige Fall dem obererwähnten Modus 1 entspricht, wird bei S12 0a als Codewort auf der Basis von m(0) = 0 und den Rohdaten a ausgegeben.
  • Dann wird bei S13 das gegenwärtig eingegebene Zeichen (a), da hier der Anfangswert von ω 0 ist und die Kette 0a ist, in dem unitären Wörterbuch D(n = 4) registriert. Für das Individualwörterbuch 0 (PK = 0) wird ferner der Index I(n = 4) festgelegt. Dann wird die registrierte Indexnummer m(0) des Individualwörterbuchs 0 um 1 inkrementiert, um 1 zu registrieren, weil nämlich kein zuvor registriertes Zeichen in dem Baum des Individualwörterbuchs 0 vorhanden ist.
  • Dann wird bei S14 die Registrierposition n des unitären Wörterbuchs um 1 inkrementiert.
  • Danach wird die letzte Kette PK mit dem gegenwärtig gelesenen (a) festgelegt. Der Kettencode ω wird dann auf den Code des ausgelesenen Zeichens (a) gesetzt, nämlich 1, wie bei der Anfangsbedingung festgelegt.
  • (Zweitens) Als nächstes wird das zweite Zeichen b gelesen.
  • Da ωK = 1b in dem Wörterbuch noch nicht registriert ist, geht der Prozeß zu S6 über. Da DP = 0 ist, geht der Prozeß ferner zu Schritt (12) über.
  • Da hier der Modus der Modus 1 mit m(a) = 0 und dem Rohzeichen b ist, wird Ob ausgegeben.
  • Danach wird bei S13 ωK = 1b in dem Wörterbuch D(n = 5) registriert. Ferner wird von dem Individualwörterbuch a (PK = a) der Index I(n = 5) registriert. Das Individualwörterbuch (a) wird dann für die Registriernummer m(a) um 1 inkrementiert, und somit wird 1 registriert, da es nämlich kein registriertes Zeichen in dem Baum des Individualwörterbuchs (a) gab. Bei S14 wird n um 1 inkrementiert. Dann wird das gegenwärtig gelesene (b) als letztes Zeichen PK festgelegt, und der eingegebene Zeichencode ω wird auf den Code 2 gesetzt, der für (b) bei der Anfangsbedingung festgelegt wird.
  • (Drittens) Als nächstes wird das dritte Zeichen (a) gelesen.
  • Da ωK = 2b noch nicht registriert ist, geht der Prozeß zu S6 über. Da DP = 0 ist, wird bei S12 im Modus 1 die Kombination Ob aus m(b) = 0, da es nämlich keine Kette in dem Baum des Individualwörterbuchs (b) gibt, und den Rohdaten (b) ausgegeben.
  • Dann wird bei S13 ωK = 2b in dem unitären Wörterbuch D(n = 6) registriert. Gleichzeitig wird der Index I(n = 6) in dem Individualwörterbuch (b) (PK = b) registriert. Dann wird m(b) um 1 inkrementiert, und 1 wird registriert, da es nämlich kein registriertes Zeichen in dem Baum des Individualwörterbuchs b gab. Als nächstes wird bei S14 (m) um (a) inkrementiert, und PK wird auf (am) gesetzt, und ω = 1 wird festgelegt. Danach wird das nächste Zeichen (b) gelesen.
  • (Viertens) Als nächstes wird das vierte Zeichen (b) gelesen.
  • Da bei der Beurteilung bei S4 unter Bezugnahme auf das unitäre Wörterbuch ωK = 1b als Code n = 5 bereits registriert worden ist, geht der Prozeß zu S5 über.
  • Dann wird ω durch n = 5 ersetzt, das aus dem unitären Wörterbuch gelesen wird. Dann wird die Tiefe DP der Hierarchie um 1 inkrementiert, um DP = 1 zu erreichen, und danach wird das gegenwärtig ausgelesene (b) in dem Speicher zum Speichern des letzten Zeichens K1 gespeichert.
  • (Fünftens) Dann wird das fünfte Zeichen (c) gelesen.
  • Als nächstes wird bei S4 eine Beurteilung vorgenommen, ob ωK = 5c in dem unitären Wörterbuch registriert ist.
  • Da ωK = 5c noch nicht registriert ist, geht der Prozeß zu S6 über.
  • Da hier DP = 1 ist, geht der Prozeß weiter zu S7 über.
  • Bei S7 wird das Individualwörterbuch entsprechend ω = 5 (n = 5) konsultiert. Dann wird der Index I(n = 5) = 1 und (b), das dem letzten Zeichen (a) der unmittelbar vorhergehenden Kette (a) folgt, als Modus 2 ausgegeben.
  • Dann wird bei S8 ωK = 5b(abc) an der Registrierposition n = 7 des unitären Wörterbuchs registriert. Gleichzeitig wird für das Individualwörterbuch (a) m(PK) um 1 inkrementiert, entsprechend n = 7 und dem Index I = 2, wobei hier n = 7 registriert wird. Es stellt nämlich die zweite Kette dar, die in dem Individualwörterbuch (a) registriert ist.
  • Dann wird das (n) um 1 inkrementiert, und die Tiefe DP wird auf 0 festgelegt.
  • Ferner wird PK auf (b) gesetzt, das in dem Speicher zum Speichern des letzten Zeichens K1 gespeichert ist. ω wird auf den Code 2 von K1 gesetzt. Dann wird bei S4 das gegenwärtig gelesene fünfte Zeichen (c) wieder zu K gemacht, und es wird beurteilt, ob ωK = 2c in dem unitären Wörterbuch registriert ist.
  • Da 2c noch nicht in dem unitären Wörterbuch registriert ist, geht der Prozeß zu S6 über. Da DP = 0 ist, geht der Prozeß zu S12 über. Das Zeichen (c) wird zu den Lebenddaten, und das Codewort Ob wird im Modus 1 ausgegeben.
  • Dann wird bei S13 ωK = 2c bei n = 8 des unitären Wörterbuchs registriert. Da gegenwärtig PK = b ist, wird n = 8 registriert, wobei m(b) um 1 inkrementiert wird und I = 1 ist, nämlich n = 8, was die zweite Kette in dem Baum von (b) darstellt.
  • Ferner wird n um 1 inkrementiert. PK wird zu dem gegenwärtig ausgelesenen (c) gemacht. Dann wird ω = 3 gemäß dem Wert bei der Anfangsbedingung von (c) festgelegt. Dann wird das nächste Zeichen ausgelesen.
  • Obwohl der anschließende Prozeß auf dieselbe Weise erfolgt, wird "0a0b0a10c0b113 ..." als Ausgabecode der eingegebenen Zeichensequenz "ababcbabaa ..." ausgegeben.
  • Als nächstes wird das Decodieren von dem obengenannten Code in die Zeichensequenz erläutert. Die Konstruktion der Vorrichtung zum Decodieren ist in 37 gezeigt.
  • In der Vorrichtung von 37 bezeichnet 471 einen Eingangscodespeicher. 472 bezeichnet einen Speicher (INω) zum Speichern eines wiederhergestellten Codes, der in den Code der Kette in dem unitären Wörterbuch aus dem Eingangscode dekomprimiert wurde, der als Codewort durch den Index des Individualwörterbuchs zugeführt wird. 473 bezeichnet einen Speicher (OLDω) zum Speichern der dekomprimierten unmittelbar vorhergehenden Kette. 474 ist ein Speicher (PK) zum Speichern des letzten Zeichens der dekomprimierten unmittelbar vorhergehenden Kette. 475 ist ein Speicher zum Speichern des letzten Zeichens (PK1) zum Speichern des letzten Zeichens der vorhergehenden Kette, die unmittelbar vor der unmittelbar vorhergehenden Kette liegt. 476 ist ein Speicher zum Speichern eines ersten Zeichens (K1) zum Speichern des ersten Zeichens der dekomprimierten Kette. 477 ist das unitäre Wörterbuch D(n), das von Zeit zu Zeit durch die dekomprimierten Ketten des Eingangscodes dekomprimiert wird. 478 sind Individualwörterbücher q, die durch die dekomprimierten Ketten, nämlich den Index von PK, dekomprimiert werden. 479-0 bis 479-255 sind Indexnummernzähler für 255 Individualwörterbücher. 480 ist ein Wörterbuchkonsultationsmittel zum Konsultieren des Individualcodes gemäß dem Eingangscode. 481 bezeichnet das Kettendecodiermittel zum Decodieren der Ketten durch das unitäre Wörterbuch. 482 ist ein Wörterbuchwiederherstellungsmittel zum Dekomprimieren der Ketten in einem unitären Wörterbuch und den entsprechenden Individualwörterbüchern mit den dekomprimierten Ketten. 483 bezeichnet eine CPU zum Ausführen eines Decodierprozesses gemäß den Programmen.
  • Der Codierprozeß ist in 38(A), (B) und (C) gezeigt. Wie in 38(A) gezeigt, wird beurteilt, ob der Eingangscode durch Initialisierung definiert ist. Falls der Eingangscode definiert ist, wird das Individualwörterbuch konsultiert, um ihn in den Code zu konvertieren, der für die Kette in dem unitären Wörterbuch repräsentativ ist.
  • In dem Flußdiagramm von 38(B) wird der Code im Modus 1 decodiert.
  • In dem Flußdiagramm von 38(C) wird die Kette auf der Basis des registrierten Codes in dem unitären Wörterbuch decodiert.
  • Als Beispiel wird im folgenden der Fall des obenerwähnten Codes "0a0b0a10c ..." erläutert, der als Eingangscode eingegeben wird.
  • Zuerst wird eine Initialisierung ausgeführt.
  • Als Anfangsbedingung ist der Fall gezeigt, wenn 256 Individualwörterbücher vorgesehen sind und 256 individuellen Zeichen die Anfangsbedingung von 0 bis 255 verliehen wird.
  • Unter der Anfangsbedingung, PK = 0, wird der Anfangswert ω auf 256 gesetzt, PK1 = 0, ist die führende Adresse des unitären Wörterbuchs n = 256, OLDω = 0, werden m(0) bis m(255) der Individualwörterbücher auf 0 gesetzt.
  • Um die Offenbarung zu vereinfachen, wird nur der Fall von drei Zeichen betrachtet, nämlich von a, b, c. Bei a, b, c werden die Codes 1, 2, 3 als Anfangsbedingungen verliehen.
  • Ferner wird der Anfangswert von ω auf 0 gesetzt.
  • (Erstens) Bei S2 wird der Anfangseingangscode auf 0a gesetzt.
  • Da der Code bei der Beurteilung bei S4 nicht definiert ist, geht der Prozeß zu S6 über.
  • Bei der Beurteilung wird bei S6 unterschieden, ob der Code den Modus 1 darstellt, der mit der Wurzel des Baums des Wörterbuchs der unmittelbar vorhergehenden Kette direkt verbunden ist, oder die undefinierte Codeeingabe des durch Ausnahmeerzeugung hervorgebrachten Codes durch einen LZW-Codierprozeß.
  • Da der Eingangscode gegenwärtig der Modus 1 ist, geht der Prozeß zu S7 in 38(B) über.
  • Bei S7 wird auf der Basis des Empfangs des Eingangscodes 0a als Rohdaten K = a das Zeichen a ausgegeben.
  • Da hier keine unmittelbar vorhergehende Kette vorhanden ist, geht der Prozeß zu S12 über. Bei der dekomprimierten Kette (a) und PK = 0 wird 0a in n = 4 des unitären Wörterbuchs (D) registriert, um das unitäre Wörterbuch wiederherzustellen. Durch das Inkrement m(0), wobei PK = 0, m(0) = 1 und n = 4 ist, wird ferner das Individualwörterbuch 0 wiederhergestellt.
  • Ferner wird bei S13 n inkrementiert. PK wird mit dem gegenwärtig dekomprimierten (a) gesetzt. Dann wird PK = 0 auf OLDω verschoben.
  • (Zweitens) Der zweite Eingangscode 0b wird ausgelesen.
  • Auch in diesem Fall ist der Code der Modus 1, und der Prozeß geht über S4 zu S6 und anschließend zu S7 über.
  • In dem Flußdiagramm von 38(B) werden durch einen ähnlichen Prozeß wie beim Verarbeiten von 0a bei dem (ersten) Schritt die Lebenddaten (b) ausgegeben. (ab) wird an der Registrierposition n = 5 des unitären Wörterbuchs registriert. Ferner werden n = 5 und Index = 1 in dem Individualwörterbuch entsprechend dem letzten Zeichen der unmittelbar vorhergehenden Kette (a) registriert, und damit ist das Individualwörterbuch wiederhergestellt.
  • (Drittens) Der dritte Eingangscode 0a wird eingegeben. Der Code 0a ist dem Modus 1 ähnlich, und die obigen Prozesse werden wiederholt. Somit wird das (a) als wiederhergestellter Code ausgegeben. (ba) wird in das unitäre Wörterbuch geschrieben. n = 6 und Index = 1 wird in das Individualwörterbuch b geschrieben.
  • Dann wird jeweilig m(b) = 1, n = 7, PK = a, OLDω = b gesetzt. Danach wird der nächste Code ausgelesen.
  • (Viertens) Der vierte Code ist 1.
  • Da der Code 1 definiert ist, geht der Prozeß zu S5 von 38(A) über.
  • Da die unmittelbar vorhergehende Kette (a) ist und der Eingangscode 1 ist, wird das wiederhergestellte Individualwörterbuch konsultiert und wird die entsprechende Registrierposition des unitären Wörterbuchs geprüft.
  • Als Resultat wird der Eingangscode in n = 5 konvertiert, wird ωK = 1b und in INω geschrieben. Dann geht der Prozeß zu S15 von 38(C) über.
  • 38(C) ist ein Flußdiagramm des Decodierprozesses im LZW-Code.
  • S16 und S17 sind dieselben wie beim Decodierprozeß nach Stand der Technik.
  • Und zwar wird bei S16 der Code 1b in dem Stapel in der Ordnung der Codes (b) und (a) gespeichert. Bei S17 wird durch Belassen von (a) das obere (b) ausgegeben.
  • Da die unmittelbar vorhergehende Kette bereits in dem Wörterbuch registriert worden ist, geht der Prozeß zu S21 über, wird für zwei vorhergehende Ketten des Speichers zum Speichern des letzten Zeichens PK = a geschrieben, wird das letzte Zeichen (b) der dekomprimierten Kette (ab) in PK geschrieben und wird das Startzeichen (a) der dekomprimierten Kette in K1 geschrieben.
  • Gleichzeitig wird der dekomprimierte Code 1b (in INω) in OLDω geschrieben, und der nächste Code wird gelesen.
  • (Fünftens) Der fünfte Code 0c wird ausgelesen.
  • Da dies der Code des Modus 1 ist, geht der Prozeß zu S7 von 38(B) über, und (c) wird bei S8 ausgegeben.
  • Da in diesem Fall die unmittelbar vorhergehende Kette noch nicht registriert ist, wird bei S10 mit 1b von OLDω und dem gegenwärtig eingegebenen (c) die Kette (abc) an der Position n = 7 des unitären Wörterbuchs registriert. Gleichzeitig wird m(a) um 1 inkrementiert. Index = 2 wird in das Individualwörterbuch (a) geschrieben.
  • Bei S11 wird n um 1 inkrementiert. Bei S12 wird die gegenwärtige Kette, nämlich die Kette (bc), zu der Zeit des Lesens von (c) mit dem letzten Zeichen (b) zur Registrierung verarbeitet. Gleichzeitig wird der Prozeß ausgeführt, um die Registrierung für das Individualwörterbuch b vorzunehmen.
  • Anschließend werden durch einen ähnlichen Prozeß alle Eingangscodes gelesen und decodiert.
  • Es sei erwähnt, daß S10 und S11 in dem Flußdiagramm von 38(B) ähnliche Prozesse wie jene darstellen, die bezüglich der Ausnahmeverarbeitung der LZW-Codierung nach Stand der Technik erläutert wurden.
  • Obwohl in der obigen Beschreibung bezüglich jedes der individuellen Zeichen, die mit den Wurzeln der Bäume von jeweiligen Individualwörterbüchern verbunden sind, die Rohdaten ausgegeben werden, ist die Erfindung nicht auf diesen spezifischen Prozeß begrenzt, und es können mögliche Kombinationen aus individuellen Zeichen gebildet werden, die mit den Wurzeln der Bäume von jeweiligen individuellen Zeichen auf Codier- und Decodierseiten zu verbinden sind, und für das obengenannte individuelle Zeichen gemäß dem erzeugten Code ausgegeben werden.
  • Während die Lösung verwendet wird, bei der das auszugebende Codewort immer durch den "individuellen Index ω der betreffenden Kette und das nächste einzelne Zeichen K" beschrieben wird und dieses "nächste einzelne Zeichen" als letztes Zeichen der unmittelbar vorhergehenden Kette verwendet wird, um eine Codierung für das nächste einzelne Zeichen auszuführen, kann andererseits der Prozeß zum Codieren und Decodieren vereinfacht werden.
  • Die Konstruktion des Baums in dem System von 28 und das Verfahren zum Codieren der Kette wird unter Bezugnahme auf 39 erläutert.
  • Wie in 39 gezeigt, wird der Code für die gegenwärtige Kette in Bezug auf die Abhängigkeit von dem unmittelbar vorhergehenden letzten Zeichen angegeben.
  • Hinsichtlich jedes letzten Zeichens der unmittelbar vorhergehenden Ketten wird der Baum mit dem Startzeichen oder seinem entwickelten Zeichen gebildet. Ferner wird hinsichtlich jedes Baums jeder Kette die Nummer verliehen.
  • Zum Beispiel wird hinsichtlich des unmittelbar vorhergehenden Zeichens (a) dann, wenn das einzelne Zeichen (a) verbunden ist, jenes (a) als Index 1 des entsprechenden Baums verwendet, wird dann, wenn die Kette (ab) verbunden ist, der Index 7 angegeben, und wird, wenn das einzelne Zeichen (b) verbunden ist, der Index 2 angegeben. Ferner ist in dem Fall, wenn die unmittelbar vorhergehende Kette (b) ist, das einzelne Zeichen (a), dem der Index des Baums der unmittelbar vorhergehenden Kette (b) verliehen wird, 1, und "ab" wird der Index 4 verliehen. Es wird als vorteilhaft empfunden, daß bei jeder Kette ein Index bezüglich des Baums verliehen wird, der die unmittelbar vorhergehende Kette als Wurzel hat.
  • Wenn angenommen wird, daß jedes Zeichen mit einheitlicher Wahrscheinlichkeit auftritt, kann damit die Länge des Index, nämlich die Registriernummer für jede Kette in dem Baum des jeweiligen Wörterbuchs als 1/256 reduziert werden.
  • Normalerweise beträgt die Größe von jedem individuellen Baum ein Zehntel der Gesamtgröße von allen Bäumen. Deshalb können die Codes zum Identifizieren der Ketten verkürzt werden, um das Komprimierungsverhältnis zu erhöhen.
  • Als Zusammenfassung der Darstellungen der Vorrichtung zur Datenkomprimierung und -dekomprimierung gemäß der Erfindung ist 40 vorgesehen. In der Vorrichtung von 40 sind vorgesehen: eine Kettenhaltesektion (404) zum Auslesen der zugeführten Zeichensequenz, eine nach der anderen, und zum Halten der gegenwärtigen Kette, die zu codieren ist, ein Wörterbuch (402) zum Speichern der Kette in Abhängigkeit von dem letzten Zeichen der unmittelbar vorhergehenden Kette bezüglich jedes der letzten Zeichen der unmittelbar vorhergehenden Ketten, eine Wörterbuchkonsultationssektion (405) zum Auslesen der maximalen Koinzidenz für die gegenwärtige Kette von den Ketten, die in dem Wörterbuch registriert sind, in Zuordnung zu dem letzten Zeichen der unmittelbar vorhergehenden Kette für die gegenwärtige Kette, eine Codiersektion (408) zum Codieren der Kette mit maximaler Koinzidenz der ausgelesenen Kette, eine Wörterbuchregistriersektion (409) zum Registrieren von neu auftretenden Ketten, die aus der Kette mit maximaler Koinzidenz und dem neuen Zeichen gebildet sind, in dem Wörterbuch mit einem Index, der bezüglich des letzten Zeichens der unmittelbar vorhergehenden Kette bestimmt wird, eine Codeauslesesektion (423) zum Auslesen von zugeführten Codes, einen nach dem anderen, ein Wörterbuch (422), das durch den Eingangscode wiederhergestellt wird, und den Index, der für den Eingangscode und das letzte Zeichen (424) der wiederhergestellten unmittelbar vorhergehenden Kette repräsentativ ist, eine Wörterbuchkonsultationssektion (425), eine Decodiersektion (426) zum Decodieren der Ketten mit dem Index und der registrierten Ketten des Wörterbuchs, die dem letzten Zeichen der unmittelbar vorhergehenden Kette zugeordnet sind, die Speichersektion des letzten Zeichens (428) zum Speichern des letzten Zeichens der decodierten Kette, und eine Wörterbuchwiederherstellungssektion (429) zum Registrieren der Ketten, die aus der wiederhergestellten Kette und dem ersten Zeichen der Kette gebildet sind, das als nächstes zu decodieren ist, in Abhängigkeit von dem unmittelbar vorhergehenden letzten Zeichen.
  • 1
    Komprimierer
    2
    Wörterbuch
    100
    Wörterbuchinitialisierungsvorrichtung
    101
    Musterdatenzuführabschnitt
    102
    Codierabschnitt
    103
    Speicherabschnitt
    104
    Selektionsabschnitt
    105
    Wörterbuchspeichervorrichtung
    106A
    Anfangswertregistrierabschnitt
    106B
    Datenregistrierabschnitt
    107
    Codierabschnitt
    108
    Decodierabschnitt
    112
    Zentrale Verarbeitungseinheit
    114
    Programmspeichervorrichtung
    116
    Steuerprogramm
    118
    Programm zum Detektieren der maximalen Längenkoinzidenz
    120
    Codierprogramm
    122
    Decodierprogramm
    124
    Wörterbuchanfangswert-Erzeugungsprogramm
    126
    Datenspeichervorrichtung
    110
    Wörterbuch
    128
    Datenpuffer
    201
    Zeichensequenzzuführabschnitt
    202
    Eingabepuffer
    203
    Codiervorrichtung
    209
    Referenzwörterbuchkonsultationsabschnitt
    210
    Codeworterzeugungsabschnitt
    211
    Referenzwörterbuchregistrierabschnitt
    213
    Zählabschnitt der Anzahl der registrierten Zeichensequenzen
    214
    Bezeichnungsabschnitt des optimalen Codes
    212
    Konvertierungsabschnitt des optimalen Codes
    206
    Ausgebeabschnitt des kompriemierten Codes
    205
    Referenzwörterbuch
    204
    Bezeichnungsabschnitt des temporären Codes der Referenzwörterbucheinheit
    301
    Datenkomprimierungsabschnitt
    302
    Datenwiederherstellungsabschnitt
    310
    Wörterbuchgruppe
    312
    Zentrale Verarbeitungseinheit
    314
    Programmspeicher
    316
    Steuerprogramm
    318
    Programm zum Detektieren der maximalen Längenkoinzidenz
    320
    Codierprogramm
    322
    Decodierprogramm
    324
    Wörterbuchanfangswert-Erzeugungsprogramm
    326
    Datenspeicher
    310
    Wörterbuch
    328
    Datenpuffer
    401
    Zeichensequenzzuführabschnitt
    402
    Wörterbuch
    403
    Zeichensequenzleseabschnitt
    404
    Zeichenpartialsequenz
    405
    Wörterbuchkonsulta6onsabschnitt
    406
    Gegenwärtige Zeichensequenz
    407
    Index
    408
    Codierabschnitt
    409
    Wörterbuchregistrierabschnitt
    410
    Speicherabschnitt des letzten Zeichens
    421
    Empfangscode
    422
    Wiederhergestelltes Wörterbuch
    423
    Codeleseabschnitt
    424
    Index und letztes Zeichen
    425
    Wörterbuchkonsultationsabschnitt
    426
    Zeichenpartialsequenz-Decodierabschnitt
    427
    Ausgabeabschnitt von decodierten Zeichen
    428
    Speicherabschnitt des letzten Zeichens
    429
    Wörterbuchwiederherstellungsabschnitt
    430
    Zeichenspeicher
    431
    Partialsequenzcodespeicher
    432
    Speicher für letztes Zeichen der vorhergehenden Partialsequenz
    433
    Speicher für letztes Zeichen der gegenwärtigen Partialsequenz
    434
    Unitäres Wörterbuch
    435
    Individualwörterbuch
    436
    Tiefenmeßzähler
    437
    Indexzähler des Individualwörterbuchs
    438
    Registriernummernzähler des unitären Wörterbuchs
    439
    Wörterbuchkonsultations- und -erzeugungsabschnitt
    440
    Codeerzeugungsabschnitt
    441
    Codeausgabeabschnitt

Claims (8)

  1. Verfahren zum Komprimieren und Dekomprimieren von Daten auf inkrementale Parsing-Weise, bei dem ein Codieren durchgeführt wird durch: – Bezeichnen der Referenzzahl einer Partialsequenz mit der maximalen Längenkoinzidenz von den codierten Partialsequenzen, die in einem Wörterbuch registriert sind, hinsichtlich einer empfangenen Zeichensequenz, – Bezeichnen einer neuen Referenzzahl für eine Partialsequenz, welche erhalten wird, indem ein Zeichen zu einer als Codewort erhaltenen Referenzzahl hinzugefügt wird, und – Registrieren der mit der neuen Referenzzahl bezeichneten Partialsequenz in dem Wörterbuch, und bei dem eine Decodierung durchgeführt wird durch: – Suchen nach Partialsequenzen, die in dem Wörterbuch registriert sind, unter Verwendung eines Codeworts, das durch die Referenzzahl der Partialsequenz repräsentiert wird, – wiederherstellen der ursprünglichen Partialsequenz, – Bezeichnen einer neuen Referenzzahl für eine Partialsequenz, die erhalten wird, indem das Startzeichen der gegenwärtig wiederhergestellten Partialsequenz zu dem zuvor verarbeiteten Codewort hinzugefügt wird, und – Registrieren der mit der neuen Referenzzahl bezeichneten Partialsequenz in dem Wörterbuch, dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst: – Erstellen eines Referenzwörterbuchs durch eine Gruppe von Wörterbüchern, wobei die Anzahl solcher Wörterbücher geringer ist als die Anzahl aller Arten von zu verarbeitenden Zeichen, wobei für jedes Wörterbuch anfänglich Zeichensequenzen mit Be zeichnungen von Referenzzahlen registriert werden, welche Zeichensequenzen mit einer hohen Auftretewahrscheinlichkeit auftreten und umfassen ein Zeichen der Arten von allen Zeichen pro Zeichen oder eine Vielzahl von Zeichen enthaltend alle Arten von Zeichen pro Zeichen; – Codieren der empfangenen Zeichensequenzen durch Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe der Wörterbücher gemäß der Suchinformation, welche die Abhängigkeitsbeziehung zwischen dem empfangenen Zeichen und den zuvor codierten Zeichensequenzen repräsentiert; und – falls eine empfangene Zeichensequenz in dem bezeichneten Wörterbuch nicht existiert, Registrieren einer Zeichensequenz mit einer Bezeichnung einer neuen Referenzzahl, welche Zeichensequenz erhalten wird, indem ein Sequenzzeichen zu der Referenzzahl einer codierten Zeichensequenz hinzugefügt wird, wobei die Codierung einer empfangenen Zeichensequenz ausgeführt wird durch das Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe von Wörterbüchern gemäß der Suchinformation, welche aus einem Abschnitt des letzten Zeichencodes der unmittelbar zuvor codierten Zeichensequenz abgeleitet wird.
  2. Verfahren nach Anspruch 1, bei welchem eine Codierung einer empfangenen Zeichensequenz ausgeführt wird durch das Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe von Wörterbüchern gemäß der Suchinformation, welche durch obere Bits des letzten Zeichencodes der unmittelbar zuvor hinzugefügten codierten Zeichensequenz repräsentiert wird.
  3. Verfahren nach Anspruch 1, bei welchem eine Codierung einer empfangenen Zeichensequenz durchgeführt wird durch Bezeichnen eines spezifische Wörterbuchs aus der Gruppe von Wörterbüchern gemäß der Suchinformation, welche durch den Bezug auf eine Verweistabelle erhalten wird, und zwar basierend auf dem letzten Zeichencode der unmittelbar zuvor codierten Zeichensequenz.
  4. Verfahren nach Anspruch 3, bei welchem eine Codierung einer empfangenen Zeichensequenz durchgeführt wird durch das Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe von Wörterbüchern gemäß der Suchinformation, welche durch obere Bits des letzten Zeichencodes der unmittelbar zuvor codierten Zeichensequenz gebildet wird.
  5. Verfahren zum Komprimieren und Dekomprimieren von Daten auf inkrementale Parsing-Weise, bei dem eine Codierung durchgeführt wird durch: – Bezeichnen der Referenzzahl einer Partialsequenz mit der maximalen Längenkoinzidenz von den codierten Partialsequenzen, die in einem Wörterbuch registriert sind, hinsichtlich einer empfangenen Zeichensequenz, – Bezeichnen einer neuen Referenzzahl für eine Partialsequenz, welche erhalten wird, indem ein Zeichen zu einer als Codewort erhaltenen Referenzzahl hinzugefügt wird, und – Registrieren der mit der neuen Referenzzahl bezeichneten Partialsequenz in dem Wörterbuch, und bei dem eine Decodierung durchgeführt wird durch: – Suchen nach Partialsequenzen, die in dem Wörterbuch registriert sind, unter der Verwendung eines Codeworts, das durch die Referenzzahl der Partialsequenz repräsentiert wird, – Wiederherstellen der ursprünglichen Partialsequenz, – Bezeichnen einer neuen Referenzzahl für eine Partialsequenz, welche erhalten wird, indem das Startzeichen der gegenwärtig wiederhergestellten Partialsequenz zu dem zuvor verarbeiteten Codewort hinzugefügt wird, und – Registrieren der als neue Referenzzahl bezeichneten Partialsequenz in dem Wörterbuch, dadurch gekennzeichnet, dass das Verfahren die Schritte umfasst: – Erstellen eines Wörterbuchs durch eine Gruppe von Wörterbüchern, welche eine Anzahl von Wörterbüchern umfasst, die geringer als die Anzahl von allen Arten der zu verarbeitenden Zeichen ist, und – für jedes Wörterbuch anfängliches Registrieren von Zeichensequenzen mit Bezeichnungen von Referenzzahlen, welche Zeichensequenzen mit einer hohen Auftretefrequenz auftreten und umfassen ein Zeichen der Arten von allen Zeichen pro Zeichen oder eine Vielzahl von Zeichen enthaltend alle Arten von Zeichen pro Zeichen; – Decodieren der empfangenen Codes durch Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe der Wörterbücher gemäß der Suchinformation, welche die Information der Abhängigkeit des empfangenen Zeichens und der zuvor decodierten Zeichensequenzen repräsentiert; und – Registrieren einer Zeichensequenz mit einer Bezeichnung einer Referenzzahl, welche Zeichensequenz erhalten wird, indem das Startzeichen der gegenwärtig dekomprimierten Zeichensequenz zu der Referenzzahl einer dekomprimierten Zeichensequenz hinzugefügt wird, – wobei die Dekompression eines empfangenen Codes ausgeführt wird durch Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe an Wörterbüchern gemäß der Suchinformation, welche aus einem Abschnitt des letzten Zeichencodes der unmittelbar zuvor dekomprimierten Zeichensequenz abgeleitet wird.
  6. Verfahren nach Anspruch 5, bei welchem eine Wiederherstellung eines empfangenen Codes durchgeführt wird durch Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe von Wörterbüchern gemäß der Suchinformation, welche durch obere Bits des letzten Zeichencodes der unmittelbar zuvor dekomprimierten Zeichensequenz repräsentiert wird.
  7. Verfahren nach Anspruch 6, bei welchem eine Decodierung eines empfangenen Codes durchgeführt wird durch Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe von Wörterbüchern gemäß der Suchinformation, welche durch den Bezug auf eine Verweistabelle abgeleitet ist, und zwar basierend auf dem letzten Zeichencode der unmittelbar zuvor dekomprimierten Zeichensequenz.
  8. Verfahren nach Anspruch 6, bei welchem eine Decodierung eines empfangenen Codes durchgeführt wird durch Bezeichnen eines spezifischen Wörterbuchs aus der Gruppe der Wörterbücher gemäß der Suchinformation, welche durch den Bezug auf eine Verweistabelle abgeleitet wird, und zwar basierend auf oberen Bits des letzten Zeichencodes der unmittelbar zuvor dekomprimierten Zeichensequenz.
DE69133481T 1990-02-26 1991-02-26 Verfahren und Vorrichtung zur Kompression und Dekompression von Daten Expired - Fee Related DE69133481T2 (de)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP4516390 1990-02-26
JP2045163A JP3038223B2 (ja) 1990-02-26 1990-02-26 データ圧縮方式
JP2062325A JP2590287B2 (ja) 1990-03-13 1990-03-13 データ圧縮方法およびデータ圧縮装置
JP6232590 1990-03-13
JP7037990 1990-03-20
JP2070379A JP2774350B2 (ja) 1990-03-20 1990-03-20 データ圧縮方法および圧縮データのデータ復元方法
JP27583590 1990-10-15
JP2275835A JP2825960B2 (ja) 1990-10-15 1990-10-15 データ圧縮方法及び復元方法

Publications (2)

Publication Number Publication Date
DE69133481D1 DE69133481D1 (de) 2005-09-15
DE69133481T2 true DE69133481T2 (de) 2006-04-06

Family

ID=27461652

Family Applications (3)

Application Number Title Priority Date Filing Date
DE69133377T Expired - Fee Related DE69133377T2 (de) 1990-02-26 1991-02-26 Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Daten
DE69132187T Expired - Lifetime DE69132187D1 (de) 1990-02-26 1991-02-26 Verfahren zur komprimierung und wiederherstellung von daten und gerät dazu
DE69133481T Expired - Fee Related DE69133481T2 (de) 1990-02-26 1991-02-26 Verfahren und Vorrichtung zur Kompression und Dekompression von Daten

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE69133377T Expired - Fee Related DE69133377T2 (de) 1990-02-26 1991-02-26 Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Daten
DE69132187T Expired - Lifetime DE69132187D1 (de) 1990-02-26 1991-02-26 Verfahren zur komprimierung und wiederherstellung von daten und gerät dazu

Country Status (4)

Country Link
EP (4) EP0871294B1 (de)
KR (1) KR950013228B1 (de)
DE (3) DE69133377T2 (de)
WO (1) WO1991013395A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463389A (en) * 1993-09-24 1995-10-31 Motorola, Inc. Data compression method and device utilizing children arrays
JP4893750B2 (ja) 2006-12-26 2012-03-07 富士通株式会社 データ圧縮装置およびデータ復元装置
CN112632343B (zh) * 2020-12-30 2023-12-26 深圳大普微电子科技有限公司 一种字符串匹配方法、装置、设备及可读存储介质
CN116521093B (zh) * 2023-07-03 2023-09-15 漳州科恒信息科技有限公司 一种智慧社区人脸数据存储方法及系统
CN117278054B (zh) * 2023-11-21 2024-02-02 湖北华中电力科技开发有限责任公司 一种智慧电网监控数据存储方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
JPS63209228A (ja) * 1987-02-25 1988-08-30 Oki Electric Ind Co Ltd デ−タ圧縮方法
US4881075A (en) * 1987-10-15 1989-11-14 Digital Equipment Corporation Method and apparatus for adaptive data compression
US4876541A (en) * 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data

Also Published As

Publication number Publication date
EP0871294B1 (de) 2005-08-10
DE69133481D1 (de) 2005-09-15
EP0871294A2 (de) 1998-10-14
EP0878915A2 (de) 1998-11-18
DE69133377D1 (de) 2004-04-29
WO1991013395A1 (en) 1991-09-05
EP0871295A2 (de) 1998-10-14
EP0472730B1 (de) 2000-05-10
EP0472730A4 (en) 1992-12-16
DE69133377T2 (de) 2004-08-05
EP0472730A1 (de) 1992-03-04
EP0878915A3 (de) 1998-12-30
EP0871295A3 (de) 1998-12-23
EP0871294A3 (de) 1998-12-30
KR950013228B1 (ko) 1995-10-26
KR920701899A (ko) 1992-08-12
DE69132187D1 (de) 2000-06-15
EP0871295B1 (de) 2004-03-24

Similar Documents

Publication Publication Date Title
DE69532775T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE2264090C3 (de) Datenverdichtung
DE69913618T2 (de) Verfahren zur Erzeugung eines Prüfpunktes, welcher eine Basisdatei beschreibt, und Verfahren zur Erzeugung einer Differenzdatei zwischen einer aktualisierten Datei und einer Basisdatei
DE19740525C1 (de) Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug
DE2519381C3 (de)
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE3545125C2 (de)
DE19858757B4 (de) Vorrichtung und Verfahren zum Komprimieren und Entkomprimieren von Musterdaten für ein Halbleiterprüfsystem
DE2139731A1 (de) Anordnung und Verfahren zur Code Um Setzung mit einem Assoziativ Speicher
DE2227148B2 (de) Schaltungsanordnung zur Umsetzung digitaler Daten
DE60038333T2 (de) Vier-zu-sechs Kodierungstabelle, Modulation die diese anwendet, aber ohne Vereinigungsbit ,sowie ihre Anwendung für optische Plattenaufzeichnungs- oder Wiedergabesysteme
WO1987000714A1 (en) Process for compressing and expanding structurally associated multiple-data sequences, and arrangements for implementing the process
DE2809623A1 (de) Verfahren und vorrichtung zur assoziativen informationswiedergewinnung
DE2153517A1 (de) Anordnung zur Codeumsetzung
DE2730328A1 (de) Adressierbarer assoziativ-speicher
DE10018993B4 (de) Datenbank-Verwaltungsvorrichtung und Datenbank-Datensatzabfragevorrichtung sowie Verfahren zum Verwalten einer Datenbank und zum Abfragen eines Datenbank-Datensatzes
DE60302203T2 (de) Anordnung zur Komprimierung einer Datentabelle
DE1964570A1 (de) Verfahren zum Wiederauffinden gespeicherter Informationen
DE69133481T2 (de) Verfahren und Vorrichtung zur Kompression und Dekompression von Daten
DE3736455A1 (de) Hierarchisches ablagesystem
DE3742142C2 (de)
DE2031797A1 (de) Verfahren zur Erzeugung eines mehr stufigen verdichteten Index
DE3137704A1 (de) Vorrichtung zum decodieren eines baumfoermigen codes variabler laenge
DE2062164A1 (de) Verfahren zur Erzeugung eines mehr stufigen Index für gespeicherte Daten einheiten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee