چند سال قبل من یک جوکی شنیدم که هنوز هم حسابی برایم خنده دار است و دوست دارم اینجا برای شما هم تعریف کنم. یک بابایی یک سگ فلجی برای باغش گرفته بود، هروقت که دزد میآمد، این بابا سگ را میانداخت داخل فرغون و میافتاد دنبال دزد. خب اگر قرار بود که این بابا این کار را بکند و هر بار دزد میآید سگ را برداشته و به دنبال دزد راه بیفتد، خب این چه سگ نگهبانیست و به چه دردی میخورد. خود همان بابا برود دنبال دزد دیگر. بالاخره ما اگر سگ نگهبان میگیریم، هدف این است که به او آموزش دهیم که هروقت یک دزدی آمد، خودش دزد را تشخیص دهد. همینطور ما باید به این سگ آموزش دهیم که وقتی دزد را تشخیص داد، چطور باید با او برخورد کند و به سمت او حملهور شود. این که صرفا دزد را تشخیص دهد هم کافی نیست و باید کاری بکند. اینطوری ما با خیال راحت میتوانیم بخوابیم و مطمئن باشیم که سگمان بدون نیاز به حضور ما، خودش مستقلا جلوی دزدی را میگیرد.
اما غرض از گفتن این جوک طرح یک موضوع علمی بود. فرض کنید که ما میخواهیم پیامی را از اینجا برای یک نفر دیگر ارسال کنیم. ما این پیام را از طریق یک کانالی ارسال میکنیم. مثلا داخل نامه مینویسیم یا با دود علامت میدهیم یا کدهای صفر و یکی برای آن گیرنده ارسال میکنیم. پس تا اینجا ما در این ارتباط سه جز داریم : فرستنده که ما باشیم، گیرنده که آن شخص باشد و کانال ارتباطی.
اما ما وقتی پیام را ارسال میکنیم، ممکن است در میانهی راه یک خطایی در پیام ما اتفاق بیفتد. مثلا در مثال نامه، رطوبت یک کلمه داخل نامه را کمرنگ کند یا در مثال دود، تغییرات نور مانع دیدن یکی از علائم دودی ما بتوسط گیرنده شود یا در مثال کدهای صفر و یکی، یکی از صفرها جایی تحت تاثیر یک عامل بیرونی به یک تغییر کند. ما که پیام را ارسال کردهایم دوست نداریم خودمان هم به ضمیمهی پیاممان به نزد گیرنده برویم. اگر قرار بود که خودمان هم همراه پیام برویم که شبیه آن بابای داخل آن جوک میشدیم که سگش را میانداخت داخل فرغون و دنبال دزد میدوید. پس چکار کنیم که بدون اینکه خودمان به همراه پیام به نزد گیرنده برویم، او پیام ما را درست درک کند؟
شاید بگویید که ما نباید هیچ خطایی در ارسال پیام داشته باشیم و به نوعی یک ارتباط بینقص (perfect communication) ایجاد کنیم. اما فرض کنید که ما اصلا راهی نداریم که مطمئن شویم که جلوی ایجاد خطا (error) در پیام را در حین انتقال بگیریم. حالا باید چکار کنیم؟ کاری که میتوانیم بکنیم این است که خطاهایی که ممکن است در ارسال اتفاق بیفتد را شناسایی کنیم و براساس آنها، یک راهکار یا پروتکل تعریف کنیم و اسمش را بگذاریم پروتکل اصلاح خطا (error correction protocol). سپس آن پروتکل را به گیرنده بدهیم که گیرنده بتواند به محض دیدن پیام ما اولا تشخیص دهد که خطایی رخ داده یا نداده است؛ این یعنی پروتکل ما تشخیص دهندگی یا detectability داشته باشد.
دوم اینکه وقتی گیرنده خطا را تشخیص داد، بتواند خودش مستقل از ما خطا را اصلاح کند و پیام درست را بفهمد؛ این یعنی پروتکل ما اصلاح کنندگی یا correctability داشته باشد. مسالهی اصلاح خطا، یک حوزهی بسیار جالب و کاربردی در علوم کامپیوتر است. یکی از مثالهای خیلی جالب آن، تفاوت CD و DVD است. علت اینکه یک DVD میتوانست به اندازهی چندین CD اطلاعات در خودش ذخیره کند، همین بود که دستگاههایی که DVD میخواند به پروتکلی برای اصلاح خطا مجهز بود که به آن این امکان را میداد، خطاهای DVDهای خیلی حجیم را نیز اصلاح کند.
– ابا اباد