त्रुटि सुधार कोड

कम्प्यूटिंग, दूरसंचार, सूचना सिद्धांत और संकेतन सिद्धांत में, कभी-कभी त्रुटि सुधार कोड, (ईसीसी) का उपयोग अविश्वसनीय या मुखरसंचार चैनलों पर डेटा में त्रुटियों को नियंत्रित करने के लिए किया जाता है। केंद्रीय विचार यह है कि प्रेषक ईसीसी के रूप में अनावश्यक जानकारी के साथ संदेश को कूटबद्ध करता है। अतिरेक रिसीवर को सीमित संख्या में त्रुटियों का पता लगाने की अनुमति देता है, जो संदेश में कहीं भी हो सकते हैं, और अधिकांशतः इन त्रुटियों को बिना पुनर्प्रसारण के ठीक किया जा सकता है। अमेरिकी गणितज्ञ रिचर्ड हैमिंग ने 1940 के दशक में इस क्षेत्र का नेतृत्व किया और 1950 में पहली त्रुटि-सुधार कोड का आविष्कार किया: हैमिंग (7,4) कोड

ईसीसी त्रुटि का पता लगाने के विपरीत है, जिसमें सामने आने वाली त्रुटियों को केवल पता ही नहीं लगाया जा सकता है, बल्कि इसे ठीक भी किया जा सकता है। लाभ यह है कि ईसीसी का उपयोग करने वाली प्रणाली को त्रुटि होने पर डेटा के पुन: प्रसारण का अनुरोध करने के लिए रिवर्स चैनल की आवश्यकता नहीं होती है। नकारात्मक पक्ष यह है कि एक निश्चित ओवरहेड है जो संदेश में जोड़ा जाता है, जिससे उच्च अग्रेषण-चैनल बैंडविड्थ की आवश्यकता होती है इसलिए ईसीसी उन स्थितियों में लागू किया जाता है, जहां पुन: प्रसारण महंगा या असंभव होता है, जैसे कि एक तरफ़ा संचार लिंक जब बहुस्त्र्पीय में कई रिसीवरों को प्रेषित करते है तब लंबे समय तक चलने वाले कनेक्शन से भी  होता है; यूरेनस के चारों ओर परिक्रमा करने वाले उपग्रह के स्थितियों में, त्रुटियों के कारण पुन: प्रसारण में पांच घंटे की देरी हो सकती है। ईसीसी जानकारी को सामान्यतः बड़े पैमाने पर भंडारण उपकरणों में जोड़ा जाता है जिससे की दूषित डेटा की पुनर्प्राप्ति को सक्षम किया जा सके, मोडेम में व्यापक रूप से उपयोग किया जाता है, और इसका उपयोग उन प्रणालियों पर किया जाता है जहां प्राथमिक मेमोरी ईसीसी मेमोरी होती है।

एक रिसीवर में ईसीसी प्रसंस्करण एक डिजिटल बिटस्ट्रीम या डिजिटल रूप से संग्राहक वाहक के विमॉडुलन में लागू किया जा सकता है। उत्तरार्द्ध के लिए, ईसीसी रिसीवर में प्रारंभिक एनालॉग-टू-डिजिटल रूपांतरण का एक अभिन्न अंग है। विटरबी डिकोडर ध्वनि से होने वाली त्रुटि सुधार कोड को एनालॉग संकेत से डिजिटल डेटा को डीमॉड्यूलेट करने के लिए सॉफ्ट निर्णय एल्गोरिदम को लागू करता है। कई ईसीसी एनकोडर/डिकोडर बिट त्रुटि दर (बीईआर) संकेत  भी उत्पन्न कर सकते हैं, जिसका उपयोग एनालॉग रिसीविंग इलेक्ट्रॉनिक्स को ठीक करने के लिए प्रतिपुष्टि के रूप में किया जा सकता है। त्रुटियों या लापता बिट्स के अधिकतम अंश जिन्हें ठीक किया जा सकता है, ईसीसी कोड डिज़ाइन द्वारा निर्धारित किए जाते हैं, इसलिए विभिन्न स्थितियों के लिए अलग-अलग त्रुटि सुधार कोड उपयुक्त होते हैं। सामान्यतः, एक मजबूत कोड अधिक अतिरेक उत्पन्न करता है, जिसे उपलब्ध बैंडविड्थ का उपयोग करके प्रसारित करने की आवश्यकता होती है, जो प्राप्त प्रभावी संकेत-से-ध्वनि अनुपात में सुधार करते हुए प्रभावी बिट-दर को कम करता है। क्लाउड शैनन के ध्वनि-चैनल संकेतन प्रमेय का उपयोग किसी अधिकतम स्वीकार्य त्रुटि संभावना के लिए और प्राप्त करने योग्य संचार बैंडविड्थ की गणना के लिए किया जाता है। यह कुछ दिए गए आधार रव प्रबलता स्तर के साथ एक चैनल की सैद्धांतिक अधिकतम सूचना अंतरण दर पर सीमा स्थापित करता है। चूँकि, प्रमाण रचनात्मक नहीं है, और इसलिए क्षमता प्राप्त करने वाले कोड को बनाने के विधिकी कोई अंतर्दृष्टि नहीं देता है। कई वर्षों के शोध के बाद, 2016 तक कुछ उन्नत ईसीसी प्रणालियां सैद्धांतिक रूप से अति निकट आ गए है।

आगे त्रुटि सुधार
दूरसंचार, सूचना सिद्धांत और संकेतन सिद्धांत में, आगे की त्रुटि सुधार (एफईसी) या चैनल संकेतन एक ऐसी तकनीक है, जिसका उपयोग अविश्वसनीय या ध्वनि संचार चैनलों पर डेटा ट्रांसमिशन में त्रुटियों को नियंत्रित करने के लिए किया जाता है। केंद्रीय विचार यह है, कि ईसीसी का उपयोग करके प्रेषक संदेश को निरर्थक विधिसे एन्कोड करता है ।

