روشهای شناختهشدهی متعددی برای فشردهسازی فایل وجود دارد. هر کدام از این روشها تعاریف و ایدههای متفاوتی دارد و برای انواع دادهها نتایج متفاوتی به بار میآورد؛ اما تمام این روشها بر یک اصل یکسان استوار هستند: فشردهسازی داده با حذف افزونگی دادههای اصلی فایل منبع. در این مقاله به انواع روشهای فشردهسازی، مزایای فشردهسازی و روالهای فشردهسازی دادهها اشاره شده است.
فشردهسازی فایل
فشردهسازی دادهها تقریبا همه جا کاربرد دارد. بسیاری از انواع فایل از دادههای فشرده استفاده میکنند. بدون فشردهسازی داده، حجم یک موزیک ۳ دقیقهای تقریبا ۱۰۰ مگابایت خواهد شد و حجم یک ویدئوی ده دقیقهای میتواند به یک گیگابایت برسد. در فشردهسازی دادهها با حذف دادههای غیر ضروری و در عین حال حفظ اطلاعات، میتوان حجم فایلهای بزرگ را کاهش داد.
فشردهسازی داده را میتوان بهصورت کاهش تعداد بیتهای مورد نیاز برای نمایش دادهها تفسیر کرد. با فشردهسازی داده میتوان در ظرفیت حافظه صرفهجویی کرد، سرعت انتقال فایل را افزود و هزینهی حافظه و ظرفیت شبکه را کاهش داد.
فشردهسازی بدون اتلاف
در فشردهسازی بدون اتلاف دادهها از الگوریتمهایی استفاده میشود که امکان بازسازی دادههای اصلی از فایل فشرده را میدهند. این روش در مقابل فشردهسازی با اتلاف قرار میگیرد که امکان بازسازی دادهها از فایل فشرده را نمیدهد.
فشردهسازی بدون اتلاف زمانی به کار میرود که فایل اصلی با فایلی که از حالت فشرده خارج میشود یکسان باشد. اغلب برنامههای فشردهسازی بدون اتلاف از دو نوع الگوریتم استفاده میکنند: یکی برای تولید مدل آماری از دادههای ورودی به کار میرود و دیگری دادههای ورودی را با استفاده از این مدل به رشتههای بیتی تصویر میکند.
فشردهسازی بدون اتلاف یکی از روشهای رایج برای فایلهای اجرایی و همچنین فایلهای متنی و صفحات گسترده است؛ زیرا در این نوع فایلها از بین رفتن کلمات یا اعداد میتوانند اطلاعات را تغییر بدهد. از مشهورترین فرمتهای فشردهسازی بدون اتلاف میتوان به Zip، ا RAR، ا NCW، ا FLAC، ا ALAC، ا HD-AAC و WMA و فرمتهای گرافیکی مثل PNG اشاره کرد.
فشردهسازی با اتلاف
در روش فشردهسازی با اتلاف، دادهها پس از فشردهسازی با دادههای اصلی تفاوت دارند. معمولا دو طرح برای فشردهسازی با اتلاف وجود دارد:
کدکهای تبدیل با اتلاف: براساس این کدکها، نمونهی تصویر یا صوت دریافتی به بخشهای کوچک تقسیم میشود.
کدکهای پیشگویانهی با اتلاف: دادههای رمزگشاییشدهی قبلی و بعدی برای پیشبینی نمونهی صوت یا فریم تصویر فعلی به کار میروند.
در برخی سیستمها از این دو روش همراه با کدکهای تبدیل برای فشردهسازی سیگنالهای خطای مرحلهی پیشبینی استفاده میشود. مزیت روش با اتلاف نسبت به روش بدون اتلاف این است که در برخی موارد قادر به تولید فایل فشردهی کوچکتری نسبت به روش بدون اتلاف شناختهشده است در عین حال پیشنیازها را برآورده خواهد ساخت.
از طرفی طرحهای فشردهسازی بدون اتلاف، قابلیت بازسازی دادههای اصلی را دارند؛ درحالیکه طرحهای با اتلاف خطر از بین رفتن بخشی از دادهها را برای رسیدن به فشردهسازی بالاتر میپذیرند. در فشردهسازی با اتلاف داده به نقطهای میرسد که با فشردهسازی مجدد تغییری در فایل اعمال نخواهد شد. از معروفترین فرمتهای فشردهسازی با اتلاف میتوان به MP۳، ا MP۴، ا AAC، ا WMA و Ogg و فرمتهای تصویری مثل JPEG اشاره کرد.
تاریخچهی فشردهسازی
در سال ۱۹۴۹، کلاد شانون و رابرت فانو برای تخصیص کد براساس احتمالهای بلاکی، کدگذاری شانون-فانو را ابداع کردند. این روش تنها در رمزنگاریهای طول متغیر بهینه است. در سال ۱۹۵۱، دیوید هافمن روشی بهینه ابداع کرد که از درخت دودویی فرکانس مرتب استفاده میکرد و بهینهتر از کدگذاری شانون فانو بود.
در سال ۱۹۷۷، ابراهام لمپل و جیکوب زیو الگوریتمهای LZ۷۷ و LZ۷۸ را ابداع کردند. این الگوریتمها بهسرعت به محبوبیت رسیدند. برخی الگوریتمهای متداول کنونی مثل DEFLATE، LZMA و LZX از LZ۷۷ به دست آمدند. به دلیل مشکلات پتنت LZ۷۸ در سال ۱۹۸۴، توسعه دهندگان یونیکس به تطبیق الگوریتمهای متن بازی مثل gzip مبتنی بر DEFLATE و فرمتهای BZip۲ مبتنی بر تبدیل باروز ویلر پرداختند که برای رسیدن به نسبت فشردهسازی بالاتر از LZ۷۸ طراحی شدهاند.
پنج نوع فشردهسازی متداول که توسط نرمافزارهای پشتیبانگیری SyncBackFree، SyncBackSE و SyncBackPro پیشنهاد میشوند به شرح ذیل هستند:
الگوریتم فشردهسازی متداول در SyncBackFree
DELFATE
در سال ۱۹۹۳ توسط فیل کاتز ابداع شد. مدرنترین انواع فشردهسازی بر این روش استوار هستند. در این روش از LZ۷۷ همراه با کدگذاری هافمن استفاده میشود. نتایج فشردهسازی در زمان کوتاهی حاصل میشوند.
روشهای فشردهسازی در SyncBackSE
DEFLATE۶۴
این روش در مقایسه با DEFLATE، عملکرد و نرخ فشردهسازی بهتری ارائه میکند. این روش به DEFLATE بهبودیافته معروف است.
تبدیل باروز ویلر (BWT)
در این روش از تبدیل قابل بازگشت برای یافتن الگوهای تکراری در دادهها و مرتبسازی مجدد آنها استفاده میشود. با مرتبسازی مجدد دادهها، BWT میتواند به شکلی بهینه دادهها را کدگذاری کند و منجر به نرخهای فشردهسازی بالاتر شود.
انواع فشردهسازی در SyncBackPro
BZip۲
نوع متن باز تبدیل باروز ویلر که در آن از اصول سادهای برای دستیابی به تعادل مناسب بین سرعت و نسبت فشردهسازی استفاده میشود. این فرمت در محیطهای یونیکس از محبوبیت بالایی برخوردار است و از انواع تکنیک برای تولید خروجی استفاده میکند. BZip۲ در برخی نمونهها مثل کنترل دادههای بهشدت تصادفی میتواند عملکرد کندی داشته باشد.
LZMA
الگوریتم زنجیرهی لمپل-زیو-مارکف برای اولین بار در فرمت فایل.۷z با انتشار نرمافزار آرشیو ۷-Zip در سال ۱۹۹۸ معرفی شد. LZMA در اغلب نمونهها قادر به دستیابی به فشردهسازی بالاتری نسبت به BZip۲، DEFLATE و دیگر الگوریتمها است؛ درحالیکه از سرعت و حافظهی یکسانی استفاده میکند. مشابه BZip۲، زنجیرهای از روشهای فشردهسازی برای دستیابی به نتیجه به کار میروند.
نمونههای کاربردی
پس از آشنایی با مفاهیم تئوری فشردهسازی فایل، لازم است در عمل و کاربرد هم با آن آشنا شویم. به بیان ساده، فشردهسازی باعث کاهش اندازهی فایل میشود، اما کارایی فایل از بین نمیرود. یک نمونهی کاربردی فایلهای زیپ هستند. وقتی فایل فشردهای را باز میکنید، ویندوز آن را بهصورت خودکار از حالت فشرده خارج میکند و وقتی آن را میبندید مجددا آن را فشرده میکند.
آیا باید کل یک هارد درایو را فشرده کرد
با فشردهسازی، فایلها فضای کمتری روی دیسک اشغال میکنند، ولی پردازنده زمان بیشتری به فایلهای فشرده اختصاص میدهد؛ چرا که برای هر بار استفاده باید آنها را از حالت فشرده خارج و دوباره فشرده کند. از آنجا که اغلب کامپیوترهای کنونی از فضای دیسک زیادی برخوردار هستند، فشردهسازی در حالت عادی توصیه نمیشود؛ چرا که به دلیل مصرف بالای پردازنده، روند کار آهسته میشود؛ اما اگر از برخی فایلها بهندرت استفاده میکنید بهتر است آنها را در حالت فشرده نگه دارید.