**فشرده‌سازی داده‌ها** (به انگلیسی: Data compression) یا **کُدگذاری** **منبع** (به انگلیسی: Source Coding) در پردازش سیگنال، به فشرده‌سازیِ اطلاعات یک منبعِ اطلاعات می‌پردازد (با رمزگذاری اشتباه نشود). منابع اطلاعاتی طبیعی، مانند گفتار یا نوشتار، دارای افزونگی (Redundancy) هستند؛ برای مثال در جمله «من به خانه‌مان برگشتم» ضمایر «من» و «مان» را می‌توان حذف کرد و جمله را این‌گونه نوشت؛ «به خانه برگشتم»، بدون اینکه از مفهوم جمله چیزی کاسته شود. این توضیح را می‌توان معادل با فشرده‌سازی اطلاعات یک منبع اطلاعات دانست؛ بنابراین منظور از فشرده‌سازی اطلاعات کاستن از حجم آن به نحوی است که محتوای آن دچار تغییر نامناسبی نشود.

در علوم کامپیوتر و نظریه اطلاعات، فشرده‌سازی داده‌ها، در واقع فرایند کدکردن اطلاعات با استفاده از تعداد بیت‌هایی کمتر از همان اطلاعاتِ کدنَشده، و با به‌کارگرفتن روش‌های ویژۀ کُدکردن است.

ارسال و دریافت اطلاعات فشرده‌شده، تنها زمانی کار می‌کند که هم فرستنده و هم گیرندهٔ اطلاعات، روش کدکردن را بدانند. به عنوان مثال این نوشته تنها زمانی مفهوم است که گیرنده (خواننده) بداند که در نوشتن آن از زبان فارسی استفاده شده است. به همین ترتیب، دادهٔ فشرده‌سازی شده تنها زمانی مفهوم است که گیرنده روش کدگشایی (دیکُدکردنِ، عکس عمل کدکردن، Decode) آن را بداند.

ضرورت فشرده‌سازی
----------------

فشرده‌سازی به این دلیل مهم است که کمک می‌کند مصرف منابع باارزش، مانند فضای هارددیسک یا پهنای باند ارسال، را کاهش دهد، که این نکته در کاهش هزینه و جلوگیری از اتلاف وقت کمک میکند. البته از طرفی دیگر، اطلاعات فشرده‌سازی شده برای اینکه مورد استفاده قرار بگیرند باید از حالت فشرده خارج شوند و این فرایند اضافه ممکن است برای بعضی از برنامه‌های کاربردی زیان‌بار باشد. برای مثال یک روش فشرده‌سازی برای یک فیلم ویدئویی ممکن است نیازمند تجهیزات و سخت‌افزار گران‌قیمتی باشد که بتواند فیلم را با سرعت بالایی از حالت فشرده خارج سازد که بتواند به‌طور هم‌زمان با کدگشایی پخش شود (گزینه‌ای که ابتدا کدگشایی شود و سپس پخش شود، ممکن است به علت کمبود حافظه برای فیلم کدگشایی‌شده امکان‌پذیر نباشد). بنابراین طراحی روش فشرده‌سازی نیازمند موازنه و برآیندگیری عوامل متعددی است. از جمله این عوامل می‌توان درصد فشرده‌سازی، میزان پیچیدگی (اگر از یک روش فشرده‌سازی پر اتلاف استفاده شود) و منابع محاسباتی لازم برای فشرده‌سازی و کدگشایی اطلاعات را نام برد. فشرده‌سازی به دو دسته فشرده‌سازی بااتلاف (فشرده‌سازی با اتلاف) و فشرده‌سازی بهینه فشرده‌سازی بی‌اتلاف تقسیم می‌شوند. کدگذاری منبع، علم مطالعه روش‌های انجام این کار، برای منابع اطلاعات متفاوت است.

فشرده‌سازی بهینه در مقابل بااتلاف
---------------------------------

