DE112012005557T5 - Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden - Google Patents

Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden Download PDF

Info

Publication number
DE112012005557T5
DE112012005557T5 DE112012005557.8T DE112012005557T DE112012005557T5 DE 112012005557 T5 DE112012005557 T5 DE 112012005557T5 DE 112012005557 T DE112012005557 T DE 112012005557T DE 112012005557 T5 DE112012005557 T5 DE 112012005557T5
Authority
DE
Germany
Prior art keywords
words
symbols
code alphabet
code
length
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.)
Granted
Application number
DE112012005557.8T
Other languages
English (en)
Other versions
DE112012005557B4 (de
Inventor
c/o IBM Corporation Jaquette Glen Alan
c/o IBM Research GmbH Cideciyan Roy Daron
c/o IBM Research GmbH Mittelholzer Thomas
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012005557T5 publication Critical patent/DE112012005557T5/de
Application granted granted Critical
Publication of DE112012005557B4 publication Critical patent/DE112012005557B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

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

Abstract

Bereitgestellt werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Erzeugen eines Code-Alphabets zur Verwendung durch ein genutztes Programm zum Bestimmen von Codewörtern für Wörter. Ein erstes Code-Alphabet wird erzeugt, das eine erste Anzahl von Symbolen hat, die Codierungen von variabler Länge der Wörter bereitstellen. Die Symbole in dem ersten Code-Alphabet werden in eine zweite Anzahl von Gruppen der Symbole in dem ersten Code-Alphabet zusammengeführt, wobei die zweite Anzahl kleiner als die erste Anzahl ist. Ein zweites Code-Alphabet wird erzeugt, das die zweite Anzahl von Symbolen aufweist, wobei eine zweite durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem zweiten Code-Alphabet erzeugt wurden, kleiner ist als die Codewortlänge (b) der Wörter, und wobei das zweite Code-Alphabet das Code-Alphabet aufweist, das von dem genutzten Programm verwendet wird.

Description

  • Hintergrund der Erfindung
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System, ein Verfahren und eine Datenstruktur zum Erzeugen eines Code-Alphabets von Symbolen, um Codewörter für Wörter zu erzeugen, die mit einem Programm verwendet werden.
  • 2. Beschreibung des einschlägigen Stands der Technik
  • Zu einer Datenverdichtung gehört ein Umwandeln von Symbolen, einschließlich Datensymbolen und Steuersymbolen, in einem Eingabedatenstrom in einen verdichteten Ausgabedatenstrom, der weniger Daten aufweist als der Eingabedatenstrom. Steuersymbole werden in den verdichteten Datenstrom verschlüsselt und stellen Entschlüsselungsanweisungen bereit, um eine Aufhebung der Verdichtung zu gestatten und können durch das Anwendungsprogramm erstellt werden, das Daten verdichtet. Beispiele für Steuersymbole, die von der Anwendung erstellt werden, enthalten ein Datensatzende-Steuersignal, eine Dateimarkierung und eine Datendateigrenze. Es gibt weitere Ereignisse oder Steuerelemente, die durch die Verdichtungseinheit bestimmt werden, wie beispielsweise wann zu einem vorgegebenen Verdichtungsschema gewechselt werden soll und wann der Protokollpuffer zurückgesetzt werden soll, der zum Ausführen einer Verdichtung in einem vorgegebenen Schema verwendet wird. Die Verdichtungseinheit kann entscheiden, einen Zugriffspunkt zu erstellen, an dem eine Verdichtung beginnt, wobei ein zurückgesetzter Protokollpuffer ein bestimmtes Schema verwendet, nachdem eine Datendateigrenze angetroffen wurde.
  • Ein Typ einer Verschlüsselungstechnik, die Huffman-Codierung, stellt einen verlustfreien Verdichtungsalgorithmus bereit, der eine Codetabelle von Symbolen von variabler Länge zum Verschlüsseln von Quellensymbolen verwendet, wobei die Codetabelle von variabler Länge auf der Grundlage der geschätzten Wahrscheinlichkeit eines Vorkommens für jeden möglichen Quellensymbolwert abgeleitet wurde, um Verschlüsselungen der Quellensymbole zu erzeugen.
  • Ein Algorithmus für fließende verlustfreie Datenverdichtung (Streaming Lossless Data Compression – SLDC) empfängt einen Eingabedatenstrom von Steuersymbolen und Datensymbolen und wandelt Zeichenfolgen von aufeinander folgenden Bytes von Datensymbolen in Kopierzeiger und Literaldatensymbole um, die weniger Bits als die Datensymbole in dem Eingabedatenstrom aufweisen. Der SLDC-Algorithmus wird zum Verdichten und Aufheben der Verdichtung von Daten in Linear Tape-Open-(LTO)Magnetbandkassetten verwendet. Details des SLDC-Algorithmus werden in der Veröffentlichung des Standards ECMA-321 „Streaming Lossless Data Compression Algorithm – (SLDC)” beschrieben, datiert vom 1. Juni 2001.
  • Der SDLC-Algorithmus gibt ein Literaldatensymbol in den verdichteten Datenstrom aus, wenn keine aufeinander folgenden Bytes nach einem Datenbyte in dem Protokollpuffer vorhanden sind, sodass das Literaldatenbyte unverdichtet ausgegeben wird. Der SLDC-Algorithmus gibt ein Kopierzeigersymbol in den Aufgabedatenstrom aus, um mehrere aufeinander folgende Datenbytes darzustellen, die einer selben Anzahl von aufeinander folgenden Datenbytes in dem Protokollpuffer entsprechen. Das Kopierzeigersymbol enthält ein Bit, das angibt, dass das Symbol ein Kopierzeiger ist, ein Übereinstimmungszählerfeld, das die Anzahl übereinstimmender aufeinander folgender Bytes angibt, und ein Verschiebungsfeld, das eine absolute Arbeitsspeicheradresse mit dem Protokollpuffereintrag angibt, der das erste Byte der übereinstimmenden aufeinander folgenden Bytes enthält.
  • Daher besteht beim Stand der Technik ein Bedarf, Techniken zum Erzeugen von Code-Alphabeten von Symbolen bereitzustellen, die zum Darstellen von Wörterwerten in einem Programm verwendet werden, einschließlich Verdichtungsprogrammen, aber nicht darauf beschränkt.
  • Kurzdarstellung der Erfindung
  • Bereitgestellt werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Erzeugen eines Code-Alphabets zur Verwendung durch ein genutztes Programm zum Bestimmen von Codewörtern für Wörter mit einer Länge von b Bits, die in einem Datenverarbeitungssystem verwendet werden, wobei die Codewörter eine durchschnittliche Codewortlänge haben, die kleiner als b ist. Ein erstes Code-Alphabet wird erzeugt, das eine erste Anzahl von Symbolen hat, die Verschlüsselungen der Wörter von variabler Länge bereitstellen, wobei eine erste durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem ersten Code-Alphabet erzeugt werden, kleiner ist als die Codewortlänge (b) der Wörter. Die Symbole in dem ersten Code-Alphabet werden in eine zweite Anzahl von Gruppen der Symbole in dem ersten Code-Alphabet zusammengeführt, wobei die zweite Anzahl kleiner als die erste Anzahl ist. Ein zweites Code-Alphabet wird erzeugt, das die zweite Anzahl von Symbolen aufweist, wobei eine zweite durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem zweiten Code-Alphabet erzeugt wurden, kleiner ist als die Codewortlänge (b) der Wörter, und wobei das zweite Code-Alphabet das Code-Alphabet aufweist, das von dem genutzten Programm verwendet wird.
  • Kurzbeschreibung der Zeichnungen
  • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
  • 2 veranschaulicht eine Umsetzung eines Kopierzeigersymbols nach dem Stand der Technik.
  • 3 veranschaulicht eine Ausführungsform einer Verschiebungszähler-Codetabelle von variabler Länge.
  • 4a und 4b veranschaulichen eine Ausführungsform von Operationen zum Erzeugen eines ersten Code-Alphabets und eines zweiten Code-Alphabets.
  • 5 und 6 veranschaulichen Ausführungsformen von Operationen zum Zusammenführen von Symbolen von einem ersten Code-Alphabet, die zum Erzeugen eines zweiten Code-Alphabets verwendet werden sollen.
  • 7 veranschaulicht ein Beispiel einer Verteilung einer Häufigkeit des Vorkommens von 214 relativen Verschiebungszählerwerten.
  • 8a und 8b veranschaulichen Entropie- und durchschnittliche Codewortlängen-(Average Codeword Lenght – ACL)Werte für verschiedene Huffman-Codierungen, die verschiedene Anzahlen von zusammengeführten relativen Verschiebungszählerwerten verwenden.
  • 9a und 9b veranschaulichen eine Wahrscheinlichkeitsverteilung des Vorkommens von Wörtern für Symbole, wobei jeweils 128 Werte und 32 Werte zum Zusammenführen ausgewählt werden.
  • 10 veranschaulicht ein Beispiel einer Huffman-Codierung von relativen Verschiebungswerten in einem Protokollpuffer, die während Verdichtungsoperationen auftreten.
  • 11 und 13 veranschaulichen Beispiele für Symbole aus einem ersten Code-Alphabet, indem auf der Grundlage der Verteilung in 7 128 Werte ausgewählt werden, die zusammengeführt werden sollen.
  • 12 und 14 veranschaulichen ein Beispiel für ein Gruppieren von jeweils aufeinander folgenden Symbolen von den Symbolen in 11 und 13 in 18 Gruppen, um ein zweites Code-Alphabet zu bilden, das weniger Symbole hat als jeweils das erste Code-Alphabet von 11 und 13.
  • 15 veranschaulicht eine Computerarchitektur, in der beschriebene Ausführungsformen umgesetzt werden können.
  • Ausführliche Beschreibung
  • Beschriebene Ausführungsformen stellen Techniken zum Erzeugen eines ersten Code-Alphabets von Symbolen aus einer Worthäufigkeitsverteilung bereit, wobei die Symbole einer Gruppe von Wörtern zugeordnet sind, und wobei die Codewörter, die durch die Symbole in dem ersten Code-Alphabet erzeugt werden, eine durchschnittliche Codewortlänge haben, die kleiner als die Länge der Gruppe von Wörtern ist. Symbole aus dem ersten Code-Alphabet werden in Gruppen zusammengeführt, um ein zweites Code-Alphabet zu bilden, das ein Symbol für jede der Gruppen von zusammengeführten Symbolen aus dem ersten Code-Alphabet hat. Das zweite Code-Alphabet hat weniger Symbole als das erste Code-Alphabet, und eine durchschnittliche Codewortlänge ist kleiner als die Länge der Wörter in der Gruppe. Auf diese Weise lässt sich das zweite Code-Alphabet leichter umsetzen und verwenden als das erste Code-Alphabet, da es weniger Symbole hat, aber eine durchschnittliche Codewortlänge besitzt, die im Wesentlichen derjenigen des ersten Code-Alphabets ähnlich ist, sodass weniger Symbole ohne Verlust bei der Verdichtung bereitgestellt werden.
  • 1 stellt eine Ausführungsform einer Datenverarbeitungsumgebung bereit, um ein Code-Alphabet zu erzeugen, das in einem Programm zum Erzeugen von Codewörtern für Wörter verwendet werden soll, die von dem Programm verwendet werden, wobei die erzeugten Codewörter eine durchschnittliche Länge haben, die kleiner als die Länge der Wörter ist. Ein System 2 enthält einen Prozessor 4 und einen Arbeitsspeicher 6. Der Arbeitsspeicher 6 enthält einen Code-Alphabet-Generator 8 zum Erzeugen eines Code-Alphabets für eine Gruppe von N Wörtern mit einer Länge b. Der Code-Alphabet-Generator 8 verarbeitet eine Worthäufigkeitsverteilung 10, eine durchschnittliche Codewortlängen-(ACL)Funktion 12, eine erste Code-Alphabet-Häufigkeitsverteilung 14 und eine zweite Code-Alphabet-Häufigkeitsverteilung 16, die verwendet werden sollen, wenn ein erstes Code-Alphabet 18 und ein zweites Code-Alphabet 20 erzeugt werden. Das zweite Code-Alphabet stellt eine Zuordnung von Symbolen zu den N möglichen Wörtern bereit, um Codewörter zu erzeugen, die eine durchschnittliche Codewortlänge haben, die kleiner als die Wortlänge b ist. Das zweite Code-Alphabet 20 kann in einem genutzten Programm 22 enthalten sein, wobei das genutzte Programm 22 das zweite Code-Alphabet 20 zum Erzeugen von Codewörtern verwendet, die für eines der N Wörter verwendet werden sollen, die zur Verwendung durch das Programm 22 ausgewählt wurden.
  • In einer Ausführungsform kann das genutzte Programm 22 ein Verdichtungsprogramm aufweisen, wie beispielsweise ein SLDC-Programm, das einen Eingabedatenstrom verarbeitet, der in einen Ausgabedatenstrom verdichtet werden soll. In Verdichtungstechniken wie beispielsweise mittels SDLC kann eine Vielzahl von Bytes in dem Eingabedatenstrom durch einen Kopierzeiger ersetzt werden, der einen Speicherort in einem Protokollpuffer angibt, an dem eine Vielzahl von Bytes beginnt mit einer Vielzahl von Bytes in dem Eingabedatenstrom übereinzustimmen. Der Protokollpuffer speichert eingehende Dateneinheiten zur Verdichtung und Aufhebung der Verdichtung, wobei während der Verdichtung Eingabedateneinheiten durch einen Kopierzeiger ersetzt werden, der auf aufeinander folgende, vorher verarbeitete Dateneinheiten (z. B. Bytes) in dem Protokollpuffer verweist.
  • 2 stellt eine Ausführungsform eines Kopierzeigersymbols 30 mit einer Kopierzeigermarkierung 32 bereit, wie beispielsweise ein Bit mit einem Wert von 1, die das Symbol 30 als einen Kopierzeiger identifiziert, eine Übereinstimmungszähler-Verschlüsselung 34, die eine Verschlüsselung einer Anzahl von Dateneinheiten (z. B. Bytes) in dem Eingabedatenstrom aufweist, die in dem Ausgabedatenstrom durch den Kopierzeiger 30 ersetzt werden, und eine Verschiebungszähler-Verschlüsselung 36, die eine Verschlüsselung eines relativen Speicherorts in dem Protokollpuffer aufweist, an dem die aufeinander folgenden Dateneinheiten beginnen. Die in 2 gezeigten Felder können in einer anderen als der gezeigten Reihenfolge ausgegeben werden. Die Verschiebungszähler-Verschlüsselung 36 kann aus dem zweiten Code-Alphabet 20 bestimmt werden.
  • 3 veranschaulicht ein Beispiel einer Huffman-codierten Tabelle 50, die eine Umsetzung des zweiten Code-Alphabets 20 bereitstellt, wenn der Protokollpuffer 16 Kilobyte (KB) beträgt. Die Codierungen aus der Tabelle 50 sind in der Verschiebungszähler-Verschlüsselung 36 des Kopierzeigers enthalten, der einen von den 214 Speicherorten in dem Protokollpuffer angibt, an dem sich die übereinstimmenden Bytes befinden. Die Tabelle 50 stellt verschiedene Verschlüsselungen des relativen Verschiebungszählers in den Protokollpuffer für verschiedene Bereiche von Verschiebungszählern bereit. In der Tabelle 50 hat ein Eintrag 52 einen ersten Präfixwert von 3 Bit, der angibt, dass ein nächster folgender von 8 Bit einen relativen Verschiebungszähler von 0 bis 255 in dem Protokollpuffer angibt; ein Eintrag 54 hat einen zweiten Präfixwert von vier Bit, der angibt, dass ein nächster folgender von 8 Bit einen relativen Verschiebungszähler von 256 bis 511 in dem Protokollpuffer angibt; ein Eintrag 56 hat einen dritten Präfixwert von vier Bit, der angibt, dass ein nächster folgender von 9 Bit einen relativen Verschiebungszähler von 512 bis 1023 in dem Protokollpuffer angibt; ein Eintrag 58 hat einen vierten Präfixwert von drei Bit, der angibt, dass ein nächster folgender von 10 Bit einen relativen Verschiebungszähler von 1024 bis 2047 in dem Protokollpuffer angibt; ein Eintrag 60 hat einen fünften Präfixwert von drei Bit, der angibt, dass ein nächster folgender von 11 Bit einen relativen Verschiebungszähler von 2048 bis 4095 in dem Protokollpuffer angibt; ein Eintrag 62 hat einen sechsten Präfixwert von zwei Bit, der angibt, dass ein nächster folgender von 12 Bit einen relativen Verschiebungszähler von 4096 bis 8191 in dem Protokollpuffer angibt; und ein Eintrag 64 hat einen siebten Präfixwert von 2 Bit, der angibt, dass ein nächster folgender von 13 Bit eine relativen Verschiebungszähler von 8192 bis 16383 in dem Protokollpuffer angibt.
  • 4a und 4b veranschaulichen eine Ausführungsform von Operationen, die durch den Code-Alphabet-Generator 8 ausgeführt werden, um das zweite Code-Alphabet 20 zu erzeugen, das in das genutzte Programm 22 aufgenommen werden soll. Nach einem Starten (am Block 100) einer Operation zum Erzeugen einer Code-Alphabet-Tabelle für ein Programm 22 für Wörter mit einer Länge von b Bit, die in dem Programm 22 verwendet werden, verarbeitet der Code-Alphabet-Generator 8 (am Block 102) die Worthäufigkeitsverteilung 10 der N möglichen Wörter, wobei N = 2b. Die Worthäufigkeitsverteilung 10 kann Paare (i, f 0 / i ) aufweisen, wobei i = 1, 2, ..., N und die Häufigkeit für das i-te Wort f 0 / i ist. Wahrscheinlichkeitswerte p 0 / i können aus den Häufigkeiten f 0 / i aus der Worthäufigkeitsverteilung 10 gemäß der nachstehenden Gleichung (1) berechnet werden:
    Figure DE112012005557T5_0002
  • Die Häufigkeiten f 0 / i können durch gemessene Vorkommen des i-ten Worts während Operationen des Programms 22 berechnet werden. In einer Ausführungsform kann die Worthäufigkeitsverteilung 10 dergestalt sein, dass niedrigere Wortwerte häufiger von dem Programm 22 verwendet werden als höherwertige Wörter. Die Worthäufigkeitsverteilung 10 kann während einer Erstellung zum Erzeugen des zweiten Code-Alphabets 18 erzeugt werden, das in das genutzte Programm 22 aufgenommen werden soll, das zur Verwendung verteilt wird. Alternativ können die Verteilung 10 und weitere Operationen der 4a und 4b in einem Programm ausgeführt werden, das an Kundenstandorten genutzt wird, um eine Echtzeit-Erzeugung der Code-Alphabete bereitzustellen, die mit dem Programm 22 verwendet werden sollen.
  • 7 veranschaulicht ein Beispiel einer Worthäufigkeitsverteilung 10 des Vorkommens von relativen Verschiebungszählern, die in den Kopierzeigern 30 (2) in einem verdichteten Ausgabedatenstrom während Verdichtungsoperationen verwendet werden, um Speicherorte in dem Protokollpuffer anzugeben, der aufeinander folgende Bytes aufweist, die mit aufeinander folgenden Bytes in dem Eingabedatenstrom übereinstimmen. In 7 haben niedrigerwertige Wörter, die frühere Speicherorte in dem Protokollpuffer darstellen, d. h. kleinere Verschiebungswerte, häufiger übereinstimmende Zeichenfolgen als höherwertige Wörter, die spätere Speicherorte in dem Protokollpuffer bzw. höhere Verschiebungswerte in dem Protokollpuffer darstellen.
  • Der Code-Alphabet-Generator 8 berechnet (am Block 104) die ACL-Funktion 12. Diese ACL-Funktion 12 weist durchschnittliche Codewortlängen (ACLs) von Code-Alphabet-Symbolen zu verschiedenen Anzahlen von zusammengeführten oder gruppierten Wörtern auf der Grundlage der Worthäufigkeitsverteilung 10 zu. 8a und 8b zeigen, dass, wenn die Anzahl von zusammengeführten Wörtern zunimmt, d. h. die Anzahl von Wörtern, die jedem Symbol zugeordnet sind, zunimmt oder sich die Anzahl von Symbolen verringert, die Entropie oder durchschnittliche Codewortlänge zunimmt, wobei sie sich der Anzahl von Bits annähert. Die in 8a und 8b gezeigte ACL-Funktion 12 vergleicht die durchschnittliche Codewortlänge mit dem Logarithmus log2 der Anzahl von zusammengeführten/gruppierten Wörtern. In alternativen Ausführungsformen könnte K als der x-Achsen-Wert in 8b anstelle von log2(K) ausgewählt werden.
  • In Umsetzungen der Huffman-Codierung können die durchschnittlichen Codewortlängenwerte für verschiedene Anzahlen von zusammengeführten oder gruppierten Wörtern für ein Symbol, ausdrückt als K, unter Verwendung einer Entropiegleichung berechnet werden, wie beispielweise der nachstehenden Entropiegleichung (2):
    Figure DE112012005557T5_0003
  • Der Ausdruck log2K in der Formel der vorgenannten Entropiegleichung (2) steht für die Anzahl von Bits, die erforderlich sind, um die K Wörter darzustellen, die zusammengeführt wurden, um für ein Symbol in dem Alphabet gruppiert zu werden. Die Variable M1 entspricht N/K, was die Anzahl von Symbolen in dem ersten Code-Alphabet 18 angibt, denen die N Wörter zugeordnet sind. Die Wahrscheinlichkeit p 1 / i drückt die Wahrscheinlichkeit des Vorkommens der K Wörter aus, die dem i-ten Symbol zugeordnet sind, wobei f 1 / i die Häufigkeit des Vorkommens der K Wörter ist, die dem i-ten Symbol in dem ersten Code-Alphabet 18 zugeordnet sind. Die Wahrscheinlichkeit der Vorkommen (p 1 / i) von verschiedenen Symbolen in dem ersten Code-Alphabet wird gemäß der nachstehenden Gleichung (3) berechnet:
    Figure DE112012005557T5_0004
  • Der Wert M1 oder die Anzahl von Symbolen für ein Huffman-Codierungsalphabet wird aus der Gruppe von Wahrscheinlichkeitswerten p 1 / i , i = 1, 2, ..., M1 erzeugt. Ein Huffman-Code-Baum kann in einem ersten Schritt unter Verwendung des Huffman-Algorithmus erzeugt werden. Der Huffman-Code-Baum ist im Allgemeinen nicht eindeutig, weil die Kennzeichnung der Verzweigungen an internen Knoten in dem Huffman-Baum im Allgemeinen nicht eindeutig angegeben ist. Wenn zum Beispiel ein binärer Huffman-Baum S interne Knoten hat, gibt es 2S mögliche Huffman-Bäume. Jedem Huffman-Baum können dann viele Huffman-Codes zugeordnet werden. Daher ist der Huffman-Code, der durch den Huffman-Algorithmus erzeugt wird, im Allgemeinen nicht eindeutig angegeben. Die Entropie entspricht der durchschnittlichen Codewortlänge eines Huffman-Alphabets von Symbolen, wobei K Wörter zusammengeführt werden oder jedem Symbol zugeordnet sind.
  • 8a und 8b veranschaulichen ein Beispiel der ACL-Funktion 12, die die Entropie in der Y-Achse zeigt, die gemäß den vorgenannten Gleichungen (2) und (3) für verschiedene Werte des Logarithmus log2 der Anzahl von zusammengeführten Wörtern (K) berechnet wird. Zum Beispiel zeigt der Pfeil 30 in 8a auf einen Wert von 128 zusammengeführten Wörtern für jedes Symbol, der eine durchschnittliche Codewortlänge zwischen 13.1 und 13.2 bereitstellt, die kleiner als die Anzahl von Bits (b) der Wörter ist. 8b stellt eine erweiterte Ansicht von 8a bereit und zeigt auch eine Linie 32, die eine durchschnittliche Codewortlänge für Huffman-Codes mit Symbolen aufweist, die 32, 64, 128, 256 Wörtern (K) zugeordnet sind. Diese Kurve in 8b ist eine Funktion, die wie folgt erhalten wird. Für jedes K (x-Wert) wird eine neue Verteilung aus der Verteilung von Häufigkeiten erzeugt, wie in 7 gezeigt, indem K aufeinander folgende relative Verschiebungswerte in einen zusammengeführt werden. Die ACL (y-Wert) wird zu dieser neuen Verteilung zugehörig berechnet. Für jeden Punkt in 8b werden K Wörter in der Worthäufigkeitsverteilung 10 zusammengeführt, und anschließend wird eine erste Code-Alphabet-Häufigkeitsverteilung 14 berechnet und ein entsprechender Huffman-Code wird erstellt (es gibt viele Huffman-Codes, aber sie haben alle dieselbe ACL). Die ACL des entsprechenden Huffman-Codes wird dann berechnet. In 8b wurde dies viermal für K = 32, K = 64, K = 128 und K = 256 ausgeführt, d. h. vier neue Verteilungen und entsprechende Entropiewerte wurden berechnet.
  • Nach dem Erzeugen der ACL-Funktion 12 erhält der Code-Alphabet-Generator 8 (am Block 106) eine Auswahl aus einer von den Anzahlen von zusammengeführten Wörtern (K) auf der Grundlage der erzeugten ACL-Funktion 12. Ein Benutzer kann K als einen Kompromiss auswählen zwischen einem erforderlichen Maximieren der Anzahl von zusammengeführten Wörtern (K) und einem Minimieren der durchschnittlichen Codewortlänge. Der Kompromiss tritt auf, weil Verringerungen der Anzahl von zusammengeführten Wörtern die ACL verringert, sodass die Auswahl von K auf der Grundlage eines Kompromisses zwischen einem hohen Verdichtungsverhältnis, für das eine kleinere ACL erforderlich ist, und der Umsetzung der Anzahl von zusammengeführten Wörtern K beruht, wofür eine größere Anzahl von zusammengeführten Wörtern erwünscht ist, eine größere Anzahl von zusammengeführten Wörtern aber die unerwünschte Auswirkung hat, die ACL zu vergrößern. Alternativ kann der Code-Alphabet-Symbolgenerator 8 ein Programm verwenden, um eine Anzahl von Wörtern zu bestimmen, die als Teil des Kompromisses zwischen der durchschnittlichen Codewortlänge und der Anzahl von zusammengeführten Wörtern zusammengeführt werden sollen, um die Anzahl von Symbolen zu verringern, die für das Alphabet erzeugt werden.
  • Der Code-Alphabet-Generator 8 erzeugt dann (am Block 108) eine erste Code-Alphabet-Häufigkeitsverteilung 14 von Häufigkeiten oder Wahrscheinlichkeiten für Symbole, die zu Gruppen von K aufeinander folgenden Wörtern zugeordnet werden. Die Häufigkeit/Wahrscheinlichkeit jeder Gruppe von K aufeinander folgenden Wörtern, die einem Symbol zugeordnet werden, weist eine Summe der Häufigkeiten/Wahrscheinlichkeiten der K Wörter in der Gruppe gemäß der Worthäufigkeitsverteilung 10 auf. In bestimmten Ausführungsformen kann die erste Code-Alphabet-Häufigkeitsverteilung 14 Paare von (i, f 1 / i ) aufweisen, wobei i = 1, 2 ... M1, wobei M1 = N/K ist für jedes der i Symbole für das erste Code-Alphabet 18. Die Wahrscheinlichkeiten der ersten Code-Alphabet-Häufigkeitsverteilung 14 können gemäß der vorgenannten Gleichung (3) berechnet werden.
  • 9a und 9b veranschaulichen Beispiele der ersten Code-Alphabet-Häufigkeitsverteilung 14 für Werte von 128 von K (zusammengeführten Wörtern) in 9a und 32 in 9b. Diese Wahrscheinlichkeiten in diesen Verteilungen werden verwendet, um ein Huffman-Alphabet für das erste Code-Alphabet 18 zu erzeugen, das eine durchschnittliche Codewortlänge bereitstellt, die kleiner als die Länge der Wörter (b) ist, die verdichtet werden. Zum Beispiel zeigt 9a, dass die Huffman-Verschlüsselung für K = 128 eine durchschnittliche Codewortlänge (ACL) von 13,195070 hat, und 9b zeigt, dass die Huffman-Verschlüsselung für K = 32 eine ACL von 13,189745 hat.
  • Der Code-Alphabet-Generator 8 erzeugt dann (am Block 110) ein erstes Code-Alphabet 18 mit einer ersten Anzahl von Symbolen (M1 = N/K) mit den Symbolwahrscheinlichkeiten aus der ersten Code-Alphabet-Häufigkeitsverteilung 14. In bestimmten Ausführungsformen, wie beispielsweise Huffman-Codierungen, die aus der Verteilung 14 erzeugt wurden, stellen die Symbole Verschlüsselungen von variabler Länge der Gruppe von Wörtern bereit. Jedes Symbol in dem ersten Code-Alphabet 18 ist den Wörtern in einer der Gruppen zugeordnet und hat eine Häufigkeit der Gruppe von Wörtern, denen das Symbol zugeordnet ist. Eine erste durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem ersten Code-Alphabet erzeugt werden, ist kleiner als die Codewortlänge (b) der N Verschiebungswerte, um unter Verwendung der Codewörter eine Verdichtung bereitzustellen.
  • Zum Verringern der Anzahl von Symbolen in dem ersten Code-Alphabet 18 führt der Code-Alphabet-Generator 8 (am Block 112) die Symbole in dem ersten Code-Alphabet 18 in eine zweite Anzahl von Gruppen (M2) der Symbole in dem ersten Code-Alphabet 18 zusammen, wobei M2 < M1. Der Code-Alphabet-Symbolgenerator 8 erzeugt dann (am Block 114) eine zweite Code-Alphabet-Häufigkeitsverteilung 16 von Häufigkeiten der zusammengeführten zweiten Anzahl von Gruppen (M2) der Symbole in dem ersten Code-Alphabet 18, wobei die Häufigkeit von jeder der zusammengeführten zweiten Anzahl von Gruppen eine Summe der Häufigkeiten der Wörter aufweist, die den Symbolen des ersten Code-Alphabets 18 zugewiesen sind, die in die Gruppe zusammengeführt wurden.
  • In einer Ausführungsform kann die zweite Code-Alphabet-Häufigkeitsverteilung 16 Gruppen von Paaren (i, f 2 / i ) haben, wobei i = 1, 2, ..., M2 ist, wobei die Häufigkeit (f 2 / i) der Symbole in dem zweiten Code-Alphabet 20, das den gruppierten Symbolen des ersten Code-Alphabets 18 entspricht, gemäß der nachstehenden Gleichung (4) berechnet werden kann:
    Figure DE112012005557T5_0005
  • Die Gruppe von Wahrscheinlichkeitswerten p 2 / i für die gruppierten Symbole aus dem ersten Code-Alphabet 18, die Symbolen in dem zweiten Code-Alphabet 20 zugeordnet werden, können gemäß der nachstehenden Gleichung (5) berechnet werden:
    Figure DE112012005557T5_0006
  • Der Code-Alphabet-Generator 8 erzeugt (am Block 116) ein zweites Code-Alphabet 20 mit der zweiten Anzahl (M2) von Symbolen, die durch die zweite Code-Alphabet-Häufigkeitsverteilung 16 definiert werden, wobei jedes Symbol in dem zweiten Code-Alphabet 20 den Wörtern in einer der zweiten Anzahl von Gruppen zugeordnet ist und eine Häufigkeit oder Wahrscheinlichkeit der Gruppe von Wörtern hat, zu denen das Symbol zugeordnet ist. Eine zweite durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem zweiten Code-Alphabet 20 erzeugt wurden, ist vorzugsweise kleiner als die Codewortlänge (b) der N Verschiebungswerte und im Wesentlichen ähnlich der ersten durchschnittlichen Codewortlänge, die durch das erste Code-Alphabet 18 erzeugt wurde.
  • Mit den Operationen der 4a und 4b wird das zweite Code-Alphabet 20 so erzeugt, dass es weniger Symbole als das erste Code-Alphabet 18 hat, wobei ein wünschenswerteres Alphabet bereitgestellt wird, weil es weniger Zeilen zum Umsetzen in dem Programm 22 erfordert. In bestimmten Ausführungsformen ist die durchschnittliche Codewortlänge des zweiten Code-Alphabets 20 dieselbe Länge wie die durchschnittliche Codewortlänge des ersten Code-Alphabets 18, um eine wirkungsvollere Gruppe von weniger Symbolen mit derselben Verdichtung, Entropie und/oder durchschnittlichen Codewortlänge bereitzustellen. 10 veranschaulicht ein Beispiel eines zweiten Huffman-Code-Alphabets 20, das Symbole in der Form von Huffman-Codes für relative Verschiebungswerte in einem Protokollpuffer bereitstellt.
  • 5 veranschaulicht eine Ausführungsform von Operationen zum Ausführen des Zusammenführens von Symbolen im Schritt 112 in 4a, indem Symbole aus dem ersten Code-Alphabet 18 in Gruppen zusammengeführt werden, die Symbole gleicher Länge erzeugen. Nach einem Starten (am Block 120) der Operation zum Zusammenführen von Symbolen in der zweiten Anzahl von Gruppen (M2) bildet der Code-Alphabet-Generator 8 (am Block 122) mindestens eine Gruppe von 2n aufeinander folgenden Code-Alphabet-Symbolen gleicher Länge, wobei n für jede Gruppe von 2n aufeinander folgenden Code-Alphabet-Symbolen von einer Länge ein beliebiger nicht-negativer ganzzahliger Wert ist. Symbole gleicher Länge werden zusammengeführt, indem Gruppen von 2n Symbolen für die niedrigstmöglichen Werte von n möglichen gebildet werden, sodass die Symbole zu verschiedener 2n Anzahl von Symbolen zugewiesen werden.
  • 11 veranschaulicht ein Beispiel eines ersten Code-Alphabets 18, das unter Verwendung der Huffman-Codierung durch den Code-Alphabet-Generator 8 für relative Verschiebungswerte in einen Protokollpuffer mit einer Länge (b) von 14 erzeugt wird, wobei K auf 128 gesetzt wird, um 128 der Wörter (relativen Verschiebungswerte) zusammenzuführen, um eine Huffman-Codierung des ersten Code-Alphabets 18 zu erzeugen. Jedes der 128 Symbole in 11 würde zu 128 (214/128) verschiedenen der möglichen Verschiebungswerte zugeordnet. Die 128 Symbole werden aufeinander folgenden relativen Verschiebungswerten zugeordnet, wobei die Symbole, die eine kürzeste Länge haben, aufeinander folgenden relativen Verschiebungswerten zugeordnet werden, d. h. Wörtern mit einer höheren Wahrscheinlichkeit durch das Programm 22 verwendet/ausgewählt zu werden. Auf diese Weise werden kürzere Symbole häufiger vorkommenden Wörtern zugeordnet, und längere Symbole werden weniger häufig vorkommenden Wörtern zugeordnet.
  • 12 veranschaulicht ein Beispiel, wie die Symbole in 11 am Block 122 in 5 in Gruppen von 2n Symbolen von gleicher Länge zusammengeführt werden, wobei n eine beliebige nicht-negative Ganzzahl ist. Der Code-Alphabet-Generator 8 startet an dem niedrigstmöglichen Wert von n, um damit zu beginnen, Gruppen von 2n zusammengeführten aufeinander folgenden Symbolen zu bilden, wobei die aufeinander folgenden Symbole zu Wörtern zugeordnet werden, die in der Reihenfolge gemäß der Wahrscheinlichkeit ihres Vorkommens angeordnet sind, wenn sie durch das Programm 22 verwendet werden, wie beispielsweise ein Verdichtungsprogramm. Somit weisen die Gruppen von zusammengeführten aufeinander folgenden Symbolen von einer selben Länge eine zunehmende Anzahl von zusammengeführten Symbolen auf, wenn n für die Symbole von gleicher Länge zunimmt, die in Gruppen zusammengeführt sind. Aus den zusammengeführten Gruppen von Symbolen, insgesamt 18, wird ein zweites Huffman-Code-Alphabet 20 erzeugt, um 18 Symbole zu erzeugen, ein Symbol für jede Gruppe, sodass jedes Symbol den Wörtern (z. B. relativen Verschiebungswerten) zugeordnet wird, für die die Symbole in der Gruppe zusammengeführt wurden, für die das Symbol erzeugt wird. Auf diese Weise behält das zweite Code-Alphabet 20, das durch Zusammenführen von Symbolen aus dem ersten Code-Alphabet 18 gebildet wird, im Wesentlichen dieselbe durchschnittliche Codewortlänge mit weniger Symbolen bei, wodurch eine verbesserte Umsetzung des Code-Alphabets bereitgestellt wird.
  • 6 veranschaulicht eine alternative Ausführungsform für ein Zusammenführen von Symbolen aus dem ersten Code-Alphabet 18 in weniger Gruppen, indem Symbole von verschiedener Länge gruppiert werden, was am Block 112 in 4a ausgeführt wird. Nach einem Starten (am Block 130) der Operation zum Zusammenführen von Symbolen in der zweiten Anzahl von Gruppen (M2) bildet der Code-Alphabet-Generator 8 (am Block 132) jede Gruppe so, dass sie aufeinander folgende Symbole in dem ersten Code-Alphabet 18 haben, wobei mindestens eine der Gruppen von Symbolen aus dem ersten Code-Alphabet mindestens zwei der aufeinander folgenden Symbole in dem ersten Code-Alphabet von verschiedener Länge aufweist. Gruppen von 2n Symbolen werden gebildet, beginnend ab 0 bis zu einem Wert, bis alle der ersten Code-Alphabet-Symbole in Gruppen von 2n Symbolen gebildet sind.
  • In bestimmten Ausführungsformen können Symbole von ungleicher Länge so zusammengeführt werden, dass ein Ungleichartigkeitsmaß klein ist. Das Ungleichartigkeitsmaß wird gemäß der Gleichung (6) definiert:
    Figure DE112012005557T5_0007
    wobei z(j) = 0, wenn das f 1 / j entsprechende Symbol aus dem ersten Code-Alphabet 18 sich unter den Symbolen mit der häufigsten Länge in einer Partition i mit ni Codewörtern befindet, andernfalls z(j) = 1.
  • Der Wert h(i) wird gemäß der nachstehenden Gleichung (7) berechnet:
    Figure DE112012005557T5_0008
  • Um Gruppen von Symbolen von ungleicher Länge zu bilden, identifiziert der Code-Alphabet-Generator 8 in jeder Gruppe von Symbolen die häufigste Länge, die den Symbolen zugehörig ist. Wenn zwei oder mehr Längen in einer Gruppe die größte Häufigkeit haben, wird die größte Länge als die häufigste Länge in einer Gruppe ausgewählt. Der Code-Alphabet-Generator 8 summiert insgesamt relative Häufigkeiten aller Codewörter in einer Partition, wobei die Codewörter mit der häufigsten Länge ausgeschlossen werden, um die Ungleichartigkeit einer Gruppe von Symbolen zu erhalten. Danach summiert der Code-Alphabet-Generator 8 gesamte Ungleichartigkeiten aller Gruppen, die dem ersten Code-Alphabet zugrunde liegen, um die Ungleichartigkeit des zugrundeliegenden ersten Code-Alphabets 18 zu erhalten, gezeigt in 13.
  • 13 veranschaulicht ein Beispiel eines ersten Code-Alphabets von 128 Symbolen, wobei das Anordnen in einer Reihenfolge der Symbole, die gemäß der Wahrscheinlichkeit oder Häufigkeit des Vorkommens der Wörter angeordnet sind, denen die Symbole zugeordnet sind, Symbole von ungleicher Länge zwischen Symbolen gleicher Länge enthält. 14 veranschaulicht ein Beispiel, wie die Symbole in 13 gruppiert werden, um Gruppen von Symbolen von ungleicher Länge zu haben, wie beispielsweise in den Gruppen 11 und 12.
  • Die beschriebenen Ausführungsformen stellen Techniken zum Erzeugen eines Code-Alphabet-Symbols durch Zusammenführen von Symbolen aus einem ersten Code-Alphabet bereit, um eine weitere Verringerung der Anzahl von Code-Alphabet-Symbolen bereitzustellen, die zur Verwendung für die Verschlüsselung benötigt werden, jedoch gleichzeitig im Wesentlichen dieselbe durchschnittliche Codewortlänge beibehalten.
  • Schlussfolgerung
  • Die beschriebenen Operationen können als ein Verfahren, eine Vorrichtung oder ein Computerprogrammprodukt unter Verwendung von standardmäßigen Programmier- und/oder Entwicklungstechniken umgesetzt werden, um Software, Firmware, Hardware oder beliebige Kombinationen davon zu erzeugen. Dementsprechend können Aspekte der Ausführungsformen die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann. Des Weiteren können Aspekte der Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das in einem oder in mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode ausgeführt ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung verwendet werden kann.
  • Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit einem darin verkörperten computerlesbaren Programmcode enthalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein derartiges verbreitetes Signal kann jede einer Vielfalt von Formen annehmen, einschließlich elektromagnetisch, optisch oder jede geeignete Kombination davon, es ist aber nicht darauf beschränkt. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung übertragen, verbreiten oder transportieren kann.
  • In einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination des Vorgenannten, er ist aber nicht darauf beschränkt.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden sein, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Erfindung werden im Vorgenannten unter Bezugnahme auf Veranschaulichungen des Ablaufplans und/oder der Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • 15 veranschaulicht eine Ausführungsform einer Computerarchitektur 600, die in dem System 2 in 1 umgesetzt werden kann. Die Architektur 600 kann einen Prozessor 602 (z. B. einen Mikroprozessor), einen Arbeitsspeicher 604 (z. B. eine flüchtige Arbeitsspeichereinheit) und einen Speicher 606 (z. B. einen nicht-flüchtigen Speicher wie Magnetplattenlaufwerke, optische Plattenlaufwerke, ein Bandlaufwerk usw.) enthalten. Der Speicher 606 kann eine interne Speichereinheit oder einen angeschlossenen oder über ein Netz zugänglichen Speicher aufweisen. Programme einschließlich eines Betriebssystems 608 und des Code-Alphabet-Generators 8 und des genutzten Programms 22 in dem Speicher 606 werden in den Arbeitsspeicher 604 geladen und durch den Prozessor 602 ausgeführt. Der Arbeitsspeicher 604 kann ferner die Verteilungen 10, 14, 16, die Funktion 12 und die Alphabete 18 und 20 enthalten. Die Architektur enthält ferner eine Netzwerkkarte 610, um einen Datenaustausch mit einem Netzwerk zu ermöglichen. Eine Eingabeeinheit 612 wird zum Bereitstellen einer Benutzereingabe in den Prozessor 602 verwendet und kann eine Tastatur, eine Maus, einen Stift, ein Mikrofon, einen Touchscreen-Monitor oder einen beliebigen anderen Aktivierungs- oder Eingabemechanismus nach dem bekannten Stand der Technik enthalten. Eine Ausgabeeinheit 614 ist fähig, von dem Prozessor 602 oder von einer anderen Komponente wie einem Bildschirm, Drucker, Speicher usw. übertragene Informationen wiederzugeben.
  • Die Begriffe „eine Ausführungsform”, „Ausführungsform”, „Ausführungsformen”, „die Ausführungsform”, „die Ausführungsformen”, „eine oder mehrere Ausführungsformen”, „einige Ausführungsformen” und „irgendeine Ausführungsform” bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)”, sofern nicht ausdrücklich anders angegeben.
  • Die Begriffe „einschließlich”, „aufweisend”, „mit” und Variationen davon bedeuten „einschließlich, aber nicht darauf beschränkt”, sofern nicht ausdrücklich anders angegeben.
  • Die Aufzählungsliste von Elementen bedeutet nicht, dass irgendwelche oder alle der Elemente sich gegenseitig ausschließen, sofern nicht ausdrücklich anders angegeben.
  • Die Begriffe „ein”, „eine” und „der, die, das” bedeuten ”ein oder mehrere”, sofern nicht ausdrücklich anders angegeben.
  • Einheiten, die miteinander in Datenübertragung stehen, müssen sich nicht in einer kontinuierlichen Datenübertragung befinden, sofern nicht ausdrücklich anders angegeben. Außerdem können Einheiten, die miteinander in Datenübertragung stehen, Daten direkt oder indirekt über eine oder mehrere Vermittlungen übertragen.
  • Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die miteinander in Datenübertragung stehen, bedeutet nicht, dass alle derartigen Komponenten erforderlich sind. Im Gegenteil wird eine Vielfalt von optionalen Komponenten beschrieben, um die große Vielfalt möglicher Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
  • Obwohl ferner Prozessschritte, Verfahrensschritte, Algorithmen oder dergleichen in einer fortlaufenden Reihenfolge beschrieben sein können, können derartige Prozesse, Verfahren und Algorithmen so konfiguriert sein, dass sie in alternativen Reihenfolgen arbeiten. Mit anderen Worten, jede Abfolge oder Reihenfolge von Schritten, die beschrieben sein können, gibt nicht notwendigerweise eine Anforderung an, dass die Schritte in dieser Reihenfolge ausgeführt werden müssen. Die hierin beschriebenen Schritte von Prozessen können in jeder durchführbaren Reihenfolge ausgeführt werden. Ferner können einige Schritte gleichzeitig ausgeführt werden.
  • Wenn eine einzelne Einheit oder ein einzelner Gegenstand hierin beschrieben wird, ist problemlos offenkundig, dass mehr als eine Einheit/ein Gegenstand (gleichgültig, ob sie zusammenwirken) anstelle einer einzelnen Einheit/eines einzelnen Gegenstands verwendet werden kann. Desgleichen ist problemlos offenkundig, dass dort, wo mehr als eine Einheit oder ein Gegenstand hierin beschrieben wird (gleichgültig, ob sie zusammenwirken), eine einzelne Einheit/ein einzelner Gegenstand anstelle der mehr als einen Einheit oder des mehr als einen Gegenstands anstelle der gezeigten Anzahl von Einheiten oder Programmen verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten verkörpert werden, die hierin nicht ausdrücklich als mit einer derartigen Funktionalität/derartigen Merkmalen beschrieben sind. Somit müssen weitere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht enthalten.
  • Die veranschaulichten Operationen der 4a, 4b, 5 und 6 zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge auftreten. In alternativen Ausführungsformen können bestimmte Operationen in einer anderen Reihenfolge ausgeführt, modifiziert oder entfernt werden. Des Weiteren können Schritte zu der oben beschriebenen Logik hinzugefügt werden und trotzdem den beschriebenen Ausführungsformen entsprechen. Ferner können hierin beschriebene Operationen nacheinander auftreten, oder bestimmte Operationen können parallel verarbeitet werden. Außerdem können Operationen ferner von einer einzelnen Verarbeitungseinheit oder von verteilten Verarbeitungseinheiten ausgeführt werden.
  • Die vorhergehende Beschreibung von verschiedenen Ausführungsformen der Erfindung wurde zu Veranschaulichungs- und Beschreibungszwecken erstellt. Sie soll nicht erschöpfend sein oder die Erfindung genau auf die offenbarte Form einschränken. Viele Modifizierungen und Variationen sind angesichts der vorstehenden Lehre möglich. Der Schutzumfang der Erfindung soll nicht durch diese ausführliche Beschreibung eingeschränkt werden, sondern stattdessen durch die Ansprüche im Anhang. Die vorgenannte Spezifikation, die vorgenannten Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und Verwendung der Zusammensetzung der Erfindung bereit. Da viele Ausführungsformen der Erfindung ohne Abweichen von dem Schutzumfang der Erfindung erstellt werden können, betrifft die Erfindung die hierin im Anhang befindlichen Ansprüche.

