13,091,363 members (50,458 online)
alternative version

#### Stats

70.6K views
23 bookmarked
Posted 20 Sep 2005

# Implementing the Huffman algorithm as a C# library

, 20 Sep 2005
 Rate this:
Flexible HuffmanAlgorithm object, based on streams data forms.

## Introduction

Huffman algorithm is quite simple (In theory at least), the idea is based to the fact that in
most files, some bytes(characters if you will)  probably appears more times them others.

Main steps:

- Scan the data source from the begining till the end, list in a table bytes that appears and
how many times(that is their value in the table).

-Now we need to build some kind of tree(you'll get it later), take the 2 bytes that appeared
less times in the data source than others, create a parent node to both of them,
remove them from the list and add the parent node to the list instead(the parent value will
be the sum of times both his childs values). Continue this process until the list is completely
empty. The last parent you've created is the root node of the tree.

-We will give each byte that was in the file different value, the number of right and
left turns when walking from the root of the tree to a leaf is the number of bits that we
will use as a new value to that leaf(byte) we will say left turn = 0 right turn = 1
(or vice versa). All we  left to do is to replace raech byte in several bits (left and right
urns) in most cases this should cost less space.

-Extracting is easier (Save the original table we made as the start, first of all before
archiving).  Read the table, rebuild the tree from the table, read the bits and start taking
right and left turns down the tree root, when getting to a leaf, read the original byte,
save it somewhere else and start over from the tree root, reading the next bit...

## HuffmanAlgorithm object

-Uses huffman algorithm to extract\archive any types of data stream.
Archived data contains info about the original data size, version, password and more.

-Each extracting\archiving function has vesion thats pops event handler each time  one
percent of the process is over.

A list of licenses authors might use can be found here

## Share

 Software Developer Rontal Applications Israel
Born and raised in Israel, I've caught the programming virus at the age of 15.
Since than I can't stop coding.

## You may also be interested in...

 Pro

 First Prev Next
 Copyright? Member 993405922-Mar-13 4:59 Member 9934059 22-Mar-13 4:59
 how to run whole project? swati.sonawane412-Apr-10 21:18 swati.sonawane4 12-Apr-10 21:18
 How to archived more than 1 file? pinochio_jc12-Jan-10 6:23 pinochio_jc 12-Jan-10 6:23
 Re: How to archived more than 1 file? JadBenAutho12-Jan-10 7:29 JadBenAutho 12-Jan-10 7:29
 Re: How to archived more than 1 file? pinochio_jc12-Jan-10 15:12 pinochio_jc 12-Jan-10 15:12
 how to run project farheen mauthoor28-Dec-09 20:49 farheen mauthoor 28-Dec-09 20:49
 Plz Help me MustafaZaidi7-Aug-09 21:32 MustafaZaidi 7-Aug-09 21:32
 Question Trance Junkie21-Sep-05 4:14 Trance Junkie 21-Sep-05 4:14