Das arithmetische Codieren

Das arithmetische Codieren ist eine Form der in der lossless Datenkompression verwendeten Wärmegewicht-Verschlüsselung der variablen Länge. Normalerweise wird eine Reihe von Charakteren wie die Wörter "hallo dort" mit einer festgelegten Zahl von Bit pro Charakter, als im ASCII-Code vertreten. Wenn eine Schnur zur Arithmetik-Verschlüsselung umgewandelt wird, werden oft verwendete Charaktere mit weniger Bit und vorkommenden Charakteren "nicht versorgt, so oft" wird mit mehr Bit versorgt, auf weniger Bit verwendet insgesamt hinauslaufend. Das arithmetische Codieren unterscheidet sich von anderen Formen des Wärmegewichtes, das wie Huffman verschlüsselt, der darin codiert, anstatt den Eingang in Teilsymbole zu trennen und jeden durch einen Code zu ersetzen, das arithmetische Codieren verschlüsselt die komplette Nachricht in eine einzelne Zahl, ein Bruchteil n wo (0.0  n < 1.0).

Durchführungsdetails und Beispiele

Gleiche Wahrscheinlichkeiten

Im einfachsten Fall ist die Wahrscheinlichkeit jedes Symbol-Auftretens gleich. Betrachten Sie zum Beispiel eine Folge als genommen von eine Reihe drei Symbole, A, B, und C, jeder, um ebenso wahrscheinlich vorzukommen. Einfache Block-Verschlüsselung würde 2 Bit pro Symbol verwenden, der verschwenderisch ist: Eine der Bit-Schwankungen wird nie verwendet.

Eine effizientere Lösung ist, die Folge als eine rationale Zahl zwischen 0 und 1 in der Basis 3 zu vertreten, wo jede Ziffer ein Symbol vertritt. Zum Beispiel konnte die Folge "ABBCAB" 0.011201 werden. Der nächste Schritt soll diese dreifältige Zahl mit einer Binärzahl des festen Punkts der genügend Präzision verschlüsseln, um es, solcher als 0.001011001 wieder zu erlangen - das ist nur 9 Bit, die um 25 % kleiner sind als die naive Block-Verschlüsselung. Das ist für lange Folgen ausführbar, weil es effiziente, Algorithmen im Platz gibt, für die Basis willkürlich genauer Zahlen umzuwandeln.

Den Wert zu decodieren, die ursprüngliche Schnur wissend, hatte Länge 6, man kann sich einfach zurück umwandeln, um 3, herum zu 6 Ziffern zu stützen, und die Schnur wieder zu erlangen.

Das Definieren eines Modells

Im Allgemeinen können arithmetische Codierer nah-optimale Produktion für jeden gegebenen Satz von Symbolen erzeugen, und Wahrscheinlichkeiten (ist der optimale Wert −logP Bit für jedes Symbol der Wahrscheinlichkeit P, sieh Quelle Lehrsatz codieren). Kompressionsalgorithmen, die Arithmetik-Codieranfang durch die Bestimmung eines Modells der Daten - grundsätzlich eine Vorhersage dessen verwenden, was Muster in den Symbolen der Nachricht gefunden werden. Je genauer diese Vorhersage ist, desto näher am optimalen die Produktion sein wird.

Beispiel: Ein einfaches, statisches Modell, für die Produktion eines besonderen Mithörinstrumentes zu beschreiben, könnte mit der Zeit sein:

  • 60-%-Chance des Symbols NEUTRALER
  • 20-%-Chance des Symbols POSITIVER
  • 10-%-Chance des Symbols NEGATIVER
  • 10-%-Chance des Symbol-ENDES DATEN. (Die Anwesenheit dieses Symbols bedeutet, dass der Strom innerlich 'begrenzt wird', wie in der Datenkompression ziemlich üblich ist; wenn dieses Symbol im Datenstrom erscheint, wird der Decoder wissen, dass der komplette Strom decodiert worden ist.)