Claims (27)

  1. Computerprogrammprodukt zum Erzeugen eines Code-Alphabets zur Verwendung durch ein genutztes Programm zum Bestimmen von Codewörtern für Wörter mit einer Länge von b Bit, die in einem Datenverarbeitungssystem verwendet werden, wobei die Codewörter eine durchschnittliche Codewortlänge haben, die kleiner als b ist, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, das einen darin verkörperten computerlesbaren Programmcode hat, der ausgeführt wird, um Operationen auszuführen, wobei die Operationen aufweisen: Erzeugen eines ersten Code-Alphabets, das eine erste Anzahl von Symbolen hat, die Codierungen von variabler Länge der Wörter bereitstellen, wobei eine erste durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem ersten Code-Alphabet erzeugt werden, kleiner ist als die Codewortlänge (b) der Wörter; Zusammenführen der Symbole in dem ersten Code-Alphabet in eine zweite Anzahl von Gruppen der Symbole in dem ersten Code-Alphabet, wobei die zweite Anzahl kleiner als die erste Anzahl ist; und Erzeugen eines zweiten Code-Alphabets, das die zweite Anzahl von Symbolen aufweist, wobei eine zweite durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem zweiten Code-Alphabet erzeugt wurden, kleiner ist als die Codewortlänge (b) der Wörter, und wobei das zweite Code-Alphabet das Code-Alphabet aufweist, das von dem genutzten Programm verwendet wird.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen ferner aufweisen: Erzeugen einer Worthäufigkeitsverteilung von Häufigkeiten von Vorkommen aller möglichen 2b Wörter (N); Berechnen einer durchschnittlichen Codewortlängen-(Average Codeword Lenght – ACL)Funktion, die ACL-Werte zu verschiedenen Anzahlen von Gruppen von zusammengeführten Wörtern (K) auf der Grundlage der Worthäufigkeitsverteilung zuweist; und Erhalten einer Auswahl von einer der Anzahlen von zusammengeführten Wörtern (K) auf der Grundlage der ACL-Funktion, wobei die erste Anzahl von Symbolen K aufweist, wobei jedes Symbol einer Gruppe von K der N möglichen Wörter zugeordnet ist.
  3. Computerprogrammprodukt nach Anspruch 2, wobei die durchschnittliche Codewortlänge für jede Anzahl von zusammengeführten Wörtern (K) auf Grundlage einer Wahrscheinlichkeit eines Vorkommens jedes Alphabet-Code-Symbols berechnet wird, das die K Anzahl von Codewörtern auf Grundlage der Worthäufigkeitsverteilung darstellt.
  4. Computerprogrammprodukt nach Anspruch 2, wobei in der Worthäufigkeitsverteilung von Häufigkeiten von Vorkommen der N möglichen Wörter auf Wörter mit einer kleineren Länge in Bit häufiger zugegriffen wird als auf Wörter mit einer größeren Länge in Bit.
  5. Computerprogrammprodukt nach Anspruch 1, wobei die erste durchschnittliche Codewortlänge gleich der zweiten durchschnittlichen Codewortlänge ist, und wobei das erste Code-Alphabet und das zweite Code-Alphabet unter Verwendung eines Huffman-Codierungsalgorithmus berechnet werden.
  6. Computerprogrammprodukt nach Anspruch 1, wobei ein Zusammenführen der Symbole in dem ersten Code-Alphabet in die zweite Anzahl von Gruppen aufweist, jede Gruppe so zu bilden, dass sie Symbole in dem ersten Code-Alphabet von einer gleichen Länge aufweist.
  7. Computerprogrammprodukt nach Anspruch 6, wobei ein Zusammenführen der Symbole des ersten Code-Alphabets in die zweite Anzahl von Gruppen aufweist, mindestens eine Gruppe von 2n aufeinander folgenden Code-Alphabet-Symbolen von gleicher Länge zu bilden, wobei n für jede Gruppe von 2n aufeinander folgenden Code-Alphabet-Symbolen von einer Länge ein beliebiger nicht-negativer ganzzahliger Wert ist.
  8. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen ferner aufweisen: Erzeugen einer ersten Codeverteilung von Häufigkeiten von Gruppen von Wörtern, die jeweils die ausgewählte K Anzahl von Wörtern der N Wörter haben, wobei die Häufigkeit von jeder der Gruppen eine Summe der Häufigkeiten der K Wörter aufweist, die in der Gruppe gemäß der Worthäufigkeitsverteilung enthalten sind, wobei die Symbole in dem ersten Code-Alphabet aus der ersten Codeverteilung erstellt werden, und wobei jedes Symbol in dem ersten Code-Alphabet den Wörtern in einer der Gruppen zugeordnet ist und eine Häufigkeit der Gruppe von Wörtern hat, denen das Symbol zugeordnet ist.
  9. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen ferner aufweisen: Erzeugen einer zweiten Codeverteilung von Häufigkeiten der zusammengeführten zweiten Anzahl von Gruppen der Symbole in dem ersten Code-Alphabet, wobei die Häufigkeit von jeder der zusammengeführten zweiten Anzahl von Gruppen eine Summe der Häufigkeiten der Wörter aufweist, die den ersten Code-Alphabet-Symbolen zugewiesen sind, die in die Gruppe zusammengeführt wurden, wobei das zweite Code-Alphabet aus der zweiten Codeverteilung erstellt wird, und wobei jedes Symbol in dem zweiten Code-Alphabet den Wörtern in einer der zweiten Anzahl von Gruppen zugeordnet ist und eine Häufigkeit der Gruppe von Wörtern hat, denen das Symbol zugeordnet ist.
  10. Computerprogramm nach Anspruch 1, wobei ein Zusammenführen der Symbole in dem ersten Code-Alphabet in die zweite Anzahl von Gruppen aufweist, jede Gruppe so zu bilden, dass sie aufeinander folgende Symbole in dem ersten Code-Alphabet aufweist, wobei mindestens eine von Gruppen von Symbolen aus dem ersten Code-Alphabet mindestens zwei der aufeinander folgenden Symbole in dem ersten Code-Alphabet aufweist, die eine unterschiedliche Länge aufweisen.
  11. Computerprogrammprodukt nach Anspruch 1, wobei die Auswahl von K über eine Person von einer Computer-Benutzerschnittstelle erhalten wird.
  12. Computerprogrammprodukt nach Anspruch 1, wobei eine Optimierungsroutine K auswählt, um die durchschnittliche Codewortlänge zu minimieren und die ausgewählte Anzahl von zusammengeführten Wörtern (K) zu maximieren.
  13. Computerprogrammprodukt nach Anspruch 1, wobei die Wörter verschiedene Verschiebungszählerwerte für einen Protokollpuffer aufweisen, der zum Verdichten von Daten verwendet wird, wobei jeder der Verschiebungszählerwerte einen Speicherort in dem Protokollpuffer angibt, in dem eine Vielzahl von Wörtern beginnt, die mit einer Vielzahl von Wörtern in einem zu verdichtenden Eingabedatenstrom übereinstimmt, wobei das Code-Alphabet verwendet wird, um ein Codewort für den Verschiebungszählerwert zu bestimmen, der in einem Kopierzeiger enthalten ist, um den Speicherort in dem Protokollpuffer darzustellen, der die Vielzahl von Wörtern in dem Eingabedatenstrom hat, und das ferner aufweist: Nutzen des zweiten Code-Alphabets in einem Verdichtungsprogramm, das die Symbole verwendet, um Codewörter für die Verschiebungszählerwerte in dem Protokollpuffer zu bestimmen.
  14. System zum Erzeugen eines Code-Alphabets zur Verwendung durch ein genutztes Programm zum Bestimmen von Codewörtern für Wörter mit einer Länge von b Bit, die in einem Datenverarbeitungssystem verwendet werden, wobei die Codewörter eine durchschnittliche Codewortlänge haben, die kleiner als b ist, das aufweist: einen Prozessor; und ein computerlesbares Speichermedium, das ein computerlesbares Programm hat, das von dem Prozessor ausgeführt wird, um Operationen auszuführen, wobei die Operationen aufweisen: Erzeugen eines ersten Code-Alphabets, das eine erste Anzahl von Symbolen hat, die Codierungen von variabler Länge der Wörter bereitstellen, wobei eine erste durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem ersten Code-Alphabet erzeugt werden, kleiner ist als die Codewortlänge (b) der Wörter; Zusammenführen der Symbole in dem ersten Code-Alphabet in eine zweite Anzahl von Gruppen der Symbole in dem ersten Code-Alphabet, wobei die zweite Anzahl kleiner als die erste Anzahl ist; und Erzeugen eines zweiten Code-Alphabets, das die zweite Anzahl von Symbolen aufweist, wobei eine zweite durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem zweiten Code-Alphabet erzeugt wurden, kleiner ist als die Codewortlänge (b) der Wörter, und wobei das zweite Code-Alphabet das Code-Alphabet aufweist, das von dem genutzten Programm verwendet wird.
  15. System nach Anspruch 14, wobei die Operationen ferner aufweisen: Erzeugen einer Worthäufigkeitsverteilung von Häufigkeiten von Vorkommen aller möglichen 2b Wörter (N); Berechnen einer durchschnittlichen Codewortlängen-(ACL)Funktion, die ACL-Werte zu verschiedenen Anzahlen von Gruppen von zusammengeführten Wörtern (K) auf der Grundlage der Worthäufigkeitsverteilung zuweist; und Erhalten einer Auswahl von einer der Anzahlen von zusammengeführten Wörtern (K) auf der Grundlage der ACL-Funktion, wobei die erste Anzahl von Symbolen K aufweist, wobei jedes Symbol einer Gruppe von K der N möglichen Wörter zugeordnet ist.
  16. System nach Anspruch 15, wobei in der Worthäufigkeitsverteilung von Häufigkeiten von Vorkommen der N möglichen Wörter auf Wörter mit einer kleineren Länge in Bit häufiger zugegriffen wird als auf Wörter mit einer größeren Länge in Bit.
  17. System nach Anspruch 14, wobei die erste durchschnittliche Codewortlänge gleich der zweiten durchschnittlichen Codewortlänge ist, und wobei das erste Code-Alphabet und das zweite Code-Alphabet unter Verwendung eines Huffman-Codierungsalgorithmus berechnet werden.
  18. System nach Anspruch 14, wobei ein Zusammenführen der Symbole in dem ersten Code-Alphabet in die zweite Anzahl von Gruppen aufweist, jede Gruppe so zu bilden, dass sie Symbole in dem erste Code-Alphabet von einer gleichen Länge aufweist.
  19. System nach Anspruch 14, wobei ein Zusammenführen der Symbole in dem ersten Code-Alphabet in die zweite Anzahl von Gruppen aufweist, jede Gruppe so zu bilden, dass sie aufeinander folgende Symbole in dem ersten Code-Alphabet aufweist, wobei mindestens eine von Gruppen von Symbolen aus dem ersten Code-Alphabet mindestens zwei der aufeinander folgenden Symbole in dem ersten Code-Alphabet aufweist, die eine unterschiedliche Länge aufweisen.
  20. System nach Anspruch 14, wobei die Wörter verschiedene Verschiebungszählerwerte für einen Protokollpuffer aufweisen, der zum Verdichten von Daten verwendet wird, wobei jeder der Verschiebungszählerwerte einen Speicherort in dem Protokollpuffer angibt, in dem eine Vielzahl von Wörtern beginnt, die mit einer Vielzahl von Wörtern in einem zu verdichtenden Eingabedatenstrom übereinstimmt, wobei das Code-Alphabet verwendet wird, um ein Codewort für den Verschiebungszählerwert zu bestimmen, der in einem Kopierzeiger enthalten ist, um den Speicherort in dem Protokollpuffer darzustellen, der die Vielzahl von Wörtern in dem Eingabedatenstrom hat, und das ferner aufweist: Nutzen des zweiten Code-Alphabets in einem Verdichtungsprogramm, das die Symbole verwendet, um Codewörter für die Verschiebungszählerwerte in dem Protokollpuffer zu bestimmen.
  21. Verfahren zum Erzeugen eines Code-Alphabets zur Verwendung durch ein genutztes Programm zum Bestimmen von Codewörtern für Wörter mit einer Länge von b Bit, die in einem Datenverarbeitungssystem verwendet werden, wobei die Codewörter eine durchschnittliche Codewortlänge haben, die kleiner als b ist, das aufweist: Erzeugen eines ersten Code-Alphabets, das eine erste Anzahl von Symbolen hat, die Codierungen von variabler Länge der Wörter bereitstellen, wobei eine erste durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem ersten Code-Alphabet erzeugt werden, kleiner ist als die Codewortlänge (b) der Wörter; Zusammenführen der Symbole in dem ersten Code-Alphabet in eine zweite Anzahl von Gruppen der Symbole in dem ersten Code-Alphabet, wobei die zweite Anzahl kleiner als die erste Anzahl ist; und Erzeugen eines zweiten Code-Alphabets, das die zweite Anzahl von Symbolen aufweist, wobei eine zweite durchschnittliche Codewortlänge der Codewörter, die unter Verwendung der Symbole in dem zweiten Code-Alphabet erzeugt wurden, kleiner ist als die Codewortlänge (b) der Wörter, und wobei das zweite Code-Alphabet das Code-Alphabet aufweist, das von dem genutzten Programm verwendet wird.
  22. Verfahren nach Anspruch 21, das des Weiteren aufweist: Erzeugen einer Worthäufigkeitsverteilung von Häufigkeiten von Vorkommen aller möglichen 2b Wörter (N); Berechnen einer durchschnittlichen Codewortlängen-(ACL)Funktion, die ACL-Werte zu verschiedenen Anzahlen von Gruppen von zusammengeführten Wörtern (K) auf der Grundlage der Worthäufigkeitsverteilung zuweist; und Erhalten einer Auswahl von einer der Anzahlen von zusammengeführten Wörtern (K) auf der Grundlage der ACL-Funktion, wobei die erste Anzahl von Symbolen K aufweist, wobei jedes Symbol einer Gruppe von K der N möglichen Wörter zugeordnet ist.
  23. Verfahren nach Anspruch 22, wobei in der Worthäufigkeitsverteilung von Häufigkeiten von Vorkommen der N möglichen Wörter auf Wörter mit einer kleineren Länge in Bit häufiger zugegriffen wird als auf Wörter mit einer größeren Länge in Bit.
  24. Verfahren nach Anspruch 21, wobei die erste durchschnittliche Codewortlänge gleich der zweiten durchschnittlichen Codewortlänge ist, und wobei das erste Code-Alphabet und das zweite Code-Alphabet unter Verwendung eines Huffman-Codierungsalgorithmus berechnet werden.
  25. Verfahren nach Anspruch 21, wobei ein Zusammenführen der Symbole in dem ersten Code-Alphabet in die zweite Anzahl aufweist, jede Gruppe so zu bilden, dass sie Symbole in dem ersten Code-Alphabet von einer gleichen Länge aufweist.
  26. Verfahren nach Anspruch 21, wobei ein Zusammenführen der Symbole in dem ersten Code-Alphabet in die zweite Anzahl von Gruppen aufweist, jede Gruppe so zu bilden, dass sie aufeinander folgende Symbole in dem ersten Code-Alphabet aufweist, wobei mindestens eine von Gruppen von Symbolen aus dem ersten Code-Alphabet mindestens zwei der aufeinander folgenden Symbole in dem ersten Code-Alphabet aufweist, die eine unterschiedliche Länge aufweisen.
  27. Verfahren nach Anspruch 21, wobei die Wörter verschiedene Verschiebungszählerwerte für einen Protokollpuffer aufweisen, der zum Verdichten von Daten verwendet wird, wobei jeder der Verschiebungszählerwerte einen Speicherort in dem Protokollpuffer angibt, in dem eine Vielzahl von Wörtern beginnt, die mit einer Vielzahl von Wörtern in einem zu verdichtenden Eingabedatenstrom übereinstimmt, wobei das Code-Alphabet verwendet wird, um ein Codewort für den Verschiebungszählerwert zu bestimmen, der in einem Kopierzeiger enthalten ist, um den Speicherort in dem Protokollpuffer darzustellen, der die Vielzahl von Wörtern in dem Eingabedatenstrom hat, und das ferner aufweist: Nutzen des zweiten Code-Alphabets in einem Verdichtungsprogramm, das die Symbole verwendet, um Codewörter für die Verschiebungszählerwerte in dem Protokollpuffer zu bestimmen.