अतिरेक रिसीवर को सीमित संख्या में त्रुटियों का पता लगाने की अनुमति देता है जो संदेश में कहीं भी हो सकती हैं, और अधिकांशतः इन त्रुटियों को पुनः प्रसारण के बिना ठीक करने के लिए एफईसी रिसीवर डेटा को पुन: प्रसारण का अनुरोध करने के लिए एक रिवर्स चैनल की आवश्यकता के बिना त्रुटियों को ठीक करने की क्षमता देता है, लेकिन एक निश्चित, उच्च फॉरवर्ड चैनल बैंडविड्थ की कीमत पर। इसलिए एफईसी उन स्थितियों में लागू किया जाता है, जहां पुन: प्रसारण असंभव होता है, जैसे कि एक तरफा संचार लिंक और बहुस्त्र्पीय में कई रिसीवरों को प्रेषित करते समय एफईसी सामान्यतः बड़े पैमाने पर भंडारण (चुंबकीय, ऑप्टिकल और ठोस क्षेत्र /फ्लैश आधारित) उपकरणों में जोड़ा जाता है, ताकि विकृत डेटा की पुनर्प्राप्ति को सक्षम करने के लिए, मोडेम में व्यापक रूप से उन प्रणालियों पर उपयोग किया जा सके, जहां प्राथमिक मेमोरी ईसीसी मेमोरी और प्रसारण स्थितियों में होती है, और जहां रिसीवर के पास पुन: प्रसारण का अनुरोध करने की क्षमता नहीं होती है, या ऐसा करने से महत्वपूर्ण विलंबता उत्पन्न होती है। उदाहरण के लिए, यूरेनस की परिक्रमा करने वाले उपग्रह के मामले में, डिसंकेतन त्रुटियों के कारण पुन: प्रसारण से कम से कम 5 घंटे का विलंब होता है।

एक रिसीवर में एफईसी प्रसंस्करण एक डिजिटल बिट स्ट्रीम या डिजिटल रूप से संग्राहक वाहक के विमॉडुलनमें लागू किया जा सकता है। बाद के लिए, एफईसी रिसीवर में प्रारंभिक एनालॉग-टू-डिजिटल रूपांतरण का एक अभिन्न अंग है। विटरबी डिकोडर ध्वनि से दूषित एनालॉग संकेत को डिजिटल डेटा में डिमॉड्यूलेट करता है। कई एफईसी कोडर्स एक बिट-एरर रेट (बीइआर) संकेत भी उत्पन्न कर सकते हैं, जिसका उपयोग एनालॉग प्राप्त इलेक्ट्रॉनिक्स को ठीक करने के लिए प्रतिपुष्टि के रूप में किया जा सकता है। त्रुटियों या विलुप्त बिट्स का अधिकतम अनुपात जिसे, ईसीसी डिजाइन द्वारा निर्धारित किया जाता है, इसलिए विभिन्न स्थितियों के लिए अलग-अलग त्रुटि सुधार कोड उपयुक्त होते हैं। सामान्यतः, एक मजबूत कोड अधिक अतिरेक उत्पन्न करता है जिसे उपलब्ध बैंडविड्थ का उपयोग करके प्रसारित करने की आवश्यकता होती है, जो प्राप्त प्रभावी संकेत रव अनुपात में सुधार करते हुए प्रभावी बिट-दर को कम करता है। क्लाउड शैनन में रव -चैनल संकेतन प्रमेय इस सवाल का जवाब देता है, कि डिसंकेतन त्रुटि संभावना को शून्य करने वाले सबसे कुशल कोड का उपयोग करते हुए डेटा संचार के लिए कितना बैंडविड्थ बचा सकता है। यह कुछ दिए गए आधार पर रव स्तर के साथ एक चैनल की सैद्धांतिक अधिकतम सूचना अंतरण दर पर सीमा स्थापित करता है। उनका प्रमाण रचनात्मक नहीं है, और इसलिए क्षमता प्राप्त करने वाले कोड को कैसे बनाया जाए, इसकी कोई जानकारी नहीं देता है।, वर्षों के शोध के बाद, कुछ उन्नत एफईसी प्रणालियाँ जैसे ध्रुवीय कोड (संकेतन सिद्धांत) अनंत विस्तार ढांचा की परिकल्पना के तहत शैनन चैनल क्षमता प्राप्त करता है ।

यह कैसे काम करता है
एल्गोरिथम का उपयोग करके प्रेषित सूचना में अतिरेक (सूचना सिद्धांत) जोड़कर ईसीसी को पूरा किया जाता है। एक निरर्थक बिट में कई मूल सूचना बिट्स के जटिल कार्य हो सकते है। मूल जानकारी एन्कोडेड आउटपुट में शाब्दिक रूप से प्रकट हो भी सकती है और नहीं भी; कोड जो आउटपुट में अपरिवर्तित होकर इनपुट में सम्मलित होते है, वो व्यवस्थित होते हैं, जबकि जो नहीं होते हैं वे गैर-व्यवस्थित होते हैं।

ईसीसी का एक सरल उदाहरण प्रत्येक डेटा बिट को 3 बार प्रसारित करना होता है, जिसे (3,1) पुनरावृत्ति कोड के रूप में जाना जाता है। एक रव चैनल के माध्यम से, एक रिसीवर आउटपुट में 8 संस्करण देख सकते है, नीचे दी गई तालिका देखें।