Modelle können auch Alphabete außer dem einfachen für dieses Beispiel gewählten vier Zeichensatz behandeln. Hoch entwickeltere Modelle sind auch möglich: Das höherwertige Modellieren ändert seine Bewertung der aktuellen Wahrscheinlichkeit eines Symbols, das auf den Symbolen gestützt ist, die ihm vorangehen (der Zusammenhang), so dass in einem Modell für den englischen Text, zum Beispiel, die Prozentsatz-Chance von "u" viel höher sein würde, wenn es einem "Q" oder einem "q" folgt. Modelle können sogar anpassungsfähig sein, so dass sie unaufhörlich ihre Vorhersage der Daten ändern, die darauf gestützt sind, was der Strom wirklich enthält. Der Decoder muss dasselbe Modell wie der encoder haben.

Verschlüsselung und Entzifferung: Übersicht

Im Allgemeinen ist jeder Schritt des Verschlüsselungsprozesses, abgesehen vom allerletzten, dasselbe; der encoder hat grundsätzlich gerade drei Stücke von Daten, um in Betracht zu ziehen:

  • Das folgende Symbol, das verschlüsselt werden muss
  • Der aktuelle Zwischenraum (am wirklichen Anfang des Verschlüsselungsprozesses, der Zwischenraum wird darauf gesetzt, aber das wird sich ändern)
  • Die Wahrscheinlichkeiten, die das Modell jedem der verschiedenen Symbole zuteilt, die in dieser Bühne möglich sind (wie erwähnt, bedeuten frühere, höherwertige oder anpassungsfähige Modelle, dass diese Wahrscheinlichkeiten nicht notwendigerweise dasselbe in jedem Schritt sind.)

Der encoder teilt den aktuellen Zwischenraum in Subzwischenräume, jeder, einen Bruchteil des aktuellen Zwischenraums vertretend, der zur Wahrscheinlichkeit dieses Symbols im aktuellen Zusammenhang proportional ist. Welch auch immer Zwischenraum dem wirklichen Symbol entspricht, das daneben ist verschlüsselt werden, wird der im nächsten Schritt verwendete Zwischenraum.

Beispiel: für das Vier-Symbole-Modell oben:

  • der Zwischenraum für den NEUTRALEN würde sein
  • der Zwischenraum für den POSITIVEN würde sein
  • der Zwischenraum für den NEGATIVEN würde sein
  • der Zwischenraum für das Ende der DATEN würde sein.

Als alle Symbole verschlüsselt worden sind, identifiziert der resultierende Zwischenraum eindeutig die Folge von Symbolen, die es erzeugt haben. Jeder, der denselben Endzwischenraum und Modell hat, das verwendet wird, kann die Symbol-Folge wieder aufbauen, die in den encoder eingegangen sein muss, um auf diesen Endzwischenraum hinauszulaufen.

Es ist nicht notwendig, den Endzwischenraum jedoch zu übersenden; es ist nur notwendig, einen Bruchteil zu übersenden, der innerhalb dieses Zwischenraums liegt. Insbesondere es ist nur notwendig, genug Ziffern (in beliebiger Basis) des Bruchteils zu übersenden, so dass alle Bruchteile, die mit jenen Ziffern Fall in den Endzwischenraum beginnen.

Verschlüsselung und Entzifferung: Beispiel

Denken Sie den Prozess, für eine mit dem gegebenen Vier-Symbole-Modell verschlüsselte Nachricht zu decodieren. Die Nachricht wird im Bruchteil 0.538 verschlüsselt (das Verwenden der Dezimalzahl für die Klarheit, statt der Dualzahl; auch das Annehmen, dass es nur so viele Ziffern, wie erforderlich, gibt die Nachricht decodieren.)

Der Prozess fängt mit demselben durch den encoder verwendeten Zwischenraum an: Und das Verwenden desselben Modells, das Teilen davon in dieselben vier Subzwischenräume, die der encoder haben muss. Der Bruchteil 0.538 Fälle in den Subzwischenraum für den NEUTRALEN; das zeigt an, dass das erste Symbol der gelesene encoder muss NEUTRAL gewesen sein, so ist das das erste Symbol der Nachricht.

