545 views

Uploaded by osmansio

A quick tutorial on generating a huffman tree
http://www.siggraph.org/education/materials/HyperGraph/video/mpeg...
A quick tutorial on generating a huffman tree
Lets say you have a set of numbers and their frequency of use and want to create a huffman encoding for them:
FREQUENCY --------5 7 10 15 20 45 VALUE ----1 2 3 4 5 6
Creating a huffman tree is simple. Sort this list by frequency and make the two-lowest elements into leaves, creating a parent node with a frequency that is the sum of th

- Arbori Binari de cautare
- Huffman Tree
- A Quick Tutorial on Generating a Huffman Tree
- Business Objects Rathbun Designer
- CHAPTER 9 AVL Trees Objectives • to Know What An
- DMT
- Compute Node
- Cosine Series
- List of Programs to Be Submitted by Class XI
- Mobile Relay Configuration in Data Intensive Wireless Sensor Networfsadasdasks
- Data Structure
- Example Shannon
- Crack Detection and Classification Based on New Edge Detection Method
- Fsm
- Hacking a Google Interview Handout - Common Questions 2
- Electrical Engineering 22012
- Unit 7 Red Black Trees
- Channel Coding Exam
- 2012 Cse Electrical Paper 2
- Louis H. Kauffman- Wang Algebra and the Spanning Trees of a Graph

You are on page 1of 2

http://www.siggraph.org/education/materials/HyperGraph/video/mpeg...

Lets say you have a set of numbers and their frequency of use and want to create a huffman encoding for them:

FREQUENCY --------5 7 10 15 20 45 VALUE ----1 2 3 4 5 6

Creating a huffman tree is simple. Sort this list by frequency and make the two-lowest elements into leaves, creating a parent node with a frequency that is the sum of the two lower element's frequencies:

12:* / \ 5:1 7:2

The two elements are removed from the list and the new parent node, with frequency 12, is inserted into the list by frequency. So now the list, sorted by frequency, is:

10:3 12:* 15:4 20:5 45:6

You then repeat the loop, combining the two lowest elements. This results in:

22:* / \ 10:3 12:* / \ 5:1 7:2

15:4 20:5 22:* 45:6

You repeat until there is only one element left in the list.

35:* / \ 15:4 20:5 22:* 35:* 45:6 57:* ___/ / 22:* / \ 10:3 12:* / \ 5:1 7:2 45:6 57:* \___ \ 35:* / \ 15:4 20:5

1 of 2

4/13/2012 1:11 PM

http://www.siggraph.org/education/materials/HyperGraph/video/mpeg...

__________________/ / 57:* ___/ \___ / \ 22:* 35:* / \ / \ 10:3 12:* 15:4 20:5 / \ 5:1 7:2

Now the list is just one element containing 102:*, you are done. This element becomes the root of your binary huffman tree. To generate a huffman code you traverse the tree to the value you want, outputing a 0 every time you take a lefthand branch, and a 1 every time you take a righthand branch. (normally you traverse the tree backwards from the code you want and build the binary huffman encoding string backwards as well, since the first bit must start from the top). Example: The encoding for the value 4 (15:4) is 010. The encoding for the value 6 (45:6) is 1 Decoding a huffman encoding is just as easy : as you read bits in from your input stream you traverse the tree beginning at the root, taking the left hand path if you read a 0 and the right hand path if you read a 1. When you hit a leaf, you have found the code. Generally, any huffman compression scheme also requires the huffman tree to be written out as part of the file, otherwise the reader cannot decode the data. For a static tree, you don't have to do this since the tree is known and fixed. The easiest way to output the huffman tree itself is to, starting at the root, dump first the left hand side then the right hand side. For each node you output a 0, for each leaf you output a 1 followed by N bits representing the value. For example, the partial tree in my last example above using 4 bits per value can be represented as follows:

000100 fixed 6 bit byte indicates how many bits the value for each leaf is stored in. In this case, 4. 0 root is a node left hand side is 10011 a leaf with value 3 right hand side is 0 another node recurse down, left hand side is 10001 a leaf with value 1 right hand side is 10010 a leaf with value 2 recursion return

So the partial tree can be represented with 00010001001101000110010, or 23 bits. Not bad!

2 of 2

4/13/2012 1:11 PM