यह तीन प्रतिरूप में से किसी एक त्रुटि को बहुसंख्यक मत या लोकतांत्रिक मतदान द्वारा सही करने की अनुमति देता है। इस ईसीसी की सुधार क्षमता है: चूंकि लागू करने में सरल और व्यापक रूप से उपयोग किया जाता है, यह ट्रिपल मॉड्यूलर अतिरेक अपेक्षाकृत अक्षम ईसीसी होते है। ईसीसी कोड सामान्यतः पिछले कई दसियों या यहां तक ​​कि प्राप्त बिट्स के पिछले कई सैकड़ों जांच कर चुके हैं, ताकि यह निर्धारित किया जा सके कि वर्तमान में छोटे अल्प मात्रा के बिट्स (सामान्यतः 2 से 8 बिट्स के समूह में) को कैसे डिकोड किया जाए।
 * त्रुटि में 1 बिट ट्रिपलेट तक, या
 * ट्रिपलेट के 2 बिट तक विलोपित किये गए है (स्थितियों को तालिका में नहीं दिखाया गया है)।

त्रुटियों को कम करने के लिए औसत रव
ईसीसी को औसत नॉइज़ द्वारा काम करने के लिए कहा जा सकता है; चूंकि प्रत्येक डेटा बिट कई संचरित प्रतीकों को प्रभावित करता है, रव द्वारा कुछ अपभ्रष्ट प्रयोग को सामान्यतः मूल उपयोगकर्ता डेटा को दूसरे से निकालने की अनुमति देता है, अनियंत्रित प्राप्त प्रतीक जो समान उपयोगकर्ता डेटा पर भी निर्भर करते हैं।
 * इस रिस्क-पूलिंग प्रभाव के कारण, ईसीसी का उपयोग करने वाली डिजिटल संचार प्रणालियां एक निश्चित न्यूनतम संकेत रव अनुपात से ऊपर काम करते हैं, और उसके नीचे बिल्कुल नहीं करते है।
 * यह ऑल-ऑर-नथिंग प्रवृत्ति - क्लिफ प्रभाव -अधिक स्पष्ट हो जाता है, क्योंकि मजबूत कोड का उपयोग किया जाता है जो सैद्धांतिक शैनन सीमा के अधिक निकट होते हैं।
 * इंटरलीविंग ईसीसी कोडेड डेटा प्रेषित ईसीसी कोड जब चैनल त्रुटियां में होती हैं, सभी या कुछ गुणों को कम कर सकता है जब चैनल त्रुटियां में होती हैं। चूंकि, इस पद्धति की सीमाएँ हैं; यह संकीर्ण बैंड डेटा पर सबसे अच्छा उपयोग किया जाता है।

अधिकांश दूरसंचार प्रणालियां एक निश्चित चैनल कोड का उपयोग करती हैं, जिसे अपेक्षित सबसे खराब स्थिति वाली बिट त्रुटि दर को सहन करने के लिए डिज़ाइन किया गया है, और यदि बिट त्रुटि दर कभी भी खराब हो तो बिल्कुल भी काम करने में विफल रहती है। चूंकि, कुछ प्रणाली दिए गए चैनल त्रुटि स्थितियों के अनुकूल होते हैं: हाइब्रिड ऑटोमैटिक रिपीट-रिक्वेस्ट के कुछ उदाहरण एक निश्चित ईसीसी विधि का उपयोग करते हैं, जब तक कि ईसीसी त्रुटि दर को संभाल सकता है, तब स्वचालित रिपीट अनुरोध पर स्विच करें जब त्रुटि दर बहुत अधिक हो जाती है; अनुकूली मॉडुलन और संकेतन ईसीसी दरों की एक किस्म का उपयोग करता है, प्रति पैकेट अधिक त्रुटि-सुधार बिट्स जोड़ता है जब चैनल में उच्च त्रुटि दर होती है, या जब उनकी आवश्यकता नहीं होती है तो उन्हें बाहर निकाल दिया जाता है।

ईसीसी के प्रकार
ईसीसी कोड की दो मुख्य श्रेणियां ब्लॉक कोड और दृढ़ कोड हैं। कई प्रकार के ब्लॉक कोड हैं; कॉम्पैक्ट डिस्क, डीवीडी और हार्ड डिस्क ड्राइव में व्यापक उपयोग के लिए रीड-सोलोमन कोडिंग उल्लेखनीय है। पारम्परिकब्लॉक कोड के अन्य उदाहरणों में गोले, बीसीएच, बहुआयामी समता और हैमिंग कोड सम्मलित हैं।
 * ब्लॉक कोड बिट्स के निश्चित आकार के ब्लॉक (पैकेट) या पूर्व निर्धारित आकार के प्रतीकों पर काम करते हैं। प्रायोगिक ब्लॉक कोड सामान्यतः  बहुपद समय में उनकी ब्लॉक अवधि में हार्ड-डीकोड किए जा सकते हैं।
 * संवादात्मक कोड मनचाही अवधी के बिट या प्रतीक धाराओं पर काम करते हैं। वे अधिकांशतः विटरबी एल्गोरिथ्म के साथ सॉफ्ट डीकोडेड होते हैं, चूँकि अन्य एल्गोरिदम कभी-कभी उपयोग किए जाते हैं। विटरबी डिसंकेतन असम्बद्ध रूप से इष्टतम डिसंकेतन दक्षता की अनुमति देता है, जो दृढ़ संहिता की बढ़ती अवधी के साथ है, लेकिन घातीय समय बढ़ती जटिलता की कीमत पर एक संवलन कोड जिसे निलम्बित किया जाता है, वह भी एक 'ब्लॉक कोड' होता है, जिसमें यह इनपुट डेटा के एक ब्लॉक को एनकोड करता है, लेकिन एक संवलन कोड का ब्लॉक आकार सामान्यतः मनमाना होता है, जबकि ब्लॉक कोड का एक निश्चित आकार होता है जो उनके बीजगणितीय विशेषताओं द्वारा निर्धारित होता है। संवलन कोड्स के समाप्ति के प्रकारों में टेल-बाइटिंग और बिट-फ्लशिंग सम्मलित हैं।