Teilen Sie als nächstes den Zwischenraum in Subzwischenräume:

  • der Zwischenraum für den NEUTRALEN würde - 60 % von sein
  • der Zwischenraum für den POSITIVEN würde - 20 % von sein
  • der Zwischenraum für den NEGATIVEN würde - 10 % von sein
  • der Zwischenraum für das Ende der DATEN würde sein. - 10 % von

Seitdem.538 ist innerhalb des Zwischenraums, das zweite Symbol der Nachricht muss NEGATIV gewesen sein.

Teilen Sie wieder unseren aktuellen Zwischenraum in Subzwischenräume:

der Zwischenraum für den NEUTRALEN würde sein der Zwischenraum für den POSITIVEN würde sein der Zwischenraum für den NEGATIVEN würde sein der Zwischenraum für das Ende der DATEN würde sein.

Jetzt.538 Fälle innerhalb des Zwischenraums des Symbols des Endes der DATEN; deshalb muss das das folgende Symbol sein. Da es auch das innere Beendigungssymbol ist, bedeutet es, dass die Entzifferung abgeschlossen ist. Wenn der Strom nicht innerlich begrenzt wird, muss es eine andere Weise geben anzuzeigen, wo der Strom anhält. Sonst konnte der Entzifferungsprozess für immer weitergehen, irrtümlicherweise mehr Symbole vom Bruchteil lesend, als es tatsächlich darin verschlüsselt wurde.

Quellen der Wirkungslosigkeit

Die Nachricht 0.538 im vorherigen Beispiel könnte durch die ebenso kurzen Bruchteile 0.534, 0.535, 0.536, 0.537 oder 0.539 verschlüsselt worden sein. Das weist darauf hin, dass der Gebrauch der Dezimalzahl statt der Dualzahl eine Wirkungslosigkeit eingeführt hat. Das ist richtig; der Informationsinhalt einer dreistelligen Dezimalzahl ist etwa 9.966 Bit; dieselbe Nachricht könnte im binären Bruchteil 0.10001010 (gleichwertig zu 0.5390625 Dezimalzahl) zu einem Selbstkostenpreis von nur 8 Bit verschlüsselt worden sein. (Die Endnull muss im binären Bruchteil angegeben werden, oder die Nachricht ohne Außeninformation wie zusammengepresste Strom-Größe zweideutig sein würde.)

Diese 8-Bit-Produktion ist größer als der Informationsinhalt oder Wärmegewicht der Nachricht, die 1.57 × 3 oder 4.71 Bit ist. Der große Unterschied zwischen den 8 des Beispiels (oder 7 mit der komprimierten Außendatengröße-Information) Bit der Produktion und das Wärmegewicht von 4.71 Bit wird durch die kurze Beispiel-Nachrichtenunfähigkeit verursacht, den Codierer effektiv auszuüben. Die geforderten Symbol-Wahrscheinlichkeiten waren, aber die wirklichen Frequenzen in diesem Beispiel sind. Wenn die Zwischenräume für diese Frequenzen wieder geanpasst werden, würde das Wärmegewicht der Nachricht 1.58 Bit sein, und dieselbe NEUTRALE NEGATIVE ENDOFDATA Nachricht konnte als Zwischenräume und ein binärer Zwischenraum dessen verschlüsselt werden. Das konnte eine Produktionsnachricht 111, oder gerade 3 Bit nachgeben. Das ist auch ein Beispiel dessen, wie statistische Codiermethoden wie arithmetische Verschlüsselung eine Produktionsnachricht erzeugen können, die größer ist als die Eingangsnachricht besonders wenn das Wahrscheinlichkeitsmodell aus ist.

Das anpassungsfähige arithmetische Codieren