DE112012005557.8T 2012-01-03 2012-12-19 Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden Active DE112012005557B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/342,899 US8692696B2 (en) 2012-01-03 2012-01-03 Generating a code alphabet of symbols to generate codewords for words used with a program
US13/342,899 2012-01-03
USUS-13/342,899 2012-01-03
PCT/IB2012/057449 WO2013102818A1 (en) 2012-01-03 2012-12-19 Generating a code alphabet of symbols to generate codewords for words used with a program

Publications (2)

Publication Number Publication Date
DE112012005557T5 true DE112012005557T5 (de) 2014-11-06
DE112012005557B4 DE112012005557B4 (de) 2016-12-15

Family

ID=48694387

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012005557.8T Active DE112012005557B4 (de) 2012-01-03 2012-12-19 Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden

Country Status (5)

Country Link
US (4) US8692696B2 (de)
CN (1) CN104040899B (de)
DE (1) DE112012005557B4 (de)
GB (1) GB2512533B (de)
WO (1) WO2013102818A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8400335B2 (en) 2011-07-21 2013-03-19 International Business Machines Corporation Using variable length code tables to compress an input data stream to a compressed output data stream
US8692696B2 (en) 2012-01-03 2014-04-08 International Business Machines Corporation Generating a code alphabet of symbols to generate codewords for words used with a program
US9331712B1 (en) 2015-05-11 2016-05-03 Qualcomm Incorporated Compressed caching in a virtual memory system
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US10177782B2 (en) * 2015-12-26 2019-01-08 Intel Corporation Hardware apparatuses and methods for data decompression
WO2017216711A1 (en) * 2016-06-13 2017-12-21 KARTUN, Edmund Hilton An electronic computer device and method for encoding a sequence of characters
WO2020194292A1 (en) * 2019-03-25 2020-10-01 Ariel Scientific Innovations Ltd. Systems and methods of data compression
EP4082119A4 (de) 2019-12-23 2024-02-21 Ariel Scientific Innovations Ltd. Systeme und verfahren zur datenkomprimierung

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4725815A (en) 1984-01-16 1988-02-16 International Business Machines Corporation Method for encoding and decoding a digital image
JPS639144A (ja) * 1986-06-30 1988-01-14 Matsushita Electric Ind Co Ltd イメ−ジセンサの製造方法
GB8815978D0 (en) * 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
US5016009A (en) 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
JP2505980B2 (ja) 1993-04-16 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 静的辞書作成方法及びコンピュ―タ実行システム
JPH09233467A (ja) * 1996-02-21 1997-09-05 Fujitsu Ltd 画像データ通信装置及び画像データ通信システムにおける通信データ量調整方法
US5963642A (en) * 1996-12-30 1999-10-05 Goldstein; Benjamin D. Method and apparatus for secure storage of data
US5874908A (en) 1997-09-19 1999-02-23 International Business Machines Corporation Method and apparatus for encoding Lempel-Ziv 1 variants
US5877711A (en) 1997-09-19 1999-03-02 International Business Machines Corporation Method and apparatus for performing adaptive data compression
US5974144A (en) * 1998-02-25 1999-10-26 Cipheractive Ltd. System for encryption of partitioned data blocks utilizing public key methods and random numbers
US20010029574A1 (en) 1998-06-18 2001-10-11 Rahul Razdan Method and apparatus for developing multiprocessore cache control protocols using a memory management system generating an external acknowledgement signal to set a cache to a dirty coherence state
EP0977152A3 (de) 1998-07-28 2000-12-27 Xerox Corporation Verfahren zur Datenkomprimierung unter Verwendung von Zeichenkettenanpassung
JP2000057039A (ja) 1998-08-03 2000-02-25 Canon Inc アクセス制御方法及び装置及びファイルシステム及び情報処理装置
US6218970B1 (en) 1998-09-11 2001-04-17 International Business Machines Corporation Literal handling in LZ compression employing MRU/LRU encoding
US7003111B2 (en) 2001-10-11 2006-02-21 International Business Machines Corporation Method, system, and program, for encoding and decoding input data
US6785771B2 (en) 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
US7502743B2 (en) * 2002-09-04 2009-03-10 Microsoft Corporation Multi-channel audio encoding and decoding with multi-channel transform selection
US7143115B2 (en) 2003-04-15 2006-11-28 Pocket Soft, Inc. Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7966424B2 (en) 2004-03-15 2011-06-21 Microsoft Corporation Data compression
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7788106B2 (en) 2005-04-13 2010-08-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Entropy coding with compact codebooks
US7991610B2 (en) 2005-04-13 2011-08-02 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Adaptive grouping of parameters for enhanced coding efficiency
US20060235683A1 (en) 2005-04-13 2006-10-19 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Lossless encoding of information with guaranteed maximum bitrate
US7215259B2 (en) 2005-06-03 2007-05-08 Quantum Corporation Data compression with selective encoding of short matches
US7623047B2 (en) * 2007-10-30 2009-11-24 Hewlett-Packard Development Company, L.P. Data sequence compression
US9275019B2 (en) 2007-12-21 2016-03-01 Sap Se System and method for performing Unicode matching
US8945502B2 (en) * 2008-04-30 2015-02-03 The Regents Of The University Of California Patterned, dense and high-quality SWNTs arrays
US7924178B2 (en) 2008-10-01 2011-04-12 Seagate Technology Llc System and method for lossless data compression
US20100191907A1 (en) 2009-01-26 2010-07-29 Lsi Corporation RAID Converter and Methods for Transforming a First RAID Array to a Second RAID Array Without Creating a Backup Copy
US8520958B2 (en) * 2009-12-21 2013-08-27 Stmicroelectronics International N.V. Parallelization of variable length decoding
US8400335B2 (en) 2011-07-21 2013-03-19 International Business Machines Corporation Using variable length code tables to compress an input data stream to a compressed output data stream
US8669889B2 (en) 2011-07-21 2014-03-11 International Business Machines Corporation Using variable length code tables to compress an input data stream to a compressed output data stream
US8692696B2 (en) * 2012-01-03 2014-04-08 International Business Machines Corporation Generating a code alphabet of symbols to generate codewords for words used with a program

