Data Compression Using Asymmetric Numeral Systems

This Demonstration allows you to experiment with compression using a new method: asymmetric numeral systems.
Using a probability distribution , a sequence of symbols of a given length is generated and encoded using the parameters of the encoder.
The decoding table, starting from a given state, produces a symbol and new state, with blue bits added to get the new state in the range.
A summary is on the right: the optimal asymptotic minimum bit per symbol required (Shannon's entropy), how it should be asymptotically compressed with an ideal compressor but using no necessarily optimal (=) probability distribution, and how it compares with the generated example. Next you see the distribution of symbols in the table, the generated sequence, and finally the correlations in encoded sequences of bits.



  • [Snapshot]
  • [Snapshot]
  • [Snapshot]


Numeral systems are optimal for encoding sequences of symbols (digits) that have uniform distribution.
An asymmetric numeral system is a generalization constructed to be optimal for any given probability distribution of symbols (digits).
With some information stored in a natural number , to add some information stored in a digit that all has the same probability (), take to place this information in the right-most bits.
In the asymmetric case should hold asymptotically.
This cannot usually be done exactly, but for asymptotic behavior the symbols only need to be distributed uniformly. A random number generator can be used to choose a specific distribution. If this generator is initialized with a given key, this additionally encrypts the output.
To encode in this way, would grow to infinity. To prevent that, is restricted to some range and some bits are removed in blocks of "width" bits to a bit stream (compressed file).
Basic information about this coding can be found in:
More information about using it in cryptography:
    • Share:

Embed Interactive Demonstration New!

Just copy and paste this snippet of JavaScript code into your website or blog to put the live Demonstration on your site. More details »

Files require Wolfram CDF Player or Mathematica.

Mathematica »
The #1 tool for creating Demonstrations
and anything technical.
Wolfram|Alpha »
Explore anything with the first
computational knowledge engine.
MathWorld »
The web's most extensive
mathematics resource.
Course Assistant Apps »
An app for every course—
right in the palm of your hand.
Wolfram Blog »
Read our views on math,
science, and technology.
Computable Document Format »
The format that makes Demonstrations
(and any information) easy to share and
interact with.
STEM Initiative »
Programs & resources for
educators, schools & students.
Computerbasedmath.org »
Join the initiative for modernizing
math education.
Step-by-Step Solutions »
Walk through homework problems one step at a time, with hints to help along the way.
Wolfram Problem Generator »
Unlimited random practice problems and answers with built-in step-by-step solutions. Practice online or make a printable study sheet.
Wolfram Language »
Knowledge-based programming for everyone.
Powered by Wolfram Mathematica © 2018 Wolfram Demonstrations Project & Contributors  |  Terms of Use  |  Privacy Policy  |  RSS Give us your feedback
Note: To run this Demonstration you need Mathematica 7+ or the free Mathematica Player 7EX
Download or upgrade to Mathematica Player 7EX
I already have Mathematica Player or Mathematica 7+