Ein Vorteil des Arithmetik-Codierens über andere ähnliche Methoden der Datenkompression ist die Bequemlichkeit der Anpassung. Anpassung ist das Ändern der Frequenz (oder Wahrscheinlichkeit) Tische, während sie die Daten bearbeitet. Die decodierten Daten vergleichen die ursprünglichen Daten, so lange der Frequenztisch in der Entzifferung ebenso und in demselben Schritt wie in der Verschlüsselung ersetzt wird. Die Synchronisation wird gewöhnlich auf einer Kombination von Symbolen gestützt, die während der Verschlüsselung und Entzifferung des Prozesses vorkommen. Das anpassungsfähige arithmetische Codieren verbessert bedeutsam das Kompressionsverhältnis im Vergleich zu statischen Methoden; es kann so wirksam sein wie 2 bis 3mal besser im Ergebnis.

Präzision und Wiedernormalisierung

Die obengenannten Erklärungen des arithmetischen Codierens enthalten etwas Vereinfachung. Insbesondere sie werden geschrieben, als ob der encoder zuerst die Bruchteile berechnet hat, die die Endpunkte des Zwischenraums vollständig mit der unendlichen Präzision vertreten, und nur den Bruchteil zu seiner Endform am Ende der Verschlüsselung umgewandelt hat. Anstatt zu versuchen, unendliche Präzision vorzutäuschen, funktionieren die meisten arithmetischen Codierer stattdessen an einem gestellten Limit der Präzision, die sie wissen, dass der Decoder im Stande sein wird, und um die berechneten Bruchteile zu ihren nächsten Entsprechungen an dieser Präzision zusammenzupassen. Ein Beispiel zeigt, wie das arbeiten würde, wenn das Modell auffordern würde, dass der Zwischenraum in Drittel geteilt wurde, und dem mit 8-Bit-Präzision näher gekommen wurde. Bemerken Sie, dass da jetzt die Präzision bekannt ist, auch sind die binären Reihen, die wir im Stande sein werden zu verwenden.

Ein Prozess hat gerufen Wiedernormalisierung hält die begrenzte Präzision davon ab, eine Grenze auf der Gesamtzahl von Symbolen zu werden, die verschlüsselt werden können. Wann auch immer die Reihe auf den Punkt reduziert wird, wo alle Werte in der Reihe bestimmte beginnende Ziffern teilen, werden jene Ziffern an die Produktion gesandt. Für jedoch viele Ziffern der Präzision kann der Computer behandeln, es behandelt jetzt weniger als das, so werden die vorhandenen Ziffern verlassen ausgewechselt, und an den richtigen, neuen Ziffern hinzugefügt werden, um die Reihe so weit auszubreiten, wie möglich. Bemerken Sie, dass dieses Ergebnis in zwei der drei Fälle von unserem vorherigen Beispiel vorkommt.

Arithmetik, die als eine verallgemeinerte Änderung der Basis codiert

Rufen Sie zurück, dass im Fall, wo die Symbole gleiche Wahrscheinlichkeiten hatten, das arithmetische Codieren durch eine einfache Änderung der Basis oder Basis durchgeführt werden konnte. Im Allgemeinen kann Arithmetik (und Reihe) das Codieren als eine verallgemeinerte Änderung der Basis interpretiert werden. Zum Beispiel können wir auf jede Folge von Symbolen schauen:

:

weil eine Zahl in einer bestimmten Basis, die wagt, dass die beteiligten Symbole einen bestellten Satz und jedes Symbol im bestellten Satz bilden, eine folgende ganze Zahl = 0, B = 1, C = 2, D = 3, und so weiter anzeigt. Das läuft auf die folgenden Frequenzen und kumulativen Frequenzen hinaus:

Die kumulative Frequenz ist die Summe aller Frequenzen darunter in einem Frequenzvertrieb (ein Laufen, das von Frequenzen ganz ist).

In einem Stellungsziffer-System ist die Basis oder Basis, mehreren verschiedenen Symbolen numerisch gleich, die verwendet sind, um die Zahl auszudrücken. Zum Beispiel im dezimalen System ist die Zahl von Symbolen 10, nämlich 0,1,2,3,4,5,6,7,8,9. Die Basis wird verwendet, um jede begrenzte ganze Zahl in einem gewagten Vermehrer in der polynomischen Form auszudrücken. Zum Beispiel ist die Nummer 457 wirklich 4×10 + 5×10 + 7×10, wo Basis 10 gewagt, aber ausführlich nicht gezeigt wird.