एनएएनडी फ्लैश मेमोरी त्रुटियों को ठीक करने के लिए सामान्यतः हैमिंग ईसीसी का उपयोग किया जाता है। यह सिंगल-बिट एरर करेक्शन और 2-बिट एरर डिटेक्शन प्रदान करता है। हैमिंग कोड केवल अधिक विश्वसनीय एकल-स्तरीय सेल (एसएलसी) एनएएनडी के लिए उपयुक्त हैं। सघन बहु-स्तरीय सेल (एमएलसी) एनएएनडी बीसीएच या रीड-सोलोमन जैसे बहु-बिट सुधार ईसीसी का उपयोग कर सकता है। एनओआर फ्लैश सामान्यतः किसी त्रुटि सुधार का उपयोग नहीं करता है।

पारम्परिक, ब्लॉक कोड सामान्यतः हार्ड-डिसीजन एल्गोरिदम का उपयोग करके डिकोड किए जाते हैं, जिसका अर्थ है कि प्रत्येक इनपुट और आउटपुट संकेत के लिए एक कठिन निर्णय लिया जाता है चाहे वह एक या शून्य बिट के अनुरूप हो। इसके विपरीत, विटरबी, एमएपी या बीसीजेआर एल्गोरिदम जैसे सॉफ्ट-डिसीजन एल्गोरिदम का उपयोग करके संवलन कोड को सामान्यतः डिकोड किया जाता है, जो एनालॉग संकेत विधि को (विघटित) करता है, और जो हार्ड-डिसीजन डिसंकेतन की तुलना में बहुत अधिक त्रुटि-सुधार प्रदर्शन की अनुमति देता है।

लगभग सभी पारंपरिक ब्लॉक कोड परिमित क्षेत्रों के बीजगणितीय गुणों में लागू करते हैं। इसलिए पारम्परिक ब्लॉक कोड को अधिकांशतः बीजगणितीय कोड कहा जाता है।

पारम्परिक ब्लॉक कोड के विपरीत जो अधिकांशतः त्रुटि-पता लगाने या त्रुटि-सुधार करने की क्षमता निर्दिष्ट करते हैं, कई आधुनिक ब्लॉक कोड जैसे एलडीपीसी कोड में ऐसी गारंटी नहीं होती है। इसके बजाय, आधुनिक कोड का मूल्यांकन उनकी बिट त्रुटि दरों के संदर्भ में किया जाता है।

अधिकांश आगे त्रुटि सुधार कोड केवल बिट-फ्लिप को सही करते हैं, लेकिन बिट-इंसर्शन या बिट-डिलीशन को नहीं। इस सेटिंग में, बिट त्रुटि दर को मापने के लिए हैमिंग दूरी उपयुक्त तरीका है। मार्कर कोड और वॉटरमार्क कोड जैसे बिट-प्रविष्टि और बिट-विलोपन को ठीक करने के लिए कुछ अग्रेषित त्रुटि सुधार कोड डिज़ाइन किए गए हैं। ऐसे कोड का उपयोग करते समय बिट त्रुटि दर को मापने के लिए लेवेनशेटिन दूरी एक अधिक उपयुक्त तरीका है।

कोड-दर और विश्वसनीयता और डेटा दर के बीच तालमेल
ईसीसी का मूल सिद्धांत डिकोडर को ट्रांसमीटर द्वारा एन्कोड किए गए सही संदेश का पता लगाने में मदद करने के लिए अनावश्यक बिट्स जोड़ना है। किसी दिए गए ईसीसी प्रणाली की कोड-दर को दिए गए संचार पैकेज में सूचना बिट्स की संख्या और बिट्स की कुल संख्या (यानी, सूचना प्लस अतिरेक बिट्स) के बीच के अनुपात के रूप में परिभाषित किया गया है। कोड-दर इसलिए एक वास्तविक संख्या है क्यों की शून्य के करीब एक कम कोड-दर एक मजबूत कोड के बीच अच्छा प्रदर्शन प्राप्त करने के लिए कई अनावश्यक बिट्स का उपयोग करता है, जबकि 1 के करीब एक बड़ी कोड-दर एक कमजोर कोड का संकेत देती है।

अनावश्यक बिट्स जो जानकारी की रक्षा करते हैं उन्हें उसी संचार संसाधनों का उपयोग करके स्थानांतरित किया जाना चाहिए जिसकी वे रक्षा करने का प्रयास कर रहे हैं। यह विश्वसनीयता और डेटा दर के बीच एक मौलिक व्यापार का कारण बनता है। एक चरम में, एक मजबूत कोड (कम कोड-दर के साथ) प्रभावी डेटा दर को कम करने की कीमत पर, बिट त्रुटि दर को कम करने वाले रिसीवर एसएनआर ( संकेत रव अनुपात-अनुपात) में एक महत्वपूर्ण वृद्धि को प्रेरित कर सकता है। दूसरी चरम पर, किसी भी ईसीसी (यानी, 1 के बराबर एक कोड-दर) का उपयोग नहीं करने से बिट्स को बिना किसी अतिरिक्त सुरक्षा के छोड़ने की कीमत पर सूचना हस्तांतरण उद्देश्यों के लिए पूर्ण चैनल का उपयोग किया जाता है।

