DE69706439T2 - Rechnersortiersystem zur datenkompression - Google Patents
Rechnersortiersystem zur datenkompressionInfo
- Publication number
- DE69706439T2 DE69706439T2 DE69706439T DE69706439T DE69706439T2 DE 69706439 T2 DE69706439 T2 DE 69706439T2 DE 69706439 T DE69706439 T DE 69706439T DE 69706439 T DE69706439 T DE 69706439T DE 69706439 T2 DE69706439 T2 DE 69706439T2
- Authority
- DE
- Germany
- Prior art keywords
- data block
- context
- original data
- sorting
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000013144 data compression Methods 0.000 title description 9
- 238000000034 method Methods 0.000 claims abstract description 65
- 238000007906 compression Methods 0.000 claims description 14
- 230000006835 compression Effects 0.000 claims description 14
- 230000017105 transposition Effects 0.000 claims description 6
- 238000011084 recovery Methods 0.000 claims description 2
- 230000009466 transformation Effects 0.000 description 29
- 230000006870 function Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 17
- 230000006837 decompression Effects 0.000 description 5
- 239000012634 fragment Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
- Die Erfindung betrifft ein Verfahren zum Sortieren und Komprimieren eines Ursprungsdatenblocks, der aus einer Mehrzahl von Datenwerten besteht, umfassend die Schritte des:
- (a) Verwendens eines Kontexts, wobei jeder Datenwert innerhalb des Ursprungsdatenblocks einen Kontext hat, wobei der Kontext der primäre Sortierschlüssel ist;
- (b) Sortierens der Datenwerte gemäß dem primären Sortierschlüssel; und
- (c) Komprimierens des sortierten Ursprungsdatenblocks zu einem komprimierten Datenblock.
- Weiterhin betrifft die Erfindung ein Verfahren des Sortierens, Komprimierens, Dekomprimierens und Wiederherstellens eines Ursprungsdatenblocks, umfassend das vorerwähnte Verfahren des Sortierens und Komprimierens eines Ursprungsdatenblocks und zusätzliche Schritte.
- Darüber hinaus betrifft die Erfindung eine Einrichtung zum Sortieren und Komprimieren eines Ursprungsdatenblocks, der aus einer Mehrzahl von Datenwerten besteht, worin
- (a) ein Kontext verwendet wird, wobei jeder Datenwert innerhalb des Ursprungsdatenblocks einen Kontext hat, wobei der Kontext der primäre Sortierschlüssel ist; umfassend:
- (b) ein Sortiermittel, das die Datenwerte gemäß dem primären Sortierschlüssel sortiert; und
- (c) ein Komprimiermittel zum Komprimieren des sortierten Datenblocks zu einem komprimierten Datenblock.
- Schließlich betrifft die Erfindung eine Einrichtung für das Sortieren, Komprimieren, Dekomprimieren und Wiederherstellen eines Ursprungsdatenblocks, umfassend die vorerwähnte Einrichtung zum Sortieren und Komprimieren eines Ursprungsdatenblocks und zusätzliche Mittel.
- Diese Anmeldung beansprucht die Priorität der österreichischen Patentanmeldung mit dem Aktenzeichen AT 2001/96, betitelt "Sortierverfahren und System zur Datenkompression" und eingereicht am 15. November 1996 von Dipl.-Ing. Michael Schindler.
- Datenkompression ist der Stand der Technik in der permanenten Datenspeicherung (z. B. Festplatte, Band, Diskette) wie auch in der Datenübertragung (z. B. unter Verwendung eines Modems). Es gibt hierfür gut bekannte Verfahren, die entweder in Software (z. B. als Teil eines Betriebssystems) oder in Hardware (z. B. Chips in Magnetband- und Datenübertragungseinrichtungen) ausgeführt sind. Obwohl Daten sequenziell als ein Datenstrom komprimiert werden können, erfordern die besseren Datenkompressionsverfahren ein Suchen oder Sortieren, welches die Ausführung in Hardware kompliziert macht und welches die Verarbeitungszeit in Software unbestimmt macht.
- Ein Beispiel eines Sortierverfahrens ist die Burrows-Wheeler-Transformation (BWT), die in Burrows, M; Wheeler, D J: "A block-sorting lossless data compression algorithm", SRC Research Report, 10.05.94, Seiten 1 bis 18, XP646918 offenbart ist, worauf die Oberbegriffe der Ansprüche 1 und 7 basieren. Die Burrows-Wheeler Transformation verarbeitet einen Datenblock als eine einzige Einheit. Eine reversible Transformation wird auf einen Textblock angewandt, um einen neuen Block zu bilden, der die gleichen Zeichen hat. Diese Transformation hat die Tendenz, gleichartige Zeichen miteinander zu gruppieren, um so die Wahrscheinlichkeit des Findens eines Zeichens zu verbessern, das einem anderen Fall des gleichen Zeichens nahe ist. Dieser sortierte Text kann dann mit lokal-adaptiven Algorithmen, wie Move-to-front- Kodierung in Kombination mit Huffman-Kodierung oder arithmetischer Kodierung, komprimiert werden.
- Weiter beschreiben Yokoo H. et al. in: "Data compression by context sorting", IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, Bd. E79-A, Nr. 5, 1. Mai 1996, Seiten 681-686, XP000621206 ein Verfahren der Datenkompression, worin im Gegensatz zu der Burrows-Wheeler-Transformation die Datenwerte durch Kodieren derselben in der Ursprungsfolge, d. h. in jener Reihenfolge, wie sie in den Eingangsdaten sind, komprimiert werden. Das Sortieren wird nur zum Erzeugen von Rängen für die Datenwerte benutzt. In dem von H. Yokoo et al. in dem vorerwähnten Dokument beschriebenen Beispiel wird angenommen, dass die Kontextfolge keine Gleichheit hat. Wenn Gleichheit auftritt, eliminieren H. Yokoo et al. den älteren Kontext mit dem gegenwärtigen Kontext. Demgemäss ist dieses Verfahren ein inhärenter Teil eines Kompressionsverfahrens zum Komprimieren derselben in der alten, ursprünglichen Reihenfolge und nicht ein Verfahren des Sortierens von Daten, um sie dann in einer neuen Reihenfolge, d. h. in der sortierten Reihenfolge, zu komprimieren.
- Ein Ziel von bevorzugten Ausführungsformen der Erfindung ist es, ein Computersortiersystem zu schaffen, das sehr einfach, schnell, deterministisch in der Zeit und gut geeignet für Hardwareausführung ist. Das langsame Sortieren eines Datenblocks und das empfohlene Lauflängenkodieren des Standes der Technik wird durch ein neues Verfahren ersetzt. Der Output dieses Verfahrens wird dann durch irgendein Kodierverfahren des Standes der Technik, das für diese Aufgabe geeignet ist, komprimiert.
- Dieses Ziel wird gemäß der Erfindung durch ein Verfahren des Sortierens und Komprimierens eines Ursprungsdatenblocks, wie eingangs erwähnt, erreicht, welches dadurch gekennzeichnet ist, dass
- (d) der primäre Sortierschlüssel von fester, vorbestimmter Länge ist;
- (e) ein sekundärer Sortierschlüssel aus der Position der Daten innerhalb des Ursprungsdatenblocks entwickelt wird; und
- (f) für Datenwerte, deren primärer Sortierschlüssel der gleiche ist, die Daten gemäß dem sekundären Sortierschlüssel, vorzugsweise unter impliziter Verwendung des sekundären Sortierschlüssels, sortiert werden.
- Demgemäss wird im Fall der Gleichheit nach einer vorbestimmten Anzahl von Schritten die Position der Daten innerhalb des Datenblocks anstelle von weiteren Vergleichen als Sortierschlüssel benutzt. Diese Position wird immer unterschiedlich für unterschiedliche Datenposten sein und wird daher immer zu einem eindeutigen Ergebnis führen. Unter Verwendung der Position als dem sekundären Sortierschlüssel wird nur eine vorbestimmte begrenzte Anzahl von Zeichen für das Sortieren benutzt (beschränkter Kontext). Eine Kontextgröße von 4-6 Zeichen ist für die meisten Fälle genügend.
- Der Hauptvorteil ist nicht dieser frühe Ausgang, sondern, dass in den meisten Fällen, in denen die Anzahl von verglichenen Symbolen nicht viel größer ist als die Logarithmen zur Basis Zwei der Größe des zu sortierenden Datenblocks, ein Radixsortieralgorithmus, der ursprünglich für das mechanische Sortieren entwickelt wurde, verwendet werden kann. Dieses Sortierverfahren hat alle in der ursprünglichen Problembeschreibung geforderten Charakteristika: seine Hardwareausführung ist einfach, und seine Verarbeitungszeit ist schnell und fest. Ein zweiter Vorteil besteht darin, dass, wenn eine Radixsortierung benutzt wird, der Durchsatz nicht durch die Blockgröße beeinflusst wird. Dieses ermöglicht die Verwendung von großen Datenblöcken, was die Kompression verbessert. In Abhängigkeit von den Umständen mag eine Bucket- bzw. Speicherbereichssortierung oder eine Variante einer Mehrschlüssel-Schnellsortierung besser für die Sortieraufgabe geeignet sein.
- Ein anderer Vorteil des beschränkten Kontexts besteht darin, dass irgendetwas als Kontext verwendet werden kann, z. B. das entsprechende Gebiet des letzten gleichartigen Datensatzes. Dieses ermöglicht eine verbesserte Kompression bei vielen Anwendungen.
- In bevorzugten Ausführungsformen des obigen Verfahrens nach der Erfindung
- (i) ist der Kontext ein interner Kontext, der von dem Ursprungsdatenblock ableitbar ist,
- (ii) ist der Kontext ein externer Kontext, der unabhängig von dem Ursprungsdatenblock vorgesehen wird,
- (iii) umfasst der Schritt (b) das Anwenden einer Radixsortierung.
- Weiterhin stellt die Erfindung, wie eingangs erwähnt, ein Verfahren des Sortierens, Komprimierens, Dekomprimierens und Wiederherstellens eines Ursprungsdatenblocks zur Verfügung, umfassend die Schritte:
- - (a) bis (f) gemäß Anspruch 1,
- (g) - Dekomprimieren des komprimierten Datenblocks zu dem sortierten Ursprungsdatenblock,
- (h) - Wiederherstellen des Ursprungsdatenblocks aus dem dekomprimierten sortierten Ursprungsdatenblock.
- Gemäß einer bevorzugten Ausführungsform dieses Verfahrens umfasst der Schritt (h) des Wiederherstellens das Berechnen eines Transpositionsvektors, welcher aus der Burrows- Wheeler-Transformation abgeleitet wird.
- Demgemäss kann das oben beschriebene Sortieren umgekehrt werden, was für die Dekompression wesentlich ist. Für die Umkehr müssen die Ausgangs- bzw. Startpunkte für jeden Sortierschlüssel (Kontext) bekannt sein. Im Fall von internen Kontexten zeigt Beispiel Eins einen Weg, alle Kontexte zu zählen und demgemäss Ausgangs- bzw. Startpunkte für jeden zu berechnen. Weiterhin kann eine Modifizierung der Verfahren des Standes der Technik dazu benutzt werden, Kontexte zu zählen. Im Fall von externen Kontexten ist alle Kontextinformation beim Dekodierer bekannt.
- Im Gegensatz zu Sortierungen des Standes der Technik, welche eine eindeutige Reihenfolge durch fortlaufende Vergleiche herstellen, wird gemäß bevorzugten Ausführungsformen der Erfindung im Zweifel eine eindeutige Reihenfolge durch Betrachten der Ursprungsposition hergestellt.
- Darüber hinaus stellt die Erfindung eine Einrichtung zum Sortieren und Komprimieren eines Ursprungsdatenblocks der eingangs genannten Art zur Verfügung, welcher dadurch gekennzeichnet ist, dass
- (d) der primäre Sortierschlüssel von fester, vorbestimmter Länge ist;
- (e) ein sekundärer Sortierschlüssel aus der Position der Daten innerhalb des Ursprungsdatenblocks abgeleitet wird; und
- (f) für Datenwerte, deren primärer Sortierschlüssel der gleiche ist, das Sortiermittel die Daten gemäß dem sekundären Sortierschlüssel, vorzugsweise unter impliziter Verwendung des sekundären Sortierschlüssels sortiert.
- Bevorzugte Ausführungsformen dieser Einrichtung sind jene, wie sie oben unten (i) und (ii) erwähnt sind, wie auch eine Ausführungsform, gemäß deren das Sortiermittel eine Radixsortierung anwendet.
- Schließlich stellt die Erfindung, wie eingangs angegeben, eine Einrichtung zum Sortieren, Komprimieren, Dekomprimieren und Wiederherstellen eines Ursprungsdatenblocks zur Verfügung, umfassend:
- - die Einrichtung gemäß Anspruch 7, weiter umfassend:
- (g) - ein Dekomprimiermittel zum Dekomprimieren des komprimierten Datenblocks zu dem sortierten Ursprungsdatenblock; und
- (h) - ein Wiederherstellungsmittel zum Wiederherstellen des Ursprungsdatenblocks aus dem dekomprimierten sortierten Ursprungsdatenblock.
- Gemäß einer bevorzugten Ausführungsform dieser Einrichtung berechnet das Wiederherstellungsmittel einen Transpositionsvektor, welcher aus der Burrows-Wheeler-Transformation abgeleitet ist.
- Die obigen und andere Merkmale der Erfindung, einschließlich verschiedener neuartiger Details des Aufbaus und der Kombination von Teilen, werden nun mehr im besonderen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben und in den Ansprüchen aufgezeigt. Es versteht sich, dass das spezielle Computer-Sortiersystem für Daten-Kompression, welches die Erfindung verwirklicht, nur als Beispiel und nicht als eine Beschränkung der Erfindung gezeigt wird. Die Prinzipien und Merkmale dieser Erfindung können in variierten und zahlreichen Ausführungsformen verwirklicht werden, ohne den Bereich der Erfindung zu verlassen.
- Fig. 1 ist ein schematisches Blockdiagramm eines Rechensystems gemäß einer bevorzugten Ausführungsform der Erfindung.
- Fig. 2 ist ein Blockdiagramm eines Kodierers, in dem interne Kontexte gemäß einer bevorzugten Ausführungsform der Erfindung verwendet werden.
- Fig. 3 ist ein Blockdiagramm eines Dekodierers, in dem interne Kontexte gemäß einer bevorzugten Ausführungsform der Erfindung verwendet werden.
- Fig. 4A-4B veranschaulichen ein Verfahren des Sortierens für die Kompression unter Verwendung von internen Kontexten.
- Fig. 5A-5B veranschaulichen ein Verfahren des Entsortierens des sortierten Texts der Fig. 4B für die Dekompression unter Verwendung von internen Kontexten.
- Fig. 6 ist ein Blockschaltbild eines externe Kontexte verwendenden Kodierers gemäß einer bevorzugten Ausführungsform der Erfindung.
- Fig. 7 ist ein Blockschaltbild eines externe Kontexte verwendenden Dekodierers gemäß einer bevorzugten Ausführungsform der Erfindung.
- Fig. 8A-8D veranschaulichen ein Verfahren, das in Situationen verwendet wird, in denen die Kontexte für jeden Datenposten, der zu kodieren ist, als Eingangsdaten zugeführt werden, welche sowohl dem Kodierer als auch dem Dekodierer bekannt sind.
- Fig. 9 ist ein Ablaufdiagramm eines bevorzugten Verfahrens für das Ausführen einer Transformationsfunktion.
- Fig. 10 ist ein Ablaufdiagramm eines bevorzugten Verfahrens einer inversen Transformationsfunktion.
- Fig. 11 ist ein Ablaufdiagramm eines bevorzugten Verfahrens von einer anderen inversen Transformationsfunktion.
- Fig. 12 ist ein Ablaufdiagramm eines Verfahrens hoher Ordnung für eine Transformationsfunktion.
- Fig. 1 ist ein schematisches Blockschaltbild eines Rechensystems gemäß einer bevorzugten Ausführungsform der Erfindung. Es sind zwei Computer 10, 20 veranschaulicht, die über ein Verbindungsglied 30 durch jeweilige Modems 18, 28 kommunizieren. Jeder Computer 10, 20 wird durch einen jeweiligen Benutzer 2, 2' betrieben. Daten werden auf jeweiligen Platten 15, 25 gespeichert.
- Gemäß einer bevorzugten Ausführungsform der Erfindung lässt jeder Computer 10, 20 einen jeweiligen Datenzuordner bzw. -kodierer 50, 50' ablaufen. Jeder Datenzuordner bzw. -kodierer 50, 50' umfasst einen jeweiligen Encoder 52, 52' für das Komprimieren von Daten und einen jeweiligen Dekodierer 54, 54' für das Dekomprimieren von Daten. Der Datenzuordner bzw. -kodierer 50, 50' kommuniziert mit dem Modem 18, 28, um Daten für die Übertragung über das Verbindungsglied 30 zu kodieren und um von dem Verbindungsglied 30 empfangene Daten zu dekodieren. Der Datenzuordner bzw. -kodierer 50, 50' kann auch Daten für das Speichern auf der Platte 15, 25 kodieren und die von der Platte 15, 25 gelesenen gespeicherten Daten- dekodieren.
- In einer bevorzugten Ausführungsform der Erfindung ist der Zuordner bzw. Kodierer 50 innerhalb eines Rechensystems integriert bzw. eingebaut. Der Zuordner bzw. Kodierer 50 kann ein ausführbares Softwareprogramm oder ein Hardwaremodul sein. In jedem Fall ist der Zuordner bzw. Kodierer 50 in einem maschinenlesbaren Medium ausgeführt, wie magnetische oder optische Speicherung, oder direkt in eine bzw. einer Schaltungseinrichtung hergestellt. Ein bevorzugte Ausführungsformen der Erfindung verkörperndes Computerprogramm wird vorzugsweise auf einem magnetischen Speichermedium (z. B. Festplatte, Floppydisk oder Band) oder auf einem optischen Speichermedium (z. B. CD-ROM) vertrieben.
- Insbesondere umfassen bevorzugte Ausführungsformen der Erfindung ein Verfahren zum Sortieren von Daten, welches Datenposten zusammenbringt, die in einer ähnlichen bzw. gleichartigen Umgebung (dem "Kontext") auftreten. Dieses Aufzeichnen ("Transformation") des Datenblocks ermöglicht es, ihn effizienter unter Verwendung von bekannten Kompressionsalgorithmen zu komprimieren. Die Kontexte können "intern" sein, was bedeutet, dass sie durch die anderen Bytes in dem Datenblock, der kodiert wird, hergestellt sein können. Die Kontexte können auch "extern" sein, was bedeutet, dass sie als Daten vorgesehen sein können, die sowohl dem Kodierer bzw. Encoder 52 als auch dem Dekodierer 54 bekannt sind.
- Fig. 2 ist ein Blockschaltbild eines interne Kontexte nutzenden Kodierers bzw. Encoders 52 gemäß einer bevorzugten Ausführungsform der Erfindung. Ein Ursprungsdatenblock 105 wird mittels einer Transformationsfunktion 110 entweder unter Verwendung der Burrows- Wheeler-Transformation (BWT) des Standes der Technik oder einer unten beschriebenen Transformation verarbeitet. Es wird ein Start- bzw. Beginnindex 115 gespeichert, weicher zum Umkehren der Transformation benötigt wird. Die transformierten Daten werden dann durch eine Kompressionstransformationsdatenfunktion 120 unter Verwendung von irgendeinem geeigneten Kompressionsverfahren komprimiert. Zwei- oder mehrstufiges arithmetisches Kodieren unter Verwendung eines Caches und zweier Spezialsymbole für die binäre Repräsentation einer Wiederholungszählung waren brauchbar. Die kodierten Daten 125 umfassen die komprimierten Transformationsdaten und den Startindex 115.
- Fig. 3 ist ein Blockschaltbild eines interne Kontexte benutzenden Dekodierers 54 gemäß einer bevorzugten Ausführungsform der Erfindung. Um den Ursprungsdatenblock 105 wieder zu gewinnen, wird der Kompressionsalgorithmus 120 (Fig. 2) umgekehrt. Der Startindex 115 wird von den kodierten Daten 125 abgetrennt. Die übrigen Daten werden dann durch einen Dekomprimierer 150 dekomprimiert. Die resultierenden dekodierten Daten und der Startindex 115 werden dann mittels einer inversen Transformationsfunktion 155 verarbeitet, welches das Dekodieren vollendet und einen dekodierten Datenblock 105' hervorbringt, der identisch mit dem Ursprungsdatenblock 105 ist.
- Die Differenz zwischen bevorzugten Ausführungsformen der Erfindung und der BWT ist die Transformation 110 (Fig. 2) und die inverse Transformation 155 (Fig. 3). Die Transformation gemäß der vorliegenden Erfindung und die Differenzen gegenüber der BWT werden vollständiger in dem folgenden Beispiel beschrieben.
- Die Fig. 4A-4B veranschaulichen ein Verfahren des Sortierens für die Kompression unter Verwendung von internen Kontexten. Wie in Fig. 4A veranschaulicht ist, verwendet das Beispiel Rang 2, Text "abracadabra", Alphabet {"a", "b", "c", "d", "r"}. Der Ursprungsdatenblock 105 sind daher die geordneten Buchstaben:
- a b r a c a d a b r a
- Von jedem Buchstaben in dem Ursprungsdatenblock 105 wird bestimmt, dass die vorherigen beiden Buchstaben 107 sind:
- ra aa ab br ra ac ca ad da ab br
- Jeder Buchstabe in dem Ursprungsdatenblock 105 wird auch einer jeweiligen Textposition oder einem Index 109 in dem Ursprungsdatenblock 105 zugeordnet. Weil elf Buchstaben vorhanden sind, gibt es elf Textpositionen 107 (1-11), wie dargestellt.
- Die Buchstaben werden dann durch die vorherigen Buchstaben sortiert, wie in Fig. 4B veranschaulicht ist. Der Sortierer schaut zunächst nach dem unmittelbar vorhergehenden Buchstaben, und wenn sie gleich sind, vergleicht er den nächsten vorherigen Buchstaben.
- Wenn zwei Buchstaben den gleichen Kontext haben, werden sie in der Reihenfolge aufgelistet, in der sie in dem Ursprungsdatenblock erscheinen.
- Die resultierenden sortierten Buchstaben 112 sind:
- b d b a c r r a a a a
- Für jeden Buchstaben werden die vorherigen Buchstaben 107' und die Textposition 109' von dem Ursprungsdatenblock 105 festgehalten. Der sortierte Text "bdbacrraaaa" kann nun durch die Kompressionstransformationsdatenfunktion 120 (Fig. 2) komprimiert werden.
- Bei größeren Blöcken und höherem Rang (für Text angenähert 4 bis 6) erscheinen Blöcke wie jene bei der Vollsortierung der BWT. Zum Beispiel werden die Buchstaben "sor" oft durch den Buchstaben "t" auf dieser Seite gefolgt.
- Wenn man die BWT verwendet, wäre es notwendig, die Kontexte "dabra" und "aabra" zu betrachten, um die Sortierordnung von a(1) und c(5) zu bestimmen. In einigen Fällen (z. B. 1000 Null-Bytes) kann der Kontext sehr groß werden, bevor eine Sortierordnung bzw. -reihenfolge hergestellt werden kann. Der Nachteil wird vermieden, indem man bevorzugte Kompressionsverfahren, wie unten beschrieben, verwendet.
- Die Fig. 5A-5B veranschaulichen ein Verfahren des Entsortierens des sortierten Textes der Fig. 4B für die Dekompression unter Verwendung von internen Kontexten. Nach der Dekodierung ist die Sequenz des dekodierten Textes 112' bekannt. Es ist außerdem bekannt, dass die denselben vorhergehenden Buchstaben in einer Reihenfolge sortiert waren, und diese Sequenz 151 kann aus dem dekodierten Text unter Verwendung eines Sortier- oder Zählverfahrens, gleichartig bzw. ähnlich der inversen BWT, erzeugt werden, welches zu der Sequenz "aaaaabbcdrr" zurückkehrt. Diese Buchstaben 151 sind die Vorgänger von jedem der Buchstaben in dem dekodierten Text 112'.
- Da die Prozessorsortiersequenz 151 das Kontextbyte unmittelbar vordem sortierten Textposten ist, können sie mit dem dekodierten Text 112' kombiniert werden, um Paare von Buchstaben 152 zu erfahren.
- Jedes dieser Paare von Buchstaben ist außerdem der Kontext für einen der Buchstaben in dem dekodierten Text. Diese Paare 152 werden dann zunächst durch das letzte Zeichen sortiert, wie es beim Kodieren getan wurde, was eine Sortierordnung bzw. -reihenfolge 153 in der gleichen Ordnung bzw. Reihenfolge wie der dekodierte Text 107' (Fig. 4B) hervorbringt. Ein Sequenzindex 154 wird dann den sortierten Paaren 153 zugeordnet.
- Die Ordnung bzw. Reihenfolge des Ursprungsdatenblocks kann nun, wie in Fig. 5B veranschaulicht, rekonstruiert werden. Wie bei der BWT wird die Position des ursprünglich letzten (oder ersten) Zeichens - Index 11 in diesem Fall, welcher dem Kontext "br" aus den sortieren Paaren 153 zugeordnet ist und welcher selbst der Kontext für ein "a" aus dem dekodierten Text 112 ist - sortiert. Alternativ kann der Kontext des ersten Zeichens gespeichert werden.
- Auf die eine oder die andere Art erhält man "bra" als Kontext für das erste Zeichen. Nun sucht man den ersten Kontext "ra" (Index 4) und erhält ein weiteres "a" als nächsten Buchstaben. Kontext "aa"-> b(1), Kontext "ab"-> r(6), weil der erste erscheinende Buchstabe im Fall von nichteindeutigen Kontexten zuerst in der sortierten Datei kommt, "br"-> a(10, "ra"- > c(5, da der Index 4 bereits verwendet wird), "ac"-> a(8), "ca"-> d(2), "ad"-> a(9), "da"-> b(3) und "ab"-> r(7). Auf diese Weise kann der Ursprungstext "abracadabra" 105' vollständig wiedergewonnen werden.
- In einer praktischen Ausführung wird ein Zeiger bzw. eine Marke zum Beginn von jedem Kontext in einer Hash-Tabelle gespeichert. Wenn dieser Kontext erscheint, folgt man dem Zeiger bzw. der Marke und findet die korrekte Fortsetzung. Dann wird der Zeiger bzw. die Marke um eins inkrementiert.
- Für höhere Ordnung kann die Ordnung auf diese Weise erhöht werden: die bekannten n-Buchstaben-Kombinationen werden durch den ihnen folgenden Buchstaben verlängert, wie hier die bekannten 1-Buchstaben-Kontexte, die durch Sortieren oder Zählen hergestellt worden sind, zu Zwei-Buchstaben-Kontexten verlängert wurden. Dieses führt zum Wissen von allen n+1-Buchstaben-Kombinationen des Ursprungstexts. Dieser Prozess kann wiederholt werden, bis die Kontextgröße groß genug ist.
- Es ist auch möglich, eine inverse BWT auf den sortierten Text anzuwenden - alle langen Buchstaben-Kombinationen von der Ordnung +1 werden korrekt zurückgeführt und geben demgemäss alle Kontexte des Ursprungstexts. Es könnte sein, dass die inverse BWT frühzeitig zum Ursprung zurückkehrt; wenn dieses der Fall ist, muss die inverse BWT wieder erneut mit einem neuen Index begonnen werden, bis alle Indices verwendet sind.
- Fig. 6 ist ein Blockdiagramm eines Encoders bzw. Kodierers 52 unter Verwendung von externen Kontexten gemäß einer bevorzugten Ausführungsform der Erfindung. Für jeden Posten in einem Ursprungsdatenblock 205, der kodiert werden soll, wird ein entsprechender Kontext 210 vorgesehen. Eine Transformation 215 gemäß der vorliegenden Erfindung wird dann ausgeführt, und der transformierte Datenblock wird dann durch eine Funktion zum Komprimieren der transformierten Daten 220 unter Verwendung von irgendeinem geeigneten Verfahren zu kodierten Daten 225 kodiert.
- Fig. 7 ist ein Blockschaltbild eines Dekodierers 54 unter Verwendung von externen Kontexten gemäß einer bevorzugten Ausführungsform der Erfindung. Um den Ursprungsdatenblock 205 wiederherzustellen, werden die kodierten Daten 225 zuerst durch eine Dekodiererfunktion 250 dekodiert, welche das Inverse des Algorithmus benutzt, der in der Funktion zum Komprimieren der transformierten Daten 225 benutzt wurde (Fig. 6). Um eine inverse Transformation 255 auszuführen, werden die gleichen Kontextdaten 210, die dem Encoder bzw. Kodierer 52 dargeboten wurden, als Eingangsdaten zugeführt. Dieses befähigt dazu, den Ursprungsdatenblock durch die inverse Transformation 255 als einen dekodierten Datenblock 205' wiederherzustellen, der identisch mit dem Ursprungsdatenblock 205 ist. Weitere Einzelheiten einer bevorzugten Ausführungsform der Erfindung, die externe Kontexte benutzt, werden in dem folgenden Beispiel beschrieben.
- Die Fig. 8A-8D veranschaulichen ein Verfahren, das in Situationen verwendet wird, in denen die Kontexte für jeden zu kodierenden Datenposten als Eingangsdaten zugeführt werden, die sowohl dem Encoder bzw. Kodierer als auch dem Dekodierer bekannt sind. Wie in dem obigen Beispiel sortiert das Verfahren die Datenposten gemäß den Kontexten, und wenn die Kontexte gleich sind, wird die Position in dem Ursprungsdatenblock als ein sekundärer Sortierschlüssel verwendet. Ein Beispiel dieser Art von Anwendung ist das für das Kodieren von Bilddaten unter Verwendung einer Binärpyramide.
- Wie in Fig. 8A veranschaulicht ist, wird jedem Pixel 300 eine Kennzeichnung zugeordnet, hier "A", "b", "c", "d" und "e". Wie in Fig. 8B veranschaulicht ist, wird das zu kodierende Bild in kleine Quadrate 305 unterteilt (hier sind die Kanten vier Pixellängen lang), und die Ecken werden mit "A" gekennzeichnet und zuerst verarbeitet. Dann werden die Zentren dieser kleinen Quadrate (mit "b" gekennzeichnet) verarbeitet. Wie in Fig. 8C veranschaulicht ist, ergeben die mit "A" und "b" gekennzeichneten Pixel zusammen kleinere Quadrate 310, die so gedreht sind, dass sie auf einer Ecke stehen. Die Mittelpunkte dieser kleineren Quadrate (mit "c" gekennzeichnet) sind als nächstes zu verarbeiten. Wie in Fig. 8D veranschaulicht ist, bilden die mit "A", "b" und "c" gekennzeichneten Pixel zusammen noch kleinere Quadrate 315 mit einer Kantengröße von zwei Pixellängen. Die Mittelpunkte jener Quadrate (mit "d" gekennzeichnet) kommen als nächstes. Dieses wird fortgesetzt, bis alle Pixel verarbeitet sind. Die anfängliche Quadratgröße kann größer als die in diesem Beispiel verwendeten vier Pixel sein, und die Verarbeitung wäre die gleiche, ausgenommen die Zunahme in der Anzahl von Niveaus (f, g, h, ...) gegenüber den fünf (A ... e), die hier benutzt wurden.
- Das Kodieren des Bilds kann als fünf separate Blöcke ausgeführt werden. Der erste enthält alle die mit "A" gekennzeichneten Pixel, der zweite enthält die mit "b" gekennzeichneten Pixel, gefolgt von den mit "c", "d" und "e" gekennzeichneten Pixeln. Wenn der Block der mit "A" gekennzeichneten Pixel kodiert wird, sind keine anderen Kontextdaten bekannt, so dass die mit "A" gekennzeichneten Pixel unter Verwendung eines Verfahrens kodiert werden müssen, das keine externen Kontexte erfordert. Es könnte das durch die Fig. 4A-4B veranschaulichte Verfahren oder irgendein anderes Verfahren benutzt werden. Das Verfahren gemäß einer bevorzugten Ausführungsform der Erfindung wird zum Verarbeiten der mit "b" gekennzeichneten Pixel und der nachfolgenden Niveaus verwendet.
- Jedes mit "b" gekennzeichnete Pixel hat einen Kontext, der durch die vier mit "A" gekennzeichneten Pixel an seinen Ecken bestimmt wird. Da die mit "A" gekennzeichneten Pixel vorher kodiert wurden, sind sie dem Dekodierer bekannt, wenn er die mit "b" gekennzeichneten Pixel dekodiert. Die mit "b" gekennzeichneten Pixel sind der Ursprungsdatenblock 205 (Fig. 6), und die Kontexte, welche durch die mit "A" gekennzeichneten Pixel für jedes mit "b" gekennzeichnete Pixel gebildet sind, sind die Kontextdaten 210. Wenn jeder Kontext aus vier Bytes besteht, wie wenn vier mit "A" gekennzeichnete Acht-Bit-Pixel zu einem 32-Bit-Wort verkettet werden, ist die Transformation 215 eine Sortierung vierter Ordnung, wie in der zweiten Ausführung unten gezeigt ist. Wenn die Transformation einmal geschehen ist, kann der gleiche Kodieralgorithmus für die Kodiertransformationsdatenfunktion 225, wie er oben benutzt wurde, benutzt werden. Nachdem die mit "b" gekennzeichneten Pixel kodiert worden sind, können die mit "A" und "b" gekennzeichneten Pixel als die Kontexte zum Transformieren der mit "c" gekennzeichneten Pixel verwendet werden. Dieser Prozess wird fortgesetzt, bis alle Niveaus verarbeitet worden sind.
- Es sind viele Abwandlungen möglich. Anstelle der Verwendung der Pixelwerte als der Ursprungsdatenblock 205 können die Daten Fehler gegenüber vorhergesagten Werten enthalten. In diesem Fall würden die Kontexte nicht direkt durch Verketten der mit "A" gekennzeichneten Roheckenpixel gebildet werden, sondern sie würden vielmehr aus einer von jenen mit "A" gekennzeichneten Pixeln synthetisierten Fehlerschätzfunktion bestehen. Derartige Abwandlungen beeinträchtigen nicht bevorzugte Verfahren der vorliegenden Erfindung, da die Sortierung der Daten gemäß den Kontexten noch in der gleichen Art und Weise ausgeführt würde.
- Dieses Beispiel demonstriert, wie die Kombination einer Sortierung mit endlichem Kontext, gefolgt von einer Sortierung-durch-Position, als eine Lösung für einen weiten Bereich von Anwendungen in der Datenkompression benutzt werden kann, um gleichartige bzw. ähnliche Kontexte zusammenzubringen. Es sei beachtet, dass das Aufnehmen einer eindeutigen Position in einem Sortierschlüssel äquivalent dem hier beschriebenen Verfahren ist - er wird gerade Teil des primären Schlüssels anstatt dass er ein sekundärer Schlüssel ist oder implizit als solcher gehandhabt wird, wie in der folgenden ersten Ausführung. Dieses gilt, selbst wenn der so konstruierte Schlüssel einen unendlichen Kontext benutzt, weil jeder Vergleich an der eindeutigen Position stoppen wird.
- Vier beispielhafte Ausführungen werden unten angegeben. Die ersten drei Ausführungen benutzen einen Rang 2 (zwei Byte)-Kontext, welcher es ermöglicht, die in dem Verfahren benutzten Zähler unter Verwendung von einfachen Anordnungen bzw. Gruppierungen zu handhaben, und welcher dann die Benutzung der Blockposition als sekundärer Sortierschlüssel ermöglicht, die bzw. der äußerst einfach zu verstehen ist. Die erste Ausführung beschreibt einen Encoder bzw. Kodierer, der sowohl für interne als auch externe Kontexte verwendet werden kann. Die zweite Ausführung beschreibt einen Dekodierer für externe Kontexte. Die dritte Ausführung beschreibt einen Dekodierer für interne Kontexte. Die vierte Ausführung beschreibt einen Encoder bzw. Kodierer, der interne Kontexte benutzt, welcher höhere Ordnungen handhaben kann und welcher die Radixsortierung benutzt.
- Bevorzugte Ausführungsformen der Erfindung benutzen Zähler zum Bestimmen der Frequenz von jedem Kontext und dann zum Bestimmen seiner Position in dem sortierten Datenblock. Dieses wird mit Bezug auf eine erste, zweite und dritte Ausführung unten beschrieben. Diese bevorzugte Ausführung sieht drei Zählerfunktionen vor:
- InitCounters - setzt den Zählerwert auf Null
- GetAndIncrement - gewinnt den Zählerwert, der einem Kontext zugeordnet ist, zurück und nachinkrementiert denselben
- AddCounters - ersetzt jeden Zählerwert durch eine Summe von vorherigen Zählerwerten
- Die erste, zweite und dritte Ausführung führen diese Funktionen für Rang 2 (Zwei- Byte-Kontext) aus, welche die Benutzung einer einfachen Gruppierung bzw. Anordnung ermöglicht, die einen Zähler [i]-Wert für jeden möglichen Kontext i vorsieht. Bei höheren Ordnungen mag eine Anordnung bzw. Gruppierung, die alle möglichen Kontexte repräsentiert, nicht praktisch sein, und die einfache Anordnung bzw. Gruppierung kann durch einen Trie, einen Baum, eine Hash-Tabelle oder eine andere Möglichkeit ersetzt sein. Beachte, dass Bäume und Tries in der Reihenfolge durchlaufen werden können, die für AddCounters benötigt wird, wohingegen die Kontexte sortiert werden, wenn eine Hash-Tabelle benutzt wird. Ein Prototyp-Pseudo-Code-Fragment zur Implementierung von Zählern gemäß einer bevorzugten Ausführungsform der Erfindung für Ordnung 2 ist wie folgt:
- Fig. 9 ist ein Ablaufdiagramm eines bevorzugten Verfahrens für das Ausführen einer Transformationsfunktion. Das Verfahren 400 wird für die Transformationsfunktionen 110 (Fig. 2), 215 (Fig. 6) für interne und externe Kontexte verwendet, die bei Kompression benutzt werden. Im Schritt 405 werden Datenvariable initialisiert. Im Schritt 410 wird der Ursprungsdatenblock gelesen. Im Schritt 415 wird die Häufigkeit des Auftretens von jedem Kontext in dem Datenblock berechnet. Im Schritt 420 wird die Position des ersten Falls von jedem Kontext in dem Datenblock berechnet. Im Schritt 425 werden die Daten von dem Datenblock durch Kontext sortiert.
- Im Schritt 430 wird eine Prüfung durchgeführt, um zu bestimmen, ob interne Kontexte verwendet werden. Wenn das so ist, dann wird der Index des letzten Elements in den sortierten Daten im Schritt 435 gespeichert.
- Eine Prototyp-Pseudo-Code-Fragment-Implementierung des Ablaufdiagramms der Fig. 9 wird unten gegeben. Es wird angenommen, dass eine Funktion context(i) existiert, die den Kontext von jedem Symbol in dem zu verarbeitenden Block gibt. Für interne Kontexte gibt diese Funktion die vorherigen vier Bytes im Block zurück. Dieses Beispiel benutzt eine Bucket- bzw. Speicherbereichssortierung, um die Relation zu dem Dekodierer besser zu zeigen. Die Posten werden durch den Wert bzw. mittels des Werts ihres Kontexts sortiert.
- Fig. 10 ist ein Ablaufdiagramm eines bevorzugten Verfahrens einer inversen Transformationsfunktion. Das Verfahren 500 ist auf die inverse Transformation 250 (Fig. 7) anwendbar, die für externe Kontexte bei der Dekompression benutzt wird. Im Schritt 505 werden Datenvariable initialisiert. Im Schritt 510 wird der dekomprimierte Datenblock gelesen. Im Schritt 515 wird die Häufigkeit des Auftretens von jedem Kontext in dem Datenblock berechnet. Im Schritt 520 wird die Position des ersten Falls von jedem Kontext in dem Datenblock berechnet. Im Schritt 525 werden die Daten entsortiert.
- Eine Prototyp-Pseudo-Code-Fragment-Implementierung des Ablaufdiagramms der Fig. 10 wird unten gegeben. Es wird angenommen, dass eine Funktion context(i) existiert, die den Kontext von jedem Symbol in dem zu verarbeitenden Block gibt. Beachte, dass bei externen Kontexten alle Kontexte 210 (Fig. 6-7) bereits bekannt sind, so dass diese Funktion definiert ist.
- Fig. 11 ist ein Ablaufdiagramm eines bevorzugten Verfahrens einer anderen inversen Transformationsfunktion. Das Verfahren 600 ist auf die inverse Transformation 155 (Fig. 3) für interne Kontexte, die bei der Dekompression benutzt werden, anwendbar. Im Schritt 605 werden Datenvariable initialisiert. Im Schritt 610 werden Zeichenzähler von einer Eingangsanordnung bzw. -gruppierung berechnet, die den dekodierten Datenblock hat. Im Schritt 615 wird ein Transpositionsvektor aus den Zeichenanzahlen berechnet. Im Schritt 620 werden Ordnung 2-Kontextanzahlen aus der Eingangsanordnung bzw. -gruppierung und dem Transpositionsvektor berechnet. Im Schritt 625 werden Datenwerte, die jedem Kontext zugeordnet sind, in eine Outputanordnung bzw. -gruppierung geschrieben, welche die entsortierte Eingangsanordnung bzw. -gruppierung ist. Ein Prototyp-Pseudo-Code-Fragment für die Implementierung des Verfahrens der Fig. 11 ist wie folgt:
- Fig. 12 ist ein Ablaufdiagramm eines Verfahrens höheren Rangs für eine Transformationsfunktion. Das Verfahren 700 kann als eine Transformation 110 (Fig. 2) höheren Rangs für interne Kontexte angewandt werden. Eine speziell bevorzugte Ausführung der Transformation unterstützt 6-Byte-Kontexte und benutzt eine Radixsortierung, um schnelle Kodiergeschwindigkeiten zu erreichen. Sie sortiert die Daten in drei Durchgängen unter Verwendung von zwei Bytes von dem Kontext in jedem Durchgang.
- Im Schritt 705 werden, wie oben, Datenvariable initialisiert. Im Schritt 710 wird jeder Kontext, wie oben, gezählt. Im Schritt 715 werden, wie oben, alle kleineren Kontexte unabhängig von dem Systemende summiert.
- Im Schritt 720 beginnt eine Schleife, um mehrere Durchläufe des Sortierens zu verarbeiten. Im Schritt 720 wird ein Schleifenindex inkrementiert. Im Schritt 725 wird die Sortierung für den gegenwärtigen Durchlauf durchgeführt. Im Schritt 730 kann die Schleife zum Schritt 720 für einen anderen Durchlauf oder eine andere Verarbeitung zurückzukehren.
- Bevorzugte Ausführungsformen der Erfindung können leicht in Hardware implementiert werden, indem Variable durch Speicherung, Schleifen durch Zähler und Indices durch Speicherauslesungen, wo der Index zu den Adressenverbindern geschickt wird, ersetzt werden.
- Es gibt Optimierungen, die durch Hardwareimplementierungen ausgenutzt werden können. Zum Beispiel macht es Sinn, einige Bytes in einem schnellen statischen Ram zu sammeln und sie dann als ein Block zu einem langsamen dynamischen Ram zu übertragen. Es ist auch möglich, Überlappung bzw. Pipelining leicht einzuführen; ein Block wird nachverarbeitet, einige andere sind in anderen bzw. unterschiedlichen Sortierstadien oder werden vorverarbeitet/gezählt. Da irgendein Zwischenstadium möglich ist (CPU + ROM-Programm - Hardware oder Software), versteht es sich, dass alle solche Kombinationen innerhalb des Bereichs der Erfindung sind. Ein Prototyp-Pseudo-Code-Fragment ist wie folgt:
- Obwohl die Erfindung speziell unter Bezugnahme auf bevorzugte Ausführungsformen derselben gezeigt und beschrieben worden ist, versteht es sich für den Fachmann, dass verschiedene Änderungen in der Form und in den Einzelheiten durchgeführt werden können, ohne den Bereich der Erfindung zu verlassen, wie er durch die beigefügten Ansprüche definiert ist. Obwohl z. B. die Erfindung unter Bezugnahme auf spezielle Hardware- und Softwareausführungsformen beschrieben worden ist, versteht es sich, dass verschiedene Aspekte der Erfindung entweder in Hardware, Software oder Firmware ausgeführt werden können.
- Es ist beabsichtigt, dass diese und alle anderen Äquivalente von den folgenden Ansprüchen umfasst sind.
Claims (12)
1. Verfahren zum Sortieren und Komprimieren eines
Ursprungsdatenblocks (105), bestehend aus einer Mehrzahl von
Datenwerten, umfassend die Schritte des:
(a) Verwendens eines Kontexts, wobei jeder Datenwert
innerhalb des Ursprungsdatenblocks (105) einen Kontext hat,
wobei der Kontext der primäre Sortiertschlüssel ist;
(b) Sortierens der Datenwerte gemäß dem primären
Sortierschlüssel (107); und
(c) Komprimierens des sortierten Ursprungsdatenblocks zu
einem komprimierten Datenblock,
dadurch gekennzeichnet, dass
(d) der primäre Sortierschlüssel von fester, vorbestimmter
Länge ist;
(e) ein sekundärer Sortierschlüssel aus der Position der
Daten innerhalb des Ursprungsdatenblocks (105) abgeleitet
wird; und
(f) für Datenwerte, deren primärer Sortierschlüssel (107)
der gleiche ist, die Daten gemäß dem sekundären
Sortierschlüssel, vorzugsweise unter impliziter Verwendung des
sekundären Sortierschlüssels, sortiert werden.
2. Verfahren nach Anspruch 1, worin der Kontext ein
interner Kontext ist, welcher aus dem Ursprungsdatenblock (105)
ableitbar ist.
3. Verfahren nach Anspruch 1, worin der Kontext ein
externer Kontext ist, welcher unabhängig von dem
Ursprungsdatenblock vorgesehen wird.
4. Verfahren nach Anspruch 1, 2 oder 3, worin der Schritt
(b) das Anwenden einer Radix- bzw. Digitalsortierung umfasst.
5. Verfahren zum Sortieren, Komprimieren, Dekomprimieren
und Wiederherstellen eines Ursprungsdatenblocks (105),
umfassend die Schritte:
- (a) bis (f) gemäß Anspruch 1,
(g) - Dekomprimieren des komprimierten Datenblocks (125)
zu dem sortierten Ursprungsdatenblock,
(h) - Wiederherstellen des Ursprungsdatenblocks (105')
aus dem dekomprimierten sortierten
Ursprungsdatenblock.
6. Verfahren nach Anspruch 5, worin der Schritt (h) des
Wiederherstellens das Berechnen eines Transpositionsvektors
(615) umfasst, welcher aus der Burrows-Wheeler-Transformation
abgeleitet ist.
7. Einrichtung zum Sortieren und Komprimieren eines
Ursprungsdatenblocks (105), bestehend aus einer Mehrzahl von
Datenwerten, worin
(a) ein Kontext verwendet wird, wobei jeder Datenwert
innerhalb des Ursprungsdatenblocks (105) einen Kontext hat,
wobei der Kontext der primäre Sortierschlüssel ist;
umfassend:
(b) ein Sortiermittel, welches die Datenwerte gemäß dem
primären Sortierschlüssel (107) sortiert; und
(c) ein Komprimiermittel zum Komprimieren des sortierten
Ursprungsdatenblocks zu einem komprimierten Datenblock,
dadurch gekennzeichnet, dass
(d) der primäre Sortierschlüssel von fester, vorbestimmter
Länge ist;
(e) ein sekundärer Sortierschlüssel aus der Position der
Daten innerhalb des Ursprungsdatenblocks (105) abgeleitet
wird; und
(f) für Datenwerte, deren primärer Sortierschlüssel (107)
der gleiche ist, das Sortiermittel die Daten gemäß dem
sekundären Sortierschlüssel, vorzugsweise unter
impliziter Verwendung des sekundären Sortierschlüssels,
sortiert.
8. Einrichtung nach Anspruch 7, worin der Kontext ein
interner Kontext ist, welcher aus dem Ursprungsdatenblock(105)
ableitbar ist.
9. Einrichtung nach Anspruch 7, worin der Kontext ein
externer Kontext ist, welcher unabhängig von dem
Ursprungsdatenblock (105) vorgesehen ist.
10. Einrichtung nach Anspruch 7, 8 oder 9, worin das
Sortiermittel eine Radix- bzw. Digitalsortierung anwendet.
11. Einrichtung zum Sortieren, Komprimieren, Dekomprimieren
und Wiederherstellen eines Ursprungsdatenblocks (105),
umfassend:
- die Einrichtung gemäß Anspruch 7, weiter umfassend:
(g) - ein Dekomprimiermittel zum Dekomprimieren des
komprimierten Datenblocks (125) zu dem sortierten
Ursprungsdatenblock; und
(h) - ein Wiederherstellungsmittel zum Wiederherstellen
des Ursprungsdatenblocks (105') aus dem
dekomprimierten sortierten Ursprungsdatenblock.
12. Einrichtung nach Anspruch 11, worin das
Wiederherstellungsmittel einen Transpositionsvektor (615) berechnet,
welcher aus der Burrows-Wheeler-Transformation abgeleitet ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AT200196 | 1996-11-15 | ||
PCT/EP1997/006356 WO1998023038A1 (en) | 1996-11-15 | 1997-11-14 | Computer sorting system for data compression |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69706439D1 DE69706439D1 (de) | 2001-10-04 |
DE69706439T2 true DE69706439T2 (de) | 2002-06-06 |
Family
ID=3525692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69706439T Expired - Fee Related DE69706439T2 (de) | 1996-11-15 | 1997-11-14 | Rechnersortiersystem zur datenkompression |
Country Status (7)
Country | Link |
---|---|
US (1) | US6199064B1 (de) |
EP (1) | EP0951753B1 (de) |
AT (1) | ATE205029T1 (de) |
AU (1) | AU5321998A (de) |
CA (1) | CA2270472A1 (de) |
DE (1) | DE69706439T2 (de) |
WO (1) | WO1998023038A1 (de) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19839847A1 (de) * | 1998-09-02 | 2000-03-09 | Ibm | Speichern von Datenobjekten im Speicher einer Chipkarte |
US6496830B1 (en) | 1999-06-11 | 2002-12-17 | Oracle Corp. | Implementing descending indexes with a descend function |
US6434560B1 (en) * | 1999-07-19 | 2002-08-13 | International Business Machines Corporation | Method for accelerated sorting based on data format |
US6751624B2 (en) * | 2000-04-04 | 2004-06-15 | Globalscape, Inc. | Method and system for conducting a full text search on a client system by a server system |
JP2001357048A (ja) * | 2000-06-13 | 2001-12-26 | Hitachi Ltd | ブロックソート圧縮データの検索方法、および検索に適したブロックソート圧縮法の符号化方法 |
US6681224B2 (en) * | 2000-07-31 | 2004-01-20 | Fujitsu Limited | Method and device for sorting data, and a computer product |
US20030126130A1 (en) * | 2001-12-31 | 2003-07-03 | Koninklijke Philips Electronics N.V. | Sort slider with context intuitive sort keys |
US6990552B2 (en) * | 2002-10-31 | 2006-01-24 | Mosaid Technologies, Inc. | Sorting method and apparatus using a CAM |
FR2861867A1 (fr) * | 2003-11-04 | 2005-05-06 | France Telecom | Differenciation de contexte d'utilisation dans un ordinateur de poche |
US20060179056A1 (en) * | 2005-10-12 | 2006-08-10 | Outland Research | Enhanced storage and retrieval of spatially associated information |
AU2005248949B2 (en) * | 2005-12-23 | 2010-04-01 | Canon Kabushiki Kaisha | Efficient Halftone Image Compression |
US20080243518A1 (en) * | 2006-11-16 | 2008-10-02 | Alexey Oraevsky | System And Method For Compressing And Reconstructing Audio Files |
US7796058B2 (en) * | 2007-02-12 | 2010-09-14 | Xyratex Technology Limited | Method and apparatus for data transform |
US8984025B1 (en) * | 2008-06-30 | 2015-03-17 | Symantec Corporation | Method and apparatus for processing a transform function, a reference file and parameter information that represent a data file |
AU2012272161B2 (en) | 2011-06-21 | 2015-12-24 | Illumina Cambridge Limited | Methods and systems for data analysis |
US8799269B2 (en) | 2012-01-03 | 2014-08-05 | International Business Machines Corporation | Optimizing map/reduce searches by using synthetic events |
US9170757B1 (en) * | 2012-06-08 | 2015-10-27 | Violon Memory Inc. | Optimization of raid group storage |
US8898165B2 (en) | 2012-07-02 | 2014-11-25 | International Business Machines Corporation | Identification of null sets in a context-based electronic document search |
US8903813B2 (en) | 2012-07-02 | 2014-12-02 | International Business Machines Corporation | Context-based electronic document search using a synthetic event |
US9460200B2 (en) | 2012-07-02 | 2016-10-04 | International Business Machines Corporation | Activity recommendation based on a context-based electronic files search |
US9262499B2 (en) | 2012-08-08 | 2016-02-16 | International Business Machines Corporation | Context-based graphical database |
US8676857B1 (en) | 2012-08-23 | 2014-03-18 | International Business Machines Corporation | Context-based search for a data store related to a graph node |
US8959119B2 (en) | 2012-08-27 | 2015-02-17 | International Business Machines Corporation | Context-based graph-relational intersect derived database |
US8620958B1 (en) | 2012-09-11 | 2013-12-31 | International Business Machines Corporation | Dimensionally constrained synthetic context objects database |
US9619580B2 (en) | 2012-09-11 | 2017-04-11 | International Business Machines Corporation | Generation of synthetic context objects |
US9251237B2 (en) | 2012-09-11 | 2016-02-02 | International Business Machines Corporation | User-specific synthetic context object matching |
US9223846B2 (en) | 2012-09-18 | 2015-12-29 | International Business Machines Corporation | Context-based navigation through a database |
US8782777B2 (en) | 2012-09-27 | 2014-07-15 | International Business Machines Corporation | Use of synthetic context-based objects to secure data stores |
US9741138B2 (en) | 2012-10-10 | 2017-08-22 | International Business Machines Corporation | Node cluster relationships in a graph database |
US8931109B2 (en) | 2012-11-19 | 2015-01-06 | International Business Machines Corporation | Context-based security screening for accessing data |
US9229932B2 (en) | 2013-01-02 | 2016-01-05 | International Business Machines Corporation | Conformed dimensional data gravity wells |
US8983981B2 (en) | 2013-01-02 | 2015-03-17 | International Business Machines Corporation | Conformed dimensional and context-based data gravity wells |
US8914413B2 (en) | 2013-01-02 | 2014-12-16 | International Business Machines Corporation | Context-based data gravity wells |
US8856946B2 (en) | 2013-01-31 | 2014-10-07 | International Business Machines Corporation | Security filter for context-based data gravity wells |
US9069752B2 (en) | 2013-01-31 | 2015-06-30 | International Business Machines Corporation | Measuring and displaying facets in context-based conformed dimensional data gravity wells |
US9053102B2 (en) | 2013-01-31 | 2015-06-09 | International Business Machines Corporation | Generation of synthetic context frameworks for dimensionally constrained hierarchical synthetic context-based objects |
US9110722B2 (en) | 2013-02-28 | 2015-08-18 | International Business Machines Corporation | Data processing work allocation |
US9292506B2 (en) | 2013-02-28 | 2016-03-22 | International Business Machines Corporation | Dynamic generation of demonstrative aids for a meeting |
US10152526B2 (en) | 2013-04-11 | 2018-12-11 | International Business Machines Corporation | Generation of synthetic context objects using bounded context objects |
US9195608B2 (en) | 2013-05-17 | 2015-11-24 | International Business Machines Corporation | Stored data analysis |
US9348794B2 (en) | 2013-05-17 | 2016-05-24 | International Business Machines Corporation | Population of context-based data gravity wells |
US9971838B2 (en) | 2015-02-20 | 2018-05-15 | International Business Machines Corporation | Mitigating subjectively disturbing content through the use of context-based data gravity wells |
US11256862B2 (en) | 2018-10-23 | 2022-02-22 | International Business Machines Corporation | Cognitive collation configuration for enhancing multilingual data governance and management |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3611316A (en) * | 1969-12-24 | 1971-10-05 | Ibm | Indirect indexed searching and sorting |
US4862167A (en) * | 1987-02-24 | 1989-08-29 | Hayes Microcomputer Products, Inc. | Adaptive data compression method and apparatus |
GB8815978D0 (en) * | 1988-07-05 | 1988-08-10 | British Telecomm | Method & apparatus for encoding decoding & transmitting data in compressed form |
US5274805A (en) * | 1990-01-19 | 1993-12-28 | Amalgamated Software Of North America, Inc. | Method of sorting and compressing data |
US5150430A (en) * | 1991-03-15 | 1992-09-22 | The Board Of Trustees Of The Leland Stanford Junior University | Lossless data compression circuit and method |
US5396622A (en) * | 1991-12-23 | 1995-03-07 | International Business Machines Corporation | Efficient radix sorting system employing a dynamic branch table |
EP0551691A1 (de) * | 1992-01-15 | 1993-07-21 | International Business Machines Corporation | Sortierverfahren |
US5530854A (en) * | 1992-09-25 | 1996-06-25 | At&T Corp | Shared tuple method and system for generating keys to access a database |
US5551018A (en) * | 1993-02-02 | 1996-08-27 | Borland International, Inc. | Method of storing national language support text by presorting followed by insertion sorting |
US5394143A (en) * | 1993-06-30 | 1995-02-28 | Digital Equipment Corporation | Run-length compression of index keys |
US5842208A (en) * | 1997-04-09 | 1998-11-24 | International Business Machines Corporation | High performance recover/build index system by unloading database files in parallel |
US6075470A (en) * | 1998-02-26 | 2000-06-13 | Research In Motion Limited | Block-wise adaptive statistical data compressor |
-
1997
- 1997-11-14 EP EP97950189A patent/EP0951753B1/de not_active Expired - Lifetime
- 1997-11-14 AU AU53219/98A patent/AU5321998A/en not_active Abandoned
- 1997-11-14 AT AT97950189T patent/ATE205029T1/de not_active IP Right Cessation
- 1997-11-14 WO PCT/EP1997/006356 patent/WO1998023038A1/en active IP Right Grant
- 1997-11-14 US US08/970,220 patent/US6199064B1/en not_active Expired - Fee Related
- 1997-11-14 DE DE69706439T patent/DE69706439T2/de not_active Expired - Fee Related
- 1997-11-14 CA CA002270472A patent/CA2270472A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US6199064B1 (en) | 2001-03-06 |
DE69706439D1 (de) | 2001-10-04 |
EP0951753A1 (de) | 1999-10-27 |
AU5321998A (en) | 1998-06-10 |
WO1998023038A1 (en) | 1998-05-28 |
CA2270472A1 (en) | 1998-05-28 |
ATE205029T1 (de) | 2001-09-15 |
EP0951753B1 (de) | 2001-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69706439T2 (de) | Rechnersortiersystem zur datenkompression | |
DE69413347T2 (de) | Auf die Bytegrenze ausgerichtete Datenkomprimierung | |
DE69527679T2 (de) | Verfahren zur Datenkomprimierung und -Dekomprimierung | |
DE3787898T2 (de) | Verfahren und Vorrichtung zur arithmetischen Kodierung von binären Zahlen. | |
DE69027606T2 (de) | Vorrichtung zur datenkompression | |
DE10301362B4 (de) | Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche | |
DE69523652T2 (de) | Kodierungsvorrichtung | |
DE3606869C2 (de) | Vorrichtung zur Datenkompression | |
DE69732873T2 (de) | System zur Komprimierung/Dekomprimierung von Daten | |
DE69024629T2 (de) | Vorrichtung zur kompression von datenlängen und datenfolgen | |
DE69318064T2 (de) | Verfahren und Vorrichtung zur Verwaltung von mehreren Wörterbüchern zur Datenkomprimierung mit Inhaltsadressierung | |
DE19534943B4 (de) | Vorrichtung zur Komprimierung unter Verwendung von eingebetteten Kleinwellen | |
DE69229521T2 (de) | Datenbankauffindungssystem | |
DE19606178C2 (de) | Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz | |
DE69510662T2 (de) | Kompakte Quellencodierungstabellen für Codierungs-/Decodierungssystem | |
DE69425847T2 (de) | Rechner für die inverse diskrete Cosinus-Transformation | |
DE3852341T2 (de) | Zeichenverarbeitungssystem mit Funktion zur Prüfung von Rechtschreibung. | |
DE69802520T2 (de) | Verfahren und vorrichtung zur verlustfreien datenkompression | |
DE69527883T2 (de) | Decodierung eines Huffman Codes mit MSB und LSB Tabellen | |
DE19622045A1 (de) | Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist | |
DE69421286T2 (de) | Verfahren zur durchführung von schnellen diskreten kosinustransformationen und schnellen inversen diskreten kosinustransformationen unter verwendung von nachschlagetabellen | |
DE3750390T2 (de) | Simultane Fehlererkennung bei der Kodierung durch arithmetische Datenkodierung. | |
DE68918590T2 (de) | Gerät zur dekodierung von mit variabler länge kodierten daten. | |
DE3751372T2 (de) | Verfahren der arithmetischen Kodierung zur Kodierung- und Dekodierung. | |
EP0479787B1 (de) | Verfahren zur codierung einer elementfolge und einrichtung zur durchführung des verfahrens |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |