
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.
|