The Lossless Compression (Squeeze) Page

Welcome!


Enchanced

Welcome to the Squeeze Page. This page is designed made to teach people about Lossless compression algorithms through the use of text graphics and Java Applets! This is more of a practical guide, so you will understand how the algorithms work, without getting into all the treoretical details.


What is lossless compression?

I'm glad you asked. Lossless compression is a method of reducing the size of computer files without losing any information. That means when you compress a file, it will take up less space, but when you decompress it, it will still have the exact same information. The idea is to get rid of any redundancy in the information, This is exactly what happens is used in ZIP and GIF files. This differs from "lossy" compression, such as in JPEG files, which loses some information that isn't very noticable.


Why use lossless compression?

You can use lossless compression whenever space is a concern, but the information must be the same. An example is when sending text files over a modemor the Internet. If the files are smaller, they will get there faster. However, they must be the same way that you sent them. In fact, your modem acutally uses LZW compression automatically to speed up transfers. More on that later.


What types of compression methods are there?

Well.... there are several popular algorithms for lossless compression. There are variations of most of them, and each has many implemenation. Here is a list of the "families", their variations, and the file types where they are implemented:

Family Variations Used in
Running-Length none  
Huffman Huffman
Adaptive Huffman
Shannon-Fano
MNP5
COMPACT
SQ
Arithmetic none  
LZ78
(Lempel-Ziv 1978)
LZW (Lempel-Ziv-Welch) GIF
v.42bis
compress
LZ77
(Lempel-Ziv 1977)
LZFG ZIP
ARJ
LHA


Where can I learn about these wonderful algorithms?

There are lots of books and sites that will describe these algorithms to you. But I thought it would be much better to show you. Better yet, let you try it yourself. So along with the descriptions of the algorithms, I have made some Java applets that allow you to see what it happening.

Right now, I have descriptions and applets for Huffman, Adaptive Huffman and LZW. If anyone wants to make a LZ77 applet, it would really help complete this. Click on the buttons on the left to go to each description and applet.

Hopefully, this will grab your interest. If you want to learn more, check out the Etc section for references and further reading.