एक दिलचस्प सवाल निम्नलिखित है: सूचना हस्तांतरण के मामले में एक ईसीसी कितना कुशल हो सकता है जिसमें नगण्य डिसंकेतन त्रुटि दर हो? इस प्रश्न का उत्तर क्लॉड शैनन ने अपने दूसरे प्रमेय के साथ दिया, जो कहता है कि चैनल क्षमता किसी भी ईसीसी द्वारा प्राप्त की जाने वाली अधिकतम बिट दर है जिसकी त्रुटि दर शून्य हो जाती है: उनका प्रमाण गाऊसी यादृच्छिक संकेतन पर निर्भर करता है, जो वास्तविक दुनिया के अनुप्रयोगों के लिए उपयुक्त नहीं है। शैनन के काम द्वारा दी गई ऊपरी सीमा ने ईसीसी को डिजाइन करने में लंबी यात्रा को प्रेरित किया जो अंतिम प्रदर्शन सीमा के करीब आ सकता है। विभिन्न कोड आज लगभग शैनन सीमा प्राप्त कर सकते हैं।चूँकि, ईसीसी हासिल करने की क्षमता सामान्यतः लागू करने के लिए बेहद जटिल होती है।

सबसे लोकप्रिय ईसीसी में प्रदर्शन और कम्प्यूटेशनल जटिलता के बीच एक समझौता है। सामान्यतः, उनके पैरामीटर संभावित कोड दरों की एक श्रृंखला देते हैं, जिन्हें परिदृश्य के आधार पर अनुकूलित किया जा सकता है। सामान्यतः, यह अनुकूलन डेटा दर पर प्रभाव को कम करते हुए कम डिसंकेतन त्रुटि संभावना प्राप्त करने के लिए किया जाता है। कोड दर के अनुकूलन के लिए एक अन्य मानदंड संचार की ऊर्जा लागत के क्रम में कम त्रुटि दर और पुन: प्रसारण संख्या को संतुलित करना है।

बेहतर प्रदर्शन के लिए जुड़े हुए ईसीसी कोड
क्लासिकल (बीजगणितीय) ब्लॉक कोड और संवलन कोड अधिकांशतः समेकित संकेतन योजनाओं में संयुक्त होते हैं जिसमें एक छोटी बाधा-लंबाई विटरबी-डीकोडेड संवलन कोड अधिकांश काम करता है और एक ब्लॉक कोड (सामान्यतः रीड-सोलोमन) बड़े प्रतीक आकार और ब्लॉक लंबाई के साथ कनवल्शनल डिकोडर द्वारा की गई किसी भी त्रुटि को मिटा देता है। त्रुटि सुधार कोड के इस परिवार के साथ एकल पास डिसंकेतन बहुत कम त्रुटि दर प्राप्त कर सकता है, लेकिन लंबी दूरी की संचरण स्थितियों (जैसे गहरे स्थान) के लिए पुनरावृत्त डिसंकेतन की सिफारिश की जाती है।

कनेक्टेड कोड उपग्रह और गहरे अंतरिक्ष संचार में मानक अभ्यास रहे हैं क्योंकि वायेजर कार्यक्रम ने पहली बार यूरेनस के साथ 1986 की मुठभेड़ में तकनीक का उपयोग किया था। गैलीलियो (अंतरिक्ष यान) शिल्प ने असफल एंटीना होने के कारण बहुत उच्च त्रुटि दर स्थितियों की भरपाई के लिए पुनरावृत्त संघटित कोड का उपयोग किया।

लो-डेंसिटी पैरिटी-चेक (एलडीपीसी)
कम-घनत्व समता-चेक कोड (एलडीपीसी) कई सिंगल पैरिटी चेक (एसपीसी) कोड से बने अत्यधिक कुशल रैखिक ब्लॉक कोड का एक वर्ग है। वे अपनी ब्लॉक लंबाई के संदर्भ में रैखिक समय जटिलता पर पुनरावृत्त नरम-निर्णय डिसंकेतन दृष्टिकोण का उपयोग करके शैनन सीमा (सैद्धांतिक अधिकतम) के बहुत करीब प्रदर्शन प्रदान कर सकते हैं। व्यावहारिक कार्यान्वयन समानांतर में घटक एसपीसी कोड को डिकोड करने पर बहुत अधिक निर्भर करता है।

एलडीपीसी कोड सबसे पहले 1960 में रॉबर्ट जी. गैलागर ने अपनी पीएचडी थीसिस में पेश किए थे, लेकिन एनकोडर और डिकोडर को लागू करने और रीड-सोलोमन कोड की शुरूआत में कम्प्यूटेशनल प्रयास के कारण, 1990 के दशक तक उन्हें ज्यादातर नजरअंदाज किया गया था।

एलडीपीसी कोड अब हाल के कई हाई-स्पीड संचार मानकों में उपयोग किए जाते हैं, जैसे डीवीबी-एस 2(डिजिटल वीडियो ब्रॉडकास्टिंग - सैटेलाइट - सेकेंड जेनरेशन), वाइमैक्स (माइक्रोवेव संचार के लिए आईईईई 802.16ई मानक), हाई-स्पीड वायरलेस लैन (आईईईई 802.11n) ), 10जीबेस-टी ईथरनेट (802.3एएन) और जीएचएन/जी.9960 मानक बिजली पर नेटवर्किंग के लिए) लाइनें, फोन लाइनें और समाक्षीय केबल) अन्य एलडीपीसी कोड 3जीपीपी एमबीएमएस के भीतर बेतार संचार मानकों के लिए मानकीकृत हैं (स्रोत कोड देखें)।

