← Back to Patent Explorer
US5153591A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for encoding, decoding and transmitting data in compressed form

Assignee: British Telecommunications PLC
•
Filing: 1989-07-04
•
Granted: 1992-10-06
•
Expires: 2009-07-04
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Data compression and decompression utilising eg the Ziv-Lempel algorithm is simplified by utilising a tree structure for the dictionary in which alternative symbols at a given position in a symbol sequence (a,b,c) are linked by linking pointers R of a first type and successive symbols (ab,bc,ca,aba,abb,abc) are linked by linking pointers D of a second type. For example the sequence ab may continue with any one of the symbols a,b and c grouped together by R pointers in a list below the final symbol of the sequence ab. Each symbol is defined by an associated pair of D and R pointers, in conjunction with a parent pointer P which identifies its parent. Symbols having no D pointers extending therefrom are pruned from the tree and transferred to a free list as shown in Figure 8(b).

Inventors

  • 👤 Alan D. Clark

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-26 13:32
CPC Classifications
G; G06; G06T; G06T9/00; G06T9/005; H; H03; H03M; H03M7/00; H03M7/30; H03M7/3084; H03M7/3088

Claims Analysis

Total Claims: 103
Claim 1
Independent Claim 210 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries.
Claim 2
Independent Claim 210 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries.
Claim 3
Dependent Claim 32 words
A method as claimed in claim 1 wherein all the indexed memory locations forming the dictionary are tested before the next symbol to be stored is stored in a freed memory location.
Claim 4
Dependent Claim 63 words
A method as claimed in claim 1 wherein those indexed memory locations which do not contain nodes of the search tree are linked by pointers to form a free list and nodes of the search tree are deleted by re-setting points to bypass the deleted nodes and connecting them to the free list, whereby the search tree is maintained as a connected whole.
Claim 5
Dependent Claim 77 words
A method as claimed in claim 1 wherein the input data consists of a stream of binary digits representing characters, and the symbols stored in the search tree are each made up of sequences of binary digits, and wherein the number of bits per sequence is selected by the processor, the number of bits per character of the input data either being unknown or being different from the number of bits per sequence selected by the processor.
Claim 6
Dependent Claim 60 words
A method as claimed in claim 1 wherein each linking pointer of the second type points to a first stored symbol of an ordered list of alternative stored symbols of the search tree and successive stored symbols in said ordered list are connected by linking pointers of the first type which point to each succeeding stored symbol in said list.
Claim 7
Dependent Claim 52 words
A method as claimed in claim 5 wherein linking pointers of the first type are used to search through the list of alternative stored symbols to find a match for the most recently read input symbol and, if a match is found, to obtain the pointer of the second type, if present.
Claim 8
Dependent Claim 77 words
A method as claimed in claim 1 wherein each linking pointer of the second type points to any one of a list of alternative stored symbols of the search tree, the stored symbols in said list being connected to each other by pointers of the first type pointing in one direction and also by pointers of the first type pointing in the opposite direction so as to enable any stored symbol in the list to be accessed.
Claim 9
Dependent Claim 51 words
A method as claimed in claim 1 wherein, before the input data is processed, the memory is initially provided with stored symbols each of which corresponds to a sequence of symbols likely to occur in the input data, said initially provided stored symbols being stored as nodes in the search tree.
Claim 10
Independent Claim 226 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries modified by the proviso that recently created nodes of the search tree are protected against deletion.
Claim 11
Independent Claim 226 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries modified by the proviso that recently created nodes of the search tree are protected against deletion.
Claim 12
Independent Claim 261 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein each node of the search tree is associated with a respective counter which is incremented each time the associated node is used, and the compressed output data comprises codewords whose lengths are related to the contents of the counters such that the shortest codewords represent the most frequently used nodes.
Claim 13
Independent Claim 261 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein each node of the search tree is associated with a respective counter which is incremented each time the associated node is used, and the compressed output data comprises codewords whose lengths are related to the contents of the counters such that the shortest codewords represent the most frequently used nodes.
Claim 14
Independent Claim 259 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the nodes of the search tree are stored in order in the memory and the order in which they are stored is re-arranged by raising the ordinal value of a node after it has been used whereby rarely used nodes acquire a low ordinary value, and are deleted.
Claim 15
Independent Claim 259 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the nodes of the search tree are stored in order in the memory and the order in which they are stored is re-arranged by raising the ordinal value of a node after it has been used whereby rarely used nodes acquire a low ordinary value, and are deleted.
Claim 16
Dependent Claim 42 words
A method as claimed in claim 11 wherein the ordinal value of the used node is increased by one, and the ordinal value of the node immediately above the used node is decreased by one, whereby these two nodes exchange ordinal values.
Claim 17
Dependent Claim 37 words
A method as claimed in claim 11 wherein the ordinal value of the used node is increased to the maximum value, and the ordinal values of all the nodes above the used node are decreased by one.
Claim 18
Dependent Claim 45 words
A method as claimed in claim 11 wherein each node of the search tree has an associated length index and the compressed output data comprises codewords whose lengths are related to the length indices such that the shortest codewords represent nodes with highest ordinal values.
Claim 19
Independent Claim 241 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the input data includes spaces between sequences of symbols and the process of generating a new stored path of the search tree is terminated when such a space is detected.
Claim 20
Independent Claim 241 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the input data includes spaces between sequences of symbols and the process of generating a new stored path of the search tree is terminated when such a space is detected.
Claim 21
Independent Claim 300 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the input data consists of a stream of binary digits representing characters, and the symbols stored in the search tree are each made up of sequences of binary digits, and wherein the number of bits per sequence is selected by the processor, the number of bits per character of the input data either being unknown or being different from the number of bits per sequence selected by the processor and wherein the processor is arranged to perform the selection in response to an external command signal from a user.
Claim 22
Independent Claim 300 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the input data consists of a stream of binary digits representing characters, and the symbols stored in the search tree are each made up of sequences of binary digits, and wherein the number of bits per sequence is selected by the processor, the number of bits per character of the input data either being unknown or being different from the number of bits per sequence selected by the processor and wherein the processor is arranged to perform the selection in response to an external command signal from a user.
Claim 23
Independent Claim 331 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the input data consists of a stream of binary digits representing characters, and the symbols stored in the search tree are each made up of sequences of binary digits, and wherein the number of bits per sequence is selected by the processor, the number of bits per character of the input data either being unknown or being different from the number of bits per sequence selected by the processor and wherein the number of bits per sequence is initially varied and the resulting compression ratio between the input data and the output data is measured, and the number of bits per sequence for the stored symbols of the search tree is selected on the basis of the measured compression ratio.
Claim 24
Independent Claim 331 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the input data consists of a stream of binary digits representing characters, and the symbols stored in the search tree are each made up of sequences of binary digits, and wherein the number of bits per sequence is selected by the processor, the number of bits per character of the input data either being unknown or being different from the number of bits per sequence selected by the processor and wherein the number of bits per sequence is initially varied and the resulting compression ratio between the input data and the output data is measured, and the number of bits per sequence for the stored symbols of the search tree is selected on the basis of the measured compression ratio.
Claim 25
Independent Claim 228 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the dictionary is reinitialised in response to a command signal received, in use, from an associated decoder.
Claim 26
Independent Claim 228 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the dictionary is reinitialised in response to a command signal received, in use, from an associated decoder.
Claim 27
Independent Claim 227 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein, in use, a checksum for the dictionary is periodically calculated and a corresponding output signal generated.
Claim 28
Independent Claim 227 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein, in use, a checksum for the dictionary is periodically calculated and a corresponding output signal generated.
Claim 29
Independent Claim 254 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the dictionary is retained for further use, and including performing a checksum calculation on the dictionary prior to any such further use, receiving a corresponding checksum from another such dictionary, comparing the checksums and reinitalising the dictionary if the checksums are not identical.
Claim 30
Independent Claim 254 words
A method of compressing input data comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the dictionary is retained for further use, and including performing a checksum calculation on the dictionary prior to any such further use, receiving a corresponding checksum from another such dictionary, comparing the checksums and reinitalising the dictionary if the checksums are not identical.
Claim 31
Independent Claim 226 words
A method of storing data comprising compressing the data by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries, and storing the compressed data in a mass storage medium.
Claim 32
Independent Claim 226 words
A method of storing data comprising compressing the data by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries, and storing the compressed data in a mass storage medium.
Claim 33
Independent Claim 401 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries, reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries.
Claim 34
Independent Claim 401 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries, reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries.
Claim 35
Dependent Claim 32 words
A method as claimed in claim 22 wherein all the indexed memory locations forming the dictionary are tested before the next symbol to be stored is stored in a freed memory location.
Claim 36
Dependent Claim 63 words
A method as claimed in claim 22 wherein those indexed memory locations which do not contain nodes of the search tree are linked by pointers to form a free list and nodes of the search tree are deleted by re-setting pointers to bypass the deleted nodes and connecting them to the free list, whereby the search tree is maintained as a connected whole.
Claim 37
Dependent Claim 60 words
A method as claimed in claim 22 wherein each linking pointer of the second type points to a first stored symbol of an ordered list of alternative stored symbols of the search tree and successive stored symbols in said ordered list are connected by linking pointers of the first type which point to each succeeding stored symbol in said list.
Claim 38
Dependent Claim 77 words
A method as claimed in claim 22 wherein each linking pointer of the second type points to any one of a list of alternative stored symbols of the search tree, the stored symbols in said list being connected to each other by pointers of the first type pointing in one direction and also by pointers of the first type pointing in the opposite direction so as to enable any stored symbol in the list to be accessed.
Claim 39
Independent Claim 418 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries modified by the proviso that recently created nodes of the search tree are protected against deletion.
Claim 40
Independent Claim 418 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries modified by the proviso that recently created nodes of the search tree are protected against deletion.
Claim 41
Independent Claim 464 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein each node of the search tree is associated with a respective counter which is incremented each time the associated node is used, the shortest codewords are allocated to the most frequently used nodes, and the compressed data to be decoded comprises codewords of which the shortest codewords represent the most frequently used nodes of the search tree of a corresponding encoder.
Claim 42
Independent Claim 464 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein each node of the search tree is associated with a respective counter which is incremented each time the associated node is used, the shortest codewords are allocated to the most frequently used nodes, and the compressed data to be decoded comprises codewords of which the shortest codewords represent the most frequently used nodes of the search tree of a corresponding encoder.
Claim 43
Independent Claim 451 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the nodes of the search tree are stored in order in the memory and the order in which they are stored is re-arranged by raising the ordinal value of a node after it has been used whereby rarely used nodes acquire a low ordinary value, and are deleted.
Claim 44
Independent Claim 451 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the nodes of the search tree are stored in order in the memory and the order in which they are stored is re-arranged by raising the ordinal value of a node after it has been used whereby rarely used nodes acquire a low ordinary value, and are deleted.
Claim 45
Dependent Claim 66 words
A method as claimed in claim 29 wherein each node of the search tree has an associated length index such that the shortest codewords represent nodes with the highest ordinal values and the compressed data to be decoded comprisee codewords whose lengths are related to the length indices such that the shortest codewords represent highest ordinal value nodes of the search tree of a corresponding encoder.
Claim 46
Dependent Claim 42 words
A method as claimed in claim 29 wherein the ordinal value of the used node is increased by one, and the ordinal value of the node immediately above the used node is decreased by one, whereby these two nodes exchange ordinal values.
Claim 47
Dependent Claim 37 words
A method as claimed in claim 29 wherein the ordinal value of the used node is increased to the maximum value, and the ordinal values of all the nodes above the used code are decreased by one.
Claim 48
Independent Claim 421 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries including detecting when received compressed data corresponds to empty or free memory locations and generating a corresponding output signal.
Claim 49
Independent Claim 421 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries including detecting when received compressed data corresponds to empty or free memory locations and generating a corresponding output signal.
Claim 50
Independent Claim 446 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the dictionary is retained for further use, and including performing a checksum calculation on the dictionary prior to any such further use, receiving a corresponding checksum from another such dictionary, comparing the checksums and reinitialising the dictionary if the checksums are not identical.
Claim 51
Independent Claim 446 words
A method of decoding compressed data which has been compressed by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries wherein the dictionary is retained for further use, and including performing a checksum calculation on the dictionary prior to any such further use, receiving a corresponding checksum from another such dictionary, comparing the checksums and reinitialising the dictionary if the checksums are not identical.
Claim 52
Independent Claim 623 words
A method of transmitting data comprising encoding the data by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries, transmitting the resulting compressed data to a remote location, and decoding the compressed data by a corresponding method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries.
Claim 53
Independent Claim 623 words
A method of transmitting data comprising encoding the data by a method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries, transmitting the resulting compressed data to a remote location, and decoding the compressed data by a corresponding method comprising reading successive symbols of the data with a processor provided with a memory having indexed memory locations, generating from strings of symbols in the input data a dictionary in the form of a search tree of symbols in the memory, which search tree has paths representative of said strings, matching symbol strings in the input data with previously stored paths in the search tree and generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries comprising reading successive characters of the compressed data with a processor provided with a memory, storing in the memory a dictionary in the form of a search tree of symbols which is built up from the compressed data, and utilising the search tree to translate the compressed data to decoded data, stored symbol in the search tree being linked by linking pointers of two distinct types; a point of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and the same prefix and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols, determining when the memory is full, testing and deleting sequential indexed memory locations of the search tree if they contain a node of the search tree which does not have a linking pointer of the second type pointing to another node whereby the resulting freed memory locations are made available for new dictionary entries.
Claim 54
Dependent Claim 215 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries.
Claim 55
Dependent Claim 215 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries.
Claim 56
Dependent Claim 37 words
An encoder as claimed in claim 36 wherein the processor is further arranged to test all the indexed memory locations forming the dictionary before the next symbol to be stored is stored in a freed memory location.
Claim 57
Dependent Claim 60 words
An encoder as claimed in claim 36 wherein each linking pointer of the second type points to a first stored symbol of an ordered list of alternative stored symbols of the search tree and successive stored symbols in said ordered list are connected by linking pointers of the first type which point to each succeeding stored symbol in said list.
Claim 58
Dependent Claim 67 words
An encoder as claimed in claim 36 wherein the processor is arranged to link by pointers those indexed memory locations which do not contain nodes of the search tree to form a free list and to delete nodes of the search tree by re-setting pointers to bypass the deleted nodes and connecting them to a free list, whereby the search tree is maintained as a connected whole.
Claim 59
Dependent Claim 69 words
An encoder as claimed in claim 36 for encoding input data consisting of a stream of binary digits representing characters, wherein the symbols stored in the search tree are each made up of sequences of binary digits, and wherein the processor is arranged to select the number of bits per sequence such as to be different from the number of bits per character of the input data, if known.
Claim 60
Dependent Claim 61 words
An encoder as claimed in claim 40 wherein the number of bits per sequence selected by the processor is initially varied and the resulting compression ratio between the input data and the output data is measured, and the number of bits per sequence for the stored symbols of the search tree is selected on the basis of the measured compression ratio.
Claim 61
Dependent Claim 77 words
An encoder as claimed in claim 36 wherein each linking pointer of the second type points to any one of a list of alternative stored symbols of the search tree, the stored symbols in said list being connected to each other by pointers of the first type pointing in one direction and also by pointers of the first type pointing in the opposite direction so as to enable any stored symbol in the list to be accessed.
Claim 62
Dependent Claim 232 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the process is arranged to protect recently created nodes of the search tree against deletion.
Claim 63
Dependent Claim 232 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the process is arranged to protect recently created nodes of the search tree against deletion.
Claim 64
Dependent Claim 272 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein each node of the search tree is associated with a respective counter which is incremented each time the associated node is used, and the processor is arranged to provide compressed output data comprising codewords whose lengths are related to the contents of the counters such that the shortest codewords represent the most frequently used nodes.
Claim 65
Dependent Claim 272 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein each node of the search tree is associated with a respective counter which is incremented each time the associated node is used, and the processor is arranged to provide compressed output data comprising codewords whose lengths are related to the contents of the counters such that the shortest codewords represent the most frequently used nodes.
Claim 66
Dependent Claim 275 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the nodes of the search tree are stored in order in the memory and the processor is arranged to re-arrange the order in which they are stored by raising the ordinal value of a node after it has been used whereby rarely used nodes acquire a low ordinal value, and to delete nodes having the lowest ordinal values.
Claim 67
Dependent Claim 275 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the nodes of the search tree are stored in order in the memory and the processor is arranged to re-arrange the order in which they are stored by raising the ordinal value of a node after it has been used whereby rarely used nodes acquire a low ordinal value, and to delete nodes having the lowest ordinal values.
Claim 68
Dependent Claim 42 words
An encoder as claimed in claim 45 wherein the ordinal value of the used node is increased by one, and the ordinal value of the node immediately above the used node is decreased by one, whereby these two nodes exchange ordinal values.
Claim 69
Dependent Claim 37 words
An encoder as claimed in claim 45 wherein the ordinal value of the used node is increased to the maximum value, and the ordinal values of all the nodes above the used node are decreased by one.
Claim 70
Dependent Claim 54 words
An encoder as claimed in claims 45, 46 or 47 wherein each node of the search tree has an associated length index and the processor is arranged to provide compressed output data comprising codewords whose lengths are related to the length indices such that the shortest codewords represent nodes with the highest ordinal values.
Claim 71
Dependent Claim 252 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and for encoding input data including spaces between sequences of symbols and wherein the processor is arranged to terminate the process of generating a new stored path of the search tree when such a space is detected.
Claim 72
Dependent Claim 252 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and for encoding input data including spaces between sequences of symbols and wherein the processor is arranged to terminate the process of generating a new stored path of the search tree when such a space is detected.
Claim 73
Dependent Claim 298 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the input data is of a stream of binary digits representing characters, wherein the symbols stored in the search tree are each made up of sequences of binary digits, and wherein the processor is arranged to select the number of bits per sequence such as to be different from the number of bits per character of the input data, if known and wherein the processor is arranged to perform the selection in response to an external command signal from a user.
Claim 74
Dependent Claim 298 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the input data is of a stream of binary digits representing characters, wherein the symbols stored in the search tree are each made up of sequences of binary digits, and wherein the processor is arranged to select the number of bits per sequence such as to be different from the number of bits per character of the input data, if known and wherein the processor is arranged to perform the selection in response to an external command signal from a user.
Claim 75
Dependent Claim 236 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein, in use, the processor is responsive to a command signal received from an associated decoder to reinitialise its dictionary.
Claim 76
Dependent Claim 236 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein, in use, the processor is responsive to a command signal received from an associated decoder to reinitialise its dictionary.
Claim 77
Dependent Claim 234 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein, in use, the processor periodically calculates a checksum for the dictionary and generates a corresponding output signal.
Claim 78
Dependent Claim 234 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein, in use, the processor periodically calculates a checksum for the dictionary and generates a corresponding output signal.
Claim 79
Dependent Claim 280 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the dictionary is retained for further use and the processor is arranged to perform a checksum calculation on the dictionary prior to any such further use and to generate a corresponding output signal, to compare this checksum with a corresponding checksum received, in use, from an associated decoder, and to reinitialise the dictionary to an initial state if the checksums are not identical.
Claim 80
Dependent Claim 280 words
An encoder for compressing input data comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the dictionary is retained for further use and the processor is arranged to perform a checksum calculation on the dictionary prior to any such further use and to generate a corresponding output signal, to compare this checksum with a corresponding checksum received, in use, from an associated decoder, and to reinitialise the dictionary to an initial state if the checksums are not identical.
Claim 81
Dependent Claim 210 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries.
Claim 82
Dependent Claim 210 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries.
Claim 83
Dependent Claim 62 words
A decoder as claimed in claim 54 wherein in use, each linking pointer of the second type points to a first stored symbol of an ordered list of alternative stored symbols of the search tree and successive stored symbols in said ordered list are connected by linking pointers of the first type which point to each succeeding stored symbol in said list.
Claim 84
Dependent Claim 79 words
A decoder as claimed in claim 54 wherein in use, each linking pointer of the second type points to any one of a list of alternative stored symbols of the search tree, the stored symbols in said list being connected to each other by pointers of the first type pointing in one direction and also by pointers of the first type pointing in the opposite direction so as to enable any stored symbol in the list to be accessed.
Claim 85
Dependent Claim 37 words
A decoder as claimed in claim 54 wherein the processor is further arranged to test all the indexed memory locations forming the dictionary before the next symbol to be stored is stored in a freed memory location.
Claim 86
Dependent Claim 70 words
A decoder as claimed in claim 54 wherein the processor is arranged to link by pointers those indexed memory locations which do not contain nodes of the search tree link by pointers to form a free list and to delete nodes of the search tree by re-setting pointers to bypass the deleted nodes and connecting them to the free list, whereby the search tree is maintained as a connected whole.
Claim 87
Dependent Claim 227 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the processor is arranged to protect recently created nodes of the search tree against deletion.
Claim 88
Dependent Claim 227 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the processor is arranged to protect recently created nodes of the search tree against deletion.
Claim 89
Dependent Claim 274 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein each node of the search tree is associated with a respective counter which is associated with a respective counter which is incremented each time the associated node is used, and the processor is arranged to provide compressed output data comprising codewords whose lengths are related to the contents of the counters such that the shortest codewords represent the most frequently used nodes.
Claim 90
Dependent Claim 274 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein each node of the search tree is associated with a respective counter which is associated with a respective counter which is incremented each time the associated node is used, and the processor is arranged to provide compressed output data comprising codewords whose lengths are related to the contents of the counters such that the shortest codewords represent the most frequently used nodes.
Claim 91
Dependent Claim 270 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the nodes of the search tree are stored in order in the memory and the processor is arranged to re-arrange the order in which they are stored by raising the ordinal value of a node after it has been used whereby rarely used nodes acquire a low ordinal value, and to delete nodes having the lowest ordinal value.
Claim 92
Dependent Claim 270 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the nodes of the search tree are stored in order in the memory and the processor is arranged to re-arrange the order in which they are stored by raising the ordinal value of a node after it has been used whereby rarely used nodes acquire a low ordinal value, and to delete nodes having the lowest ordinal value.
Claim 93
Dependent Claim 42 words
A decoder as claimed in claim 61 wherein the ordinal value of the used node is increased by one, and the ordinal value of the node immediately above the used node is decreased by one, whereby these two nodes exchange ordinal values.
Claim 94
Dependent Claim 37 words
A decoder as claimed in claim 61 wherein the ordinal value of the used node is increased to the maximum value, and the ordinal values of all the nodes above the used node are decreased by one.
Claim 95
Dependent Claim 51 words
A decoder as claimed in claim 61 wherein each node of the search tree has an associated length index and the processor is arranged to provide compressed output data comprising codewords whose lengths are related to the length indices such that the shortest codewords represent nodes with the highest ordinal values.
Claim 96
Dependent Claim 244 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein, in use, the processor is arranged to detect when received compressed data corresponds to empty or free memory locations and to generate a corresponding output signal for transmission to an associated encoder.
Claim 97
Dependent Claim 244 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein, in use, the processor is arranged to detect when received compressed data corresponds to empty or free memory locations and to generate a corresponding output signal for transmission to an associated encoder.
Claim 98
Dependent Claim 276 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the dictionary is retained for further use and the processor is arranged to perform a checksum calculation on the dictionary prior to any such further use and to generate a corresponding output signal for transmission to an associated encoder, to compare this checksum with a corresponding checksum received, in use, from said encoder, and to reinitialise the dictionary if the checksums are not identical.
Claim 99
Dependent Claim 276 words
A decoder for decoding compressed data comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and wherein the dictionary is retained for further use and the processor is arranged to perform a checksum calculation on the dictionary prior to any such further use and to generate a corresponding output signal for transmission to an associated encoder, to compare this checksum with a corresponding checksum received, in use, from said encoder, and to reinitialise the dictionary if the checksums are not identical.
Claim 100
Dependent Claim 436 words
Data processing apparatus comprising an encoder comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries, a corresponding decoder comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and a data link for transmitting the compressed data between the encoder and decoder.
Claim 101
Dependent Claim 436 words
Data processing apparatus comprising an encoder comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries, a corresponding decoder comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and a data link for transmitting the compressed data between the encoder and decoder.
Claim 102
Dependent Claim 433 words
Data processing apparatus comprising an encoder comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries, a corresponding decoder comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and a mass storage medium accessible by the encoder and decoder.
Claim 103
Dependent Claim 433 words
Data processing apparatus comprising an encoder comprising a processor capable of receiving successive symbols of input data, a memory having indexed memory locations, means for storing in the memory a search tree of symbols which has paths representative of strings of symbols in the input data, and means for matching symbol strings in the input data with previously stored paths in the search tree and for generating from the stored paths compressed output data corresponding to the input data, stored symbols in the search tree being linked to form said paths by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those stored symbols are alternative possible symbols at a given position in an input symbol sequence and a pointer of the second type between stored symbols indicating that those stored symbols both occur, in order, in a possible input symbol sequence said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries, a corresponding decoder comprising a processor capable of receiving successive symbols of compressed data, a memory having indexed memory locations and means for storing in the memory a dictionary in the form of a search tree of symbols, the processor being arranged to build up the search tree from the compressed data and to utilise the search tree to translate the compressed data to decoded data, stored symbols in the search tree being linked by linking pointers of two distinct types; a pointer of the first type between stored symbols indicating that those symbols are associated with different decoded strings of symbols having the same number of symbols and are the respective last symbols of such different strings and a pointer of the second type between stored symbols indicating that those symbols are successive symbols in a string of decoded output symbols said processor is arranged to determine when the memory is full, to test sequential indexed memory locations of the search tree, and to delete a memory location if it contains a node of the search tree which does not have a linking pointer of the second type pointing to another node so as to make the resulting freed memory locations available for new dictionary entries and a mass storage medium accessible by the encoder and decoder.

References Cited (Backward Citations)

US4464650A Cited
EP0127815A2 Cited
EP0148008A2 Cited
WO1986000479A1 Cited
US4906991A Cited
US5003307A Cited
US4990910A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1995-10-06 1996-04-06 1996-10-06 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 1999-10-06 2000-04-06 2000-10-06 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2003-10-06 2004-04-06 2004-10-06 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag