کد همینگ

در مخابرات، کد همینگ، کد تصحیح خطای خطی می‌باشد که به افتخار ریچارد همینگ، مخترع آن گذاشته شده‌است. کدهای همینگ می‌توانند همزمان ۲ بیت خطا را شناسایی کنند و ۱ بیت خطا را تصحیح کنند؛ از طرفی parity code به تنهایی نمی‌تواند خطاها را تصحیح کند و فقط فرد تعداد بیت از خطاها را تشخیص می‌دهد. ریچارد همینگ، این متد را در سال ۱۹۵۰ ابداع کرد به عنوان روشی که تصحیح خطا را به صورت اتوماتیک انجام می‌داد؛ او در مقالهٔ اصلی خود، کدهای همینگ(۷٬۴) را مورد بررسی قرار می‌دهد که سه بیت توازن(parity) به دادهٔ چهار بیتی اضافه می‌کند.

از لحاظ ریاضی، کدهای همینگ کلاسی از کدهای خطی باینری هستند.

برای هر عدد صحیح r ≥ ۲ وجود دارد کدی(Block length) با طول n = 2r − ۱ پیامی (Message length) به طول k = 2r − r − ۱. از این رو برآورد ما از متد همینگ اینگونه به دست می‌آید:(R = k / n = ۱ − r / (2r − ۱ یعنی بیشترین احتمال برای کدهایی است که در کمترین فاصله از سه هستند. (کمترین تعداد بیت‌هایی که باید تغییر کنند تا از کدی، کد معتبر دیگری تولید کنیم، سه بیت است)

ماتریس سنجش توازن(parity-check matrix)برای کدهای همینگ از تمام ستون‌های به طول r ناصفر ساخته می‌شود؛ ستون‌های این ماتریس دوبه دو مستقل خطی هستند.

در این روش بیت‌های کمی به دیتاها اضافه می‌شود؛ که این یعنی همینگ کد به شرط کم بودن خطا در داده‌ها، می‌تواند خطاها را تشخیص داده و تصحیح کند. از کاربردهای این روش می‌توان به حافظهٔ کامپیوتر ECC memory اشاره کرد؛ وقتی که بیت‌خطاها بسیار کم باشند، کدهای همینگ آن را مدیریت می‌کنند.

در نتیجه مخابره قابل اطمینان در صورتی که فاصله همینگ بین رشته بیت فرستنده و گیرنده یک یا کمتر از یک باشد، ممکن می‌شود.

کد بدون وزن همینگ 
دسته‌ای از کدها برای تشخیص و تصحیح خطا در ارسال اطلاعات استفاده می‌شوند؛ که به آنها کد همینگ می‌گویند. در این کدها حداقل اختلافی که بین دو کد نمایشی وجود دارد فاصله همینگ نامند.

ما در اینجا کد همینگ با حداقل فاصله ۳ را توضیح می‌دهیم. یعنی بیتهایی را که به آنها اضافه می‌کنیم ۳ بیت می‌باشد. چون در کد همینگ به منظور تشخیص و تصحیح خطا باید بیتهایی را به کدمان اضافه کنیم.

اگر بخواهیم کد NBCD را با حداقل فاصله ۳ ارسال کنیم. باید به کد NBCD، سه بیت اضافه کنیم؛ که اطلاعات ارسالی به صورت زیر می‌شود.
C1 c2 b3 c4 b5 b6 b7
که در اینجا بیت c1 و c2 و c4 سه بیتی هستند که به کدمان اضافه می‌شوند و به آنها بیتهای الحاقی می‌گویند و به بیتهای b3 و b5 و b6 و b7 بیتهای اطلاعاتی می‌گویند.

مقادیر سه بیت الحاقی به صورت زیر محاسبه می‌شود.

{C1={ b3, b5 , b7} c2={ b3 , b6 , b7 } c4={ b5 , b6 , b7 }

که در آنها اگر تعداد یک‌ها زوج بود حاصل c برابر صفر و اگر فرد بود برابر یک می‌شو. د.

به عنوان مثال رقم ۵ در کد NBCD را به روش زیر ارسال می‌کنیم.

c1=? c2=? b3=0 c4=? b5=1 b6=0 b7=۱

c1={ b3 , b5 , b7 }= { ۰٬۱٬۱} ==  ==> c1=۰

۱= c2={ b3 , b6 , b7 }= { ۰٬۰٬۱ }==  ==> c2

۰= c4={ b5 , b6 , b7 }= { ۱٬۰٬۱ }==  ==> c4

پس بر اساس اعداد به دست آمده عدد ۵ هنگام ارسال به صورت ۰۱۰۰۱۰۱ ارسال می‌شود.

جستارهای وابسته 
 اختراع‌ها در ایالات متحده (۱۹۴۶–۱۹۹۱)
 ریچارد همینگ
 فاصله همینگ
 Forouzan Data Communications and Networking

منابع 

 
 آموزش کد همینگ

آشکارسازی و اصلاح خطا
اختراع‌های آمریکایی
حساب رایانه‌ای
ریاضیات
علوم رایانه در ۱۹۵۱ (میلادی)
مخابرات
نظریه کدگذاری