Berger code
ٹیلی مواصلات میں، برجر کوڈ ایک یک طرفہ غلطی کا پتہ لگانے والا کوڈ ہے، جس کا نام اس کے موجد جے ایم برجر کے نام پر رکھا گیا ہے۔ برجر کوڈز تمام یک طرفہ غلطیوں کا پتہ لگا سکتے ہیں۔ یک طرفہ غلطیاں وہ غلطیاں ہیں جو صرف ایک کو صفر میں یا صرف صفر کو صفر میں بدل دیتی ہیں، جیسے کہ غیر متناسب چینلز میں۔ برجر کوڈز کے چیک بٹس کا حساب انفارمیشن ورڈ میں موجود تمام صفروں کو گن کر اور اس نمبر کو قدرتی بائنری میں ظاہر کر کے کیا جاتا ہے۔ اگر انفارمیشن ورڈ بٹس پر مشتمل ہے، تو برجر کوڈ کو "چیک بٹس" کی ضرورت ہوتی ہے، جس سے لمبائی k + n کا برجر کوڈ ملتا ہے۔ (دوسرے لفظوں میں، چیک بٹس انفارمیشن بٹس تک چیک کرنے کے لیے کافی ہیں)۔ برجر کوڈز کسی بھی تعداد میں ون ٹو زیرو بٹ فلپ کی غلطیوں کا پتہ لگا سکتے ہیں، جب تک کہ ایک ہی کوڈ ورڈ میں کوئی زیرو ٹو ون غلطیاں نہ ہوں۔ اسی طرح، برجر کوڈز کسی بھی تعداد میں صفر سے ایک بٹ فلپ کی غلطیوں کا پتہ لگا سکتے ہیں، جب تک کہ ایک ہی کوڈ ورڈ میں ایک سے صفر بٹ فلپ کی غلطیاں نہ ہوں۔ برجر کوڈ کسی غلطی کو درست نہیں کر سکتے۔ تمام یک طرفہ غلطی کا پتہ لگانے والے کوڈز کی طرح، برجر کوڈز کو تاخیر سے غیر حساس سرکٹس میں بھی استعمال کیا جا سکتا ہے۔ جیسا کہ اوپر بیان کیا گیا ہے، برجر کوڈز کسی بھی تعداد میں یک طرفہ غلطیوں کا پتہ لگاتے ہیں۔ کسی دیئے گئے کوڈ ورڈ کے لیے، اگر صرف یہ غلطیاں واقع ہوئی ہیں کہ ویلیو 1 والے کچھ (یا تمام) بٹس ویلیو 0 میں تبدیل ہو گئے ہیں، تو اس تبدیلی کا پتہ برجر کوڈ کے نفاذ سے لگایا جائے گا۔ یہ سمجھنے کے لیے کہ کیوں، غور کریں کہ اس طرح کے تین معاملات ہیں: کوڈ ورڈ کے انفارمیشن حصے میں کچھ 1s بٹ 0s میں تبدیل ہو گئے ہیں۔ کوڈ ورڈ کے چیک (یا بے کار) حصے میں کچھ 1s بٹس 0s میں تبدیل ہو گئے ہیں۔ معلومات اور چیک دونوں حصوں میں کچھ 1s بٹس 0s میں تبدیل ہو گئے ہیں۔ کیس 1 کے لیے، انفارمیشن سیکشن میں 0 ویلیو والے بٹس کی تعداد، غلطی کی تعریف کے مطابق، بڑھ جائے گی۔ لہذا، ہمارا برجر چیک کوڈ ڈیٹا کے لیے اصل 0 بٹ گنتی سے کم ہوگا، اور اس طرح چیک ناکام ہو جائے گا۔ کیس 2 کے لیے، انفارمیشن سیکشن میں 0 ویلیو والے بٹس کی تعداد وہی رہی ہے، لیکن چیک ڈیٹا کی قیمت بدل گئی ہے۔ چونکہ ہم جانتے ہیں کہ کچھ 1s 0s میں تبدیل ہو گئے ہیں، لیکن کوئی 0s 1s میں تبدیل نہیں ہوا ہے (اسی طرح ہم نے اس معاملے میں ایرر ماڈل کی وضاحت کی ہے)، چیک ڈیٹا کی انکوڈ شدہ بائنری ویلیو کم ہو جائے گی (مثال کے طور پر، بائنری 1011 سے 1010، یا 1001، یا 0011)۔ چونکہ معلومات کا ڈیٹا وہی رہا ہے، اس میں وہی صفر ہیں جو اس نے پہلے کیے تھے، اور یہ اب تبدیل شدہ چیک ویلیو سے میل نہیں کھائے گا۔ کیس 3 کے لیے، جہاں معلومات اور چیک سیکشن دونوں میں بٹس بدل گئے ہیں، نوٹ کریں کہ انفارمیشن سیکشن میں صفر کی تعداد بڑھ گئی ہے، جیسا کہ کیس 1 کے لیے بیان کیا گیا ہے، اور چیک حصے میں ذخیرہ شدہ بائنری ویلیو کم ہو گئی ہے، جیسا کہ کیس 2 کے لیے بیان کیا گیا ہے۔ لہذا، اس بات کا کوئی امکان نہیں ہے کہ دونوں اس طرح سے تبدیل ہوں گے کہ ایک مختلف درست کوڈ لفظ بن جائیں۔ اسی طرح کا تجزیہ کیا جا سکتا ہے، اور بالکل درست ہے، اس صورت میں جہاں صرف غلطیاں ہوتی ہیں وہ یہ ہیں کہ کچھ 0 قدر والے بٹس 1 میں تبدیل ہو جاتے ہیں۔ لہذا، اگر کسی مخصوص کوڈ ورڈ پر ہونے والی تمام غلطیاں ایک ہی سمت میں واقع ہوتی ہیں، تو ان غلطیوں کا پتہ لگایا جائے گا۔ اگلے کوڈ ورڈ کے منتقل ہونے کے لیے (مثال کے طور پر)، غلطیاں مخالف سمت میں جا سکتی ہیں، اور پھر بھی ان کا پتہ لگایا جائے گا، جب تک کہ وہ سب ایک دوسرے کی طرح ایک ہی سمت میں جائیں۔ بعض حالات میں یک طرفہ غلطیاں عام ہیں۔ مثال کے طور پر، فلیش میموری میں، بٹس کو 1 پر ری سیٹ کرنے سے زیادہ آسانی سے 0 پر پروگرام کیا جا سکتا ہے۔ حوالہ جات سبھاش مترا اور ایڈورڈ جے میک کلسکی، "کون سی ہم آہنگی غلطی کا پتہ لگانے کی اسکیم کا انتخاب کرنا ہے؟ "، سینٹر فار ریلیبل کمپیوٹنگ، اسٹینفورڈ یونیورسٹی، 2000۔ کوڈنگ تھیوری غلطی کا پتہ لگانے اور اصلاح