टर्बो कोड
टर्बो कोड एक पुनरावर्तित सॉफ्ट-डिसंकेतन योजना है जो दो या दो से अधिक अपेक्षाकृत सरल संवलन कोड और एक इंटरलीवर को एक ब्लॉक कोड बनाने के लिए जोड़ती है जो शैनन सीमा के डेसिबल के एक अंश के भीतर प्रदर्शन कर सकता है। व्यावहारिक अनुप्रयोग के संदर्भ में एलडीपीसी कोड से पहले, वे अब समान प्रदर्शन प्रदान करते हैं।

टर्बो कोडिंग के शुरुआती व्यावसायिक अनुप्रयोगों में से एक सीडीएमए 2000 1x (टीआईए IS-2000) डिजिटल सेलुलर तकनीक थी जिसे क्वालकॉम द्वारा विकसित किया गया था और वेरिज़ोन वायरलेस, स्प्रिंट और अन्य वाहकों द्वारा बेचा गया था। इसका उपयोग विशेष रूप से इंटरनेट एक्सेस, 1xईवी-डीओ (टीआईए IS-856) के लिए सीडीएमए 2000 1x के विकास के लिए भी किया जाता है। 1x की तरह, ईवी-डीओ को क्वालकॉम द्वारा विकसित किया गया था, और वेरिज़ोन वायरलेस, स्प्रिंट और अन्य वाहकों द्वारा बेचा जाता है (1xईवी-डीओ के लिए वेरिज़ोन का मार्केटिंग नाम ब्रॉडबैंड एक्सेस है, स्प्रिंट के उपभोक्ता और 1xEV-DO के लिए व्यावसायिक विपणन नाम क्रमशः पावर विजन और मोबाइल ब्रॉडबैंड हैं)।

स्थानीय डिसंकेतन और कोड का परीक्षण
कभी-कभी केवल संदेश के एक बिट को डिकोड करना आवश्यक होता है, या यह जांचने के लिए कि क्या दिया गया संकेत एक कोडवर्ड है, और पूरे संकेत को देखे बिना ऐसा करें। यह एक स्ट्रीमिंग सेटिंग में समझ में आ सकता है, जहां कोडवर्ड बहुत तेजी से पर्याप्त रूप से डिकोड किए जाने के लिए बहुत बड़े हैं और जहां संदेश के केवल कुछ बिट्स अभी के लिए रुचि के हैं। साथ ही ऐसे कोड कम्प्यूटेशनल जटिलता सिद्धांत में एक महत्वपूर्ण उपकरण बन गए हैं, उदाहरण के लिए, संभाव्य रूप से जांच योग्य प्रमाणों के डिजाइन के लिए।

स्थानीय रूप से डिकोड करने योग्य कोड त्रुटि-सुधार करने वाले कोड होते हैं, जिसके लिए कोडवर्ड के कुछ स्थिर अंशों पर कोडवर्ड के दूषित होने के बाद भी कोडवर्ड की स्थिति की एक छोटी (निरंतर) संख्या को देखते हुए संदेश के एकल बिट्स को संभाव्य रूप से पुनर्प्राप्त किया जा सकता है। स्थानीय रूप से परीक्षण योग्य कोड त्रुटि-सुधार करने वाले कोड होते हैं, जिसके लिए यह संभाव्य रूप से जांचा जा सकता है कि संकेत की स्थिति की एक छोटी संख्या को देखते हुए संकेत  कोडवर्ड के करीब है या नहीं।

इंटरलीविंग
आगे त्रुटि सुधार कोड के प्रदर्शन को बेहतर बनाने के लिए इंटरलीविंग का उपयोग अधिकांशतः डिजिटल संचार और भंडारण प्रणालियों में किया जाता है। कई संचार चैनल मेमोरीलेस नहीं होते हैं: सामान्यतः त्रुटियाँ स्वतंत्र रूप से होने के बजाय फटने वाली त्रुटियों में होती हैं। यदि किसी कोड शब्द में त्रुटियों की संख्या त्रुटि-सुधार कोड की क्षमता से अधिक है, तो यह मूल कोड शब्द को पुनर्प्राप्त करने में विफल रहता है। इंटरलीविंग कई कोड शब्दों में स्रोत प्रतीकों को फेरबदल करके इस समस्या को दूर करता है, जिससे त्रुटियों का अधिक समान वितरण (निरंतर) बनता है। इसलिए, इंटरलीविंग का व्यापक रूप से बर्स्ट एरर-करेक्शन के लिए उपयोग किया जाता है।

आधुनिक पुनरावृत्त कोड का विश्लेषण, जैसे टर्बो कोड और एलडीपीसी कोड, सामान्यतः त्रुटियों का एक स्वतंत्र वितरण मानते हैं। एलडीपीसी कोड का उपयोग करने वाले प्रणाली सामान्यतः कोड वर्ड के भीतर प्रतीकों में अतिरिक्त इंटरलीविंग को नियोजित करते हैं। टर्बो कोड के लिए, एक इंटरलीवर एक अभिन्न अंग है, और अच्छे कार्य के लिए इसका उचित डिज़ाइन महत्वपूर्ण है। पुनरावृत्त डिसंकेतन एल्गोरिथ्म सबसे अच्छा काम करता है जब डिकोडर का प्रतिनिधित्व करने वाले कारक ग्राफ में छोटे चक्र नहीं होते हैं; छोटे चक्रों से बचने के लिए इंटरलीवर को चुना जाता है।