Am Anfang werden wir DABDDB in eine Basis 6 Ziffer umwandeln, weil 6 die Länge der Schnur ist. Die Schnur wird zuerst in die Ziffer-Schnur 301331 kartografisch dargestellt, der dann zu einer ganzen Zahl durch das Polynom kartografisch darstellt:

:

Das Ergebnis 23671 hat eine Länge von 15 Bit, die nicht sehr der theoretischen Grenze nah ist (das Wärmegewicht der Nachricht), der etwa 9 Bit ist.

Um eine Nachricht mit einer Länge zu verschlüsseln, die an der theoretischen durch die Informationstheorie festgesetzten Grenze näher ist, müssen wir die klassische Formel ein bisschen verallgemeinern, für die Basis zu ändern. Wir werden niedrigere und obere Grenzen L und U schätzen und eine Zahl zwischen ihnen wählen. Für die Berechnung von L multiplizieren wir jeder Begriff im obengenannten Ausdruck durch das Produkt der Frequenzen von allen ist vorher Symbole vorgekommen:

:

Der Unterschied zwischen diesem Polynom und dem Polynom ist oben, dass jeder Begriff mit dem Produkt der Frequenzen aller vorher vorkommenden Symbole multipliziert wird. Mehr allgemein kann L als geschätzt werden:

:

wo die kumulativen Frequenzen sind und die Frequenzen von Ereignissen sind. Indizes zeigen die Position des Symbols in einer Nachricht an. Im speziellen Fall, wo alle Frequenzen 1 sind, ist das die Formel der Änderung der Basis.

Das obere hat gebunden U wird L plus das Produkt aller Frequenzen sein; in diesem Fall U = L + (3 × 1 × 2 × 3 × 3 × 2) = 25002 + 108 = 25110. Im Allgemeinen wird durch U gegeben:

:

Jetzt können wir jede Zahl aus dem Zwischenraum [L, U wählen), die Nachricht zu vertreten; eine günstige Wahl ist der Wert mit der längstmöglichen Spur von zeroes, 25100, da es uns erlaubt, Kompression durch das Darstellen des Ergebnisses als 251×10 zu erreichen. Der zeroes kann auch gestutzt sein, 251 gebend, wenn die Länge der Nachricht getrennt versorgt wird. Längere Nachrichten werden dazu neigen, längere Spuren von zeroes zu haben.

Um die ganze Zahl 25100 zu decodieren, kann die polynomische Berechnung, wie gezeigt, im Tisch unten umgekehrt werden. In jeder Bühne wird das aktuelle Symbol dann identifiziert der entsprechende Begriff wird vom Ergebnis abgezogen.

Während der Entzifferung ergreifen wir nach dem Teilen durch die entsprechende Macht 6 das Wort. Das Ergebnis wird dann gegen die kumulativen Zwischenräume verglichen, und das passende Symbol wird davon ausgewählt schlagen Tisch nach. Wenn das Symbol identifiziert wird, wird das Ergebnis korrigiert. Der Prozess wird für die bekannte Länge der Nachricht fortgesetzt, oder während das restliche Ergebnis positiv ist. Der einzige Unterschied im Vergleich zur klassischen Änderung der Basis ist, dass es einen mit jedem Symbol vereinigten Wertbereich geben kann. In diesem Beispiel ist A immer 0, B ist entweder 1 oder 2, und D ist einige 3, 4, 5. Das ist in die genaue Übereinstimmung mit unseren Zwischenräumen, die durch die Frequenzen bestimmt werden. Wenn alle Zwischenräume 1 gleich sind, haben wir einen speziellen Fall der klassischen Grundänderung.

Theoretische Grenze der komprimierten Nachricht

Der tiefer bestimmte L überschreitet nie n, wo n die Größe der Nachricht ist, und so in Bit vertreten werden kann. Nachdem die Berechnung des oberen U und die Verminderung der Nachricht durch das Auswählen einer Zahl vom Zwischenraum [L, U gebunden hat) mit der längsten Spur von Nullen, können wir wagen, dass diese Länge durch Bit reduziert werden kann. Da jede Frequenz in einem Produkt genau dieselbe Zahl von Zeiten wie der Wert dieser Frequenz vorkommt, können wir die Größe des Alphabetes A für die Berechnung des Produktes verwenden

:

Sich an Klotz wegen der geschätzten Zahl von Bit in der Nachricht wendend, wird die Endnachricht (einen logarithmischen oben für die Nachrichtenlänge- und Frequenztische nicht aufzählend), die Zahl von Bit vergleichen, die durch das Wärmegewicht gegeben sind, das für lange Nachrichten sehr in der Nähe vom optimalen ist:

:

Verbindungen mit anderen Kompressionsmethoden

Huffman, der codiert

Es gibt große Ähnlichkeit zwischen arithmetischen Codieren und Huffman, der - tatsächlich codiert, es ist gezeigt worden, dass Huffman gerade ein Spezialfall des Arithmetik-Codierens ist - aber weil das arithmetische Codieren die komplette Nachricht in eine Zahl übersetzt, die in der Basis b vertreten ist, anstatt jedes Symbol der Nachricht in eine Reihe von Ziffern in der Basis b zu übersetzen, wird es sich manchmal optimalem Wärmegewicht nähern, das viel näher verschlüsselt, als Huffman kann.

Tatsächlich entspricht ein Code von Huffman nah zu einem arithmetischen Code, wo jede der Frequenzen zu einer nahe gelegenen Macht ½ - aus diesem Grund Geschäfte von Huffman relativ schlecht mit dem Vertrieb rund gemacht wird, wo Symbole Frequenzen haben, die von einer Macht ½, solcher als 0.75 oder 0.375 weit sind. Das schließt den grössten Teil des Vertriebs ein, wo es irgendein kleine Zahlen von Symbolen (solcher als gerade die Bit 0 und 1) gibt, oder wo ein oder zwei Symbole den Rest beherrschen.

Für ein Alphabet {a, b, c} mit gleichen Wahrscheinlichkeiten von 1/3, kann Huffman, der codiert, den folgenden Code erzeugen:

  • ein : 50%
  • b : 25%
  • c : 25%

Dieser Code hat einen erwarteten (2 + 2 + 1)/3  1.667 Bit pro Symbol für Huffman, der, codiert

eine Wirkungslosigkeit von 5 Prozent im Vergleich zu log3  1.585 Bit pro Symbol für das arithmetische Codieren.

Für ein Alphabet {0, 1} mit Wahrscheinlichkeiten 0.625 und 0.375, behandelt Huffman, der verschlüsselt, sie, als ob sie 0.5 Wahrscheinlichkeit jeder hatten, 1 Bit jedem Wert zuteilend, der keine Kompression über die naive Block-Verschlüsselung erreicht. Das Arithmetik-Codieren nähert sich dem optimalen Kompressionsverhältnis von

:

Wenn das Symbol 0 eine hohe Wahrscheinlichkeit 0.95 hat, ist der Unterschied viel größer:

:

Eine einfache Weise, diese Schwäche zu richten, soll Symbole verketten, um ein neues Alphabet zu bilden, in dem jedes Symbol eine Folge von Symbolen im ursprünglichen Alphabet vertritt. Im obengenannten Beispiel, Folgen von drei Symbolen bevor gruppierend, würde Verschlüsselung neue "Supersymbole" mit den folgenden Frequenzen erzeugen:

  • : 85.7%
  • : 4.5 % jeder
  • :.24 % jeder
  • : 0.0125%

Mit dieser Gruppierung, Huffman, der Durchschnitte 1.3 Bit für alle drei Symbole oder 0.433 Bit pro Symbol im Vergleich zu einem Bit pro Symbol in der ursprünglichen Verschlüsselung codiert.

Reihe-Verschlüsselung

