تالار گفتمان مانشت
کد هافمن - نسخه‌ی قابل چاپ

کد هافمن - samieh - 14 دى ۱۳۹۲ ۰۱:۰۲ ب.ظ

سلام
تو کد هافمن اشکال دارم
کسی هست برام توضیح بده
طریقه ساخت درخت رو بلد نیستم!Confused

RE: کد هافمن - hoomanab - 14 دى ۱۳۹۲ ۰۲:۵۵ ب.ظ

سلام اول برای اینکه کارتون راحت تر شه کلمات رو بر اساس فراوانیشون مرتب کنید.
حالا کمترین کمترین فراوانی رو با کمترین فراوانی بعدش یا مساوی خودش پیوند بزنید.
حالا فراوانی ها رو به روز کنید.یعنی اون دو تا رو که پیوند زدید تک تکشون رو حذف کنید و جفت شده شدن رو توی ترتیب قرار بدید. دوباره کمترین ها رو پیوند بزنید و همین کار رو تکرار کنید تا همه پیوند بخورن.
الان یک درخت دارید. برای هر گره از اون درخت، شاخه سمت چپ رو صفر و شاخه سمت راست رو یک بدید.
حالا برای اینکه تعداد بیت های لازم رو به دست بیاریم، عمق هر حرف توی درخت رو ضرب کنید در فراوانی که از اول مسیله داشتیم. همه این ها و جمع کنید میشه تعداد حروف درخت هافمن.

Sent from my SM-T210R using Tapatalk

RE: کد هافمن - atenaa - 14 دى ۱۳۹۲ ۰۶:۱۳ ب.ظ

(۱۴ دى ۱۳۹۲ ۰۲:۵۵ ب.ظ)hoomanab نوشته شده توسط:  سلام اول برای اینکه کارتون راحت تر شه کلمات رو بر اساس فراوانیشون مرتب کنید.
حالا کمترین کمترین فراوانی رو با کمترین فراوانی بعدش یا مساوی خودش پیوند بزنید.
حالا فراوانی ها رو به روز کنید.یعنی اون دو تا رو که پیوند زدید تک تکشون رو حذف کنید و جفت شده شدن رو توی ترتیب قرار بدید. دوباره کمترین ها رو پیوند بزنید و همین کار رو تکرار کنید تا همه پیوند بخورن.
الان یک درخت دارید. برای هر گره از اون درخت، شاخه سمت چپ رو صفر و شاخه سمت راست رو یک بدید.
حالا برای اینکه تعداد بیت های لازم رو به دست بیاریم، عمق هر حرف توی درخت رو ضرب کنید در فراوانی که از اول مسیله داشتیم. همه این ها و جمع کنید میشه تعداد حروف درخت هافمن.

Sent from my SM-T210R using Tapatalk

پیچیدگی زمانیش چیه؟