इंटरलीवर डिज़ाइन में सम्मलित हैं: मल्टी-वाहक संकेत संचार व्यवस्था में, फ्रीक्वेंसी विविधता योजना प्रदान करने के लिए कैरियर्स के बीच इंटरलीविंग को नियोजित किया जा सकता है, उदाहरण के लिए, आवृत्ति-चयनात्मक लुप्त होती या नैरोबैंड इंटरफेरेंस को कम करने के लिए।
 * आयताकार (या एकसमान) इंटरलीवर्स (ऊपर वर्णित स्किप कारकों का उपयोग करने वाली विधि के समान)
 * दृढ़ इंटरलीवर
 * यादृच्छिक इंटरलीवर (जहां इंटरलीवर एक ज्ञात यादृच्छिक क्रमपरिवर्तन है)
 * एस-यादृच्छिक इंटरलीवर (जहां इंटरलीवर एक ज्ञात यादृच्छिक क्रमपरिवर्तन है जिसमें बाधा है कि दूरी एस के भीतर कोई इनपुट प्रतीक आउटपुट में एस की दूरी के भीतर दिखाई नहीं देता है)।
 * एक विवाद-मुक्त द्विघात क्रमचय बहुपद (क्यूपीपी) उपयोग का एक उदाहरण 3जीपीपी लॉन्ग टर्म इवोल्यूशन मोबाइल दूरसंचार मानक में है।

उदाहरण

बिना इंटरलीविंग के ट्रांसमिशन:

त्रुटि रहित संदेश: aaaabbbbccccddddeeeeffffgggg प्रस्फोट त्रुटि के साथ संचरण: aaaabbbbccc____deeeeffffgggg

यहां, एक ही अक्षर का प्रत्येक समूह 4-बिट एक-बिट त्रुटि-सुधार कोडवर्ड का प्रतिनिधित्व करता है। कोडवर्ड cccc को एक बिट में बदल दिया जाता है, और इसे ठीक किया जा सकता है, लेकिन कोडवर्ड dddd को तीन बिट में बदल दिया जाता है, इसलिए या तो इसे डीकोड नहीं किया जा सकता है, या इसे गलत विधिसे डीकोड किया जा सकता है।

इंटरलीविंग के साथ:

त्रुटि रहित कूट शब्द: aaaabbbbccccddddeeeeffffgggg

इंटरलीव्ड: abcdefgabcdefgabcdefgabcdefg

फट त्रुटि के साथ संचरण: abcdefgabcd____bcdefgabcdefg

डीइंटरलीविंग के बाद प्राप्त कोड शब्द: aa_abbbbccccdddde_eef_ffg_gg

प्रत्येक कोडवर्ड में aaaa, eeee, ffff, औरgggg, में केवल एक बिट को बदला जाता है, इसलिए एक-बिट त्रुटि-सुधार कोड सब कुछ सही ढंग से डिकोड करेगा।

बिना इंटरलीविंग के ट्रांसमिशन:

मूल प्रेषित वाक्य: यह इंटरलीविंग का एक उदाहरण है

प्रस्फोट त्रुटि के साथ वाक्य प्राप्त हुआ: यह ______पल ऑफ इंटरलीविंग है

शब्द एक " अधिकांशतः समझ से बाहर और सही करने के अस्पष्ट रूप से मुश्किल होता है।

इंटरलीविंग के साथ:

प्रेषित वाक्य: यह इंटरलीविंग का एक उदाहरण है...

त्रुटि रहित संचरण: TIEpfeaghsxlIrv.iAaenli.snmOten.

प्रस्फोट त्रुटि के साथ वाक्य प्राप्त हुआ: TIEpfe______Irv.iAaenli.snmOten.

डिंटरलीविंग के बाद वाक्य प्राप्त हुआ: T_isI_AnE_amp_eOfInterle_vin_...

कोई भी शब्द पूरी तरह से लुप्त नहीं हुआ है, और विलुप्त अक्षरों को न्यूनतम अनुमान के साथ पुनः प्राप्त किया जा सकता है

इंटरलीविंग के हानि
इंटरलीविंग तकनीकों का उपयोग कुल विलंब को बढ़ाता है। ऐसा इसलिए है, क्योंकि पैकेट को डिकोड किए जाने से पहले पूरे इंटरलीव्ड ब्लॉक को प्राप्त किया जाना चाहिए। साथ ही इंटरलीवर त्रुटियों की संरचना को छिपाते हैं; एक इंटरलीवर के बिना, अधिक उन्नत डिकोडिंग एल्गोरिदम त्रुटि संरचना का लाभ उठा सकते हैं और एक इंटरलीवर के साथ संयुक्त सरल डिकोडर की तुलना में अधिक विश्वसनीय संचार प्राप्त कर सकते हैं .ऐसे एल्गोरिदम का एक उदाहरण तंत्रिका नेटवर्क संरचनाओं पर आधारित है।

त्रुटि-सुधार कोड के लिए सॉफ्टवेयर
सॉफ़्टवेयर में त्रुटि-सुधार कोड (ईसीसीs) के व्यवहार का अनुकरण करना ईसीसीs को डिज़ाइन, मान्य और बेहतर बनाने के लिए एक सामान्य अभ्यास करता है। आगामी वायरलेस 5G मानक सॉफ्टवेयर ईसीसी के लिए अनुप्रयोगों की एक नई श्रेणी को बढ़ाता है: सॉफ्टवेयर परिभाषित रेडियो (एसडीआर) संदर्भ में क्लाउड रेडियो एक्सेस नेटवर्क (सी-आरएएन) पर सीधे संचार में सॉफ्टवेयर ईसीसी का उपयोग किया जाता है। उदाहरण के लिए 5जी में, सॉफ्टवेयर ईसीसी क्लाउड में स्थित हो सकते हैं, और एंटेना इस कंप्यूटिंग संसाधनों से जुड़े हुए होते हैं: इस तरह संचार नेटवर्क के लचीलेपन में सुधार और अंततः प्रणाली की ऊर्जा दक्षता में वृद्धि होती है