Reihe-Verschlüsselung wird von einer Gruppe von Ingenieuren als eine verschiedene Technik und von einer anderen Gruppe nur als ein verschiedener Name für das arithmetische Codieren betrachtet. Es gibt keine einzigartige Meinung, aber einige Menschen glauben, dass, wenn Verarbeitung als ein Schritt pro Symbol angewandt wird, es das Reihe-Codieren ist, und wenn ein Schritt pro jedes Bit erforderlich ist, ist es das arithmetische Codieren. Nach einer anderen Meinung ist das arithmetische Codieren die Computerwissenschaft von zwei Grenzen auf dem Zwischenraum [0,1), und Auswahl des kürzesten Bruchteils davon, und Reihe-Verschlüsselung schätzt Grenzen auf dem Zwischenraum und wählt die Zahl mit der längsten Spur von Nullen daraus. Viele Forscher glauben, dass der geringe Unterschied in der Annäherung Reihe-Verschlüsselungspatent frei macht. Um diese Idee zu unterstützen, stellen sie Verweisung auf den Artikel von G. Nigel N. Martin zur Verfügung, der nicht Leser freundlich ist und der Interpretation unterworfen ist. Es wird im Artikel Glen Langdon Eine Einführung ins Arithmetische Codieren, IBM J zitiert. RES. Sich ENTWICKELN. VOL. 28, Nr. 2, März 1984, der die Methode angedeutet von Martin als vorherige von einem Industrieexperten anerkannte Kunst macht. Es ist dem ersten Thema des aktuellen Artikels mit dem Unterschied nah, dass sowohl die NIEDRIGEN als auch HOHEN Grenzen auf jedem Schritt und dem geschätzt werden, werden Wahrscheinlichkeiten noch verwendet, für den Zwischenraum und nicht die Frequenzen zu beschränken. Der Artikel von G. N. N. Martin ist erstaunlich aus Aufmerksamkeit von vielen Forschern herausgefallen, die Patente auf dem Arithmetik-Codieren ablegten, die Sache ihrer Algorithmen als Gebäude langen richtigen Bruchteils erklärend, die alle ihre Patente gefährdet stellen, um von denjenigen überlistet zu werden, die es verschieden tun, weil ein Patent ein sehr formelles Dokument ist und Sprachdefinitionen sehr genau sein sollten. Es ist nicht notwendig, dass alle Patente auf dem arithmetischen Codieren jetzt im Licht des Artikels von Martin leer sind, aber es öffnet den Boden für Debatten, die vermieden worden sein könnten, wenn Autoren mindestens die Annäherung erwähnt haben.

US-Patente

Eine Vielfalt von spezifischen Techniken für das arithmetische Codieren ist durch US-Patente historisch bedeckt worden, obwohl verschiedene wohl bekannte Methoden ins öffentliche Gebiet seitdem gegangen sind, weil die Patente abgelaufen sind. Durch Patente bedeckte Techniken können notwendig sein, für die Algorithmen für die Arithmetik durchzuführen, die codiert, die in einigen formellen internationalen Standards angegeben werden. Wenn das der Fall ist, sind solche Patente allgemein verfügbar, um darunter zu lizenzieren, was "angemessen und nichtdiskriminierend" (RAND) das Genehmigen von Begriffen (mindestens als Angelegenheit für die Standardkomitee-Politik) genannt wird. In einigen wohl bekannten Beispielen (einschließlich etwas Beteiligens Patente von IBM, die seitdem abgelaufen sind) sind solche Lizenzen, und in anderen Beispielen frei zugänglich gewesen, lizenzierende Gebühren sind erforderlich gewesen. Die Verfügbarkeit von Lizenzen unter RAND-Begriffen befriedigt jeden nicht notwendigerweise, der die Technologie, als könnte verwenden wollen, was "angemessen" für eine Gesellschaft scheinen kann, die ein Eigentumssoftwareprodukt vorbereitet, kann viel weniger angemessen für eine kostenlose Software scheinen oder Quellprojekt öffnen.

