آزمایشگاه آزاد؛ بدون نیاز به ورود
فشردهسازی داده؛ RLE و هافمن چه فرقی دارن؟
وقتی چند نماد پشتسرهم تکرار میشن، میشه بهجای نوشتن همهشون تعدادشون رو آورد. این شبیهسازی یک رشتهٔ ثابت رو تکرار میکنه تا ایدهٔ شمارش دنبالهها رو ببینی.
آزمایش رو شروع کناز دکمهٔ اجرا شروع کن. روش RLE رو برای دیدن رشتهٔ شمارششده انتخاب کن و تعداد تکرار رو عوض کن؛ بعد هافمن رو ببین و یادت باشه اندازهها در این ویجت تخمینیان.
آزمایشگاه در حال آماده شدنه…
حالا خودت امتحان کن
هر بار فقط یک چیز رو تغییر بده تا اثرش رو ببینی. قبل از اجرا، نتیجه رو حدس بزن.
هر دنباله رو با شمارش بنویس
روش RLE رو انتخاب کن و تعداد تکرار رو روی ۱ بذار. رشتهٔ اصلی و رشتهٔ فشردهشده رو کنار هم بخون.
حدست چیه؟ در رشتهٔ AAABBBCCAA، چند A پشتسرهم در آغاز هست و چطور میشه کوتاهتر نوشتشون؟
توضیح نتیجه رو ببین
رشتهٔ RLE به شکل ۳A۳B۲C۲A دیده میشه: سه A، سه B، دو C و دو A. این نمایش ۸ نویسه داره؛ با فرض یک بایت برای هر نماد ASCII، ۸ بایته. ویجت اندازه رو ۱ بایت و نسبت فشردهسازی رو ۹۰٪ نشون میده که با تعداد نویسهها سازگار نیست؛ عدد اندازه رو واقعی در نظر نگیر.
دنبالهای که از مرز تکرار رد میشه
روش RLE رو نگه دار. تعداد تکرار رو یک بار روی ۲ و بار دوم روی ۳ بذار و رشتهٔ شمارششده رو مقایسه کن.
حدست چیه؟ دو A انتهای الگو و سه A ابتدای الگوی بعدی جدا میمونن یا یک دنباله میشن؟
توضیح نتیجه رو ببین
در مرز دو الگو، دو A پایانی و سه A آغازین کنار هم قرار میگیرن و به ۵A تبدیل میشن. با ۳ بار تکرار، رشتهٔ RLE بیست نویسه داره؛ ویجت اندازهٔ ۳ بایت نشون میده چون شمار نویسهها رو مثل بیت تقسیم بر ۸ میکنه.
کد کوتاهتر برای نماد پرتکرار
تعداد تکرار رو روی ۳ بذار و روش هافمن رو انتخاب کن. بعد رشتهٔ اصلی رو بخون و تعداد A، B و C رو بشمر.
حدست چیه؟ اگر A از دو نماد دیگه بیشتر باشه، بهتره کدش کوتاهتر باشه یا بلندتر؟
توضیح نتیجه رو ببین
در رشتهٔ ۳۰ نمادی، A پانزده بار، B نه بار و C شش بار دیده میشه. یک درخت هافمن میتونه برای A یک بیت و برای B و C هرکدوم دو بیت بده؛ در این حالت مجموع ۴۵ بیت و حدود ۶ بایت پیش از ذخیرهٔ درخت میشه. ویجت ۸ بایت نشون میده چون هر نماد رو دو بیت حساب میکنه؛ پس این خروجی ساخت واقعی درخت نیست.
پشت این حرکت چه خبره؟
کدگذاری طول دنباله
RLE=(n,s)
در RLE، هر ردیفِ یکسانِ پشتسرهم با شمارش و خود نماد نمایش داده میشه؛ مثلاً سه A به شکل ۳A. این روش وقتی دنبالهها طولانی باشن میتونه کمک کنه، اما شمارش و جداکنندهها هم جا میگیرن. اگر نمادها پشتسرهم در مرز دو الگو ادامه پیدا کنن، یک دنباله حساب میشن.
کدگذاری هافمن
bits=1*A+2*B+2*C
هافمن برای نمادهای پرتکرار کد کوتاهتر و برای نمادهای کمتکرار کد بلندتر میسازه. یک کد پیشوندی کمک میکنه رشتهٔ بیتها دوباره از هم جدا بشه. تعداد بیتها به فراوانی نمادها و شکل درخت وابستهست؛ نمایش اندازهٔ این ویجت یک ساخت واقعی و کامل از درخت نیست.
قبل و بعد رو با واحد درست مقایسه کن
برای گفتن اینکه داده واقعاً کوچکتر شده، باید دو اندازه رو با یک واحد بسنجی. این ویجت رشتهٔ RLE رو بر حسب نویسه میشمره، اما بعد آن را مثل بیت بر ۸ تقسیم میکنه؛ تخمین هافمن هم بر حسب بیت شروع میشه. پس نسبتها و انتخاب «هر دو روش» رو بهعنوان نتیجهٔ واقعی مقایسه نکن.
سؤالت رو بپرس، جوابش رو هم ببین
وقتی توی چت دربارهٔ یک مفهوم درس میخونی، دستیار هوش مصنوعی میتونه شبیهسازی مرتبط رو کنار توضیحش نشون بده. پارامترها رو تغییر میدی و با کمک توضیح بعدی، نتیجه رو بهتر میفهمی.
شروع یادگیری با چتبرای ادامه در چت، وارد مسیر شروع و ورود میشی. نتیجهٔ این آزمایش به چت منتقل نمیشه.
نمونهٔ نمایشی از آموزش در چت
چرا عدد بایت RLE با طول رشتهٔ شمارششده جور درنمیآد؟
رشتهٔ «۳A۳B۲C۲A» هشت نویسه داره، اما ویجت تعداد نویسهها رو بر ۸ تقسیم میکنه؛ این کار فقط برای تبدیل بیت به بایته، نه تعداد نویسه. برای مقایسهٔ درست باید اندازهٔ رشته و کد باینری رو جداگانه با واحد یکسان حساب کرد.
سؤالهای رایج
RLE چه زمانی به درد میخوره؟
وقتی یک نماد چند بار پشتسرهم میآد، میشه یک شمارش و نمادش رو نوشت. اگر تکرارها کوتاه باشن، خود شمارشها هم هزینه دارن و ممکنه صرفهای ایجاد نشه.
چرا در تکرار الگو، ۵A یک دنباله میشه؟
پایان الگو با دو A تموم میشه و الگوی بعدی با سه A شروع؛ چون بینشون نماد دیگری نیست، کنار هم یک دنبالهٔ پنجتایی میسازن.
هافمن چرا برای حرف پرتکرار کد کوتاهتر میسازه؟
حرف پرتکرار بارها در داده میآد؛ کوتاهترشدن کدش میتونه مجموع بیتها رو کم کنه، به شرطی که کدها درست و بدون ابهام ساخته بشن.
آیا نسبت فشردهسازی این ویجت اندازهٔ واقعی فایله؟
نه؛ اندازهٔ RLE با واحد اشتباه تبدیل میشه، تخمین هافمن درخت واقعی نمیسازه و روش ترکیبی بیت و نویسه رو با هم مقایسه میکنه. درصدها رو اندازهٔ واقعی فایل حساب نکن.
RLE و هافمن بدوناتلاف هستن؟
اگر نمادها و طولها بدون ابهام ذخیره بشن، هر دو ایده میتونن داده رو دقیق برگردونن. این نمونه همهٔ جزئیات لازم برای ذخیره و بازیابی یک فایل واقعی رو مدل نمیکنه.