इस संदर्भ में, विभिन्न उपलब्ध खुले स्रोत सॉफ़्टवेयर नीचे सूचीबद्ध हैं (गैर संपूर्ण)।
 * AFF3CTएक फ़ास्ट फ़ॉरवर्ड एरर करेक्शन टूलबॉक्स): C++ में एक पूर्ण संचार श्रृंखला (टर्बो, एलडीपीसी, पोलर कोड आदि जैसे कई समर्थित कोड),चैनल कोडिंग पर बहुत तेज़ और विशिष्ट (अनुकरण के लिए एक कार्यक्रम के रूप में या एसडीआर के लिए एक पुस्तकालय के रूप में इस्तेमाल किया जा सकता है)।
 * IT++: रैखिक बीजगणित, संख्यात्मक अनुकूलन, संकेत प्रोसेसिंग, संचार और सांख्यिकी के लिए कक्षाओं और कार्यों की एक सी ++ लाइब्रेरी।
 * OpenAir: उद्विकसित पैकेट कोर नेटवर्क से संबंधित 3जीपीपी विनिर्देशों का कार्यान्वयन (सी में)।

त्रुटि-सुधार कोड की सूची


 * एएन कोड
 * बीसीएच कोड, जिसे प्रति कोड ब्लॉक किसी भी मनमानी संख्या में त्रुटियों को ठीक करने के लिए डिज़ाइन किया जा सकता है।
 * रडार, टेलीमेट्री, अल्ट्रा साउंड, वाईफाई, डीएसएसएस मोबाइल फोन नेटवर्क, जीपीएस आदि के लिए इस्तेमाल किया जाने वाला बार्कर कोड।
 * बर्जर कोड
 * नियत भार कोड
 * संवलनात्मक कोड
 * प्रसारक कोड
 * समूह कोड
 * गोलय कोड, जिनमें से बाइनरी गोलय कोड व्यावहारिक रुचि का है
 * मैकएलीस क्रिप्टोप्रणाली में इस्तेमाल किया जाने वाला गोप्पा कोड
 * हैडमार्ड कोड
 * हैगलबर्गर कोड
 * हैमिंग कोड
 * गैर-श्वेत शोर के लिए लैटिन वर्ग आधारित कोड (उदाहरण के लिए पावरलाइन पर ब्रॉडबैंड में प्रचलित)
 * लेक्सिकोग्राफिक कोड
 * रैखिक नेटवर्क संकेतन, बिंदु से बिंदु लिंक के बजाय पूरे नेटवर्क में एक प्रकार का मिटाने वाला कोड
 * लंबा कोड
 * कम-घनत्व समता-चेक कोड, जिसे गैलेजर कोड के रूप में भी जाना जाता है, विरल ग्राफ कोड के लिए मूलरूप के रूप में
 * एलटी कोड, जो लगभग इष्टतम रेटलेस इरेज़र करेक्टिंग कोड (फाउंटेन कोड) है
 * एन कोड का एम
 * नॉर्डस्ट्रॉम-रॉबिन्सन कोड, ज्यामिति और समूह सिद्धांत में प्रयुक्त
 * ऑनलाइन कोड, एक निकट-इष्टतम रेटलेस इरेज़र करेक्टिंग कोड
 * ध्रुवीय कोड (संकेतन सिद्धांत)
 * रैप्टर कोड, एक निकट-इष्टतम फाउंटेन कोड
 * रीड-सोलोमन त्रुटि सुधार
 * रीड-मुलर कोड
 * दोहराएँ-संचय कोड
 * पुनरावृत्ति कोड, जैसे ट्रिपल मॉड्यूलर अतिरेक
 * स्पाइनल कोड, छद्म-यादृच्छिक हैश फ़ंक्शंस पर आधारित एक रेटलेस, नॉनलाइनियर कोड
 * बवंडर कोड, एक निकट-इष्टतम विलोपन कोड, और फाउंटेन कोड का अग्रदूत
 * टर्बो कोड
 * वॉल्श-हैडमार्ड कोड
 * चक्रीय अतिरेक जाँच (सीआरसी) संदेशों के लिए अधिक से अधिक 1-बिट त्रुटियों को ठीक कर सकते हैं $$2^{n-1}-1$$ डिग्री के इष्टतम जनरेटर बहुपदों के लिए बिट लंबा $$n$$, चक्रीय अतिरेक जाँच #बिटफ़िल्टर का गणित देखें

यह भी देखें

 * कोड दर
 * इरेज़र कोड
 * शीतल-निर्णय डिकोडर
 * बर्स्ट एरर-करेक्टिंग कोड
 * त्रुटि का पता लगाने और सुधार
 * प्रतिक्रिया के साथ त्रुटि-सुधार कोड

आगे की पढाई

 * (xxii+762+6 pages)
 * (x+2+208+4 pages)
 * "Error Correction Code in Single Lईवीel Cell NAND Flash memories" 2007-02-16
 * "Error Correction Code in NAND Flash memories" 2004-11-29
 * Observations on Errors, Corrections, & Trust of Dependent Systems, by James Hamilton, 2012-02-26
 * Sphere Packings, Lattices and Groups, By J. H. Conway, Neil James Alexander Sloane, Springer Science & Business Media, 2013-03-09 – Mathematics – 682 pages.
 * "Error Correction Code in NAND Flash memories" 2004-11-29
 * Observations on Errors, Corrections, & Trust of Dependent Systems, by James Hamilton, 2012-02-26
 * Sphere Packings, Lattices and Groups, By J. H. Conway, Neil James Alexander Sloane, Springer Science & Business Media, 2013-03-09 – Mathematics – 682 pages.

बाहरी कड़ियाँ

 * lpdec: library for LP decoding and related things (Python)
 * lpdec: library for LP decoding and related things (Python)