Mindestens ein bedeutendes Kompressionssoftwareprogramm, bzip2, hat absichtlich den Gebrauch des Arithmetik-Codierens für Huffman unterbrochen, der wegen der wahrgenommenen offenen Situation zurzeit codiert. Außerdem unterstützen encoders und Decoder des JPEG Dateiformats, das Optionen sowohl für Huffman hat, der verschlüsselt als auch für das Arithmetik-Codieren, normalerweise nur den Huffman, der Auswahl verschlüsselt, die ursprünglich wegen offener Sorgen war; das Ergebnis besteht darin, dass fast alle JPEG Images im Gebrauch heute Huffman verwenden, der verschlüsselt, obwohl die arithmetischen codierenden Patente von JPEG wegen des Alters des JPEG Standards abgelaufen sind (dessen Design vor 1990 ungefähr vollendet wurde).

Einige US-Patente in Zusammenhang mit dem arithmetischen Codieren werden unten verzeichnet.

  • - März 1977 (von IBM) Filed 4, Gewährt am 24. Oktober 1978 (Ist jetzt abgelaufen)
  • - (IBM) Granted 25 August 1981 (Ist jetzt abgelaufen)
  • - (IBM) Granted 21 August 1984 (Ist jetzt abgelaufen)
  • - Februar 1986 (von IBM) Granted 4 (Ist jetzt abgelaufen)
  • - September 1986 (von IBM) Filed 15, gewährt am 2. Januar 1990 (Ist jetzt abgelaufen)
  • - November 1988 (von IBM) Filed 18, gewährt am 27. Februar 1990 (Ist jetzt abgelaufen)
  • - (IBM) Filed 3 May 1988, gewährt am 12. Juni 1990 (Ist jetzt abgelaufen)
  • - Juli 1988 (von IBM) Filed 20, gewährt am 19. Juni 1990 (Ist jetzt abgelaufen)
  • - Abgelegt am 19. Juni 1989, gewährt am 29. Januar 1991 (Ist jetzt abgelaufen)
  • - Januar 1990 (von IBM) Filed 5, gewährt am 24. März 1992 (Ist jetzt abgelaufen)
  • - (Ricoh) Abgelegt am 17. August 1992, gewährt am 21. Dezember 1993 (läuft am 17. August 2012 ab)

Zeichen: Diese Liste ist nicht erschöpfend. Sieh die folgende Verbindung für eine Liste von mehr Patenten. Dirac codec verwendet das arithmetische Codieren und ist während nicht offen.

Patente auf dem arithmetischen Codieren können in anderen Rechtsprechungen bestehen, Softwarepatente für eine Diskussion der Patentierfähigkeit der Software um die Welt zu sehen.

Abrisspunkte und andere technische Eigenschaften

Jede programmatic Durchführung der arithmetischen Verschlüsselung hat ein verschiedenes Kompressionsverhältnis und Leistung. Während sich Kompressionsverhältnisse nur etwas ändern (gewöhnlich weniger als 1 %), kann sich die Codeausführungszeit durch einen Faktor 10 ändern. Die Auswahl des Rechts encoder von einer Liste von öffentlich verfügbarem encoders ist nicht eine einfache Aufgabe, weil Leistung und Kompressionsverhältnis auch vom Typ von Daten, besonders auf der Größe des Alphabetes (Zahl von verschiedenen Symbolen) abhängen. Einer von zwei besonderen encoders kann bessere Leistung für kleine Alphabete haben, während der andere bessere Leistung für große Alphabete zeigen kann. Die meisten encoders haben Beschränkungen auf die Größe des Alphabetes, und viele von ihnen werden für ein Doppelalphabet nur (Null und eine) entworfen.

Das Unterrichten der Hilfe

Ein interaktives Vergegenwärtigungswerkzeug für das lehrende arithmetische Codieren, dasher.tcl, war auch der erste Prototyp des assistive Nachrichtensystems, Dasher.

Siehe auch

Links


Shannon-Fano, der codiert / Pepin von Herstal
Impressum & Datenschutz