-
Gebiet der
Erfindung
-
Die Erfindung betrifft im allgemeinen
Datenkompression, und insbesondere eine Form einer Entropiecodierung.
-
Hintergrund
-
In einer typischen Codierungsumgebung werden
Eingabedaten von einem Codierer codiert, über einen Kommunikationskanal übertragen
(oder einfach gespeichert) und von einem Decoder decodiert. Während der
Codierung wird ein Eingabesignal typischerweise vorverarbeitet,
abgetastet, konvertiert, komprimiert oder anderweitig in eine Form
zur Übertragung
oder Speicherung manipuliert. Nach der Übertragung oder Speicherung
versucht der Decoder die Originaleingabe wieder zu rekonstruieren.
-
Eine wesentliche Einschränkung dieses
einfachen Modells besteht darin, dass ein gegebener Kommunikationskanal
eine bestimmte Kapazität oder
Bandbreite besitzt. Demzufolge ist es häufig erforderlich, den Informationsinhalt
der Eingabedaten zu reduzieren, um deren zuverlässige Übertragung, falls überhaupt
möglich, über den
Kommunikationskanal zu ermöglichen.
Wenn das Eingabesignal aus Symbolen mit gleicher wahrscheinlicher
Auftrittsmöglichkeit
zusammengesetzt ist, besteht dann eine optimale Codierung in der
Verwendung von Codewörtern gleicher
Länge,
wobei jedes Bit eines n-Bitcodes
eine Unterscheidung zwischen 2n gleich wahrscheinlichen Eingabemöglichkeiten
erlaubt. Somit kann ein einziges Bit (d. h. ein Codebuch mit zwei
Einträgen)
zwei Möglichkeiten
unterscheiden, zwei Bits können
vier Möglichkeiten
unterscheiden, usw.
-
Es ist jedoch nicht typisch, dass
ein Eingabestrom eine gleiche Wahrscheinlichkeit eines Empfangs
irgendeiner speziellen Nachricht besitzt. In der Praxis sind aufgrund
einer semantischen oder syntaktischen Struktur in der Eingabe bestimmte
Nachrichten wahrscheinlicher als andere. Die Aufgabe der Entropiecodierung
besteht darin, einen Vorteil aus einer derartigen Datenkorrelation
zu ziehen und die mittlere Länge
der Codeworte von erwarteten Eingaben mit bestimmten hoch wahrscheinlichen
Eingaben zu minimieren. Wenn eine Nachricht wahrscheinlicher als
andere ist, werden ein kürzerer
Codebucheintrag für
wahrscheinliche Nachrichten und längere Einträge für die weniger wahrscheinlichen
verwendet.
-
In letzter Zeit wurde erheblicher
Aufwand in die Entwicklung von verlustlosen und verlustbehafteten
Kompressionstechniken für
die Reduzierung der Größe von Daten
zur Übertragung
oder Speicherung investiert. Eine beliebte verlustlose Technik ist
als Huffmann-Codierung bekannt, welche eine spezielle Form von Entropiecodierung
ist. Die Entropiecodierung arbeitet durch Zuweisen von Codes variabler Länge (z.
B. Codebucheinträgen)
zu Blöcken
fester Größe der Eingabe.
D. h., ein zulässige
Variable X, welche bekanntermaßen
Werte x1 .. xm mit
entsprechender Wahrscheinlichkeit p1 ..
pm annimmt, wird einem Eintrag innerhalb
eines Satzes von Codeworten {Y} zugeordnet. Jedes Codewort yl
k in {Y} der Länge k besteht
wiederum aus einer begrenzten Folge von Codealphabeteinträgen {A}
= {a1 .. ad}. Zur
Vereinfachung wird yl
k einfach
als yl bezeichnet, wobei k mit impliziert
wird. Für
digitale Anwendungen ist das Codealphabet wahrscheinlich eine Reihe
binärer
Digits {0, 1} mit in Bits gemessenen Codelängen. Wenn dessen angenommenen
Codeworte so aufgebaut sind, muss nur eine einzige Abtastung einer
komprimierten Darstellung betrachtet werden, um die entsprechende
Ausgabe zu rekonstruieren. Die Schwierigkeit in einer Entropiecodierung
des Quellensignals hängt
von der Anzahl m möglicher
Werte ab, die X annehmen kann. Für
kleine m gibt es nur einige wenige mögliche Nachrichten, und daher
kann das Codebuch für
die Nachrichten sehr klein sein (es werden z. B. nur einige wenige
Bits benötigt,
um unzweifelhaft alle möglichen
Nachrichten darzustellen).
-
Wenn bekannt ist, dass ein Sender
ein Quellensignal bereitstellt, das eine von vier Nachrichten x1 .. x4 mit entsprechenden
Wahrscheinlichkeiten p1 .. p4 von
1/2, 1/4, 1/8 und 1/16 enthält,
kann man ineffizient die vier möglichen
Nachrichten mit nur zwei Bits darstellen. Dieses verschwendet jedoch
Bandbreite, da die ungleichmäßigen Wahrscheinlichkeiten
Dateneigenschaften anzeigen, die vorteilhaft genutzt werden können. Ein
effizienteres Verfahren, das als Skalar-Huffmann-Codierung bekannt
ist, erfordert einen Mittelwert von weniger als 2 Bits, um eine
derartige Nachricht zu codieren. Ein kurzer Codebucheintrag wird
x1 zugewiesen, da dieses am wahrscheinlichsten
ist, und zunehmend längere
Codes für
die weniger wahrscheinlichen Eingaben. Ein möglicher Satz von Codebucheinträgen ist
die Zuweisung von "1", um die Nachricht
x1 darzustellen, "01" für Nachricht x2, "000" für die Nachricht
x3 und "001" für die Nachricht
x4, Dieses ergibt eine mittlere Codelänge von 1,56
Bits anstelle von 2 für
die Codierung der Zufallsvariablen X – ein deutliche Einsparung.
-
Die Kompressionsleistung dieses Lösungsansatzes
ist dadurch begrenzt, dass jedes Quellensymbol einem Codewort mit
einer ganzzahligen Anzahl von Bits zugewiesen wird. Herkömmliche
Verfahren zur Überwindung
dieser Einschränkung
umfassen eine arithmetische Codierung und Vektor-Huffmann-Codierung.
Diese Verfahren gruppieren X's
in Blöcke
oder Vektoren, welche selbst als ein weiteres Quellensymbol behandelt
werden. D. h., statt einfach jede einzelne Nachricht X zu codieren,
werden stattdessen Folgen von mehreren X's codiert. So wie die Vertahren zum
Codieren einzelner Symbole den Vorteil der Auftrittshäufigkeit
eines Symbols in einem Eingabestrom nutzt, ermöglicht der letztere Lösungsansatz
der Gruppierung von Symbolen dem Codierer, den Vorteil von Abhängigkeiten
zwischen Eingabesymbolen zu nutzen. Die Codierung von Folgen von
X's erzeugt weitere
Einsparungen, da es aus Informationstheorieuntersuchungen bekannt
ist, dass die Entropie einer kohärenten
Serie X1 .. Xn kleiner oder
gleich als die Summe der Entropie jedes einzelnen X ist.
-
Theoretisch kann die Vektor-Huffmann-Codierung
eine kohärente
Quelle wesentlich effizienter als die Skalar-Huffmann-Codierung
komprimieren. Der Wirkungsgrad der Vektor-Huffmann-Codierung ist
nur durch praktische Gesichtspunkte beschränkt. Um höhere Kompressionsverhältnisse
zu erzielen, werden größere Vektordimensionen
benötigt.
Eine größere Dimension
vergrößert jedoch
die Codebucheinträge über praktikable
Begrenzungen hinaus. Beispielsweise entspricht für Quellensymbole mit 30 möglichen
Werten, eine Dimension von nur 6 einem Codebuch von 729 Millionen
Einträgen.
-
Man beachte auch, dass die vorstehenden Beispiele
von Entropiecodierung als eine Codierung von fester zu variabler
Länge gekennzeichnet
sind, da die Quellensymbole eine feste Länge besitzen, und die Codeworte
eine variable Länge
abhängig
von der Wahrscheinlichkeit des entsprechenden Quellensymbols besitzen.
Weitere Vertahren einer Entropiecodierung wurden versucht, welche
den entgegengesetzten Ansatz versuchen, wobei eine variable Anzahl
von Quellensymbolen miteinander gruppiert und dann in Codeworte
mit gleicher Länge übersetzt
werden. Wenn die Quelle aus unabhängigen X's besteht, und die Symbolgruppierungen
eine gleiche Wahrscheinlichkeit erreichen, ist ein derartiges umgekehrtes
Verfahren möglicherweise
optimal. Jedoch erfordern wie bei der Großdimensionsvektor-Huffmann-Codierung
derartige Lösungen
Ressourcen, welche praktisch (wenn überhaupt) verfügbare Ressourcen überschreiten.
Zusätzlich
ist für
Quellen mit Datenkohärenz,
wie z. B. für
Audio- oder Videodatenströme
dieser Lösungsansatz
mit variabler zu fester Länge
nicht nutzbringend.
-
EP 0 283 735 A2 beschreibt ein adaptives Datenkompressionsverfahren
und eine Vorrichtung.
-
R. L. Bailey et al., "Pipelining Data Compression
Algorithms", The
Computer Journal 33 (1990) August, No. 4, pages 308 bis 313 beschreibt
eine Hintereinanderschaltung mehrerer Datenkompressionsalgorithmen
durch sequentielles Verarbeiten von zwei vollständig unterschiedlichen Algorithmen.
Eingangsdaten werden mit einem String-Parsing-Algorithmus von variabler zu fester
Länge komprimiert. Dieses
wandelt die Eingabedaten in Codes fester Länge um, welche dann mit einem
Codierungsalgorithmus von fester zu variabler Länge komprimiert werden. "Pipelining" tritt durch die
Kompression von Daten mit einem ersten Algorithmus auf, welcher
ein erstes Codebuch verwendet, das Codewörter fester Länge erzeugt,
und indem dann die Ausgabe des ersten Algorithmus einem zweiten
Algorithmus zugeführt
wird, welcher ein zweites Codebuch verwendet, das Codeworte variabler
Länge erzeugt.
-
WO 98/40969 A2 beschreibt ein Textdateikompressionssystem,
das eine alphabetisch geordnete Hauptwörterbuchliste aller in der
Textdatei auftretenden einmaligen Worte erzeugt. Das Kompressionssystem
erzeugt ferner ein Wörterbuch
gemeinsamer Worte, das auf am häufigsten
in der Textdatei angetroffene Worte verweist. Das Wörterbuch
der gemeinsamen Worte und das Hauptwörterbuch weisen zusammen einen
eindeutigen Ein-Bit-Code jedem der am häufigsten angetroffenen Worte
zu, die in dem Wörterbuch
gemeinsamer Worte enthalten sind, und einen eindeutigen Zwei-Bit-Code
allen anderen Worten, die in dem Hauptwörterbuch enthalten sind. Nach
dem Erzeugen der Wörterbücher wird
ein Wortindex durch Ersetzen jedes Wortes in der Textdatei durch
dessen zugewiesenen Ein- oder Zwei-Bit-Code erzeugt, welche somit
eine komprimierte Form der Textdatei repräsentieren. Die am häufigsten
in der Textdatei angetroffenen Worte werden ermittelt, indem ein
Zählwert
der Anzahl von Malen geführt
wird, mit der jedes einzelne Wörterbuchwort
in der Textdatei auftritt.
-
Zusammenfassung
-
Es ist die Aufgabe der Erfindung,
ein verbessertes Verfahren und System zum Aufbauen eines Codebuchs
für Symbole
bereitzustellen, die aus einem Alphabet entnommen werden.
-
Diese Aufgabe wird von der Erfindung
wie in den unabhängigen
Ansprüchen
beansprucht gelöst. Bevorzugte
Ausführungsformen
sind in den abhängigen
Ansprüchen
definiert.
-
Es wird ein Verfahren zum Zuweisen
von Codes variabler Länge
zu Eingabefolgen variabler Länge
bereitgestellt. Insbesondere werden Entropietyp-Codes wahrscheinlichen
Eingangsfolgen zugewiesen, welche somit das Codieren eines speziellen Eingabestroms
in ein komprimiertes Format ermöglichen.
Wenn die Erfindung in einer Ressourcen-beschränkten Umgebung implementiert
wird, kann sie so konfiguriert werden, dass sie die Größe des Codebuches,
das für
die Durchführung
der Codierung und Decodierung erforderlich ist, reduziert. Beispielsweise
könnten
Codeworte variabler Länge
nur Eingaben zugewiesen werden, die hoch wahrscheinlich sind, während Vorgabecodes
weniger wahrscheinlichen Folgen zugewiesen werden können. Der
Wahrscheinlichkeitsgrad, der für
die Zuweisung eines spezifischen Codes zu einer spezifischen Eingabe
erforderlich ist, wird abhängig
von einer gewünschten
Codebuchgröße angepasst.
-
Der zu codierende Eingabestrom kann
jeder Datentyp sein, wie z. B. Zahlen, Buchstaben, oder ein binärer Datenstrom,
welcher Audio-, Video- oder andere Datentypen codiert. Zur Vereinfachung
wird der Eingabestrom hierin als eine Reihe von Symbolen bezeichnet,
wobei jedes "Symbol" die entsprechende Messeinheit
für die
spezielle Eingabe bezeichnet.
-
Insbesondere wird ein Codebuch für die Codierung
von Symbolen aufgebaut, in welchem Symbolgruppen variabler Größe jeweils
einem Code variabler Länge
auf der Basis der Auftrittswahrscheinlichkeit von Symbolgruppierungen
zugewiesen wird. Zum Auf bauen des Codebuchs werden mögliche Symbolgruppierungen
erzeugt und mit der Wahrscheinlichkeit der erzeugten Gruppierung
verglichen, welche in der exemplarischen Eingabe auftritt, die zum
Erzeugen des Codebuchs verwendet wird. Eine derartige exemplarische
Eingabe wird als eine angenähert
beliebige Eingabe angenommen, welche wahrscheinlich empfangen wird
und eine Codierung erfordert. Man beachte, dass die Eingabe dazu
verwendet werden kann, um die Erzeugung von Gruppierungen zu betreiben,
oder dass alle möglichen Gruppierungen
getestet und mit einer exemplarischen Eingabe verglichen werden
können;
es wird hierin angenommen, dass die Gruppierungen eingangsbetrieben
sind.
-
Eine Datenstruktur (oder Äquivalent)
kann zum Verfolgen von Symbolkombinationen (z. B. den Gruppierungen)
verwendet werden. Diese Struktur wird dazu verwendet, das neue Symbol
mit zuvor empfangenen Symbolen zu verbinden, so dass beliebig lange
Gruppierungen von zuvor empfangenen Symbolen verfolgt werden. Eine
mögliche
Konfiguration für
die Datenstruktur ist eine baumartige Datenstruktur, in welcher
aufeinanderfolgende Symbolgruppierungen neue Blattknoten ausbilden.
Diese Knoten können
eine vollständige
Gruppierung enthalten, oder lediglich die einzige Symbolerweiterung zu
einem vorhergehenden Elternknoten. In dieser letzteren Konfiguration
entspricht der Pfad von der Wurzel des Baumes einer speziellen Gruppierung.
-
Um die Gruppierung und Wahrscheinlichkeitszuweisungen
zu starten, werden bevorzugt eine oder mehrere triviale Gruppierungen
ausgewählt,
wie z. B. Einzelsymbol"Gruppen", welche Symbole
aus dem Eingabealphabet enthalten. Die Wahrscheinlichkeit dieser
Anfangsgruppierungen wird bewertet, um die Gruppierung zu ermitteln,
welche höchst
wahrscheinlich als Eingabe auftritt, wobei eine derartige Wahrscheinlichkeit
notwendigerweise in Bezug auf die exemplarischen Eingaben berechnet
wird. Die wahrscheinlichste Gruppierung wird dann mit Symbolen aus
dem Alphabet erweitert, um vorläufige Gruppierungen
zu erzeugen. Die Wahrscheinlichkeit dieser vorläufigen Gruppierungen wird dann
bewertet, um die wahrscheinlichsten vorläufigen Erweiterungen zu identifizieren,
und die am wenigsten wahrscheinlichen Gruppierungen, die in nur
eine einzige Gruppierung kombiniert werden.
-
Das Konzept eines Codebuchs besteht
in der Zuweisung von Codeworten zu Symbolgruppierungen. In einer
Ressourcen-beschränkten
Umgebung kann die Erfindung so konfiguriert werden, dass die Codebuchgröße beschränkt bleibt.
Ein Vertahren dieses durchzuführen
besteht in der Vermeidung der Zuweisung von Codes zu allen Eingabefolgen.
Statt dessen werden nur wahrscheinliche Eingabefolgen in dem Codebuch
gespeichert, und einem Entropie-Code zugewiesen. Unwahrscheinliche
Folgen werden in dem Codebuch als ein Eingabefolgevorsatz gefolgt
von einem speziellen Erweiterungsbuchstabenzusatz dargestellt. Dieser
Zusatzbuchstabe repräsentiert
alle möglichen
Eingabefolgeerweiterungen zu dem Vorsatz. Die Vorsatz/Zusatz-Paarung
repräsentiert
alle möglichen
Eingabefolgen beginnend mit dem Vorsatz, der keinen Eintrag in dem
Codebuch besitzt. Somit ergeben sich nach der Bewertung der vorläufigen Erweiterungen
zwei Codebucheinträge,
einer für
die meist wahrscheinliche Erweiterung und einer, der alle anderen
Erweiterungen (wiederum unter Annahme nur der am meist wahrscheinlichen Erweiterung)
repräsentiert.
-
Dieser Prozess der Erweiterung von
Gruppierungen und Zusammenlegung von Gruppierungen wird wiederholt,
bis die Datenstruktur bis zu einer vorbestimmten Kapazität aufgefüllt worden
ist. Man beachte jedoch, dass selbst dann, wenn das Codebuch bis
zu seiner Kapazität
aufgefüllt
wurde, die Eingabe weiter abgetastet werden kann, so dass Einträge mit höherer Wahrscheinlichkeit
innerhalb der Eingabe weniger wahrscheinliche aktuelle Einträge verdrängen. Der
Wirkungsgrad dieser Codierungstechnik ist alleine durch die gewählte Buchgröße und die
Typikalität
der exemplarischen Eingabe beschränkt. Sobald das Codebuch erzeugt
worden ist, wird jeder Codebucheintrag einem Entropie-Code zugewiesen, d.
h., einem Code mit einer Länge
umgekehrt proportional zu der Wahrscheinlichkeit des Eintrags.
-
Kurzbeschreibung
der Zeichnungen
-
1 ist
eine Blockdarstellung eines Computersystems, das zur Implementierung
einer Entropiecodierung von variabel zu variabel verwendet werden
kann.
-
2 stellt
ein Grundkommunikationsmodell dar.
-
3 ist
ein Flussdiagramm, das die Erzeugung eines Codebuchs mit Einträgen variabler
Länge für Symbolgruppierungen
variabler Länge
darstellt.
-
4 bis 10 stellen eine Erzeugung
eines Codebuches gemäß 3 für ein Alphabet {A, B, C} dar.
-
Detaillierte
Beschreibung
-
Die Erfindung wurde in einem Audio/Video-Codec
implementiert. Dieses ist nur ein Beispiel, wie die Erfindung implementiert
werden kann. Die Erfindung ist dafür ausgelegt, dort eingesetzt
zu werden, wo immer eine Entropiecodierung verwendet werden kann,
und ist auch für
die Kompression jedes Datentyps anwendbar. Kurz gesagt, erfordert
eine optimale Entropiecodierung erhebliche Ressourcen, und die dargestellten
Ausführungsformen
stellen eine nahezu optimale Codierungslösung bereit, welche weitaus
weniger Ressourcen erfordert.
-
Exemplarische
Betriebsumgebung
-
1 und
die nachstehende Diskussion sollen eine kurze, allgemeine Beschreibung
einer geeigneten Berechnungsumgebung bereitstellen, in welcher die
Erfindung implementiert werden kann. Obwohl die Erfindung in dem
allgemeinen Zusammenhang von Computer-ausführbaren Befehlen eines Computerprogramms
beschrieben wird, das auf einem Personalcomputer abläuft, wird
der Fachmann auf diesem Gebiet erkennen, dass die Erfindung auch
in Kombination mit anderen Programmmodulen implementiert werden
kann. Im allgemeinen beinhalten Programmodule Routinen, Programme,
Komponenten, Datenstrukturen, usw., welche spezielle Aufgaben ausführen oder
spezielle abstrakte Datentypen implementieren. Ferner wird der Fachmann
auf diesem Gebiet erkennen, dass die Erfindung mit anderen Computersystemkonfigurationen,
die Handgeräte,
Multiprozessorsysteme, Mikroprozessor-basierende oder programmierbare
Consumer-Elektronik, Minicomputer, Großcomputer und dergleichen umfassen,
in die Praxis umgesetzt werden kann. Die dargestellte Ausführungsform
der Erfindung wird auch in verteilten Computerumgebungen eingesetzt, in
welchen Aufgaben von entfernten Verarbeitungsvorrichtungen durchgeführt werden,
welche über
ein Verbindungsnetzwerk miteinander verbunden sind. Einige Ausführungsformen
der Erfindung können
jedoch auf selbständigen
Computern ausgeführt
werden. In einer verteilten Computerumgebung können Programmmodule sowohl
in lokalen als auch in entfernten Speichereinrichtungen lokalisiert
sein.
-
Gemäß 1 enthält ein exemplarisches System
für die
Implementation der Erfindung einen Computer 20, der eine
Verarbeitungseinheit 21, einen Systemspeicher 22 und
einen Systembus 23 enthält,
der verschiedene Systemkomponenten einschließlich des Systemspeichers mit
der Prozesseinheit 21 verbindet. Die Verarbeitungseinheit
kann irgendeiner von verschiedenen im Handel verfügbaren Prozessoren
sein, die einen Intel X86, Pentium und kompatiblen Mikroprozessor
von Intel oder andere, den Alpha-Prozessor
von Digital und den PowerPC von IBM und Motorola umfassen. Dual-Mikroprozessoren
und andere Mehrfach-Prozessorarchitekturen können ebenfalls als die Verarbeitungseinheit 21 verwendet
werden.
-
Der Systembus kann irgendeiner von
verschiedenen Arten von Busstrukturen sein, die einen Speicherbus
oder eine Speichersteuerung, einen Peripheriebus und einem lokalen
Bus sein, die eine Vielfalt von herkömmlichen Busarchitekturen wie
z. B. PCI, AGP, VESA, Microchannel, ISA und EISA verwenden, um nur
ein paar zu nennen. Der Systemspeicher enthält einen Nur-Lese-Speicher
(ROM) 24 und einen Speicher mit wahlfreiem Zugriff (RAM) 25. Ein
Basis-Eingabe/Ausgabe-System (BIOS), das die Grundroutinen enthält, welche
zur Übertragung
von Information zwischen Elementen innerhalb des Computers 20 beispielsweise
während
des Startvorgangs beitragen, ist im ROM 24 gespeichert.
-
Der Computer 20 enthält ferner
ein Festplattenlaufwerk 27, ein Magnetplattenlaufwerk 28,
um beispielsweise von einer entnehmbaren Platte 29 zu lesen
oder darauf zu schreiben, und ein optisches Plattenlaufwerk 30,
beispielsweise zum Lesen einer CD-ROM Disk 31 oder zum Lesen
von oder Schreiben auf andere optische Medien. Das Festplattenlaufwerk 27,
Magnetplattenlaufwerk 28 und optische Plattenlaufwerk 30 sind
mit dem Systembus 23 über eine
Festplattentreiberschnittstelle 32, eine Magnetplattentreiberschnittstelle 33 und
eine Schnittstelle 34 für
ein optisches Laufwerk verbunden. Die Laufwerke und ihre zugeordneten
Computer-lesbaren Medien stellen einen nicht flüchtigen Speicher von Daten,
Datenstrukturen, Computer-ausführbaren
Befehlen, usw. für
den Computer 20 dar. Obwohl sich die Beschreibung von Computer-lesbaren
Medien vorstehend auf eine Festplatte, eine entnehmbare magnetische
Platte und eine CD bezieht, dürfte
es für den
Fachmann erkennbar sein, dass andere Medientypen, welche von einem
Computer lesbar sind, wie z. B. Magnetkassetten, Flash-Memory-Karten,
digi tale Videoplatten, Bernoulli-Kassetten und dergleichen, ebenfalls
in der exemplarischen Betriebsumgebung verwendet werden können.
-
Eine Anzahl von Programmmodulen kann
in den Laufwerken und RAM 25 einschließlich eines Betriebssystems 35 einem
oder mehreren Anwendungsprogrammen (z. B. Internet-Browser-Software) 36,
anderen Programmmodulen 37 und Programmdaten 38 gespeichert
sein.
-
Ein Benutzer kann Befehle und Information in
den Computer 20 über
eine Tastatur 40 und Zeigevorrichtung, wie z. B. eine Maus 42,
eingeben. Weitere (nicht dargestellte) Eingabevorrichtungen können ein
Mikrophon, Joystick, Game Pad, eine Satellitenschüssel, einen
Scanner oder dergleichen umfassen. Diese und weitere Eingabevorrichtungen
sind mit der Verarbeitungseinheit 21 oft über eine
serielle Anschlussschnittstelle 46 verbunden, die mit dem
Systembus verbunden ist, können
jedoch auch über
andere Schnittstellen, wie z. B. einem Parallelport, Spieleport
oder einen universellen seriellen Bus (USB) angeschlossen sein.
Ein Monitor 47 oder eine andere Art von Anzeigevorrichtung
ist ebenfalls mit dem Systembus 22 über eine Schnittstelle, wie
z. B. einen Videoadapter 48, verbunden. Zusätzlich zu dem
Monitor enthalten Personalcomputer typischerweise weitere (nicht
dargestellte) periphere Ausgabevorrichtungen, wie z. B. Lautsprecher
und Drucker.
-
Vom Computer 20 wird erwartet,
dass er in einer vernetzten Umgebung unter Einsatz logischer Verbindungen
zu einem oder mehreren entfernten Computern, wie z. B. einem entfernten
Computer 49, arbeitet. Der entfernte Computer 49 kann
ein Webserver, ein Rooter, ein gleichrangiges Gerät, oder
ein weiterer gemeinsamer Netzknoten sein, und enthält typischerweise
viele von den in Bezug auf den Computer 20 beschriebenen
Elementen, obwohl nur eine Speichereinrichtung 50 in 1 dargestellt ist. Der Computer 20 kann
den entfernten Computer 49 über eine Internetverbindung
kontaktieren, welche über
einen Gateway (Überleiteinrichtung) 55 (z.
B. einen Rooter, eine spezielle Leitung oder eine andere Netzwerkverbindung),
eine Modem 54 Verbindung, oder über ein Büro-internes lokales Netz (LAN) 51 oder
ein Weitbereichsnetz (WAN) 52 aufgebaut wird. Man wird
erkennen, dass die dargestellten Netzverbindungen exemplarisch sind
und weitere Einrichtungen zum Aufbau einer Kommunikationsverbindung
zwischen den Computern verwendet werden können.
-
Gemäß den Praktiken des Fachmanns
auf dem Gebiet der Computerprogrammierung wird die vorliegende Erfindung
nachstehend unter Bezugnahme auf Akte und symbolische Darstellungen
von Operationen, die von dem Computer 20 ausgeführt werden,
beschrieben, soweit es nicht anderweitig angegeben wird. Derartige
Akte und Operationen werden manchmal als vom Computer ausgeführt bezeichnet.
Man wird erkennen, dass die Akte und symbolisch dargestellten Operationen
die Manipulation Daten repräsentierender
elektrischer Signale durch die Verarbeitungseinheit 21,
was eine sich ergebende Transformation oder Reduzierung der elektrischen
Signaldarstellung bewirkt, und die Aufbewahrung von Datenbits an
Speicherstellen in dem Speichersystem (einschließlich dem Systemspeicher 22, dem
Festplattenlaufwerk 27 und Floppy-Laufwerke 29,
und der CD-ROM 31 ), um dadurch den Betrieb des Computersystems
zu rekonfigurieren oder anderweitig zu verändern, sowie auch eine weitere
Verarbeitung von Signalen einschließen. Die Speicherstellen, in
welchen die Datenbits gespeichert werden, sind physikalische Stellen,
welche den Datenbits entsprechende spezielle elektrische, magnetische
oder optische Eigenschaften besitzen.
-
2 stellt
ein Grundkommunikationsmodell dar. In einem Grundkommunikationsmodell
gibt es eine Datenquelle oder Sender 200, einen Kommunikationskanal 204 und
einen Datenempfänger 208. Die
Quelle kann jemand sein, der an einem Telefon über Telefonleitungen mit einer
weiteren Person spricht. Oder die Quelle kann über drahtlose Verfahren an
Fernseh- oder Rundfunkempfänger
gesendetes Fernsehen oder Rundfunk sein. Oder die Quelle kann eine
digitale Codierung bestimmter Daten, wie z. B. Audio, Video oder
anderer sein, welche über eine
drahtgebundene oder drahtlose Kommunikationsverbindung (z. B. ein
LAN oder das Internet) an einen entsprechenden Decoder für die Information gesendet
werden.
-
Um das Senden und das Empfangen der
Daten zu ermöglichen,
wird ein Codierer 202 verwendet, um die Datenquelle für die Übertragung über den Kommunikationskanal 204 vorzubereiten.
Der Codierer ist für
die Umwandlung der Quellendaten in ein Format verantwortlich, das
für den
Kanal 204 geeignet ist. Beispielsweise wird im Zusammenhang
mit einem üblichen
Telefonanruf die Stimme einer Person typischerweise von dem Telefonhörer aus
Sprachtönen
in analoge Impulse umgewandelt, die als analoge Daten an ein lokales
Telefonempfangsgerät
gesendet werden. Dieses analoge Signal wird dann in digitale Form
umgewandelt, mit zahlreichen weiteren ähnlich codierten Gesprächen welche
multiplexiert, und über
eine gemeinsame Leitung an den Empfänger gesendet. Somit entspricht
in 2 der Kanal 204 zum
großen
Teil einem gemeinsamen Pfad, welcher von mehreren Sendern und Empfängern gemeinsam
genutzt wird. An dem Empfangsende 208 ist ein Decoder 206 zum
Umkehren des Codierungsprozesses erforderlich, um dem Empfänger erfassbare
Daten zu präsentieren.
-
Um die Datenübertragung zu optimieren, ist der
Codierer 202 häufig
dafür ausgelegt,
Kompressionsverfahren für
die Übertragung
der Daten zu verwenden. Kompression ist erwünscht, da mit Ausnahme unüblicher
Umstände
die Kommunikationsbandbreite eingeschränkt ist. Daher müssen für komplexe Datenquellen,
wie z. B. Audio- oder Videodaten die Quellendaten komprimiert werden,
um deren Übertragung über herkömmliche Übertragungspfade
zu ermöglichen.
-
Ein besonders effektives Codierungsverfahren
ist als Entropiecodierung bekannt, welches ein "Codebuch" nutzt, das kurze Codeworte enthält, welche
hoch wahrscheinlichen Eingabedaten vorab zugewiesen worden sind.
-
Ein effektives Codierverfahren ist
Entropiecodierung. Derartige Codierer können aus der Datenkohärenz Kapital
schlagen, und sind besonders effektiv, wenn Symbole eine nichtgleichförmige Wahrscheinlichkeitsverteilung
besitzen.
-
3 ist
ein Flussdiagramm, das ein bevorzugtes Verfahren zum Erzeugen eines
Codebuches darstellt. Insbesondere stellt 3 im Gegensatz zu herkömmlichen
Techniken dar, wie ein Codebuch mit Codezuordnungen variabler Längen für Symbolgruppierungen
variabler Längen
zu erzeugen ist. Wie vorstehend diskutiert, erfordern herkömmliche
Techniken Codes fester Länge
oder feste Blöcke
zur Eingabe. Bevorzugte Implementationen überwinden die Ressourcenanforderungen
einer Großdimensionsvektor-Codierung, und die
Nichtanwendbarkeit einer Codierung in Worte gleicher Länge, indem
ein Entropie-basierender variabler zu variabler Code bereitgestellt
wird, wobei Codeworte variabler Länge verwendet werden, um Folgen
mit variabler Länge
X zu codieren.
-
yi stelle
jede Symbolgruppe [xj] für 1 ≤ j ≤ ni mit
einer Wahrscheinlichkeit Pi eines Auftritts
innerhalb des Datenstroms (2 Kanal 204)
dar, und dass jeder Gruppe ein ent sprechendes Codewort mit Li Bits zugeordnet ist. Es wird angenommen,
dass jedes xj aus einem festen Alphabet
vorbestimmter Größe entnommen
wird. Die Aufgabe besteht in der Minimierung der Gleichung
-
-
Anstelle der Suche einer allgemeinen
Lösung
zu dem Problem wird das Problem in zwei unterschiedliche Aufgaben
aufgeteilt. Die erste Aufgabe ist die Identifikation einer (suboptimalen)
Gruppierung eines Satzes von Eingangssymbolen {xj} über einen
nachstehend beschriebenen empirischen Lösungsansatz. Die zweite Aufgabe
besteht in der Zuweisung eines Entropiecodes für die gruppierten Symbole {yi}. Man beachte, dass bekannt ist, dass dann,
wenn die Quelle nicht kohärent
ist (d. h., der Eingang unabhängig
oder ohne Speicher ist) jede Gruppierung, welche dieselbe Konfiguration
von {Nj} besitzt, denselben Codierungswirkungsgrad
erzielen kann. In dieser Situation wird die erste Aufgabe unlogisch.
-
Zur Durchführung der ersten Aufgabe wird eine
anfänglich
triviale Symbolgruppierung 300 erzeugt, wie z. B. {yj} = {xj}. Diese
anfängliche
Konfigurierung nimmt an, dass ein exemplarischer Eingabestrom verwendet
wird, um die Erzeugung des Codebuchs zu trainieren. Es dürfte sich
verstehen, dass ein Computer mit Softwarekonstruktionen, wie z.
B. Datenstrukturen, programmiert werden kann, um den Empfang jedes
Symbols aus einer Eingabe zu verfolgen. Derartige Datenstrukturen
können
als eine binäre
Baumstruktur, Hash-Tabelle oder irgendeine Kombination der zwei
implementiert werden. Weitere äquivalente
Strukturen können
ebenfalls verwendet werden.
-
Nach der Ermittlung der trivialen
Gruppierung wird die Auftrittswahrscheinlichkeit für jedes
yi berechnet 302. Eine derartige
Wahrscheinlichkeit wird in Bezug auf jede exemplarische Eingabe
ermittelt, welche zum Trainieren der Codebucherzeugung verwendet
wurde. Da weitere Symbole der Symboldatenstruktur hinzugefügt werden,
werden die Wahrscheinlichkeiten dynamisch angepasst.
-
Anschließend wird die höchst wahrscheinliche
Gruppierung yi identifiziert 304 (bezeichnet
als ymp). Wenn in 306 das Symbol
mit der höchsten Wahrscheinlichkeit
eine Grup pierung vorheriger Symbole mit niedrigerer Wahrscheinlichkeit
ist, wird dann die Gruppierung in ihre Bestandteilsymbole aufgeteilt 308 und
die Verarbeitung vom Schritt 302 aus neu gestartet. (Obwohl
Symbole kombiniert werden können,
behält
die Gruppe die Speicherung aller Symbole darin bei, so dass Symbole
extrahiert werden können).
-
Wenn das Symbol keine Gruppierung
ist, fährt
die Verarbeitung dann mit dem Schritt 310 fort, in welchem
die wahrscheinlichste Gruppierung dann vorläufig mit Einzelsymbolerweiterungen
xj's
erweitert wird 310. Bevorzugt wird ymp mit
jedem Symbol aus dem X-Alphabet erweitert. Es kann jedoch eine Vorhersageeinrichtung
verwendet werden, um nur einen Erweiterungssatz zu erzeugen, welcher
nur wahrscheinliche Erweiterungen enthält, wenn das Alphabet sehr
lang ist, und wenn bekannt ist, dass viele Erweiterungen unwahrscheinlich
sind. Beispielsweise kann eine derartige Vorhersageeinrichtung auf
einer semantischen oder kontextuellen Bedeutung basieren, so dass
sehr unwahrscheinliche Erweiterungen a priori ignoriert werden können.
-
Die Wahrscheinlichkeit für jede vorläufige Erweiterung
von ymP wird dann berechnet 312,
und nur die höchst
wahrscheinliche Erweiterung wird beibehalten 314. Der Rest
der Erweiterungen mit niedrigerer Wahrscheinlichkeit wird als eine
kombinierte Gruppierung zusammengefasst 316 und in einem Codebuch
mit einem speziellen Symbol gespeichert, um eine kombinierte Gruppierung
anzuzeigen. Dieses Ersatzzeichensymbol stellt irgendeine beliebige Symbolgruppierung
mit ymp als einen Vorsatz dar, jedoch mit
einer Erweiterung (Zusatz), der sich von der wahrscheinlichsten
Erweiterung unterscheidet. D. h., wenn ymp+
xmp) die wahrscheinlichste Wurzel und Erweiterung
ist, werden die anderen weniger wahrscheinlichen Erweiterungen als
ymp
, dargestellt. (Man beachte, dass
diese Diskussion zur Verdeutlichung eine serielle Verarbeitung von
Einzelsymbolerweiterungen annimmt; es wird jedoch eine parallele
Ausführung
mehrerer Symbolerweiterungen mit in Betracht gezogen).
-
Der Codebuchaufbau wird durch Wiederholen
318 der
Schritte
302 bis
316 abgeschlossen, bis alle Erweiterungen
durchgeführt
worden sind, oder die Anzahl der Codebucheinträge eine vorbestimmte Grenze
erreicht. Die Auswirkung einer wiederholten Anwendung der vorstehenden
Operationen besteht in der automatischen Sammlung von Symbolgruppierungen
mit hoher Korrelation, so dass eine Zwischengruppenkorrelation mi nimiert
ist. Dieses minimiert den Zähler
von
während gleichzeitig die Länge des
meist wahrscheinlichen y
i maximiert wird,
so dass der Zähler von
L maximiert wird.
-
Es sind verschiedene Techniken für die Speicherung
und Manipulierung des Codebuchs verfügbar. Eine Struktur für ein Codebuch
ist quer und die Speicherung eines N-fachen (z. B. binären, tertiellen, usw.)
Baums, in welcher die Symbolgruppierungen eine Durchquerung der
Baumstruktur führen.
Blattknoten des Baumes repräsentieren
das Ende der erkannten Symbolfolge, wo ein Entropiecode der Folge zugeordnet
wird. Knoten können
in Software als eine Struktur, Klassendefinition oder eine andere
Struktur codiert sein, welche die Speicherung eines Symbols oder
von dem Knoten zugeordneter Symbole ermöglicht.
-
Alternativ kann das Codebuch als
eine Tabelle strukturiert sein, wobei jede Eingabesymbolfolge in der
Auftrittswahrscheinlichkeit sortiert ist, wobei eine hoch wahrscheinliche
Eingabe an der Spitze der Tabelle liegt. Für große Tabellen kann die Tabelle
abhängig
von dem ersten Symbol sortiert sein, d. h. allen Symbolen, welche
mit "A" beginnen, werden
miteinander gruppiert, gefolgt von einer Reihe, welche mit "B" beginnt, usw. Gemäß dieser Anordnung werden alle
Einträge
innerhalb der Gruppierung gemäß ihrer
Auftrittswahrscheinlichkeit gruppiert. Die Position am Beginn jedes
Abschnittes wird markiert/verfolgt, so dass eine Hash-Funktion (z.
B. ein Nachschlagen auf der Basis des ersten Symbols) verwendet
werden kann, um den korrekten Abschnitt der Codebuchtabelle zu lokalisieren.
In diesem Nachschlagetabellen-Lösungsansatz
zum Speichern des Codebuchs erfordert, sobald das erste Symbol erfasst
ist, das Nachschlagen lediglich eine Suche des entsprechenden Tabellenabschnittes
bis ein übereinstimmender
Eintrag lokalisiert wird.
-
4 bis 10 veranschaulichen die Erzeugung
eines Codebuchs gemäß 3 für ein Alphabet {A, B, C}. Für diese
Diskussion wird das Codebuch bezüglich
eines exemplarischen Eingabestroms "A A A B B A A C A B A B B A B" definiert. Wie vorstehend
diskutiert, können
eine oder mehrere exemplarische Eingaben verwendet werden, um ein Codebuch
zu erzeugen, das dann von Codierern und Decodierern zum Verarbeiten
beliebiger Eingaben verwendet werden kann. Zur Verdeutlichung ist
das Codebuch als eine Baumstruktur dargestellt, obwohl es in der
Tat als eine lineare Tabelle, Hash-Tabelle, Datenbank usw. implementiert
werden kann. Gemäß Darstellung
ist der Baum links/rechts orientiert, wobei die linke Säule (z.
B. "A" und "XO") eine obere Reihe der
Baumstruktur repräsentiert,
und anschließend eingerückte Zeilen
die "Kinder" des vorhergehenden Zeilenknotens
darstellen (beispielsweise ist in einem Oben/Unten-Baum für 5 der Knoten "A" ein Elternknoten der ersten Zeile für einen
Mittelkindknoten "B" der zweiten Zeile).
-
Bei der Erzeugung des Codebuchs besteht die
allgemeine Regel in der Aufnahme des wahrscheinlichsten Blattknotens,
dessen Erweiterung, Neuberechnung der Wahrscheinlichkeiten, um den wahrscheinlichsten
Blattknoten zu ermitteln, und dann in der Kompaktierung der restlichen
Geschwisterknoten in einen einzigen Xn Knoten
(n = O ... N, jedes Mal, wenn Knoten kombiniert worden sind). Wenn
sich herausstellt, dass der wahrscheinlichste Knoten ein Gruppenknoten
ist, wird die Gruppe unterteilt, Wahrscheinlichkeiten neu berechnet,
und der wahrscheinlichste Elementknoten beibehalten (d. h., die
restlichen Gruppenelemente werden neu gruppiert). Die Verarbeitung
läuft zyklisch
weiter ab, bis ein Stopzustand, wie z. B. ein Codebuch mit vorbestimmter
Größe erreicht
worden ist.
-
4 stellt
eine anfängliche
Gruppierung für den
Eingabestrom "A
A A B B A A C A B A B B A B" dar.
Ein anfängliches
Parsing der Eingabe stellt Auftrittswahrscheinlichkeiten von A =
8/15, B = /15 und C = 1/15 dar. Diese anfängliche triviale Gruppierung kann
auf der Basis unterschiedlicher Kriterien erzeugt werden, wobei
die einfachste darin besteht, dass man ein Knoten erster Ebene für jedes
Zeichen in dem Alphabet hat. Wenn jedoch das Eingabealphabet groß ist, kann
die triviale Gruppierung auf einen bestimmten Untersatz von Symbolen
mit der höchsten
Wahrscheinlichkeit beschränkt
werden, wobei die restlichen Symbole in eine X Gruppierung kombiniert
werden. 4 stellt diese
Technik dar, indem mit nur zwei Anfangsgruppen gestartet wird, wobei
die Gruppe A 400 die Wahrscheinlichkeit 8/15 hat, und die
Gruppe XO 402 mit der Wahrscheinlichkeit 7/15 hat, während XO
alle restlichen Symbole mit niedriger Wahrscheinlichkeit in dem
Alphabet, wie z. B. B und C darstellt.
-
Nach der Erzeugung einer anfänglichen
trivialen Gruppierung wird der Blattknoten mit der höchsten Wahrscheinlichkeit
zur Erweiterung ausgewählt (siehe
auch Diskussion von 3 bezüglich der
Verarbeitungsfolge). Somit wird gemäß Darstellung in 5 die Gruppe A 400 vorläufig durch
jeden Buchstaben in dem Alphabet erweitert (oder man kann die Erweiterung
auf einen bestimmten Untersatz davon wie für das Erzeugen der anfänglichen
Gruppierung beschrieben, beschränken).
Wahrscheinlichkeiten werden dann bezüglich des Eingabestroms "A A A B B A A C A
B A B B A B" neu
berechnet, um Werte für die
vorläufigen
Erweiterungen A 406, B 408 und C 410 zu
ermitteln. Das Ergebnis sind neun Parsing-Gruppen, wobei "A A" 2/9 mal auftritt, "A B" 4/9 mal auftritt
und "A C" 0/9 mal auftritt.
Somit wird die wahrscheinlichste Erweiterung "A B" beibehalten, und
die anderen Erweiterungen in X1 = A, C zusammengefasst. Man beachte,
dass, obwohl diese Diskussion wiederholt alle Wahrscheinlichkeiten
neu berechnet, ein effizienter Ansatz darin besteht, Wahrscheinlichkeiten
und Symbolzuordnungen für
jeden Knoten innerhalb des Knotens beizubehalten und Information
nur nach Bedarf zu berechnen.
-
6 stellt
das Zusammenfassen in X1 412 für 5 dar. Die Verarbeitung wiederholt sich
mit der Identifikation des Knotens mit der höchsten Wahrscheinlichkeit,
z. B. des Knotens B 408 mit der Wahrscheinlichkeit 4/9.
-
Gemäß Darstellung in 7 wird dieser Knoten 408 vorläufig mit
Symbolen A 414, B 416, C 418 erweitert
und wie vorstehend diskutiert die vorläufige Gruppierung mit der höchsten Wahrscheinlichkeit
beibehalten. Nach der Neuberechnung der Wahrscheinlichkeiten, ist
das Ergebnis acht Parsing-Gruppen, in welchen die Symbolfolge "A B A" 414 einmal
auftritt, "A B B" 416 einmal
auftritt und "A B
C" 418 überhaupt
nicht auftritt. Da die vorläufigen Erweiterungen
A 414 und B 416 dieselbe Auftrittswahrscheinlichkeit
besitzen, muss eine Regel definiert werden, welches Symbol zur Beibehaltung
gewählt
wird. Für
diese Diskussion wird, sobald gleiche Wahrscheinlichkeiten vorliegen,
der Knoten der höchsten
Zeile (d. h. der Kindknoten am weitesten links in einem Oben/Unten-Baum) beibehalten.
In gleicher Weise wird, wenn ein Konflikt zwischen Baumreihen vorliegt,
der Knoten der am weitesten links liegenden Reihe (d. h. der Knoten
am nächsten zu
der Wurzel eines Oben/Unten-Baums) beibehalten.
-
Man beachte, dass das vorstehend
beschriebene Parsing der exemplarischen Eingabe nicht die Aufeinanderfolge
von zwei Symbolen "A
B" der Eingabe berücksichtigt.
Gemäß Darstellung
in 7 gibt es kein "A B" entsprechendes Blatt,
da diese Konfiguration in "A
B A", "A B B" und "A B C" erweitert wurde.
Zur Kompensation können
Codebucheinträge erzeugt
werden, um solche Enden von Eingabefolgen zu berücksichtigen, oder die Eingabe
ohne Eintrag kann mit einem speziellen Zeichen verlassen und in
den codierten Ausgabestrom eingefügt werden. Beispielsweise kann
ein spezielles Symbol verwendet werden, um das Ende einer Eingabe
anzuzeigen, und dadurch implizieren, wie aufeinanderfolgende Buchstaben
bei der Decodierung zu handhaben sind.
-
Somit wird gemäß Darstellung in 8 der Knoten A 414 beibehalten
und die Knoten B 416 und C 418 werden in den Knoten
X2 = B, C 420 kombiniert, welcher eine kombinierte Wahrscheinlichkeit von
1/8 + 0/8 besitzt. Nun besteht der nächste Schritt in der Erweiterung
des Knotens mit der derzeit höchsten
Wahrscheinlichkeit in Bezug auf den Eingabestrom. Gemäß Darstellung
besitzen die Knoten X1 = A, C 412 und XO = B, C 402 dieselbe
Auftrittswahrscheinlichkeit (3/8). Gemäß vorstehender Diskussion wird
der höchste
Knoten in dem Baum (XO 402) erweitert. (Obwohl es nur für die Konsistenz
erforderlich ist, wird es bevorzugt, Knoten höherer Ebene zu erweitern, da
dieses den Codierungswirkungsgrad vergrößern kann, indem die Anzahl
langer Codewörter
vergrößert wird).
-
Jedoch ist XO 402 ein kombinierter
Knoten, so dass er aufgeteilt statt erweitert werden muss. 9 veranschaulicht das Ergebnis
der Aufteilung des Knotens XO in seine Bestandsymbole B 422 und C 424.
Eine Neuberechnung der Wahrscheinlichkeiten zeigt, dass Symbolfolgen "A B A" mit 1/8 auftreten, "A B X2" mit 1/8 auftreten, "A X1" mit 3/8 auftreten, "B" 422 mit 2/8 auftritt und "C" mit 1/8 auftritt. Da dieses ein Aufteilungsvorgang
ist, wird der Teilungsknoten mit der höchsten Wahrscheinlichkeit (z.
B. der Knoten B 422) beibehalten, und der bzw. die restlichen
Knoten werden wieder in XO = C 424 rückkombiniert.
-
10 stellt
das Ergebnis der Beibehaltung des Knotens B 422 mit der
hohen Wahrscheinlichkeit dar. Man beachte, dass die Gruppierung
XO nun nur ein einziges Symbol "C" repräsentiert.
Nach einer Betrachtung der Wahrscheinlichkeiten muss der Knoten mit
der höchsten
Wahrscheinlichkeit identifiziert und aufgeteilt oder erweitert werden.
Gemäß Darstellung tritt
die Symbolfolge "A
B A" mit 1/8, "A B X2" mit 1/8, "A X1" mit 3/8, "B" mit U8 und "XO" mit
1/8 auf. Daher muss der Knoten X1 412 als ein kombinierter
Knoten geteilt werden.
-
Die Teilung setzt sich wie vorstehend
diskutiert fort und die Verarbeitung des Codebuchs verläuft zyklisch
gemäß Darstellung
in 3, wobei Knoten mit
höchster
Wahrscheinlichkeit erweitert oder geteilt werden bis ein Stopzustand
erreicht wird (d. h., das Codebuch eine maximale Größe erreicht).
Man beachte, dass für
die Konfiguration von 10 die
mittleren Bits pro Eingangssymbol, unter Annahme von Teilbits unter
idealer Huffmann-Codierung der Blattknoten angenähert 0,8 Bitpro Symbol sind
(variiert abhängig
davon, wie die Folgeeingabe "A
B" gehandhabt wird).
Dieses stellt eine signifikante (etwa 10%) Einsparung gegenüber früheren verlustlosen
Kompressionstechniken dar wie z. B. eine ideale Skalar-Huffmann-Codierung
dar.