WO1998033280A1 - Verfahren zum kodieren und dekodieren von daten - Google Patents

Verfahren zum kodieren und dekodieren von daten Download PDF

Info

Publication number
WO1998033280A1
WO1998033280A1 PCT/DE1997/000127 DE9700127W WO9833280A1 WO 1998033280 A1 WO1998033280 A1 WO 1998033280A1 DE 9700127 W DE9700127 W DE 9700127W WO 9833280 A1 WO9833280 A1 WO 9833280A1
Authority
WO
WIPO (PCT)
Prior art keywords
data structure
elements
data
index
subordinate
Prior art date
Application number
PCT/DE1997/000127
Other languages
English (en)
French (fr)
Inventor
Gunter Logemann
Original Assignee
Siemens Aktiengesellschaft
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Priority to PCT/DE1997/000127 priority Critical patent/WO1998033280A1/de
Publication of WO1998033280A1 publication Critical patent/WO1998033280A1/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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

Definitions

  • the present invention relates to a method according to the preamble of claim 1, i.e. a method for coding and decoding data, wherein the assignment of coded and uncoded data is carried out by evaluating entries in elements of a tree-like data structure that can be found via indexes.
  • the encoding and decoding according to US Pat. No. 5,153,591 is intended to compress and decompress data (present in ASCII format in the example described). Both the compression and the decompression are carried out using tree-like data structures, the elements of which can be addressed via assigned indexes each representing predetermined data (in the example described, ASCII characters or ASCII character strings).
  • one (first) is stored in a coding unit provided for coding data
  • a further second data structure identical in content to the first data structure is stored in a decoding unit provided for decoding coded data.
  • the data to be coded are split up into more or less extensive parts of the same or different sizes, and these data parts are replaced by the indexes of the data structure elements representing the data parts in question in the data structure available in the coding unit.
  • the encoded data is split up into the indices from which it was composed, and these indexes are replaced by the data which are represented by the data structure elements which can be addressed by the respective indexes, by looking up the data structure available in the decoding unit .
  • the data structure used is structured like a tree; it has a multiplicity of data structure elements 1 to 8 represented by circles.
  • the data structure elements 1 to 8 contain a number of entries that characterize them.
  • the entries each consist of a character or - more generally expressed - symbol assigned to the relevant data structure element and a series of pointers pointing to adjacent data structure elements.
  • the elements of the data structure shown in FIG. 3 are either the character "a”, the character "b”, or the character associated with "c"; the characters which are assigned to the respective data structure elements are inscribed in the circles representing the respective data structure elements.
  • the respective data structure elements represent either the character assigned to them or a character string composed of any number of characters, the said character string consisting of the character assigned to the relevant data structure element and the characters that hierarchically above the data structure element concerned are assigned to lying data structure elements.
  • pointers to the neighboring data structure elements mentioned above can be divided into three classes, namely, parent pointers labeled "P”, down pointers labeled "D”, and right pointers labeled "R".
  • Each data structure element can (but does not have to) contain entries for a parent pointer P, a downward pointer D and a right pointer R.
  • the parent pointer P contains the index of the data structure element to which the relevant data structure element is subordinate.
  • the down pointer D contains the index of one of the elements that are subordinate to the relevant data structure element.
  • the right pointer R contains the index of one of the elements that are subordinate to the data structure element that is superordinate to the data structure element in question, apart from the data structure element in question.
  • index is assigned to each data structure element, via which it can be specifically accessed; in the example under consideration, the index may correspond to the reference symbol speak with which the data structure element in question is designated.
  • the character “b” is assigned to the relevant data structure element (2nd column for index 4). It is subordinate to the element with index 1 (5th column ' to index 4), which in turn corresponds to the character "a” (2nd column to index 1) and is not subordinate to any superordinate element (5th column to index 1), whereby it (the element with index 4) represents the string "ab” (6th column to index 4).
  • the element with index 4 is subordinate to the element with index 7 (3rd column to index 4), which in turn corresponds to the character "a” (2nd column to index 7) and consequently represents the character string “aba” (6. Column to index 7).
  • the element with index 4 is also subordinate to the element with index 8 (4th column to index 7), which in turn corresponds to the character "c” (2nd column to index 8) and consequently represents the string "abc” (6th column to index 8).
  • the original string could also be broken down into the substrings "abc”, “ab”, “abc” and “abc” and encoded as 8488.
  • the decoding is carried out in the reverse order. That is, the encoded string is broken down into the indexes from which it was composed, and these indexes are replaced by the substrings represented by the data structure elements to which the relevant indexes are assigned.
  • the present invention is therefore based on the object of developing the method according to the preamble of patent claim 1 in such a way that encodings and / or decodings to be achieved can thereby be carried out efficiently at maximum speed.
  • a data structure is used, the elements of which are designed to store the indices of a large number of hierarchically lower-lying elements.
  • FIG. 1 shows the basic structure of a data structure suitable for carrying out the method according to the invention
  • FIG. 2 shows the structure of a data structure created for compressing and decompressing a given character string using the method according to the invention
  • Figure 3 shows the structure of a data structure created for compressing and decompressing a given character string according to a conventional method.
  • Coding and decoding of data suitable method the type and scope of coding and decoding, the aim pursued with the coding and / or decoding (compression / decompression, encryption / decryption etc.) and the type and scope the data to be encoded or decoded are not subject to any restrictions.
  • the coding and decoding according to the method according to the invention is carried out as in the conventional method using tree-like data structures whose over Ordered indexes of responsive elements each represent predetermined data.
  • the data represented by the respective data structure elements can be data of any format and of any size, of any origin and content.
  • a first of the said data structures is provided in a coding unit, and a second data structure identical to the first data structure is provided in a decoding unit.
  • the coding unit and the decoding unit can be part of any devices. They will be provided in particular (but by no means exclusively) in remote data transmission (DFÜ) facilities.
  • DFÜ remote data transmission
  • the data to be coded are split up into more or less extensive parts of the same or different sizes, and these data parts are replaced by the indexes of the data structure elements representing the data parts concerned, by looking up the data structure available in the coding unit.
  • the encoded data is split up into the indices from which it was composed, and these indexes are replaced by the data which are represented by the data structure elements which can be addressed by the respective indexes, by looking up the data structure available in the decoding unit .
  • the data structure element designated by a respective index until the hierarchical element at the top level is reached
  • the data structure element concerned directly or indirectly superior data structure elements determined.
  • the data structure elements already mentioned contain a number of entries that characterize them, the entries in turn each consisting of a symbol assigned to the relevant data structure element and a series of pointers pointing to adjacent data structure elements.
  • An index is also assigned to each of the data structure elements, via which it can be accessed in a targeted manner.
  • each data structure element containing a parent pointer P and a predetermined plurality of child pointers C.
  • the parent pointer in turn contains the index of the data structure element to which the relevant data structure element is subordinate, and the child pointers contain the indices of the elements that are subordinate to the data structure element in question.
  • FIG. 1 The basic structure of such a modified data structure is illustrated in FIG. 1.
  • the data structure according to FIG. 1 has a depth of 3. This means that a number of subordinate data structure elements (child elements 21, 22 ... 2y), which are up to y below the hierarchical level (child elements 21, 22 ... 2y), are attached to one of the hierarchically highest elements, and these child elements 21, 22 ... 2y, in turn, a plurality of subordinate data structure elements (child elements 31, 32, ... 3y), which are hierarchically even deeper, are attached or can be attached.
  • Different symbols are assigned to each of the up to y child elements that are attached to the root element or a higher-level child element.
  • Data structure elements to which different symbols are assigned are referred to below as data structure elements of different types; Data structure elements of the same type are assigned the same symbols.
  • the data structure elements subordinate to a respective data structure element are each direct (and not, as previously, partially only indirectly via other substructure elements. ordered data structure elements) attached to the relevant data structure element.
  • the entries of the novel data structure elements include the parent pointer P (pointing to the hierarchically higher-level data structure element) and the symbol assigned to the data structure element (the type of the data structure element).
  • the large number of child pointers C1, C2 ... Cy enables all data structure elements which are subordinate to a data structure element to be listed or registered in the relevant data structure element.
  • the list of child pointers Cl, C2 ... Cy is preferably arranged or is described and managed in such a way that a fixed assignment between the type of subordinate data structure element and the position of the child pointer pointing to this data structure element within the child pointer list.
  • This assignment is preferably the same for all data structure elements. This means that, for example, a subordinate data structure element of type m is registered by an entry at the nth position in the child pointer list of the superordinate data structure element, where m is n for the sake of simplicity.
  • the search and finding of certain subordinate data structure elements can be carried out particularly easily and quickly.
  • the presence and the index or the absence of a data structure element representing a certain symbol chain can be determined in each case from the data structure element superior to the data structure element sought. For example, if you want to find out whether a data structure element is subordinate to a data structure element of type x, you can easily do this by replacing the child pointer list of the superordinate data structure element with that for child pointers to subordinate data structure elements from Type x is reserved, the presence or absence of a corresponding entry is checked.
  • symbol chains to be coded can be compared very quickly with the symbol chains which are represented by the data structure elements of an existing data structure and, if necessary, correspondingly coded.
  • a list is preferably generated along with the creation of the data structure, in which the indexes of the data structure elements are listed, to which no further data structure elements are subordinate or subordinate.
  • Such a list can be created by entering the indexes of newly created child elements there and deleting the indexes of the elements to which a child element is attached from the list.
  • the data structure with which the coding is to be carried out is illustrated in FIG. 2.
  • the data structure shown there contains data structure elements 1 to 8, the number of data structure elements, the indices assigned to the respective data structure elements, the characters assigned to the respective data structure elements (their type) and those represented by the respective data structure elements Character strings are identical to the corresponding parameters of the data structure according to FIG. 3 used to carry out the conventional method.
  • a compilation of the indices of the data structure elements (corresponding to the respective reference symbols), the characters assigned to the relevant data structure elements (the types of the data structure elements), the pointers assigned to the relevant data structure elements and the character strings represented by the relevant data structure elements can be seen from the following table:
  • Reading and evaluating this table is preferably carried out as explained below using the data structure element to which index 4 is assigned.
  • the character "b" is assigned to the relevant data structure element (2nd column for index 4). It is subordinate to the element with index 1 (3rd column to index 4), which in turn corresponds to the character "a" (2nd column to index 1) and is not subordinate to a superordinate element, i.e. it represents a so-called root element (3rd Column to index 1), whereby it (the element with index 4) represents the character string "ab" (7th column to index 4).
  • the elements with index 4 are subordinate to the elements with index 7 (4th column to index 4) and with index 8 (6th column to index 4), whereby the element with index 7 corresponds to the character "a" (because the child pointer stands on the list position reserved for Ca) and consequently represents the character string "aba" and wherein the element with index 8 corresponds to the character "c" (because the child pointer is on the list position reserved for Cc) and therefore represents the character string "abc".
  • the original string could also be broken down into the substrings "abc”, “ab”, “abc” and “abc” and encoded as 8488.
  • Data structure element itself can be jumped; the desired information can already be obtained by evaluating the entries in the data structure element superordinate to the data structure element in question.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Es wird ein Verfahren zum Kodieren und Dekodieren von Daten beschrieben, wobei die Zuordnung von kodierten und unkodierten Daten unter Auswertung von Einträgen in über Indizes auffindbaren Elementen einer baumartig angelegten Datenstruktur erfolgt. Das beschriebene Verfahren zeichnet sich dadurch aus, daß eine Datenstruktur verwendet wird, deren Elemente zur Speicherung der Indizes einer Vielzahl von hierarchisch tiefer liegenden Elementen ausgelegt sind. Dadurch können Kodierungen und Dekodierungen mit maximaler Geschwindigkeit und effizient durchgeführt werden.

Description

Beschreibung
Verfahren zum Kodieren und Dekodieren von Daten
Die vorliegende Erfindung betrifft ein Verfahren gemäß dem Oberbegriff des Patentanspruchs 1, d.h. ein Verfahren zum Kodieren und Dekodieren von Daten, wobei die Zuordnung von kodierten und unkodierten Daten unter Auswertung von Einträgen in über Indizes auffindbaren Elementen einer baumartig angelegten Datenstruktur erfolgt.
Ein derartiges Verfahren ist beispielsweise aus der US 5 153 591 bekannt.
Durch das Kodieren und Dekodieren gemäß der US 5 153 591 soll ein Komprimieren und Dekomprimieren von (im beschriebenen Beispiel im ASCII-Format vorliegenden) Daten erfolgen. Sowohl das Komprimieren als auch das Dekomprimieren erfolgt unter Verwendung von baumartig angelegten Datenstrukturen, deren über zugeordnete Indizes ansprechbaren Elemente jeweils vorbestimmte Daten (im beschriebenen Beispiel ASCII-Zeichen oder ASCII-Zeichenfolgen) repräsentieren.
Von den besagten Datenstrukturen ist eine (erste) in einer zum Kodieren von Daten vorgesehenen Kodiereinheit, und eine weitere, inhaltlich mit der ersten Datenstruktur identische zweite Datenstruktur in einer zum Dekodieren von kodierten Daten vorgesehenen Dekodiereinheit gespeichert .
Beim Kodieren werden die zu kodierenden Daten in mehr oder weniger umfangreiche, gleich oder unterschiedlich große Teile aufgespalten, und diese Datenteile werden unter Nachschlagen in der in der Kodiereinheit verfügbaren Datenstruktur durch die Indizes der die betreffenden Datenteile repräsentierenden Datenstrukturelemente ersetzt. Umgekehrt werden beim Dekodieren die kodierten Daten in die Indizes, aus denen sie zusammengesetzt wurden, aufgespalten, und diese Indizes werden unter Nachschlagen in der in der Dekodiereinheit verfügbaren Datenstruktur durch die Daten er- setzt, welche durch die über die jeweiligen Indizes ansprechbaren Datenstrukturelemente repräsentiert werden.
Um die beim Komprimieren und Dekomprimieren ablaufenden Vorgänge und den Aufbau der dazu verwendeten Datenstrukturen besser verstehen zu können, wird das aus der US 5 153 591 bekannte Verfahren im folgenden ergänzend anhand eines praktischen Beispiels erläutert.
Es sei angenommen, daß die Zeichenfolge "abcababcabc" reprä- sentierende ASCII-Daten unter Verwendung einer in der Figur 3 veranschaulichten Datenstruktur komprimiert und anschließend wieder dekomprimiert werden sollen.
Vor der Erläuterung des eigentlichen Komprimierens und De- komprimierens soll zunächst auf den Aufbau der verwendeten Datenstruktur eingegangen werden.
Wie aus der Figur 3 ersichtlich ist, ist die verwendete Datenstruktur baumartig aufgebaut; sie weist eine Vielzahl von durch Kreise dargestellten Datenstrukturelementen 1 bis 8 auf .
Die Datenstrukturelemente 1 bis 8 enthalten eine Reihe von diese charakterisierenden Einträgen.
Die Einträge bestehen dabei jeweils aus einem dem betreffenden Datenstrukturelement zugeordneten Zeichen bzw. - allgemeiner ausgedrückt - Symbol und einer Reihe von auf benachbarte Datenstrukturelemente zeigenden Zeigern.
Den Elementen der in der Figur 3 gezeigten Datenstruktur ist entweder das Zeichen "a", das Zeichen "b", oder das Zeichen "c" zugeordnet; die Zeichen, welche den jeweiligen Datenstrukturelementen zugeordnet sind, sind in die die jeweiligen Datenstrukturelemente repräsentierenden Kreise eingeschrieben.
Durch die jeweiligen Datenstrukturelemente wird entweder das ihnen zugeordnete Zeichen oder eine sich aus beliebig vielen Zeichen zusammensetzende Zeichenfolge repräsentiert, wobei sich die besagte Zeichenfolge aus dem Zeichen, das dem be- treffenden Datenstrukturelement zugeordnet ist, und den Zeichen, die den hierarchisch über dem betreffenden Datenstrukturelement liegenden Datenstrukturelementen zugeordnet sind, zusammensetzt.
Die vorstehend bereits erwähnten, auf die benachbarten Datenstrukturelemente zeigenden Zeiger lassen sich in drei Klassen einteilen, nämlich in mit "P" bezeichnete Parent-Zeiger, mit "D" bezeichnete Abwärts-Zeiger, und mit "R" bezeichnete Rechts-Zeiger .
Jedes Datenstrukturelement kann (muß aber nicht) Einträge für einen Parent-Zeiger P, einen Abwärts-Zeiger D und einen Rechts-Zeiger R enthalten.
Der Parent-Zeiger P beinhaltet den Index des Datenstruktur- elements, dem das betreffende Datenstrukturelement untergeordnet ist. Der Abwärts-Zeiger D beinhaltet den Index eines der Elemente, die dem betreffenden Datenstrukturelement untergeordnet sind. Der Rechts-Zeiger R beinhaltet den Index eines der Elemente, die dem Datenstrukturelement, das dem betreffenden Datenstrukturelement übergeordnet ist, außer dem betreffenden Datenstrukturelement untergeordnet sind.
Jedem Datenstrukturelement ist ein Index zugeordnet, über welchen auf dieses gezielt zugegriffen werden kann; der Index möge im betrachteten Beispiel jeweils dem Bezugszeichen ent- sprechen, mit dem das betreffende Datenstrukturelement bezeichnet ist.
Eine Zusammenstellung der Indizes der Datenstrukturelemente, der den betreffenden Datenstrukturelementen zugeordneten Zeichen, der den betreffenden Datenstrukturelementen zugeordneten Zeiger und der durch die betreffenden Datenstrukturelemente repräsentierten Zeichenfolgen ist aus der nachfolgenden Tabelle ersichtlich:
Figure imgf000006_0001
Wie diese Tabelle zu lesen ist, wird beispielhaft anhand des Datenstrukturelements, dem der Index 4 zugeordnet ist, erläutert. Dem betreffenden Datenstrukturelement ist das Zeichen "b" zugeordnet (2. Spalte zu Index 4) . Es ist dem Element mit dem Index 1 untergeordnet (5. Spalte' zu Index 4), welches seinerseits dem Zeichen "a" entspricht (2. Spalte zu Index 1) und keinem übergeordneten Element untergeordnet ist (5. Spalte zu Index 1), wodurch es (das Element mit dem Index 4) die Zeichenfolge "ab" repräsentiert (6. Spalte zu Index 4). Dem Element mit dem Index 4 ist das Element mit dem Index 7 (3. Spalte zu Index 4) untergeordnet, welches seinerseits dem Zeichen "a" entspricht (2. Spalte zu Index 7) und folglich die Zeichenfolge "aba" repräsentiert (6. Spalte zu Index 7). Dem Element mit dem Index 4 ist darüber hinaus das Element mit dem Index 8 untergeordnet (4. Spalte zu Index 7), welches seinerseits dem Zeichen "c" entspricht (2. Spalte zu Index 8) und folglich die Zeichenfolge "abc" repräsentiert (6. Spalte zu Index 8) .
Will man die vorstehend bereits genannte Zeichenfolge "abcababcabc" komprimieren, so muß diese Zeichenfolge zunächst in (Teil-) Zeichenfolgen zerlegt werden, die durch die vorhandenen Elemente der verwendeten Datenstruktur repräsentiert werden. Die Zerlegung führt beispielsweise zu den Teilzeichenfolgen "abc", "aba", "bc" und "abc".
Ersetzt man nun die einzelnen Teilzeichenfolgen durch die Indizes derjenigen Elemente der verwendeten Datenstruktur, durch welche die betreffenden Teilzeichenfolgen repräsentiert werden, so gelangt man zu der kodierten Zeichenfolge 8758.
Die ursprüngliche Zeichenfolge könnte auch in die Teilzeichenfolgen "abc", "ab", "abc" und "abc" zerlegt und als 8488 kodiert werden.
Bei der Dekodierung wird in umgekehrter Reihenfolge verfahren. D.h., die kodierte Zeichenfolge wird in die Indizes zerlegt, aus denen sie zusammengesetzt wurde, und diese Indizes werden durch die Teilzeichenfolgen ersetzt, welche durch die Datenstrukturelemente repräsentiert werden, denen die betref- fenden Indizes zugeordnet sind.
Bezüglich weiterer Einzelheiten zur Komprimierung und Dekomprimierung von Daten im allgemeinen und dem vorstehend beschriebenen Verfahren im besonderen wird auf die US 5 153 591 verwiesen.
Die wie beschrieben durchgeführte Komprimierung und Dekomprimierung von Daten erweist sich im Ergebnis als effektiv und anpassungsfähig. Die Erfahrung zeigt jedoch andererseits, daß die Komprimierung und/oder die Dekomprimierung bisweilen sehr zeitaufwendig sein können. Dies kann sich insbesondere dann, wenn die jeweils zu erzeugenden bzw. erzeugten Daten schnell weiterverarbeitet werden können (müssen) oder wenn sehr große Datenmengen zu komprimieren und/oder zu dekomprimieren sind, als erheblicher Nachteil erweisen.
Der vorliegenden Erfindung liegt daher die Aufgabe zugrunde, das Verfahren gemäß dem Oberbegriff des Patentanspruchs 1 derart weiterzubilden, daß dadurch zu bewerkstelligende Kodierungen und/oder Dekodierungen mit maximaler Geschwindigkeit effizient durchführbar sind.
Diese Aufgabe wird erfindungsgemäß durch die im kennzeichnenden Teil des Patentanspruchs 1 beanspruchten Merkmale gelöst.
Demnach ist vorgesehen, daß eine Datenstruktur verwendet wird, deren Elemente zur Speicherung der Indizes einer Vielzahl von hierarchisch tiefer liegenden Elementen ausgelegt sind.
Dadurch kann ohne Auswertung der einem momentan ausgewerteten Datenstrukturelement gegebenenfalls untergeordneten Datenstrukturelemente festgestellt werden, ob und gegebenenfalls welche Datenstrukturelemente dem momentan ausgewerteten Datenstrukturelement untergeordnet sind und welche Zeichen diesen untergeordneten (hierarchisch tiefer liegenden) Daten- Strukturelementen zugeordnet sind. Die Existenz und der Index bzw. das Nichtvorhandensein eines Datenstrukturelements , welches eine vorbestimmte Zeichenfolge repräsentiert, kann folglich in einer minimalen Anzahl von Überprüfungsschritten ermittelt werden.
Insbesondere kann das beim beschriebenen Stand der Technik erforderliche und in einer vorgegebenen Reihenfolge durchzuführende Durchsuchen der untergeordneten Datenstrukturelemente entfallen. Es wurde mithin ein Verfahren gefunden, durch welches Kodierungen und/oder Dekodierungen mit maximaler Geschwindigkeit effizient durchführbar sind.
Vorteilhafte Weiterbildungen der Erfindung sind Gegenstand der Unteransprüche.
Die Erfindung wird nachfolgend anhand eines Ausführungsbei- spiels unter Bezugnahme auf die Zeichnung näher erläutert. Es zeigen
Figur 1 den prinzipiellen Aufbau einer zur Durchführung des erfindungsgemäßen Verfahrens geeigneten Datenstruktur,
Figur 2 den Aufbau einer zur Komprimierung und Dekomprimierung einer gegebenen Zeichenfolge nach dem erfindungsgemäßen Verfahren angelegten Datenstruktur, und
Figur 3 den Aufbau einer zur Komprimierung und Dekomprimierung einer gegebenen Zeichenfolge nach einem herkömmlichen Verfahren angelegten Datenstruktur.
Das im folgenden näher beschriebene Verfahren ist ein zum
Kodieren und Dekodieren von Daten geeignetes Verfahren, wobei die Art und der Umfang des Kodierens und des Dekodierens, das mit dem Kodieren und/oder dem Dekodieren verfolgte Ziel (Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsse- lung etc.) sowie die Art und der Umfang der zu kodierenden oder dekodierenden Daten grundsätzlich keinen Einschränkungen unterworfen sind.
Das Kodieren und Dekodieren nach dem erfindungsgemäßen Ver- fahren erfolgt wie beim herkömmlichen Verfahren unter Verwendung von baumartig angelegten Datenstrukturen, deren über zu- geordnete Indizes ansprechbaren Elemente jeweils vorbestimmte Daten repräsentieren.
Bei den Daten, die durch die jeweiligen Datenstrukturelemente repräsentiert werden, kann es sich um beliebig formatierte und beliebig umfangreiche Daten beliebiger Herkunft und beliebigen Inhalts handeln.
Von den besagten Datenstrukturen ist eine erste in einer Kodiereinheit, und eine mit der ersten Datenstruktur identische zweite Datenstruktur in einer Dekodiereinheit vorgesehen.
Die Kodiereinheit und die Dekodiereinheit können Bestandteil beliebiger Vorrichtungen sein. Sie werden insbesondere (aber bei weitem nicht ausschließlich) in DFÜ (Datenfern- übertragungs) -Einrichtungen vorgesehen sein.
Beim Kodieren werden die zu kodierenden Daten in mehr oder weniger umfangreiche, gleich oder unterschiedlich große Teile aufgespalten, und diese Datenteile werden unter Nachschlagen in der in der Kodiereinheit verfügbaren Datenstruktur durch die Indizes der die betreffenden Datenteile repräsentierenden Datenstrukturelemente ersetzt.
Umgekehrt werden beim Dekodieren die kodierten Daten in die Indizes, aus denen sie zusammengesetzt wurden, aufgespalten, und diese Indizes werden unter Nachschlagen in der in der Dekodiereinheit verfügbaren Datenstruktur durch die Daten er- setzt, welche durch die über die jeweiligen Indizes ansprechbaren Datenstrukturelemente repräsentiert werden. Hierzu werden, wie aus einem später noch beschriebenen praktischen Beispiel ersichtlich ist, ausgehend von dem durch einen jeweiligen Index bezeichneten Datenstrukturelement (bis zum Errei- chen des hierarchisch in der obersten Ebene liegenden Wurzel- elements) die dem betreffenden Datenstrukturelement unmittelbar oder mittelbar übergeordneten Datenstrukturelemente ermittelt .
Die vorstehend bereits erwähnten Datenstrukturelemente ent- halten wie die Datenstrukturelemente der herkömmlichen Datenstrukturen eine Reihe von diese charakterisierenden Einträgen, wobei die Einträge dabei wiederum jeweils aus einem dem betreffenden Datenstrukturelement zugeordneten Symbol und einer Reihe von auf benachbarte Datenstrukturelemente zei- genden Zeigern bestehen.
Zu den den jeweiligen Datenstrukturelementen zugeordneten Symbolen ist anzumerken, daß es sich dabei um beliebig formatierte und beliebig umfangreiche Daten beliebiger Herkunft und beliebigen Inhalts handeln kann.
Jedem der Datenstrukturelemente ist auch wiederum ein Index zugeordnet, über welchen auf dieses gezielt zugegriffen werden kann.
Bis hierher besteht zwischen den herkömmlichen und den erfindungsgemäßen Datenstrukturen weitgehend Übereinstimmung.
Unterschiedlich ist jedoch die Verknüpfung der einzelnen Datenstrukturelemente untereinander, was sich in der Anzahl und der Bedeutung der für die jeweiligen Datenstrukturelemente eingetragenen bzw. einzutragenden Zeiger bemerkbar macht .
Anders als bei der herkömmlichen Datenstruktur werden nur noch mit "P" bezeichnete Parent-Zeiger und mit "C" bezeichnete Child-Zeiger verwendet, wobei jedes Datenstrukturelement einen Parent-Zeiger P und eine vorbestimmte Vielzahl von Child-Zeigern C enthält.
Der Parent-Zeiger beinhaltet wiederum den Index des Daten- strukturelements, dem das betreffende Datenstrukturelement untergeordnet ist, und die Child-Zeiger beinhalten die Indizes der Elemente, die dem betreffenden Datenstrukturelement untergeordnet sind.
Sämtliche Datenstrukturelemente, die hierarchisch unmittelbar unter einem betreffenden Datenstrukturelement liegen, sind mit diesem direkt über Parent- und Child-Zeiger gekoppelt. Wie später noch genauer beschrieben werden wird, kann dadurch sehr schnell ermittelt werden, ob, wieviele und welche Daten- Strukturelemente einem betreffenden Datenstrukturelement untergeordnet sind.
Der prinzipielle Aufbau einer derart veränderten Datenstruktur ist in Figur 1 veranschaulicht.
Die Datenstruktur gemäß Figur 1 weist eine Tiefe von 3 auf. D.h., einem unter dem hierarchisch am höchsten stehenden Element (Wurzel-Element 11) ist eine Vielzahl von bis zu y hierarchisch tiefer liegenden untergeordneten Datenstruktur- elementen (Child-Elemente 21, 22 ... 2y) eingehängt, und unter diesen Child-Elementen 21, 22 ... 2y ist wiederum jeweils eine Vielzahl von bis zu y hierarchisch noch tiefer liegenden untergeordneten Datenstrukturelementen (Child- Elemente 31, 32, ... 3y) eingehängt bzw. einhängbar.
Den jeweils bis zu y Child-Elementen, die unter das Wurzel- Element oder ein übergeordnetes Child-Element eingehängt sind, sind jeweils unterschiedliche Symbole zugeordnet. Datenstrukturelemente, denen unterschiedliche Symbole zu- geordnet sind, werden im folgenden als Datenstrukturelemente unterschiedlichen Typs bezeichnet; Datenstrukturelementen des selben Typs sind die selben Symbole zugeordnet.
Anders als bei der eingangs beschriebenen herkömmlichen Datenstruktur sind die einem jeweiligen Datenstrukturelement untergeordneten Datenstrukturelemente jeweils direkt (und nicht wie bisher teilweise nur mittelbar über andere unter- geordnete Datenstrukturelemente) am betreffenden Datenstrukturelement eingehängt .
Zur praktischen Realisierung dieser strukturell veränderten Datenstruktur werden die jeweiligen Datenstrukturelement- Einträge wie folgt modifiziert:
P
Typ
Cl (Child- -Element Typ 1)
C2 (Child- -Element Typ 2)
Cy (Child- -Element Typ y)
Unverändert gegenüber bisherigen Datenstrukturelement-Einträ- gen umfassen die Einträge der neuartigen Datenstrukturelemente den (auf das hierarchisch übergeordnete Datenstrukturelement) zeigenden Parent-Zeiger P und das dem Datenstrukturelement zugeordnete Symbol (den Typ des Datenstrukturelements) .
Anders als bei bisherigen Datenstrukturelement-Einträgen sind keine Rechts-Zeiger R mehr, dafür aber Platz zum Eintragen einer der Anzahl der möglichen Typen von Datenstrukturelementen entsprechenden Anzahl von den Abwärts-Zeigern D entspre- chenden Child-Zeigern Cl, C2 ... Cy reserviert.
Die Vielzahl der Child-Zeiger Cl, C2 ... Cy ermöglicht es, daß sämtliche Datenstrukturelemente, die einem Datenstrukturelement untergeordnet sind, in dem betreffenden Datenstrukturelement aufgelistet bzw. registriert werden können.
Die Liste der Child-Zeiger Cl, C2 ... Cy ist vorzugsweise so angeordnet bzw. wird so beschrieben und verwaltet, daß eine feste Zuordnung zwischen dem Typ des untergeordneten Daten- strukturelements und der Position des auf dieses Datenstrukturelement zeigenden Child-Zeigers innerhalb der Child-Zei- ger-Liste besteht.
Diese Zuordnung ist vorzugsweise für alle Datenstrukturelemente gleich. D.h., daß beispielsweise ein untergeordnetes Datenstrukturelement vom Typ m durch einen Eintrag an der n- ten Stelle in der Child-Zeiger-Liste des übergeordneten Datenstrukturelements registriert wird, wobei der Einfachheit halber m gleich n ist.
Sind die Child-Zeiger nach dem Typ der durch diese bezeichneten Datenstrukturelemente sortiert, so gestaltet sich die Suche und das Auffinden von bestimmten untergeordneten Daten- Strukturelementen besonders einfach und schnell durchführbar.
Unabhängig davon lassen sich das Vorhandensein und der Index bzw. das Fehlen eines eine bestimmte Symbolkette repräsentierenden Datenstrukturelements jeweils von dem dem gesuchten Datenstrukturelement übergeordneten Datenstrukturelement aus ermitteln. Soll beispielsweise in Erfahrung gebracht werden, ob einem Datenstrukturelement ein Datenstrukturelement vom Typ x untergeordnet ist, so kann dies ganz einfach dadurch bewerkstelligt werden, daß an derjenigen Stelle der Child- Zeiger-Liste des übergeordneten Datenstrukturelements, welche für Child-Zeiger auf untergeordnete Datenstrukturelemente vom Typ x reserviert ist, das Vorhandensein oder Fehlen eines entsprechenden Eintrags überprüft wird.
Auf diese Weise können zu kodierende Symbolketten sehr schnell mit den Symbolketten, welche durch die Datenstrukturelemente einen vorhandenen Datenstruktur repräsentiert werden, verglichen und gegebenenfalls entsprechend kodiert werden .
Eine effiziente Möglichkeit zur Reduzierung des Speicherplatzbedarfes besteht darin, daß diejenigen Datenstruktur- elemente, denen keine Datenstrukturelemente mehr untergeordnet sind, aus der Datenstruktur gelöscht werden; die Wurzel- Elemente der Datenstruktur dürfen dabei jedoch nicht gelöscht werden .
Um das Löschen derartiger Datenstrukturelemente aus der erzeugten Datenstruktur schnell und einfach durchführen zu können, wird vorzugsweise einhergehend mit dem Erstellen der Datenstruktur eine Liste erzeugt, in welcher die Indizes der Datenstrukturelemente aufgelistet sind, denen keine weiteren Datenstrukturelemente mehr unter- bzw. nachgeordnet sind. Eine derartige Liste kann erstellt werden, indem die Indizes von neu erzeugten Child-Elementen dort eingetragen, und die Indizes der Elemente, an die ein Child-Element angehängt wird, aus der Liste gelöscht werden.
Zur Verdeutlichung des Unterschiedes zwischen dem vorstehend beschriebenen erfindungsgemäßen Verfahren und dem eingangs beschriebenen herkömmlichen Verfahren wird abschließend die Kodierung der Zeichenfolge "abcababcabc" erläutert.
Die Datenstruktur, mit Hilfe welcher die Kodierung durchgeführt werden soll, ist in Figur 2 veranschaulicht. Wie aus der Figur 2 ersichtlich ist, enthält die dort gezeigte Daten- Struktur Datenstrukturelemente 1 bis 8, wobei die Anzahl der Datenstrukturelemente, die den jeweiligen Datenstrukturelementen zugeordneten Indizes, die den jeweiligen Datenstrukturelementen zugeordneten Zeichen (deren Typ) und die durch die jeweiligen Datenstrukturelemente repräsentierten Zeichen- folgen identisch mit den entsprechenden Parametern der zur Durchführung des herkömmlichen Verfahrens verwendeten Datenstruktur gemäß Figur 3 sind.
Da den Datenstrukturelementen im betrachteten Beispiel "nur" entweder das Zeichen "a" (Datenstrukturelement Typ a) oder das Zeichen "b" (Datenstrukturelement Typ b) oder das Zeichen "c" (Datenstrukturelement Typ c) zugeordnet werden kann, sind die Datenstrukturelemente zum Speichern von drei Child-Zei- gern (Ca, Cb und Cc) ausgelegt; mehr als drei Child-Elemente kann ein Datenstrukturelement unter den gegebenen Umständen nicht haben.
Eine Zusammenstellung der (den jeweiligen Bezugszeichen entsprechenden) Indizes der Datenstrukturelemente, der den betreffenden Datenstrukturelementen zugeordneten Zeichen (der Typen der Datenstrukturelemente) , der den betreffenden Datenstrukturelementen zugeordneten Zeiger und der durch die betreffenden Datenstrukturelemente repräsentierten Zeichenfolgen ist aus der nachfolgenden Tabelle ersichtlich:
Figure imgf000016_0001
Das Lesen und Auswerten dieser Tabelle erfolgt vorzugsweise wie nachfolgend anhand des Datenstrukturelements, dem der Index 4 zugeordnet ist, erläutert wird. Dem betreffenden Datenstrukturelement ist das Zeichen "b" zugeordnet (2. Spalte zu Index 4) . Es ist dem Element mit dem Index 1 unter- geordnet (3. Spalte zu Index 4), welches seinerseits dem Zeichen "a" entspricht (2. Spalte zu Index 1) und keinem übergeordneten Element untergeordnet ist, also ein sogenanntes Wurzelelement darstellt (3. Spalte zu Index 1), wodurch es (das Element mit dem Index 4) die Zeichenfolge "ab" repräsen- tiert (7. Spalte zu Index 4) . Dem Element mit dem Index 4 sind die Elemente mit dem Index 7 (4. Spalte zu Index 4) und mit dem Index 8 (6. Spalte zu Index 4) untergeordnet, wobei das Element mit dem Index 7 dem Zeichen "a" entspricht (weil der Child-Zeiger auf dem für Ca reservierten Listenplatz steht) und folglich die Zeichenfolge "aba" repräsentiert und wobei das Element mit dem Index 8 dem Zeichen "c" entspricht (weil der Child-Zeiger auf dem für Cc reservierten Listenplatz steht) und folglich die Zeichenfolge "abc" repräsentiert .
Will man die vorstehend bereits genannte Zeichenfolge "abcababcabc" komprimieren, so muß diese Zeichenfolge wie beim herkömmlichen Verfahren zunächst in (Teil-) Zeichenfolgen zerlegt werden, die durch die vorhandenen Elemente der verwendeten Datenstruktur repräsentiert werden. Die Zerlegung führt beispielsweise zu den Teilzeichenfolgen "abc", "aba", "bc" und "abc" .
Ersetzt man nun die einzelnen Teilzeichenfolgen durch die Indizes derjenigen Elemente der verwendeten Datenstruktur, durch welche die betreffenden Teilzeichenfolgen repräsentiert werden, so gelangt man zu der kodierten Zeichenfolge 8758.
Die ursprüngliche Zeichenfolge könnte auch in die Teilzeichenfolgen "abc", "ab", "abc" und "abc" zerlegt und als 8488 kodiert werden.
Um anhand der in der Figur 2 gezeigten Datenstruktur feststellen zu können, ob die bei der Zerlegung entstehenden Teilzeichenfolgen durch eines der Datenstrukturelemente repräsentiert wird und welcher Index dem betreffenden Daten- Strukturelement zugeordnet ist, muß nicht zu dem betreffende
Datenstrukturelement selbst gesprungen werden; die begehrten Informationen können bereits durch Auswertung der Einträge in dem dem betreffenden Datenstrukturelement übergeordneten Datenstrukturelement gewonnen werden.
Die dadurch gegenüber dem herkömmlichen Verfahren erzielbaren Vorteile treten bei der Kodierung der Teilzeichenfolge "abc" besonders deutlich hervor. Während beim erfindungsgemäßen Verfahren schon bei der Auswertung des Datenstrukturelements mit dem Index 4 zu dem Ergebnis kommen kann, daß die Zeichenfolge "abc" durch das Datenstrukturelement mit dem Index 8 repräsentiert wird, muß beim herkömmlichen Verfahren zuerst noch über das Datenstrukturelement mit dem Index 7 zum Datenstrukturelement mit dem Index 8 gesprungen werden, um schließlich unter Auswertung der dortigen Einträge zu dem selben Ergebnis kommen zu können.
Es wurde mithin ein Verfahren gefunden, durch welches zu bewerkstelligende Kodierungen und/oder Dekodierungen mit maximaler Geschwindigkeit effizient durchführbar sind.

Claims

Patentansprüche
1. Verfahren zum Kodieren und Dekodieren von Daten, wobei die Zuordnung von kodierten und unkodierten Daten unter Aus- wertung von Einträgen in über Indizes auffindbaren Elementen einer baumartig angelegten Datenstruktur erfolgt, d a d u r c h g e k e n n z e i c h n e t, daß eine Datenstruktur verwendet wird, deren Elemente zur Speicherung der Indizes einer Vielzahl von hierarchisch tie- fer liegenden Elementen ausgelegt sind.
2. Verfahren nach Anspruch 1, d a d u r c h g e k e n n z e i c h n e t, daß die Elemente der Datenstruktur zur Speicherung der Indi- zes aller dem betreffenden Element unterordenbaren Datenstrukturelemente ausgelegt sind.
3. Verfahren nach Anspruch 1 oder 2, d a d u r c h g e k e n n z e i c h n e t, daß zur Speicherung der Indizes der hierarchisch tiefer liegenden Datenstrukturelemente eine Child-Zeiger-Liste vorgesehen ist.
4. Verfahren nach Anspruch 3 , d a d u r c h g e k e n n z e i c h n e t, daß das Listenelement, in welches ein Index eines hierarchisch tiefer liegenden Elements innerhalb der Child-Zeiger- Liste einzuschreiben ist, von dem Symbol abhängt, das dem hierarchisch tiefer liegenden Element zugeordnet ist.
5. Verfahren nach Anspruch 4 , d a d u r c h g e k e n n z e i c h n e t, daß die Zuordnung der Listenelemente der Child-Zeiger-Liste und der Symbole, die den durch die Indizes bezeichneten Datenstrukturelementen zuordenbar sind, entsprechend einer Sortierreihenfolge der Symbole festgelegt wird.
6. Verfahren nach einem der vorhergehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, daß während der Erstellung der Datenstruktur eine Liste angefertigt wird, in welcher die Indizes aller Datenstrukturele- mente gespeichert sind, denen keine Datenstrukturelemente untergeordnet sind.
7. Verfahren nach einem der vorhergehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, daß nach der Erstellung der Datenstruktur diejenigen Datenstrukturelemente, denen keine Datenstrukturelemente untergeordnet sind, gelöscht werden.
PCT/DE1997/000127 1997-01-24 1997-01-24 Verfahren zum kodieren und dekodieren von daten WO1998033280A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/DE1997/000127 WO1998033280A1 (de) 1997-01-24 1997-01-24 Verfahren zum kodieren und dekodieren von daten

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/DE1997/000127 WO1998033280A1 (de) 1997-01-24 1997-01-24 Verfahren zum kodieren und dekodieren von daten

Publications (1)

Publication Number Publication Date
WO1998033280A1 true WO1998033280A1 (de) 1998-07-30

Family

ID=6918460

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/DE1997/000127 WO1998033280A1 (de) 1997-01-24 1997-01-24 Verfahren zum kodieren und dekodieren von daten

Country Status (1)

Country Link
WO (1) WO1998033280A1 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995001677A1 (en) * 1993-06-30 1995-01-12 Codex, Inc. Method and apparatus for encoding and decoding compressed data in data communication
WO1995008873A1 (en) * 1993-09-24 1995-03-30 CODEX CORPORATION, a subsidiary company of MOTOROLA, INC. Data compression method and device utilizing children arrays

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995001677A1 (en) * 1993-06-30 1995-01-12 Codex, Inc. Method and apparatus for encoding and decoding compressed data in data communication
WO1995008873A1 (en) * 1993-09-24 1995-03-30 CODEX CORPORATION, a subsidiary company of MOTOROLA, INC. Data compression method and device utilizing children arrays

Similar Documents

Publication Publication Date Title
DE2264090C3 (de) Datenverdichtung
DE1549833C2 (de) Verfahren zum Erkennen von Zeichen
DE3685671T2 (de) Aufzeichnungs- und wiederauffindungsverfahren fuer chemische strukturdaten.
DE3852341T2 (de) Zeichenverarbeitungssystem mit Funktion zur Prüfung von Rechtschreibung.
DE69330196T2 (de) Textkomprimierungstechnik unter Anwendung einer frequenzgeordneten Matrix von Wort-Nummern-Abbildungen
DE69322023T2 (de) Verfahren zur anpassungsfähigen Datenkompression zur Speicherminimierung
DE69528152T2 (de) Datenkompressionsvorrichtung, Datenexpansionsvorrichtung und System zur Datenkompression und Expansion
DE3789718T2 (de) Verfahren zur Konstruktion von baumstrukturierten Klassifikatoren.
DE69229521T2 (de) Datenbankauffindungssystem
DE2614916C2 (de) Konverter zur Codeumwandlung
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE10120644B4 (de) Bilddatenverdichtungsverfahren und -vorrichtung, welche Bilddaten separat durch Modifizieren der Farbe verdichten
EP0260748A2 (de) Verfahren und Schaltungsanordung zur Bitratenreduktion
DE69722085T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Botschaften
EP0276753A2 (de) Verfahren und Vorrichtung zur digitalen Nachrichtenübertragung und/oder -aufzeichnung und -wiedergabe
DE3485824T2 (de) Verfahren zur datenkompression.
DE69522497T2 (de) System und Verfahren zur Datenkompression
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE60225785T2 (de) Verfahren zur codierung und decodierung eines pfades in der baumstruktur eines strukturierten dokuments
DE3030255A1 (de) Verfahren zur uebermittlung von woertern und nachrichtenuebertragungssystem zu seiner durchfuehrung
EP0479787B1 (de) Verfahren zur codierung einer elementfolge und einrichtung zur durchführung des verfahrens
DE69009713T2 (de) Verfahren zur Bilddatenkompression durch Laufvorhersage.
WO1998033280A1 (de) Verfahren zum kodieren und dekodieren von daten
DE3881225T2 (de) Verfahren und Vorrichtung zur Kodierung von Bilddaten.
DE19702553C1 (de) Verfahren zum Kodieren und Dekodieren von Daten

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: JP

Ref document number: 1998531459

Format of ref document f/p: F

122 Ep: pct application non-entry in european phase