موضوع مقاله: فشرده‌سازی داده‌ها | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # فشرده‌سازی داده‌ها | مقدمه: در پردازش سیگنال، فشرده‌سازی داده‌ها یا کُدگذاری منبع ، به فشرده‌سازیِ اطلاعات یک منبعِ اطلاعات می‌پردازد (با رمزگذاری اشتباه نشود). | ## بخش 1: فشرده‌سازی داده‌ها | این را می‌توان معادل فشرده‌سازی اطلاعات یک منبع اطلاعات دانست؛ بنابراین، فشرده‌سازی اطلاعات، کاستن از حجم آن است، طوری‌که محتوای آن دچار تغییر نامناسبی نشود. در علوم کامپیوتر و نظریه اطلاعات، فشرده‌سازی داده‌ها، در واقع کدکردن اطلاعات با استفاده از تعداد بیت‌هایی کمتر از همان اطلاعاتِ کدنَشده، و با به‌کارگرفتن روش‌های کُدکردن است. دریافت اطلاعات فشرده، تنها زمانی ممکن است که هم فرستنده و هم گیرندهٔ اطلاعات، روش کدکردن را بدانند. به همین ترتیب، دادهٔ فشرده تنها زمانی قابل استفاده است که گیرنده روش کدگشایی (به انگلیسی: Decoding) آن را بداند. برای نمونه، فشرده‌سازی یک فیلم ممکن است نیازمند تجهیزات و سخت‌افزار گاهی گران‌قیمت باشد که بتواند فیلم را به‌سرعت از فشردگی خارج کند تا آن را هم‌زمان با کدگشایی پخش کند (این‌که فیلم فشرده، ابتدا کدگشایی و سپس پخش شود، ممکن است به‌سبب کمبود حافظه ممکن نباشد). فشرده‌سازی بی‌اتلاف (بهینه) و بااتلاف الگوریتم‌های فشرده‌سازی بهینه معمولاً فراوانی آماری را طوری به کار می‌گیرند که اطلاعات را بی‌خطا و خلاصه‌تر فشرده کنند. فشرده‌سازی بهینه امکان‌پذیر است چون اغلب اطلاعات جهان واقعی دارای فراوانی آماری هستند. برای نمونه، در زبان فارسی، «ا» بسیار بیشتر از «ژ» به‌کار می‌رود و احتمال اینکه مثلاً «غ» پس‌از «ژ» بیاید بسیار کم است. نوع دیگری از فشرده‌سازی، فشرده‌سازی پراتلاف یا کدگذاری ادراکی نام دارد و وقتی به کار می‌رود که حدی از درستی اطلاعات کافی باشد. | ## بخش 2: فشرده‌سازی داده‌ها | در فشرده‌سازی تصویر به روش JPEG، از بخشی ازین اطلاعات کم‌ارزش‌تر صرف‌نظر می‌شود. در فشرده‌سازی بااتلاف، درستی اطلاعات، به‌ازای درصدی از فشرده‌سازی، بیشینه می‌شود. در کاربردهای دیگر، از درستی اطلاعات، برای رسیدن به کمترین حجم اطلاعات، چشم‌پوشی می‌شود. روش‌های فشرده‌سازی بهینه برگشت‌پذیرند، طوری‌که اطلاعات اولیه، دقیق بازیابی می‌شوند. اما روش‌های بااتلاف، از دست رفتن بخشی از اطلاعات را برای دست‌یابی به فشردگی بیشتر می‌پذیرند. در واقع هیچ الگوریتم فشرده‌سازی نمی‌تواند اطلاعاتی که هیچ الگوی مشخصی ندارند، مانند نویز سفید، را فشرده کند. فشرده‌سازی اطلاعاتی که از پیش فشرده‌شده‌اند، به‌جای کم‌کردن حجم اطلاعات، آن را زیاد می‌کند. در عمل، فشرده‌سازیِ بااتلاف نیز به مرحله‌ای می‌رسد که فشرده‌سازی مجدد دیگر اثری ندارد، هرچند یک الگوریتم بسیار بااتلاف، مثلاً الگوریتمی که مرتب بایت آخر فایل را حذف می‌کند، به مرحله‌ای می‌رسد که دیگر فایل تهی می‌شود. مثالی از یک الگوریتم بی اتلاف در برابر یک الگوریتم بهینه، فشرده‌سازی رشتهٔ زیر است: ۲۵٫۸۸۸۸۸۸۸۸۸ این رشته می‌تواند به روش بهینه به این شکل فشرده شود: ۸[۹]۲۵ که خوانده می‌شود «بیست و پنج ممیز ۹ تا هشت»، و رشتهٔ اصلی دقیقاً بازسازی می‌شود و تنها کوتاه‌تر نوشته می‌شود. | ## بخش 3: فشرده‌سازی داده‌ها | در عوض در روش بااتلاف از ۲۶ استفاده می‌شود که مقدار دقیق عدد در ازای طول کمتر از دست خواهد رفت. الگوریتم‌ها و برنامه‌های اجرایی نمونه نمونه بالا، نمونه ساده‌ای از کدگذاری الگو-طول (کدبندی طول اجرا، که در آن «الگو» عبارت است از رشته‌ای از عناصر که پیاپی تکرار شده است و «طول»، تعداد تکرار آن است) است. این روش اغلب برای بهینه‌سازی فضای دیسک در کامپیوترها یا استفادهٔ بهتر از پهنای باند در یک شبکهٔ کامپیوتری به کار می‌رود. برای داده‌های نمادی مانند متن‌ها، صفحه‌گسترده‌ها (Spreadsheet)، برنامه‌های اجرایی و … بی‌اتلاف‌بودن ضروری است، زیرا تغییر کردن حتی یک بیت داده قابل قبول نیست (مگر در موارد بسیار محدود). برای داده‌های صوتی و تصویری کاهش اندکی از کیفیت بدون از دست دادن ماهیت اصلی داده قابل قبول است. با بهره‌بردن از محدودیت‌های حواس انسان، می‌توان در حجم زیادی از فضا صرفه‌جویی کرد و خروجی تولید کرد که با اصل آن تفاوت محسوسی ندارد. این روش‌های فشرده‌سازی بااتلاف به‌طور کلی یک برآیندگیری سه‌جانبه بین سرعت فشرده‌سازی، حجم نهایی فشرده‌سازی و کیفیت قابل چشم‌پوشی (درصد اتلاف قابل قبول) است. اگرچه جملهٔ دوم کوتاه‌تر از اولی‌ست، اطلاعات بیشتری نسبت به آن دارد (محتوای اطلاعاتی بیشتری دارد)، و به این ترتیب جمله ارزشمندتری است. در واقع جمله اول از نظر اطلاعاتی هیچ ارزشی ندارد، زیرا به چیزی بدیهی اشاره می‌کند. | ## جمع‌بندی | در واقع آنتروپی جمله اول، صفر است، زیرا احتمال طلوع خورشید از شرق، برابر یک است.