PDA

View Full Version : سوال: کد با طول متغیر ...



hashemi85sep
دوشنبه 04 خرداد 1388, 09:00 صبح
با سلام خدمت دوستان و اساتید گرامی
من نمیدونستم این سوال رو باید کجا مطرح کنم به خاطر همین ، اینجا مطرح شد...

توی درس طراحی الگوریتم این سوال مطرح شد که :

آیاهر کد با طول متغیری رو میتوان برای کد گزاری استفاده کرد؟؟؟؟؟

tdkhakpur
دوشنبه 04 خرداد 1388, 15:56 عصر
سلام:
چه کدی - کجا - برای چه کاری - کاملتر توضیح بدید.

pesar irooni
سه شنبه 05 خرداد 1388, 00:50 صبح
این بحث مربوط به کدگذاریه هافمن هستش. کد با طول متغیر معمولا بسیار بهتر از کد با طول ثابت هست و میتونه بین 20 تا 90 درصد تو حافظه صرفه جویی ایجاد کنه.
اما باید توجه کنیم که هر کدی با طول متغیر نمیتونه استفاده بشه و کدها با طول متغیر باید ویژگی خاصی بنام "کدهای پیشوندی" (بهتره بگیم کدهای بدون پیشوند) داشته باشند. یعنی هیچ کد کلمه ای پیشوند کد کلمه دیگری نباشد.
مثلا اگه قراره a و b و c رو کد کنیم نباید بگیم a=0 و b=01 چون هنگام خوندن 0 دچار دوگانگی خواهیم شد.
باید بگیم a=0 و b=10 . حالا با خوندن 0 میدونیم منظور a هستش. شاید بپرسید که سر c چی میاد. برای کد گذاری c مسلما نباید با 0 شروع کرد چون پیشوند a هست اما اگه میخوایم با 1 شروع کنیم نباید بعد از 1 عدد 0 بیاید چون پیشوند b میشود. بطور مثال با 11 شروع میشه و این یعنی 11 پیشوند کد هیچ کدام از حروف a و b نیست.
از روی درخت هافمن به راحتی این کدها بدست میاند.