Also Published As

Publication number Publication date
CN104040899A (zh) 2014-09-10
US20130342374A1 (en) 2013-12-26
WO2013102818A1 (en) 2013-07-11
US20170346502A1 (en) 2017-11-30
US8692696B2 (en) 2014-04-08
US9397695B2 (en) 2016-07-19
GB201412083D0 (en) 2014-08-20
US20150372692A1 (en) 2015-12-24
DE112012005557B4 (de) 2016-12-15
US9998144B2 (en) 2018-06-12
US9106254B2 (en) 2015-08-11
US20130169453A1 (en) 2013-07-04
GB2512533A (en) 2014-10-01
CN104040899B (zh) 2016-12-14
GB2512533B (en) 2015-07-08

Similar Documents

Publication Publication Date Title
DE112012005557B4 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
DE112013006339B4 (de) Kompression hoher Bandbreite um Datenströme zu Verschlüsseln
DE69905343T2 (de) Blockweiser adaptiver statistischer datenkompressor
DE112012004873B4 (de) Hohe Bandbreitendekomprimierung von mit variabler Länge verschlüsselten Datenströmen
DE69527679T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung
DE69838074T2 (de) Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten
DE69330196T2 (de) Textkomprimierungstechnik unter Anwendung einer frequenzgeordneten Matrix von Wort-Nummern-Abbildungen
DE69706439T2 (de) Rechnersortiersystem zur datenkompression
DE112010004531B4 (de) Datenwert-Vorkommensinformationen für Datenkompression
DE69935811T3 (de) Frequenzbereichsaudiodekodierung mit Entropie-code Moduswechsel
DE112012003503T5 (de) Skalierbares Deduplizierungssystem mit kleinen Blöcken
DE112013000734B4 (de) Multiplex-Klassifizierung zum Komprimieren von Tabellendaten
DE112017002971T5 (de) Effiziente Reduzierung von Ressourcen für die Simulation fermionischer Hamilton-Operatoren aufQuantenhardware
DE102016220801B4 (de) Erzeugen einer dynamischen Huffman-Tabelle
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE102016221813A1 (de) Datenreplikation auf der Grundlage des Verlaufs des Komprimierungsverhältnisses
DE60131247T2 (de) Dezimal-Binär Kodierer/Dekodierer
DE102009022233A1 (de) Verwendung einer Zeichenkette in Sytemen der Kryptographie, der Statistik, der Simulation, der Randomisierung, von Spielautomaten und dgl.
DE112008002903T5 (de) Datensequenzkompression
EP2940924A1 (de) PUF basierende Ableitung eines gerätespezifischen Wertes
DE69522497T2 (de) System und Verfahren zur Datenkompression
DE102008016179A1 (de) Automatische Generierung von Kompaktcodetabellen
WO2018051696A1 (ja) データ圧縮方法、データ圧縮装置、コンピュータプログラム及びデータベースシステム
DE112013000392T5 (de) Volles Ausnutzen von Parallelprozessoren zum Verarbeiten von Daten
DE112017005823T5 (de) Codieren von symbolen variabler länge zum ermöglichen eines parallelen decodierens

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R020 Patent grant now final