نظریه اطلاعات (information theory) یکی از مهمترین و در عین حال کمتر شناخته شدهترین دستاوردهای علمی دنیاست. درک درستی از این نظریه میتونه در عمل دید آدم رو نه تنها در بررسی مطالب علمی، حتی نسبت به بسیاری از وقایع روزمره دنیای اطرافش تحت تاثیر قرار بده. بیاید به کمک چند مثال ساده نگاه تازهای به این نظریه جذاب و شگفتانگیز بندازیم:
دانشمندان علوم کامپیوتر معمولاً نظریه اطلاعات رو در قالب یک جمله ساده به صورتی شبیه به این توضیح میدن:
نظریه اطلاعات روشی است علمی برای اینکه مطمئن باشیم در هنگام انتقال اطلاعات بین دو فرد (یا نقطه یا دستگاه یا هر چیز دیگر)، تمامی اطلاعات لازم با صرف کمترین هزینه ممکن منتقل شده.
حالا الان ممکنه که بپرسید خوب این چیزی که من گفتم یعنی چی (که حق هم دارید). پس بذارید این رو با ذکر یک مثال ساده توضیح بدم.
فرض کنید که شما یک شبکه خبری درست کردید که توش اخبار مربوط به برف توی شهرهای مختلف رو گزارش میدید. برای سادگی مطلب فرض کنید که تنها خبری که شما به خوانندگان خودتون میدید اینه که مثلاً دیروز در فلان شهر برف اومد. بیاید برای سادگی فرض کنیم که فعلاً خبرگزاری شما فقط روی یک شهر تمرکز داره (مثلاً تبریز) ولی شما خودتون ساکن یک شهر دیگر هستید (بگیم یزد). به خاطر همین، شما یک خبرنگار توی اون شهر دارید که هر روز به شما زنگ میزنه تا گزارش بده که اون روز برف اومد یا نه. بیاید فرض کنیم که هر بار زنگ زدن این خبرنگار به شما یک مقداری براتون هزینه برمیداره. بعد از چند وقت شما متوجه میشوید که خیلی از روزها این خبرنگار به شما زنگ میزنه تا فقط بگه که اون روز برف نیومده. بعد از دو سال که این کار رو ادامه میدید میبینید که مثلاً از ۳۶۵ روز سال فقط ۶۵ روزش برف میاد و شما دارید هزینه اضافی رو برای روزهای دیگه پرداخت میکنید. اینجاست که ممکنه یک فکر جالب به دهنتون برسه: شما واقعاً مجبور نیستید که هر روز از خبرنگارتون بپرسید که آیا برف اومده یا نه. فقط کافیه که بهش بگید روزهایی که برف اومد به شما زنگ بزنه! و به همین راحتی شما هزینه تماس هاتون رو به میزان زیادی پایین آوردید، بدون اینکه هیچ اطلاعاتی رو از دست بدید. از اون روز به بعد اگر خبرنگار شما بهتون زنگ بزنه میدونید که اون روز برف اومده و اگر نزنه میدونید که نیومده. این میشه اولین نکته ما در مورد نظریه اطلاعات:
بعضی وقتها میشه بخشی از اطلاعاتی که میفرستیم را حذف کرد، بدون اینکه هیچ تاثیری در میزان اطلاعاتی که گیرنده دریافت میکنه داشته باشه.
میتونیم حتی یک قدم هم فراتر از این بریم. شما دیگه الان میدونید که هر بار که گزارشگرتون بهتون زنگ میزنه میخواد بهتون بگه که شهر مورد نظر برف اومده. پس شما حتی لازم نیست که تلفن رو جواب بدید. هر روزی که گزارشگرتون زنگ زد روز برفی، هر روزی که زنگ نزد روز غیر برفی. اونایی که با منطق کامپیوتر و مدارهای دیجیتال آشنایی دارند ممکنه ذهنشون الان به اونجایی که من دارم بهش اشاره میکنم خیلی نزدیک شده باشه: بله درسته ما دیگه داریم از منطق دودویی صحبت میکنیم (اگر در مورد منطق دودویی نمی دونید لطفاً صفحه را نبندید، در ادامه توضیح میدم).
منطق دودویی روشی است که کامپیوترها (که شامل موبایلها، تلویزیونها و اکثر وسایل دیجیتال زندگی روزمره امروزی هست) اطلاعات رو میبینند. دانشمندان علوم کامپیوتر بهش اصطلاحاً سیستم شمارش باینری هم میگند. دلیلش هم اینه که این سیستم در واقع روش شمارشی هست که کامپیوتر ها ازش استفاده میکنند. این سیستم رو میتونید به صورت روشی برای نمایش اطلاعات با استفاده از تنها دو حرف الفبا در نظر بگیرید، که این دو حرف «صفر» و «یک» هستند. شاید اولش غیرقابل باور به نظر بیاد، ولی تمامی محتوایی که توی تمام کامپیوترهای دنیا وجود داره (تمام فیلمها، تمام بازیها، و کتابها ... حتی همین مقاله) با استفاده از سیستم دودویی و نظریه اطلاعات به صورت نوشتههایی در قالب الفبای دودویی روی کامپیوترها ذخیره میشن و بین اونها منتقل میشن. جالبه نه؟ بیاید با یک مثال دیگه این قضیه رو بیشتر باز کنیم.
فرض کنید که شما میخواهید که به کمک یکی از دوستاتون تعداد ماشینهایی رو که از یک جاده رد میشند رو بشمارید. بیاید فرض کنیم که برای این کار دوستتون میره و بالای یک کوهی که از اونجا جاده رو میتونه ببینه میایسته و شما در فاصله خیلی دورتر کاغذ و خودکار به دست ایستادید و آمادهاید که شمردن رو شروع کنید. با توجه به چیزهایی که از کار قبلی (همون خبرنگاری برف) یاد گرفتید یک ایده عالی برای انجام این شمارش به ذهنتون میرسه: یک چراغ قوه میدید به دوستتون و ازش میخواید که هر بار که یک ماشین رد شدش با یک بار روشن و خاموش کردن این چراغ به شما علامت بده. شما هم هر بار که خاموش و روشن شدن چراغ قوه رو دیدید یک خط توی دفترچهتون میکشید. در پایان روز این خطها رو میشمارید تا ببینید چند تا ماشین در اون روز از اونجا رد شده.
این سازوکار به خوبی به کارش ادامه میده تا این که یک روز کسانی که از خدمات سایت شمارش ماشین شما استفاده میکنند با شما تماس میگیرند و میگن اگر بشه رنگ ماشین هایی رو که رد شدن رو مشخص کنید خیلی عالی میشه. شما و دوستتون خیلی با هم روی این قضیه فکر میکنید. ایده های مختلفی ممکنه به ذهنتون برسه. مثل اینکه مثلا برای هر رنگ یک چراغ قوه داشته باشید و با اون علامت بدید. ولی شما الان با نظریه اطلاعات آشنایی دارید و میدونید که میتونید همونطور که گفتیم با سیستم الفبای دودویی تمام این اطلاعات رو منتقل کنید. بعد از کمی فکر کردن به این نتیجه میرسید که کارتون رو با همون یک چراغ قوه انجام بدید. به این صورت که هر بار که یک ماشین رد شد دوست شما رنگش رو به کمک یک سری روشن و خاموش کردنهای چراغ برای شما علامت میفرسته. این علامت ها میشن الفبای صفر و یکی شما. مثلاً بیاید بگیم که برای این کار الفبای انتخابی ما اینه:
با داشتن این الفبا شما جدول زیر رو درست میکنید. این جدول در واقع میشه واژگانی که شما به کمک نظریه اطلاعات برای شمارش ماشین درست کردید. در اینجا شما به کمک الفبای دودویی زبانی درست کردید که مخصوص کار مورد نظر شماست. هر پدیدهای که شما انتظار اتفاق افتادنش رو دارید (در این حالت فقط شامل رد شدن ماشینهای با رنگهای مختلف میشه) توی این زبان با یک نشانه (کد) دودویی مشخص شده. در این صورت، تمام چیزهای که برای اینکار لازم دارید توی این زبان هست و کار مورد نظر شما رو هم بدون کم و کاست انجام میده.
برای سادگی مساله بیایید فرض کنیم جاده ما نسبتاً خلوته و هر چند دقیقه یک بار یک ماشین از توش رد میشه. در ضمن فقط هم همین چهار رنگ ماشین ازش رد میشند. با این حساب، به عنوان مثال هر بار که شما یک چشمک سریع چراغ قوه و به دنبال اون روشن شدن چراغ به مدت ۲-۳ ثانیه و بعدش خاموش شدنش رو میبینید میدونید که یک ماشین آبی رد شده. اینجاست که میشه به قدرت نظریه اطلاعات پی برد. تمام محتوای اطلاعات جمله ای مثل "الان یه ماشین آبی رد شد" رو ما تونستیم به کمک دو عدد منتقل کنیم.
خوب حالا که با مبانی نظریه اطلاعات آشنا شدیم، بیایید یک کم وارد مباحث پیشرفتهتر بشیم. فرض کنید که در انتهای روز اول شما تعداد ماشینها رو شمردین و جدولتون رو تشکیل دادید، و مثلاً به یک همچنین چیزی رسیدید.
این نشون میده که تعداد ماشینهای قرمزی که رد میشند به مراتب بیشتر از سایر ماشینهاست. یک نکته بسیار جالب اینه که حتی شما اگر رنگ ماشینی که رد شده رو نبینید و فقط حدس بزنید که رنگش قرمز بوده، با احتمال خوبی این حدس شما درسته. این نشون میده که رد شدن یک ماشین قرمز پدیده چندان غیرمعمولی نیست و تقریباً هر باری که یک ماشین رد میشه به احتمال نسبتاً خوبی یک ماشین قرمز بوده. از سوی دیگر رد شدن یک ماشین سبز خیلی پدیده غیرمعمولی هست، در حدی که دوست شما ممکنه از دیدنش تعجب بکنه.
اینجاست که وارد مبحث ارزش اطلاعات میشیم: گفتیم که دیدن ماشین قرمز رنگ یک چیز بسیار عادی هست. این یعنی خبر دیده شدن ماشین قرمز رنگ چیزی بسیار عادی هستش و خبر شنیدنش ارزش چندانی نداره. ولی از اون طرف دیدن ماشین سبز، به خاطر اینکه خیلی کمتر اتفاق میافته، خبر بسیار با ارزش تری هست. برای روشن شدن موضوع میشه اینجوری بهش نگاه کرد که چیزی که خیلی معمولی و روزمره باشه ارزش خبری چندانی نداره، ولی چیزی که خیلی به ندرت اتفاق میافته ارزش خبری بسیار بیشتری داره. حالا بیاید ببینیم که با توجه به این ارزش اطلاعات چطور میتونیم سیستم شمارش بهتری طراحی کنیم.
بیاید با توجه به جدول بالا تعداد بارهایی که دوستمون چراغ قوه رو برای ما خاموش و روشن میکنه رو بشماریم. با توجه به اینکه برای رد شدن هر ماشین دوست ما دو تا علامت صفر و یکی برای ما میفرسته، داریم که تعداد کل علامت های رد و بدل شده برابر است با
اینجا یک نکته خیلی ظریفی وجود داره. ما برای تمام اتفاقات (رد شدن یک ماشین) یک طول ثابت از اطلاعات رو منتقل میکنیم. در حالی که تعداد تکرار بعضیهاشون به مراتب بیشتر از بعضیهای دیگه است. بیاید به جای جدول نشانهگذاری بالا که توش طول تمام نشانههامون یکی بود از جدول زیر استفاده کنیم:
اینجا هر بار که یک ماشین قرمز رد میشه ما فقط یک علامت رد و بدل میکنیم (یک صفر)، در حالی که برای دیده شدن رد شدن یک ماشین سبز سه تا (دو تا یک و بعدش یک صفر). حالا اگر یک بار دیگه تعداد دفعاتی که چراغ رو روشن و خاموش کردیم رو بشماریم میبینیم که
این یعنی ما فقط با تغییر مدل نشانهگذاری (کدگذاری) اتفاقاتی که ثبت میکنیم تونستیم تعداد دفعاتی که چراغ قوه رو روشن و خاموش میکنیم (هزینه فرستادن اطلاعات) را تقریباً یک سوم کمتر کنیم. نتیجه اینکه ما برای انتقال اطلاعات در مورد پدیدههای رایج اطلاعات کمتری رو لازم داره که بفرستیم. به طور خلاصه و به زبان علمی میشه گفت
پدیدههای پر احتمالتر (رایجتر) ارزش اطلاعاتی کمتری در مقایسه با پدیدههای کم احتمالتر دارند. با کم کردن هزینه انتقال (میزان اطلاعات منتقل شده) دادههای کم ارزشتر، در مقابل افزایش هزینه دادههای با ارزشتر، میتونیم تمامی اطلاعات لازم رو با هزینه کلی کمتر منتقل کنیم.
کافیه همین رو به سیستمهای پیچیدهتر دور و برمون (که هر روز در حال پیچیدهتر شدن هستند) تعمیم بدید تا به شگفتی نظریه اطلاعات بیشتر پی ببرید. نظریه اطلاعات تاثیر شگرفی در نشانهگذاری اطلاعات به صورت بهینه و بازیابی اونها داره. بدون اون ما هیچ وقت قادر نبودیم دنیای شگفت انگیز دور و برمون رو به صورت دیجیتال در بیاریم و به راحتی بین دستگاههای زندگی روزمرهمون رد و بدل کنیم.
در ابتدای این متن گفتم که دونستن نظریه اطلاعات میتونه زندگی روزمره آدم رو هم تحت تاثیر قرار بده و هنوز هم پای این حرف هستم. جدای از دانستن بهتر سازوکار دنیای دیجیتال اطرفمون دلایل دیگری هم برای این هست که در ادامه اشارهای به تعدادی از اونها میکنم:
توضیح در مورد درسهای دیگه زندگی که آدم میتونه از نظریه اطلاعات بگیره میتونه موضوع بحث کتابها باشه. حتی دید عمیق تر توی موارد بالا هم میتونه نگاه آدم رو نسبت به خیلی مسايل پیرامونش عوض کنه. جالبه که ما انسانها خیلی وقتها این موارد رو میبینیم و به این نتیجه ها میرسیم. ولی دونستن نظریه اطلاعات درکشون رو برای ما سریعتر و قابل توضیحتر میکنه. مثلاً یک کشور دیکتاتوری رو فرض کنید که تمامی رسانههاش به صورت مداوم دارند در مورد اینکه چطور تمام تصمیمات دیکتاتور درست و از روی درایت هستند صحبت میکنند. بعد از چند وقت مردم به صورت غریضی یاد میگیرند که ارزش اطلاعاتی رسانههای اون دیکتاتوری در حد صفر هست. چون عملاً اجازه گفتن خلافش وجود نداره.
خوب دیگه بهتر که من خودم هم به گفته های خودم عمل کنم و همینجا مطلب رو ببندم. امیدوارم این مطلب و اطلاعاتش براتون ارزشمند بوده باشه.