Hacker News new | ask | show | jobs
by saturncoleus 3697 days ago
Huffman coding is probably one of the more interesting ones, not only because it is so ridiculously useful, but because of the wide taxonomy of implementations. It is quite malleable, able to be morphed and optimized to the particular application: JPEG, PNG, HPACK, Gzip to name a few popular usages and implementations.

What is really enlightening though is implementing a basic one, because it is so simple. The core of it involves popping two graph nodes from a heap and pushing a new one. I did this in school, and was impressed by it, but became far more appreciative when I tried to do the JPEG way. It doesn't even provide a table, just a histogram!

It also acted as the basis for the successor of arithmetic coding, which is pretty much in every modern video codec. Can you imagine a world that is still analog because we couldn't figure out how to transmit digit video or images or audio? Huffman is a key link in the chain between the past and present.

1 comments

My gut reaction to the question was "The one I can understand and apply", but I think that the Huffman algorithm added a third feature for me, it expanded the way I thought about computing in general. It is relatively simple, but it is clever and it makes you feel clever to understand it when your experience with algorithms is limited and your relationship with them is tenuous.