- Arbori Binari de cautareUploaded byCristianValentin
- Huffman TreeUploaded byreddygj
- A Quick Tutorial on Generating a Huffman TreeUploaded byGovindan Padmanaban
- Business Objects Rathbun DesignerUploaded bybharadwaja.ch
- CHAPTER 9 AVL Trees Objectives • to Know What AnUploaded byshiva1533
- DMTUploaded byMahmood Kohansal
- Compute NodeUploaded bys_now
- Cosine SeriesUploaded byBarasat HelpDesk
- List of Programs to Be Submitted by Class XIUploaded byAshutosh Shaw
- Mobile Relay Configuration in Data Intensive Wireless Sensor NetworfsadasdasksUploaded bySankula Siva Sankar
- Data StructureUploaded bysonabeta07
- Example ShannonUploaded byAnnu Gautam
- Crack Detection and Classification Based on New Edge Detection MethodUploaded byeditor3854
- FsmUploaded byvarundagar
- Hacking a Google Interview Handout - Common Questions 2Uploaded bymachinelearner
- Electrical Engineering 22012Uploaded bySrini Vasulu
- Unit 7 Red Black TreesUploaded bykan181
- Channel Coding ExamUploaded byEngr Tariq
- 2012 Cse Electrical Paper 2Uploaded byEMJAY
- Louis H. Kauffman- Wang Algebra and the Spanning Trees of a GraphUploaded byOkomm
- bukuasd1Uploaded byirfi
- Stacks and QueuesUploaded byᗬᗴᐻ ᔤᗩᕼᕢᖆᘍ
- M2L1Uploaded byDhiraj Das
- Authorization in BI 7Uploaded byMauricio Martinez
- ECE750_F2008_Algorithms4Uploaded bytveldhui
- Topic1 State Space SearchUploaded bySumit Mehrotra
- Algorithms Lab ManualUploaded byakilrsdi
- 2. Toward Optimal Network Fault Correction in Externally Managed Overlay NetworksUploaded byieeexploreprojects
- c h a p t e rUploaded bykrutil76652
- DP-FIM FOR DATA LINKAGE USING ONE CLASS CLUSTERING TREE FOR MOVIE RECOMMENDATIONUploaded byIJIERT-International Journal of Innovations in Engineering Research and Technology

- Td ServletUploaded bybadsmile
- Optimization Techniques for Java & J2EE ApplicationsUploaded bysanthosh
- Ivi-4.4 Dcpwr v2Uploaded byapi-26143964
- report-painter-ini.docUploaded byGustavo Souza
- Android Basics.pdfUploaded byManuel Panzi Utrera
- Using Text Modules in Adobe FormsUploaded bySaurabh Dhiman
- csci3255 HW 3Uploaded byDK Hassan
- Simio PaperUploaded byAxl Perez
- CSCI 5801 _Software Engg _Assignment 2(2)Uploaded bysushanthku
- jquery-1Uploaded byAline Santos
- A 2589 Line Topology Optimization Code Written for the Graphics CardUploaded bygorot1
- Remedy C API Ref 700Uploaded byRangamani Krishnan
- Software Reliability and Safety in Nuclear Reactor Protection SystemsUploaded byAlexander Guriev
- Analysis and Design of AlgorithmUploaded by11520035
- algorithm correctness and time complexityUploaded byfor_books
- Assembler Lang part1Uploaded bymanishbhardwaj8131
- 8086 IntroductionUploaded bykhisham2000
- SAP - Evitar Clave DesarrolladorUploaded byMarcos Federico Mandrille
- SchedLgUUploaded byMdAnjum1991
- OggUploaded byramilanez
- Chapter 2 - ArchitectureUploaded byEbtisam Hamed
- Scholastic Book NefghuralNetworks Part03 2013-10-22Uploaded byరవితేజ నంబూరు
- Advanced Stored ProceduresUploaded byOleksiy Kovyrin
- 3-SAT Problem: A New Memetic-PSO AlgorithmUploaded byijcsis
- Beginner Guide eBookUploaded bySuresh Lakshminarayanan
- Shakespeare languageUploaded byMátyás Holló
- AleUploaded bymania
- Parallel Computing With JuliaUploaded byphieuxuatkho
- MosaikUploaded byAdriano Ferreira
- Unit CommitmentUploaded byKornepati Suresh