کدگذاری هافمن: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Luckas-bot (بحث | مشارکت‌ها)
جز ربات افزودن: ca:Codificació de Huffman
Ebrambot (بحث | مشارکت‌ها)
جز ربات: حذف فاصله مجازی زائد
خط ۵۰:
</div>
 
در[[علوم کامپیوتر]] و [[نظریه اطلاعات|تئوری اطلاعات]]، '''کد‌گذاریکدگذاری هافمن''' یک [[الگوریتم کد‌گذاریکدگذاری]] برای [[فشرده‌سازی بی‌اتلاف اطلاعات]] است.
 
این تعبیر بر می‌گردد به استفاده از جدول [[کد طول متغیر]] برای کد کردن هر کدام از نشانه‌های مبدا (مانند کاراکترهای یک فایل). جدول کد طول متغیر از روشی بخصوص مبنی بر احتمال وقوع هر کدام از نشان‌های مبدا بدست می‌آید.
این روش بوسیلهٔ [[دیوید هافمن]] توسعه یافت. وی دانشجوی دورهٔ دکتری در دانشگاه [[موسسهٔ تکنولوژی ماساچوست|MIT]] بود و در سال ۱۹۵۲ مقالهٔ «روشی برای تولید کدی با کمترین تکرار زوائد» را منتشر کرد.
 
در کد کذاری هافمن، از روشی خاص برای انتخاب نحوهٔ نمایش هر نماد استفاده می‌شود. روشی به نام [[کد‌هایکدهای بدون پیشوند]](گاهی هم روش «کدهای پیشوندی» گفته می‌شود. یعنی در این روش رشته‌ای که نشان دهندهٔ یک کاراکتر خاص است هیچ گاه پیشوند رشتهٔ دیگر که نمایانگر کاراکتری دیگر است، نمی‌باشد.).در این روش کاراکتر‌هایکاراکترهای پرکاربرد تر با رشته‌های بیتی کوتاهتری نسبت به آن‌هایی که کاربردشان کمتر است، نشان داده می‌شوند.
 
هافمن موفق شد کارآمد ترین روش فشرده سازی از این نوع را طراحی کند:
نگاشت نکردن نشان‌های منفرد مبدا به رشته‌های بیتی یکتا، هرگاه تعداد تکرار نماد‌هاینمادهای اصلی با آنهایی که برای ایجاد این کد مورد استفاده قرار گرفتند مطابقت کند، خروجی‌هایی با اندازهٔ کمتر تولید می‌کند.
بعدها روشی برای انجام این کار پیدا شد که این کار را در [[زمانی خطی]] انجام می‌داد.
 
برای مجموعه‌ای از نمادها با [[توزیع احتمالی یکنواخت]] و تعداد عضو‌هاییعضوهایی برابر با [[توانی از ۲]]، کد گذاری هافمن هم ارز با [[قطعه کد]] سادهٔ دوجمله‌ای است. مانند کد گذاری [[ASCII]].
کد گذاری هافمن روشی متداول برای ایجاد کد‌هایکدهای بدون پیشوند است بطوریکه عبارت «کد هافمن» به گستردگی به عنوان مترادفی برای «کد بدون پیشوند» استفاده می‌شود، هرچند چنین کدی با الگوریتم هافمن بدست نیامده باشد.
 
اگرچه کد گذاری هافمن برای کد کردن نماد به نماد بهینه‌است، اما گاهی کارآمدی آن بیش از مقدار واقعی پنداشته می‌شود.
خط ۸۹:
 
== انواع ==
انواع مختلفی از کد گذاری هافمن وجود دارد، که بعضی از آنها از الگوریتم‌هایی شبیه الگوریتم هافمن و بعضی دیگر از کد‌هایکدهای بهینهٔ پیشوندی (با محدودیت‌های خاص برای خروجی)استفاه می‌کنند.
در حالت اخیر، نیاز نیست که روش، شبیه روش هافمن باشد و حتی ممکن است زمان اجرایی [[چند‌جمله‌ایچندجمله‌ای]] هم نداشته باشد.
لیست کاملی از مقالات مربوط به انواع مختلف کد گذاری هافمن، در «درخت‌های کد و تجزیه برای کد کردن بی زیان اطلاعات» [http://scholar.google.com/scholar?hl=en&lr=&cluster=6556734736002074338] داده شده‌است.
 
خط ۱۶۰:
 
[[رده:الگوریتم‌های فشرده‌سازی بی‌اتلاف]]
[[رده:نظریه کد‌گذاریکدگذاری]]
[[رده:درخت‌های دو‌دوئیدودوئی]]
 
[[ar:ترميز هوفمان]]