الگوریتم‌های فشرده‌سازی بهینه معمولاً فراوانی آماری را به طریقی به کار می‌گیرند که بتواند اطلاعات فرستنده را خلاصه‌تر و بدون خطا نمایش دهد. فشرده‌سازی بهینه امکان‌پذیر است چون اغلب اطلاعات جهان واقعی دارای فراوانی آماری هستند. برای مثال در زبان فارسی حرف "الف" خیلی بیشتر از حرف "ژ" استفاده می‌شود و احتمال اینکه مثلاً حرف "غین" بعد از حرف "ژ" بیاید بسیار کم است. نوع دیگری از فشرده‌سازی، که فشرده‌سازی پر اتلاف یا کدگذاری ادراکی نام دارد که در صورتی مفید است که درصدی از صحت اطلاعات کفایت کند. به‌طور کلی فشرده‌سازی بااتلاف توسط جستجو روی نحوهٔ دریافت اطلاعات مورد نظر توسط افراد راهنمایی می‌شود. برای مثال، چشم انسان نسبت به تغییرات ظریف در روشنایی حساس تر از تغییرات در رنگ است. فشرده‌سازی تصویر به روش JPEG طوری عمل می‌کند که از بخشی از این اطلاعات کم ارزش تر "صرف نظر" می‌کند. فشرده‌سازی بااتلاف روشی را ارائه می‌کند که بتوان بیشترین صحت برای درصد فشرده‌سازی مورد نظر را به دست‌آورد. در برخی موارد فشرده‌سازی شفاف (نا محسوس) مورد نیاز است؛ در مواردی دیگر صحت قربانی می‌شود تا حجم اطلاعات تا حد ممکن کاهش بیابد.

روش‌های فشرده‌سازی بهینه برگشت پذیرند به نحوی که اطلاعات اولیه قابلیت بازیابی به‌طور دقیق را دارند در حالی که روش‌های بااتلاف، از دست دادن مقداری از اطلاعات را برای دست یابی به فشردگی بیشتر می‌پذیرند.
البته همواره برخی از داده ها وجود دارند که الگوریتم‌های فشرده‌سازی بهینهٔ اطلاعات در فشرده‌سازی آن‌ها ناتوان هستند. در واقع هیچ الگوریتم فشرده‌سازی ای نمی‌تواند اطلاعاتی که هیچ الگوی قابل تشخیصی ندارند را فشرده‌سازی کند. بنابراین تلاش برای فشرده‌سازی اطلاعاتی که قبلاً فشرده‌شده‌اند معمولاً نتیجهٔ عکس داشته (به جای کم کردن حجم، آن را زیاد می‌کند)، هم چنین است تلاش برای فشرده‌سازی هر اطلاعات کدشده‌ای (مگر حالتی که کد بسیار ابتدایی باشد).

در عمل، فشرده‌سازیِ بااتلاف نیز به مرحله‌ای می‌رسد که فشرده‌سازی مجدد دیگر تأثیری ندارد، هرچند یک الگوریتم بسیار بااتلاف، مثلاً الگوریتمی که همواره بایت آخر فایل را حذف می‌کند، همیشه به مرحله‌ای می‌رسد که دیگر فایل تهی می‌شود.

مثالی از یک الگوریتم بااتلاف در مقابل یک الگوریتم بهینه، می‌توان رشتهٔ مقابل است:

```
۲۵٫۸۸۸۸۸۸۸۸۸
```

این رشته می‌تواند به روش بهینه به شکل زیر فشرده شود:

```
۸[۹]۲۵
```

که خوانده می‌شود "بیست و پنج ممیز ۹ تا هشت"، و رشتهٔ اصلی دقیقاً بازسازی می‌شود و تنها به شکل کوچک تری نوشته می‌شود. در عوض در روش بااتلاف از

```
۲۶
```

استفاده می‌شود که مقدار دقیق عبارت در ازای حجم کمتر از دست خواهد رفت.

الگوریتم‌ها و برنامه‌های اجرایی نمونه
-------------------------------------

