در قسمت قبل یافتن بهترین فرضیه در بین فرضیه های رقیب برای توضیح "یک فرآیند تولید داده ها" را بر اساس معیار "کوتاه ترین برنامه برای تولید آن داده ها" تعریف کردیم. این بخصوص برای انتقال داده ها بسیار مهم است دقیقا مانند مورد خواندن شماره تلفن برای شخصی آن سوی خط.
در سالهای نخستین ایجاد ارتباطات الکترونیک و فرستادن پیام های دیجیتالی، به علت پایین بودن پهنای باند شبکه ها، فشرده سازی داده ها بسیار حیاتی بود. اگر شما می خواستید پیامی به صورت:
001001001001001...001001
را بفرستید واقعا احمقانه بود که کل آن را بفرستید در صورتی که می توانستید آن را به صورت فشرده در قالب برنامه ای که آن را تولید میکند بفرستید. این گونه نگرانی ها باعث شد اشخاصی چون کلاود شانون (claude shannon) ریاضیدان آمریکایی، به فکر توسعه یک چارچوب نظری قدرتمند بیفتند که بتواند به ما راه حل های جامع برای فشرده سازی انواع داده ها را بدهد. نظریه اطلاعات در قلب همین نیاز ایجاد شد. شانون و دیگران متوجه شدند که الگوهای زیادی در داده های روزمره ای که استفاده میکنیم وجود دارد که می تواند به انتقال داده را از طریق فشرده سازی کمک کند. اما این الگو ها در بیشتر مواقع مانند دنباله بالا ساده نیست بلکه الگویی است که تصادف هم با آن همراه است.
بیایید با یک مثال موضوع را روشن تر کنیم. در زبان های طبیعی مثل فارسی یا انگلیسی جملات و کلمات دنباله ای از حروف هستند. اما این حروف به صورت تصادفی پخش نشده اند: ساده ترین واقعیت این است که ما بعضی از حروف را بیشتر از بقیه استفاده می کنیم مثلا در فارسی حرف "ا" پرتکرار ترین و "ژ" کم تکرار ترین است.
این نشان دهند یک نظم یا الگو است! همین واقعیت به ما کمک می کند برای حرفی که پر تکرارتراست تعداد بیت های کمتری در ارتباطات اختصاص دهیم و برای حرف کم تکرار تر بیت های بیشتر. این روش بسیار بهینه تر از حالتی است که طول بیت مساوی برای همه حروف می گیریم. این عدم توازن باعث می شود ما به صورت بهینه تری از پهنای باند شبکه استفاده کنیم. کد هافمن یک روش برای این بهینه سازی است. البته شاید به نظرتان خنده دار بیاید که در آن دوران نگرانی برای فرستادن حروف بر روی شبکه وجود داشت. امروزه شبکه های پرسرعت اینترنت به راحتی چندین مگابایت تا چند صد مگابایت را در ثانیه منتقل میکنند. اما حتی با چنین شبکه هایی و کاربران زیاد آن نگرانی در مورد فرستادن ویدیو ها به صورت استریمینگ مثلا بر روی سایت های به اشتراک گذاری ویدیو مانند یوتیوب وجود دارد. باز هم پژوهشگران حوزه علوم کامپیوتر متوجه شدند که ویدیو هم مانند زبان صرفا مجموعه از داده های تصادفی نیست. نظم موجود در یک ویدیو به ما کمک میکند که آن را فشرده کنیم و راحت تر بر روی شبکه بفرستیم. یک مثال میزنیم تا این قضیه روشن تر شود:هر ویدیو دنباله ای از فریم هاست و هر فریم یک عکس است. روش سنتی و ناکارآمد آن است که فریم ها را یکی یکی بر روی شبکه به سمت گیرنده بفرستیم اما وقتی شما یک ویدیو میبینید تمام تصویر در حال حرکت نیست. مثلا در ویدیوی یک خودروی در حال حرکت فقط خودرو حرکت می کند و پشت صحنه تغییری نمی کند. بنابراین لزومی ندارد در فریم های متوالی بخشی از فریم که ثابت است را تا زمانی که تغییری نمیکند بر روی شبکه فرستاد. این تکنیک به تکنیک IBP معروف است. فریم Iحاوی یک فریم کامل است. فریم بعدی یک فریم P است که فقط شامل قسمتی از تصویر است که تغییر کرده(در این جا دایره های آبی).
تنها حالتی که نمی توان ویدیو را فشرده کرد زمانی است که ویدیو کاملا تصادفی باشد. ویدیوی تصادفی همان برفکی است که قدیم ها بر روی تلویزیون هایتان می دیدید! همین اصول در مورد فشرده سازی موسیقی در قالب mp3 و تصاویر در قالب jpeg هم وجود دارد. آهنگ هایی که میشنویم نظم دارند و به همین خاطر است که می توانیم آن را فشرده کنیم.
بنابراین داده ها با یک احتمال ظاهر نمی شوند و با هم ارتباط دارند. حروف و کلماتِ زبان با یک احتمال ظاهر نمی شوند و احتمال تغییر در بخش هایی از ویدیو بیشتر از بقیه است: مثلا ما انتظار نداریم که در پشت صحنه ناگهان چراغ خواب شروع به حرکت کند! معمولا چیزی که تغییر میکند و ما هم انتظار آن را داریم خود کاراکتر اصلی در تصویر است. در وسط یک آهنگ انتظار نداریم که به یک باره ریتم عوض شود. آهنگی که ریتم(نظم) ندارد اصولا قابل شنیدن نیست. کافی است به صدایی که با برفک تلویزیون همراه می شود گوش دهید! (نویز سفید)