فشرده‌سازی داده‌ها

کدگذاری منبع روش‌های فشرده‌سازی یک منبع اطلاعات را مطالعه می‌کند. منابع اطلاعاتی طبیعی، مانند گفتار یا نوشتار انسان‌ها، دارای افزونگی است؛ برای مثال در جمله «من به خانه‌مان برگشتم» ضمایر «مان» و شناسه «م» در فعل جمله را می‌توان از جمله حذف نمود بدون اینکه از مفموم مورد نظر جمله چیزی کاسته شود. این توضیح را می‌توان معادل با انجام عمل فشرده‌سازی روی اطلاعات یک منبع اطلاعات دانست؛ بنابراین منظور از فشرده‌سازی اطلاعات کاستن از حجم آن به نحوی است که محتوی آن دچار تغییر نامناسبی نشود.
در علوم کامپیوتر و نظریه اطلاعات، فشرده‌سازی داده‌ها یا کد کردن داده‌ها، در واقع فرایند رمزگذاری اطلاعات با استفاده از تعداد بیت‌هایی (یا واحدهای دیگر حامل داده) کمتر از آنچه یک مثال رمزگذاری نشده از همان اطلاعات استفاده می‌کند و با به کار گرفتن روش‌های رمزگذاری ویژه‌ای است.
مانند هر ارتباطی، ارتباطات با اطلاعات فشرده، تنها زمانی کار می‌کند که هم فرستنده و هم گیرنده اطلاعات، روش رمزگذاری را بفهمند. به عنوان مثال این نوشته تنها زمانی مفهوم است که گیرنده متوجه باشد که هدف پیاده‌سازی با استفاده از زبان فارسی بوده. به همین ترتیب، داده فشرده‌سازی شده تنها زمانی مفهوم است که گیرنده روش رمزگشایی آن را بداند.
ضرورت فشرده‌سازی
فشرده سازی به این دلیل مهم است که کمک می‌کند مصرف منابع با ارزش، مانند فضای هارد دیسک یا پهنای باند ارسال، را کاهش دهد، که این نکته در کاهش هزینه و جلوگیری از اتلاف وقت کمک میکند. البته از طرفی دیگر، اطلاعات فشرده‌سازی شده برای اینکه مورد استفاده قرار بگیرند باید از حال فشرده خارج شوند و این فرایند اضافه ممکن است برای بعضی از برنامه‌های کاربردی زیان‌آور باشد. برای مثال یک روش فشرده‌سازی برای یک فیلم ویدئویی ممکن است نیازمند تجهیزات و سخت‌افزار گران‌قیمتی باشد که بتواند فیلم را با سرعت بالایی از حالت فشرده خارج سازد که بتواند به‌طور هم‌زمان با رمزگشایی پخش شود (گزینه‌ای که ابتدا رمزگشایی شود و سپس پخش شود، ممکن است به علت کم بود فضای برای فیلم رمزگشایی شده حافظه امکان‌پذیر نباشد). بنابراین طراحی روش فشرده‌سازی نیازمند موازنه و برآیندگیری بین عوامل متعددی است. از جمله این عوامل درصد فشرده سازی، میزان پیچیدگی معرفی شده (اگر از یک روش فشرده‌سازی پر اتلاف استفاده شود) و منابع محاسباتی لازم برای فشرده‌سازی و رمزگشایی اطلاعات را می‌توان نام برد. فشرده‌سازی به دو دسته فشرده‌سازی اتلافی (فشرده‌سازی با اتلاف) و فشرده‌سازی بهینه فشرده‌سازی بی‌اتلاف اطلاعات تقسیم می‌شوند. کدگذاری منبع، علم مطالعه روش‌های انجام این عمل، برای منابع متفاوت اطلاعاتی موجود است.
فشرده‌سازی بهینه در مقابل اتلافی
الگوریتم‌های فشرده‌سازی بهینه معمولا فراوانی آماری را به طریقی به کار می‌گیرند که بتواند اطلاعات فرستنده را اجمالی‌تر و بدون خطا نمایش دهد. فشرده‌سازی بهینه امکان‌پذیر است چون اغلب اطلاعات جهان واقعی دارای فراوانی آماری هستند. برای مثال در زبان فارسی حرف "الف" خیلی بیشتر از حرف "ژ" استفاده می‌شود و احتمال اینکه مثلا حرف "غین" بعد از حرف "ژ" بیاید بسیار کم است. نوع دیگری از فشرده سازی، که فشرده‌سازی پر اتلاف یا کدگذاری ادراکی نام دارد که در صورتی مفید است که درصدی از صحت اطلاعات کفایت کند. به‌طور کلی فشرده‌سازی اتلافی توسط جستجو روی نحوه دریافت اطلاعات مورد نظر توسط افراد راهنمایی می‌شود. برای مثال، چشم انسان نسبت به تغییرات ظریف در روشنایی حساس‌تر از تغییرات در رنگ است. فشرده‌سازی تصویر به روش JPEG طوری عمل می‌کند که از بخشی از این اطلاعات کم ارزش‌تر "صرف نظر" می‌کند. فشرده‌سازی اتلافی روشی را ارائه می‌کند که بتوان بیشترین صحت برای درصد فشرده‌سازی مورد نظر را به دست‌آورد. در برخی موارد فشرده‌سازی شفاف (نا محسوس) مورد نیاز است؛ در مواردی دیگر صحت قربانی می‌شود تا حجم اطلاعات تا حد ممکن کاهش بیابد.
روش‌های فشرده‌سازی بهینه برگشت پذیرند به نحوی که اطلاعات اولیه قابلیت بازیابی به‌طور دقیق را دارند در حالی که روش‌های اتلافی، از دست دادن مقداری از اطلاعات را برای دست یابی به فشردگی بیشتر می‌پذیرند.
البته همواره برخی از داده‌ها وجود دارند که الگوریتم‌های فشرده‌سازی بهینه اطلاعات در فشرده‌سازی آن‌ها ناتوان هستند. در واقع هیچ الگوریتم فشرده‌سازی‌ای نمی‌تواند اطلاعاتی که هیچ الگوی قابل تشخیصی ندارند را فشرده‌سازی کند. بنابراین تلاش برای فشرده‌سازی اطلاعاتی که قبلا فشرده شده‌اند معمولا نتیجه عکس داشته (به جای کم کردن حجم، آن را زیاد می‌کند)، هم چنین است تلاش برای فشرده‌سازی هر اطلاعات رمز شده‌ای (مگر حالتی که رمز بسیار ابتدایی باشد).
در عمل، فشرده‌سازی اتلافینیز به مرحله‌ای می‌رسد که فشرده‌سازی مجدد دیگر تاثیری ندارد، هرچند یک الگوریتم بسیار اتلافی، مثلا الگوریتمی که همواره بایت آخر فایل را حذف می‌کند، همیشه به مرحله‌ای می‌رسد که دیگر فایل تهی می‌شود.
مثالی از یک الگوریتم اتلافی در مقابل یک الگوریتم بهینه، می‌توان رشته مقابل است:
۲۵٫۸۸۸۸۸۸۸۸۸
این رشته می‌تواند به روش بهینه به شکل زیر فشرده شود:
۸۹۲۵
که خوانده می‌شود "بیست و پنج ممیز ۹ تا هشت"، و رشته اصلی دقیقا بازسازی می‌شود و تنها به شکل کوچک‌تری نوشته می‌شود. در عوض در روش اتلافی از
۲۶
استفاده می‌شود که مقدار دقیق عبارت در ازای حجم کمتر از دست خواهد رفت.
الگوریتم‌ها و برنامه‌های اجرایی نمونه
مثال فوق مثال بسیار ساده‌ای از یک رمزنگاری الگو-طول (کدبندی طول اجرا، که در آن "الگو" عبارت است از رشته‌ای از عناصر که به‌طور متوالی تکرار شده‌است و "طول" تعداد تکرار آن است) است. این روش اغلب برای بهینه‌سازی فضای دیسک در کامپیوترهای اداری یا استفاده بهتر از طول باند اتصال در یک شبکه کامپیوتری به کار می‌رود. برای داده‌های نمادی مانند متن‌ها، صفحه گسترده‌ها (Spreadsheet)، برنامه‌های اجرایی و… غیراتلافی بودن ضروری است زیرا تغییر کردن حتی یک بیت داده قابل قبول نمی‌باشد (مگر در موارد بسیار محدود). برای داده‌های صوتی و تصویری کاهش قدری از کیفیت بدون از دست دادن طبیعت اصلی داده قابل قبول می‌باشد. با بهره بردن از محدودیت‌های سیستم حواسی انسان، می‌توان در حجم زیادی از فضا صرفه جویی کرد و در عین حال خروجی‌ای را تولید کرد که با اصل آن تفاوت محسوسی ندارد. این روش‌های فشرده‌سازی اتلافی به‌طور کلی یک برآیندگیری سه جانبه بین سرعت فشرده سازی، حجم نهایی فشرده‌سازی و میزان کیفیت قابل چشم پوشی (درصد اتلاف قابل قبول) است.
نظریه
سابقه نظری فشرده‌سازی برای فشرده سازی‌های بهینه توسط نظریه اطلاعات (که رابطه نزدیکی با نظریه اطلاعات الگوریتمی دارد) و برای فشرده سازی‌های اتلافی توسط نظریه آهنگ-پیچیدگی (Rate–distortion theory) ارائه شده‌اند. این شاخه‌های مطالعاتی در اصل توسط کلوده شانون(Claude Shannon)، که مقالاتی بنیادی در این زمینه در اواخر دهه‌ای ۱۹۴۰ و اوایل دهه ۱۹۵۰ به چاپ رسانده است به وجود آمده. "رمزنگاری" و "نظریه رمزگذاری" نیز رابطه بسیار زیادی با این زمینه دارند. ایده فشرده‌سازی رابطه عمیقی با آمار استنباطی دارد.
فرمت‌های فشرده‌سازی
ZIP و RAR
EXE
CAB
و …
آنتروپی (Entropy)
دو جمله زیر را در نظر می‌گیریم:
فردا هوا گرفته و ابری خواهد بود.
من یک میلیارد برنده شدم.
اگر چه جمله دوم کوتاه‌تر از اولی‌ست، بار اطلاعاتی بیشتری نسبت به آن دارد.
آنتروپی اطلاعات
ویژه‌مقدار
فشرده‌سازی تصاویر
فشرده‌سازی متون