این روش در واقع الگوریتمی است که بر این پایه استوار است که تعداد تکرار داده های درون یک فایل با هم یکسان نیستند الگوریتم هافمن جزء خانواده های الگوریتم هایی است که طول کد متغییری دارند.
به عنوان مثال رشته اطلاعاتی ذیل در صورتی که در یک کامپیوتر فشرده نشود دارای حجم 6×8 = 48 بیت خواهد بود ( هر کاراکتر شامل 8 بیت می باشد ) در صورتی که این را با الگوریتم هافمن بخواهیم فشرده کنیم در این صورت
A C D A B A 6×8 = 48 Bit
بنابراین می توان گفت که فضای لازم جهت ذخیره سازی رشته اطلاعاتی مذکور ( A C D A B A ) از 48 بیت ( بدون فشرده سازی ) به 11 بیت کم شده است . میتوان گفت که درصد فشرده سازی برابر خواهد بود با :
( 1- ) × 100 =
11 فضای لازم جهت ذخیره سازی
48 فضای لازم جهت ذخیره سازی
مراحل الگوریتم هافمن:
1. مرتبه تکرار هر کاراکتر در متن را مشخص می کنیم
2. کاراکترها را بر اساس مراتب تکرارشان به صورت نزولی از چپ به راست می نویسیم .
3. از راست به چپ شروع به ساختن درخت هافمن کرده به گونه ایی که مجموع مراتب تکرار کمترین باشد.
4. مرحله سوم را آنقدر تکرار می کنیم تا به ریشه برسیم.
5. از چپ به راست شروع به شماره گذاری فرزندان هر Nod با 0 و 1 می کنیم به صورتی که فرزند چپ هر Nod شماره 0 و فرزند راست آن شماره 1 را داشته باشد.
6. از ریشه شماره مربوطه را برای هر کاراکتر به صورت جداگانه می نویسیم
مثال :
جمله زیر را با استفاده از روش هافمن فشرده سازی کنید و درصد فشرده سازی را بیان کنید :
Can You Can a Can With a Can?