مثال فوق مثال بسیار ساده‌ای از یک کدنگاری الگو-طول (کدبندی طول اجرا، که در آن "الگو" عبارت است از رشته‌ای از عناصر که به‌طور متوالی تکرار شده‌است و "طول" تعداد تکرار آن است) است. این روش اغلب برای بهینه‌سازی فضای دیسک در کامپیوترهای اداری یا استفادهٔ بهتر از طول باند اتصال در یک شبکهٔ کامپیوتری به کار می‌رود. برای داده‌های نمادی مانند متن‌ها، صفحه‌گسترده‌ها (Spreadsheet)، برنامه‌های اجرایی و… بی‌اتلاف‌بودن ضروری است زیرا تغییر کردن حتی یک بیت داده قابل قبول نیست (مگر در موارد بسیار محدود). برای داده‌های صوتی و تصویری کاهش قدری از کیفیت بدون از دست دادن طبیعت اصلی داده قابل قبول است. با بهره‌بردن از محدودیت‌های حواس انسان، می‌توان در حجم زیادی از فضا صرفه‌جویی کرد و در عین حال خروجی‌ای تولید کرد که با اصل آن تفاوت محسوسی ندارد. این روش‌های فشرده‌سازی بااتلاف به‌طور کلی یک برآیندگیری سه‌جانبه بین سرعت فشرده‌سازی، حجم نهایی فشرده‌سازی و کیفیت قابل چشم‌پوشی (درصد اتلاف قابل قبول) است.

نظریه
-----

سابقهٔ نظری فشرده‌سازی برای فشرده‌سازی‌های بهینه توسط نظریهٔ اطلاعات (که رابطه نزدیکی با نظریهٔ اطلاعات الگوریتمی دارد) و برای فشرده‌سازی‌های بااتلاف توسط نظریهٔ نرخ-اِعوِجاج (Rate–distortion theory) ارائه شده‌اند. این شاخه‌های مطالعاتی در اصل توسط کلود شانون (Claude Shannon)، که مقالاتی بنیادی در این زمینه در اواخر دهه‌ای ۱۹۴۰ و اوایل دههٔ ۱۹۵۰ به چاپ رسانده است. ایدهٔ فشرده‌سازی رابطهٔ عمیقی با آمار استنباطی دارد.

فرمت‌های فشرده‌سازی
-------------------

* ZIP و RAR
* EXE
* CAB

آنتروپی (Entropy)
-----------------

دو جملهٔ زیر را در نظر بگیرید؛

1. فردا خورشید از شرق طلوع می‌کند.
2. فردا باران می‌بارد.

اگرچه جملهٔ دوم کوتاه‌تر از اولی‌ست، اطلاعات بیشتری نسبت به آن دارد (محتوای اطلاعاتی بیشتری دارد)، و به این ترتیب جمله ارزشمندتری است. در واقع جمله اول از نظر اطلاعاتی هیچ ارزشی ندارد، زیرا به موضوعی بدیهی اشاره می‌کند، چرا که این را همه می‌دانند که خورشید از شرق طلوع می‌کند. از دیدگاه نظریۀ اطلاعات (Information Theory)، آنتروپیِ جمله دوم از جمله اول بیشتر است. در واقع آنتروپی جمله اول، صفر است، زیرا احتمال طلوع خورشید از شرق، برابر یک است.

جستارهای وابسته
---------------

* آنتروپی اطلاعات
* ویژه‌مقدار
* فشرده‌سازی تصاویر
* فشرده‌سازی متون

منابع
-----

1. ↑  «*فشرده‌سازی داده‌ها*» [*رایانه و فنّاوری اطلاعات*] هم‌ارزِ «*data compression*»؛ منبع: گروه واژه‌گزینی. جواد میرشکاری، ویراستار. *دفتر دوم*. فرهنگ واژه‌های مصوب فرهنگستان. تهران: انتشارات فرهنگستان زبان و ادب فارسی. شابک ۹۶۴-۷۵۳۱-۳۷-۰ (ذیل سرواژهٔ *فشرده‌سازی داده‌ها*)
2. ↑  «*کُدگذاری*» [*رایانه و فنّاوری اطلاعات*] هم‌ارزِ «*coding*»؛ منبع: گروه واژه‌گزینی. جواد میرشکاری، ویراستار. *دفتر دوم*. فرهنگ واژه‌های مصوب فرهنگستان. تهران: انتشارات فرهنگستان زبان و ادب فارسی. شابک ۹۶۴-۷۵۳۱-۳۷-۰ (ذیل سرواژهٔ *کُدگذاری*)

* Data Compression - Wikipedia
* Data Compression - Systematisation by T.Strutz

پیوند به بیرون
--------------

* \* کتاب مناسب[Thomas M. Cover، Joy A. Thomas. Elements of information theory New York: Wiley، ۱۹۹۱. ISBN 0-471-06259-6 ]
* Rationale for a Large Text Compression Benchmark

| * ن
* ب
* و
روش‌های فشرده‌سازی داده‌ها |
| --- |
| بی‌اتلاف | 

|  |  |
| --- | --- |
| نظریه | آنتروپی •  پیچیدگی کولموگروف •  افزونگی (نظریه اطلاعات) •  با اتلاف |
| کدگذاری آنتروپی | رمزگذاری شانون-فانو •  Shannon–Fano–Elias •  هافمن •  کدگذاری هافمن انطباقی •  Arithmetic •  Range •  Golomb •  Universal (Gamma •  Exp-Golomb •  Fibonacci •  Levenshtein) |
| واژه‌نامه | ‎کدبندی طول اجرا •  Byte pair encoding •  DEFLATE •  Lempel–Ziv (LZ77/78 •  LZSS •  LZW •  LZWL •  LZO •  LZMA •  LZX •  LZRW •  LZJB •  LZS •  LZT •  ROLZ)‎ |
| غیره | CTW •  تبدیل باروز-ویلر •  PPM •  DMC •  Delta |

 |
| صدا | 

|  |  |
| --- | --- |
| نظریه | Companding •  کانولوشن •  دامنه دینامیک •  Latency •  نمونه‌برداری •  قضیه نمونه‌برداری نایکوئیست-شنون •  Sound quality |
| Audio codec parts | LPC (LAR •  LSP) •  WLPC •  CELP •  ACELP •  A-law •  μ-law •  ADPCM •  DPCM •  MDCT •  تبدیل فوریه •  Psychoacoustic model |
| غیره | نرخ بیت (CBR •  ABR •  سرعت بیت متغیر) •  Speech compression •  Sub-band coding |

 |
| تصویر | 

|  |  |
| --- | --- |
| لغات | فضای رنگ •  پیکسل •  Chroma subsampling •  Compression artifact •  وضوح تصویری |
| روش‌ها | کدبندی طول اجرا •  فشرده‌سازی برخالی •  Wavelet •  EZW •  SPIHT •  LP •  تبدیل کسینوسی گسسته •  Chain code •  تئوری کارانن-لوف |
| غیره | Test images •  PSNR quality measure •  Quantization |

 |
| ویدیو | 

|  |  |
| --- | --- |
| لغات | ویدئو •  فریم (فیلم) •  فریم ریت •  Interlace •  Frame types •  Video quality •  وضوح صفحه نمایش |
| Video codec parts | Motion compensation •  تبدیل کسینوسی گسسته •  کمیت (پردازش سیگنال) |
| غیره | Video codecs •  نظریه نرخ-اعوجاج •  نرخ بیت (CBR •  ABR •  سرعت بیت متغیر) |

 |
| Timeline of information theory, data compression, and error-correcting codes |
| همچنین قالب‌های فشرده‌سازی برای قالب‌ها و نرم‌افزارهای پیاده‌سازی‌شدهٔ فشرده‌سازی برای کدک‌ها را ببینید. |

| * ن
* ب
* و
داده |
| --- |
| 
* آماده‌سازی داده
* Scrubbing
* پاک‌سازی داده
* کیفیت
* اعتبار‌سنجی
* امنیت
* Corruption
* یکپارچگی
* گزینش
* ویرایش
* Farming
* Fusion
* ادغام داده
* Pre-processing
* داده‌کاوی
* تراش‌دادن داده
* تحلیل
* فشرده‌سازی
* مخزن
* ذخیره‌سازی
* ازدست‌رفته
* حفاظت (حریم خصوصی)
* Reduction

 |