बर्स्ट त्रुटि-सुधार करने वाले कोड

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

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

परिभाषाएँ
लम्बाई का विस्फोट $ℓ$ एक कोडवर्ड बोलो $$C$$ प्रसारित किया जाता है, और इसे प्राप्त किया जाता है $$Y = C + E.$$ फिर, त्रुटि वेक्टर $$E$$ लम्बाई का विस्फोट कहलाता है $$\ell$$ यदि के गैर-शून्य घटक $$E$$ तक ही सीमित हैं $$\ell$$ लगातार घटक. उदाहरण के लिए, $$E = (0\textbf{1000011}0)$$ लम्बाई का विस्फोट है $$\ell = 7.$$ हालाँकि यह परिभाषा यह बताने के लिए पर्याप्त है कि बर्स्ट त्रुटि क्या है, बर्स्ट त्रुटि सुधार के लिए विकसित अधिकांश उपकरण चक्रीय कोड पर निर्भर करते हैं। यह हमारी अगली परिभाषा को प्रेरित करता है।

लंबाई का एक चक्रीय विस्फोट $ℓ$ एक त्रुटि वेक्टर $$E$$ लंबाई की चक्रीय विस्फोट त्रुटि कहलाती है $$\ell$$ यदि इसके गैरशून्य घटक तक ही सीमित हैं $$\ell$$ चक्रीय रूप से लगातार घटक। उदाहरण के लिए, पहले माना गया त्रुटि वेक्टर $$E = (010000110)$$, लंबाई का एक चक्रीय विस्फोट है $$\ell = 5$$, चूंकि हम स्थिति से शुरू होने वाली त्रुटि पर विचार करते हैं $$6$$ और स्थिति पर समाप्त हो रहा है $$1$$. ध्यान दें कि सूचकांक हैं $$0$$-आधारित, यानी पहला तत्व स्थिति पर है $$0$$.

इस लेख के शेष भाग के लिए, हम चक्रीय विस्फोट को संदर्भित करने के लिए विस्फोट शब्द का उपयोग करेंगे, जब तक कि अन्यथा उल्लेख न किया गया हो।

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

उदाहरण के लिए, त्रुटि पैटर्न का बर्स्ट विवरण $$E = (010000110)$$ है $$D = (1000011,1)$$. ध्यान दें कि ऐसा वर्णन अद्वितीय नहीं है, क्योंकि $$D' = (11001,6)$$ उसी बर्स्ट त्रुटि का वर्णन करता है। सामान्य तौर पर, यदि गैर-शून्य घटकों की संख्या $$E$$ है $$w$$, तब $$E$$ होगा $$w$$ अलग-अलग बर्स्ट विवरण, जिनमें से प्रत्येक एक अलग गैर-शून्य प्रविष्टि पर शुरू होता है $$E$$. नीचे दिए गए प्रमेय के साथ बर्स्ट विवरण की अस्पष्टता से उत्पन्न होने वाले मुद्दों को हल करने के लिए, हालांकि ऐसा करने से पहले हमें पहले एक परिभाषा की आवश्यकता है।

परिभाषा। किसी दिए गए त्रुटि पैटर्न में प्रतीकों की संख्या $$y,$$ द्वारा निरूपित किया जाता है $$\mathrm{length}(y).$$

$$

उपरोक्त प्रमेय का परिणाम यह है कि हमारे पास लंबाई के विस्फोटों के लिए दो अलग-अलग विस्फोट विवरण नहीं हो सकते हैं $$\tfrac{1}{2}(n+1).$$

विस्फोट त्रुटि सुधार के लिए चक्रीय कोड
चक्रीय कोड को इस प्रकार परिभाषित किया गया है: के बारे में सोचें $$q$$ तत्वों के रूप में प्रतीक $$\mathbb{F}_q$$. अब, हम शब्दों को बहुपद के रूप में सोच सकते हैं $$\mathbb{F}_q,$$ जहां किसी शब्द के अलग-अलग प्रतीक बहुपद के विभिन्न गुणांकों से मेल खाते हैं। चक्रीय कोड को परिभाषित करने के लिए, हम एक निश्चित बहुपद चुनते हैं, जिसे जनरेटर बहुपद कहा जाता है। इस चक्रीय कोड के कोडवर्ड वे सभी बहुपद हैं जो इस जनरेटर बहुपद से विभाज्य हैं।

कोडवर्ड डिग्री के बहुपद हैं $$\leqslant n-1$$. मान लीजिए कि जनरेटर बहुपद है $$g(x)$$ की डिग्री है $$r$$. डिग्री के बहुपद $$\leqslant n-1$$ जिनसे विभाज्य हैं $$g(x)$$ गुणा करने से परिणाम $$g(x)$$ डिग्री के बहुपदों द्वारा $$\leqslant n-1-r$$. अपने पास $$q^{n-r}$$ ऐसे बहुपद. उनमें से प्रत्येक एक कोडवर्ड से मेल खाता है। इसलिए, $$k=n-r$$ चक्रीय कोड के लिए.

चक्रीय कोड तक की लंबाई के सभी विस्फोटों का पता लगा सकते हैं $$\ell = n-k = r$$. हम बाद में देखेंगे कि किसी की बर्स्ट एरर डिटेक्शन क्षमता क्या है $$(n, k)$$ कोड ऊपर से घिरा हुआ है $$\ell \leqslant n-k$$. बर्स्ट त्रुटि का पता लगाने के लिए चक्रीय कोड को इष्टतम माना जाता है क्योंकि वे इस ऊपरी सीमा को पूरा करते हैं:

$$ उपरोक्त प्रमाण चक्रीय कोड में बर्स्ट त्रुटि का पता लगाने/सुधार के लिए एक सरल एल्गोरिदम का सुझाव देता है: एक संचरित शब्द (यानी डिग्री का एक बहुपद) दिया गया है $$\leqslant n-1$$), से विभाजित करने पर इस शब्द के शेषफल की गणना करें $$g(x)$$. यदि शेषफल शून्य है (अर्थात् यदि शब्द विभाज्य है $$g(x)$$), तो यह एक वैध कोडवर्ड है। अन्यथा, त्रुटि की रिपोर्ट करें. इस त्रुटि को ठीक करने के लिए, इस शेषफल को प्रेषित शब्द से घटाएँ। घटाव का परिणाम विभाजित होने वाला है $$g(x)$$ (अर्थात यह एक वैध कोडवर्ड होगा)।

बर्स्ट त्रुटि का पता लगाने पर ऊपरी सीमा द्वारा ($$\ell \leqslant n-k = r$$), हम जानते हैं कि एक चक्रीय कोड लंबाई के सभी विस्फोटों का पता नहीं लगा सकता है $$\ell > r$$. हालाँकि चक्रीय कोड वास्तव में लंबाई के अधिकांश विस्फोटों का पता लगा सकते हैं $$> r$$. कारण यह है कि पता लगाना तभी विफल होता है जब विस्फोट विभाज्य हो $$g(x)$$. द्विआधारी वर्णमाला से अधिक, वहाँ मौजूद हैं $$2^{\ell-2}$$ लंबाई का फटना $$\ell$$. उनमें से ही $$2^{\ell-2-r}$$ से विभाज्य हैं $$g(x)$$. इसलिए, पता लगाने में विफलता की संभावना बहुत कम है ($$2^{-r}$$) लंबाई के सभी विस्फोटों पर एक समान वितरण मानते हुए $$\ell$$.

अब हम चक्रीय कोड के बारे में एक मौलिक प्रमेय पर विचार करते हैं जो बर्स्ट को अलग-अलग कोसेट में वर्गीकृत करके कुशल बर्स्ट-त्रुटि सुधार कोड को डिजाइन करने में सहायता करेगा।

$$

$$

विस्फोट त्रुटि का पता लगाने और सुधार पर ऊपरी सीमा
ऊपरी सीमा से हमारा तात्पर्य हमारी त्रुटि पता लगाने की क्षमता की एक सीमा से है जिसे हम कभी भी पार नहीं कर सकते। मान लीजिए कि हम एक डिज़ाइन बनाना चाहते हैं $$(n, k)$$ कोड जो लंबाई की सभी बर्स्ट त्रुटियों का पता लगा सकता है $$\leqslant \ell.$$ पूछने के लिए एक स्वाभाविक प्रश्न है: दिया गया $$n$$ और $$k$$, अधिकतम क्या है $$\ell$$ कि हम इससे आगे कभी हासिल नहीं कर सकते? दूसरे शब्दों में, लंबाई की ऊपरी सीमा क्या है $$\ell$$ हम किसी भी विस्फोट का पता लगा सकते हैं $$(n, k)$$ कोड? निम्नलिखित प्रमेय इस प्रश्न का उत्तर प्रदान करता है।

$$ अब, हम वही प्रश्न दोहराते हैं लेकिन त्रुटि सुधार के लिए: दिया गया है $$n$$ और $$k$$, लंबाई पर ऊपरी सीमा क्या है $$\ell$$ विस्फोटों का जिन्हें हम किसी का उपयोग करके ठीक कर सकते हैं $$(n, k)$$ कोड? निम्नलिखित प्रमेय इस प्रश्न का प्रारंभिक उत्तर प्रदान करता है:

$$ रीगर बाउंड द्वारा एक मजबूत परिणाम दिया गया है:

$$

परिभाषा। उपरोक्त रीगर सीमा को प्राप्त करने वाले एक रैखिक बर्स्ट-त्रुटि-सुधार करने वाले कोड को इष्टतम बर्स्ट-त्रुटि-सुधार करने वाला कोड कहा जाता है।

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

$$

$$

$$

टिप्पणी। $$r = n - k$$ कोड की अतिरेक कहा जाता है और अब्रामसन की सीमा के लिए एक वैकल्पिक सूत्रीकरण में है $$r \geqslant \lceil \log_2(n+1) \rceil + \ell -1.$$

==अग्नि कोड == जबकि सामान्य तौर पर चक्रीय कोड बर्स्ट त्रुटियों का पता लगाने के लिए शक्तिशाली उपकरण होते हैं, अब हम फायर कोड नामक बाइनरी चक्रीय कोड के एक परिवार पर विचार करते हैं, जिसमें अच्छी एकल बर्स्ट त्रुटि सुधार क्षमताएं होती हैं। एकल विस्फोट से, लंबाई के बारे में कहें $$\ell$$, हमारा मतलब है कि प्राप्त कोडवर्ड में मौजूद सभी त्रुटियां एक निश्चित अवधि के भीतर होती हैं $$\ell$$ अंक.

होने देना $$p(x)$$ डिग्री का एक अपरिवर्तनीय बहुपद बनें $$m$$ ऊपर $$\mathbb{F}_2$$, और जाने $$p$$ की अवधि हो $$p(x)$$. की अवधि $$p(x)$$, और वास्तव में किसी भी बहुपद को सबसे कम धनात्मक पूर्णांक के रूप में परिभाषित किया गया है $$r$$ ऐसा है कि $$p(x) |x^r - 1.$$ होने देना $$\ell$$ एक सकारात्मक पूर्णांक संतोषजनक हो $$\ell \leqslant m$$ और $$2\ell -1$$ से विभाज्य नहीं है $$p$$, कहाँ $$p$$ की अवधि है $$p(x)$$. अग्नि संहिता को परिभाषित करें $$G$$ निम्नलिखित जनरेटर बहुपद द्वारा: $$g(x) = \left (x^{2\ell -1} + 1 \right )p(x).$$ हम वो दिखाएंगे $$G$$ एक $$\ell$$-विस्फोट-त्रुटि सुधार कोड।

$$

$$

$$

यदि हम यह दिखा सकें कि लंबाई के सभी विस्फोट $$\ell$$ या कम अलग-अलग सह समुच्चय  में होते हैं, हम उन्हें  कोसेट नेता  के रूप में उपयोग कर सकते हैं जो सुधार योग्य त्रुटि पैटर्न बनाते हैं। कारण सरल है: हम जानते हैं कि प्रत्येक कोसेट में एक अद्वितीय सिंड्रोम डिकोडिंग जुड़ी होती है, और यदि अलग-अलग लंबाई के सभी विस्फोट अलग-अलग कोसेट में होते हैं, तो सभी में अद्वितीय सिंड्रोम होते हैं, जिससे त्रुटि सुधार की सुविधा मिलती है।

प्रमेय का प्रमाण
होने देना $$x^i a(x)$$ और $$x^j b(x)$$ डिग्री वाले बहुपद बनें  $$\ell_1-1$$ और $$\ell_2-1$$, लंबाई के विस्फोट का प्रतिनिधित्व करता है $$\ell_1$$ और  $$\ell_2$$ क्रमशः साथ $$\ell_1, \ell_2 \leqslant \ell.$$ पूर्णांक $$i, j$$ बर्स्ट की प्रारंभिक स्थिति का प्रतिनिधित्व करते हैं, और कोड की ब्लॉक लंबाई से कम होते हैं। विरोधाभास के लिए, यह मान लें  $$x^i a(x)$$ और $$x^j b(x)$$ एक ही कोसेट में हैं. तब, $$v(x) = x^i a(x) + x^j b(x)$$ एक वैध कोडवर्ड है (क्योंकि दोनों पद एक ही कोसेट में हैं)। व्यापकता की हानि के बिना, चुनें $$i \leqslant j$$. विभाजन प्रमेय द्वारा हम लिख सकते हैं: $$j-i = g(2\ell -1)+r,$$ पूर्णांकों के लिए $$g$$ और $$r, 0 \leqslant r < 2\ell -1$$. हम बहुपद को फिर से लिखते हैं $$v(x)$$ निम्नलिखित नुसार: $$v(x) = x^ia(x) + x^{i + g(2\ell -1) + r} = x^ia(x) + x^{i + g(2\ell -1) + r} + 2x^{i+r}b(x) = x^i \left (a(x) + x^b b(x) \right ) + x^{i+r}b(x) \left (x^{g(2\ell -1)}+1 \right )$$ ध्यान दें कि दूसरे हेरफेर में, हमने शब्द पेश किया $$2x^{i+r}b(x)$$. हमें ऐसा करने की अनुमति है, क्योंकि फायर कोड चालू हैं $$\mathbb{F}_2$$. हमारी धारणा से, $$v(x)$$ एक वैध कोडवर्ड है, और इस प्रकार, इसका गुणज होना चाहिए $$g(x)$$. जैसा कि पहले उल्लेख किया गया है, के कारकों के बाद से $$g(x)$$ अपेक्षाकृत प्रमुख हैं, $$v(x)$$ से विभाज्य होना चाहिए $$x^{2\ell -1} + 1$$. के लिए व्युत्पन्न अंतिम अभिव्यक्ति को करीब से देख रहे हैं $$v(x)$$ हम उस पर ध्यान देते हैं $$x^{g(2\ell -1)} + 1$$ से विभाज्य है $$x^{2\ell -1} + 1$$ (लेम्मा 2 के परिणाम से)। इसलिए, $$a(x) + x^bb(x)$$ या तो विभाज्य है $$x^{2\ell -1} + 1$$ या है $$0$$. विभाजन प्रमेय को दोबारा लागू करने पर, हम देखते हैं कि एक बहुपद मौजूद है $$d(x)$$ डिग्री के साथ $$\delta$$ ऐसा है कि: $$a(x) + x^b b(x) = d(x) (x^{2\ell -1}+1)$$ तब हम लिख सकते हैं: $$\begin{align} \delta + 2\ell -1 & = \deg \left (d(x) \left (x^{2\ell -1}+1 \right ) \right ) \\ &= \deg \left (a(x) + x^b b(x) \right ) \\ &= \deg \left (x^b b(x) \right ) && \deg(a(x)) = \ell_1 - 1 < 2\ell -1 \\ &= b + \ell_2 -1 \end{align}$$ दोनों पक्षों की डिग्री को बराबर करने से हमें प्राप्त होता है $$b = 2\ell  - \ell_2 + \delta.$$ तब से  $$\ell_1, \ell_2 \leqslant \ell$$ हम निष्कर्ष निकाल सकते हैं  $$b \geqslant \ell + \delta,$$ जो ये दर्शाता हे  $$b > \ell -1$$ और  $$b > \delta$$. ध्यान दें कि विस्तार में: $$a(x) + x^bb(x) = 1 + a_1x + a_2x^2 + \dots + x^{\ell_1-1} + x^b \left (1 + b_1x + b_2x^2 + \dots + x^{\ell_2-1} \right ). $$ शब्द $$x^b$$ प्रकट होता है, लेकिन तब से  $$\delta < b < 2\ell -1$$, परिणामी अभिव्यक्ति $$d(x)(x^{2\ell -1} + 1)$$ शामिल नहीं है  $$x^b$$, इसलिए $$d(x) = 0$$ और बाद में $$a(x) + x^b b(x) = 0.$$ इसके लिए इसकी आवश्यकता है  $$b = 0$$, और  $$a(x) = b(x)$$. हम अपने विभाजन को और संशोधित कर सकते हैं $$j-i$$ द्वारा $$g(2\ell -1)$$ प्रतिबिंबित करना $$b = 0,$$ वह है $j-i = g(2\ell -1)$. वापस प्रतिस्थापित करना $$v(x)$$ हमें देता है, $$v(x) = x^i b(x) \left (x^{j-1}+1 \right ).$$ तब से $$\deg(b(x)) = \ell_2-1 < \ell$$, अपने पास $$\deg(b(x)) < \deg(p(x)) = m$$. लेकिन $$p(x)$$ इसलिए, अपरिवर्तनीय है $$b(x)$$ और $$p(x)$$ अपेक्षाकृत प्रधान होना चाहिए। तब से $$v(x)$$ एक कोडवर्ड है, $$x^{j-1}+1$$ से विभाज्य होना चाहिए $$p(x)$$, क्योंकि इसे विभाज्य नहीं किया जा सकता $$x^{2\ell -1} + 1$$. इसलिए, $$j-i$$ का गुणज होना चाहिए $$p$$. लेकिन इसका गुणज भी होना चाहिए $$2\ell -1$$, जिसका अर्थ है कि यह का गुणज होना चाहिए $$n = \text{lcm}(2\ell -1,p)$$ लेकिन वह बिल्कुल कोड की ब्लॉक-लंबाई है। इसलिए, $$j-i$$ का गुणज नहीं हो सकता $$n$$ चूँकि वे दोनों इससे कम हैं $$n$$. इस प्रकार, हमारी धारणा $$v(x)$$ कोडवर्ड होना गलत है, और इसलिए $$x^i a(x)$$ और $$x^j b(x)$$ अद्वितीय सिंड्रोम के साथ अलग-अलग कोसेट में हैं, और इसलिए सुधार योग्य हैं।

उदाहरण: फायर कोड को सही करने में 5-विस्फोट त्रुटि
उपरोक्त अनुभाग में प्रस्तुत सिद्धांत के साथ, के निर्माण पर विचार करें $$5$$-फ़ायर कोड को सही करने में बर्स्ट त्रुटि। याद रखें कि फायर कोड बनाने के लिए, हमें एक अपरिवर्तनीय बहुपद की आवश्यकता होती है $$p(x)$$, पूर्णांक $$\ell$$, हमारे कोड की बर्स्ट त्रुटि सुधार क्षमता का प्रतिनिधित्व करता है, और हमें उस संपत्ति को संतुष्ट करने की आवश्यकता है $$2\ell -1$$ की अवधि से विभाज्य नहीं है $$p(x)$$. इन आवश्यकताओं को ध्यान में रखते हुए, अपरिवर्तनीय बहुपद पर विचार करें $$p(x) = 1 + x^2 + x^5$$, और जाने $$\ell = 5$$. तब से $$p(x)$$ एक आदिम बहुपद है, इसका आवर्त है $$2^5 - 1 = 31$$. हम इसकी पुष्टि करते हैं $$2\ell - 1 = 9$$ से विभाज्य नहीं है $$31$$. इस प्रकार, $$g(x) = (x^9+1) \left (1 + x^2 + x^5 \right ) = 1 + x^2 + x^5 + x^9 + x^{11} + x^{14}$$ एक फायर कोड जनरेटर है. हम न्यूनतम समापवर्त्य का मूल्यांकन करके कोड की ब्लॉक-लंबाई की गणना कर सकते हैं $$p$$ और $$2\ell -1$$. दूसरे शब्दों में, $$n = \text{lcm}(9,31) = 279$$. इस प्रकार, उपरोक्त फायर कोड एक चक्रीय कोड है जो लंबाई के किसी भी विस्फोट को ठीक करने में सक्षम है $$5$$ या कम।

बाइनरी रीड-सोलोमन कोड
कोड के कुछ परिवार, जैसे रीड-सोलोमन त्रुटि सुधार|रीड-सोलोमन, बाइनरी से बड़े वर्णमाला आकार पर काम करते हैं। यह संपत्ति ऐसे कोड को शक्तिशाली बर्स्ट त्रुटि सुधार क्षमताएं प्रदान करती है। उस कोड पर विचार करें जिस पर काम चल रहा है $$\mathbb{F}_{2^m}$$. वर्णमाला के प्रत्येक प्रतीक को किसके द्वारा दर्शाया जा सकता है? $$m$$ बिट्स अगर $$C$$ एक $$(n,k)$$ रीड-सोलोमन कोड ख़त्म $$\mathbb{F}_{2^m}$$, हम सोच सकते हैं $$C$$ एक के रूप में $$[mn,mk]_2$$ कोड ख़त्म $$\mathbb{F}_{2}$$.

बर्स्ट त्रुटि सुधार के लिए ऐसे कोड शक्तिशाली होने का कारण यह है कि प्रत्येक प्रतीक का प्रतिनिधित्व किया जाता है $$m$$ बिट्स, और सामान्य तौर पर, यह अप्रासंगिक है कि उनमें से कितने हैं $$m$$ बिट्स ग़लत हैं; चाहे एक बिट, या सभी $$m$$ बिट्स में त्रुटियाँ हैं, डिकोडिंग परिप्रेक्ष्य से यह अभी भी एक एकल प्रतीक त्रुटि है। दूसरे शब्दों में, चूंकि क्लस्टर में बर्स्ट त्रुटियां होती हैं, इसलिए एकल प्रतीक त्रुटि में कई बाइनरी त्रुटियों के योगदान की प्रबल संभावना होती है।

ध्यान दें कि एक विस्फोट $$(m+1)$$ त्रुटियाँ अधिकतम प्रभावित कर सकती हैं $$2$$ प्रतीकों, और का एक विस्फोट $$2m + 1$$ ज्यादा से ज्यादा प्रभावित कर सकता है $$3$$ प्रतीक. फिर, एक विस्फोट $$tm+1$$ ज्यादा से ज्यादा प्रभावित कर सकता है $$t + 1$$ प्रतीक; इसका तात्पर्य यह है कि ए $$t$$-प्रतीक-त्रुटि सुधार कोड अधिकतम लंबाई के विस्फोट को ठीक कर सकता है $$(t-1)m+1$$.

सामान्य तौर पर, ए $$t$$-रीड-सोलोमन कोड को सही करने में त्रुटि $$\mathbb{F}_{2^m}$$ के किसी भी संयोजन को ठीक कर सकता है $$\frac{t}{1+\lfloor (l+m-2)/m \rfloor}$$ या लंबाई के कम विस्फोट $$l$$, सही करने में सक्षम होने के शीर्ष पर $$t$$-यादृच्छिक सबसे खराब स्थिति त्रुटियाँ।

बाइनरी आरएस कोड का एक उदाहरण
होने देना $$G$$ एक हो $$[255,223,33]$$ आरएस कोड ख़त्म $$\mathbb{F}_{2^8}$$. इस कोड को नासा ने अपने कैसिनी-हुय्गेंस अंतरिक्ष यान में नियोजित किया था। यह ठीक करने में सक्षम है $$\lfloor 33/2 \rfloor = 16$$ प्रतीक त्रुटियाँ. अब हम एक बाइनरी आरएस कोड बनाते हैं $$G'$$ से $$G$$. प्रत्येक चिन्ह का प्रयोग करके लिखा जायेगा $$\lceil \log_2(255) \rceil = 8$$ बिट्स इसलिए, बाइनरी आरएस कोड होगा $$[2040,1784,33]_2$$ इसके पैरामीटर के रूप में। यह लंबाई के किसी भी एक विस्फोट को ठीक करने में सक्षम है $$l = 121$$.

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

इंटरलीवर की बर्स्ट त्रुटि सुधार क्षमता
$$

ब्लॉक इंटरलीवर
नीचे दिया गया चित्र 4 बाय 3 इंटरलीवर दिखाता है। उपरोक्त इंटरलीवर को ब्लॉक इंटरलीवर कहा जाता है। यहां, इनपुट प्रतीकों को पंक्तियों में क्रमिक रूप से लिखा जाता है और आउटपुट प्रतीकों को कॉलम को क्रमिक रूप से पढ़कर प्राप्त किया जाता है। इस प्रकार, यह इस रूप में है $$M \times N$$ सरणी. आम तौर पर, $$N$$ कोडवर्ड की लंबाई है.

ब्लॉक इंटरलीवर की क्षमता: एक के लिए $$M \times N$$ ब्लॉक इंटरलीवर और लंबाई का फटना $$\ell,$$ त्रुटियों की संख्या की ऊपरी सीमा है $$\tfrac{\ell}{M}.$$ यह इस तथ्य से स्पष्ट है कि हम आउटपुट को कॉलम के अनुसार पढ़ रहे हैं और पंक्तियों की संख्या है $$M$$. उपरोक्त प्रमेय के अनुसार त्रुटि सुधार क्षमता तक $$t,$$ अनुमत अधिकतम बर्स्ट लंबाई है $$Mt.$$ की बर्स्ट लंबाई के लिए $$Mt+1$$, डिकोडर विफल हो सकता है।

ब्लॉक इंटरलीवर की दक्षता ($$\gamma$$): यह बर्स्ट लंबाई का अनुपात लेकर पाया जाता है जहां डिकोडर इंटरलीवर मेमोरी में विफल हो सकता है। इस प्रकार, हम सूत्रीकरण कर सकते हैं $$\gamma$$ जैसा $$\gamma=\frac{Mt+1}{MN} \approx \frac{t}{N}.$$ ब्लॉक इंटरलीवर की कमियाँ: जैसा कि चित्र से स्पष्ट है, कॉलम क्रमिक रूप से पढ़े जाते हैं, रिसीवर पूर्ण संदेश प्राप्त करने के बाद ही एकल पंक्ति की व्याख्या कर सकता है, उससे पहले नहीं। साथ ही, प्राप्त प्रतीकों को संग्रहीत करने के लिए रिसीवर को काफी मात्रा में मेमोरी की आवश्यकता होती है और उसे पूरा संदेश संग्रहीत करना होता है। इस प्रकार, ये कारक दो कमियों को जन्म देते हैं, एक है विलंबता और दूसरा है भंडारण (काफी बड़ी मात्रा में मेमोरी)। नीचे वर्णित कनवल्शनल इंटरलीवर का उपयोग करके इन कमियों से बचा जा सकता है।

कन्वेंशनल इंटरलीवर
क्रॉस इंटरलीवर एक प्रकार का मल्टीप्लेक्सर-डेमल्टीप्लेक्सर सिस्टम है। इस प्रणाली में, लंबाई को उत्तरोत्तर बढ़ाने के लिए विलंब रेखाओं का उपयोग किया जाता है। विलंब रेखा मूल रूप से एक इलेक्ट्रॉनिक सर्किट है जिसका उपयोग सिग्नल को निश्चित समय अवधि तक विलंबित करने के लिए किया जाता है। होने देना $$n$$ विलंब रेखाओं की संख्या हो और $$d$$ प्रत्येक विलंब रेखा द्वारा प्रस्तुत प्रतीकों की संख्या हो। इस प्रकार, लगातार इनपुट के बीच अलगाव = $$nd$$ प्रतीक. कोडवर्ड की लंबाई बताएं $$\leqslant n.$$ इस प्रकार, इनपुट कोडवर्ड में प्रत्येक प्रतीक अलग विलंब रेखा पर होगा। लंबाई की एक विस्फोट त्रुटि दें $$\ell$$ घटित होना। चूँकि क्रमागत प्रतीकों के बीच पृथक्करण है $$nd,$$ डीइंटरलीव्ड आउटपुट में त्रुटियों की संख्या हो सकती है $$\tfrac{\ell}{nd+1}.$$ उपरोक्त प्रमेय के अनुसार, त्रुटि सुधार क्षमता तक $$t$$, अनुमत अधिकतम बर्स्ट लंबाई है $$(nd+1)(t-1).$$ की बर्स्ट लंबाई के लिए $$(nd+1) (t-1) + 1,$$ डिकोडर विफल हो सकता है. क्रॉस इंटरलीवर की दक्षता ($$\gamma$$): यह बर्स्ट लंबाई के अनुपात को लेकर पाया जाता है जहां डिकोडर इंटरलीवर मेमोरी में विफल हो सकता है। इस मामले में, इंटरलीवर की मेमोरी की गणना इस प्रकार की जा सकती है $$(0 + 1 + 2 + 3 + \cdots + (n-1))d = \frac{n(n-1)}{2} d.$$ इस प्रकार, हम सूत्रीकरण कर सकते हैं $$\gamma$$ निम्नलिखित नुसार: $$\gamma = \frac{(nd+1)(t-1)+1}{\frac{n(n-1)}{2}d}.$$ क्रॉस इंटरलीवर का प्रदर्शन: जैसा कि उपरोक्त इंटरलीवर चित्र में दिखाया गया है, आउटपुट प्रत्येक विलंब रेखा के अंत में उत्पन्न विकर्ण प्रतीकों के अलावा कुछ नहीं है। इस मामले में, जब इनपुट मल्टीप्लेक्सर स्विच लगभग आधा स्विचिंग पूरा कर लेता है, तो हम रिसीवर पर पहली पंक्ति पढ़ सकते हैं। इस प्रकार, हमें पहली पंक्ति को पढ़ने के लिए रिसीवर पर अधिकतम लगभग आधा संदेश संग्रहीत करने की आवश्यकता है। इससे भंडारण की आवश्यकता आधे से भी कम हो जाती है। चूँकि अब पहली पंक्ति को पढ़ने के लिए केवल आधे संदेश की आवश्यकता होती है, विलंबता भी आधी कम हो जाती है जो ब्लॉक इंटरलीवर की तुलना में अच्छा सुधार है। इस प्रकार, कुल इंटरलीवर मेमोरी ट्रांसमीटर और रिसीवर के बीच विभाजित हो जाती है।

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

वर्तमान कॉम्पैक्ट डिस्क डिजिटल ऑडियो सिस्टम नीदरलैंड के एन. वी. फिलिप्स और जापान के सोनी कॉरपोरेशन (1979 में हस्ताक्षरित समझौते) द्वारा विकसित किया गया था।

एक कॉम्पैक्ट डिस्क में एक स्पष्ट प्लास्टिक कोटिंग के साथ लेपित 120 मिमी एल्युमिनाइज्ड डिस्क होती है, जिसमें सर्पिल ट्रैक होता है, जिसकी लंबाई लगभग 5 किमी होती है, जिसे ~ 0.8 माइक्रोमीटर तरंग दैर्ध्य के लेजर द्वारा ~ 1.25 मीटर/सेकेंड की निरंतर गति से ऑप्टिकली स्कैन किया जाता है। इस स्थिर गति को प्राप्त करने के लिए, ट्रैक के आंतरिक भाग पर स्कैन करते समय डिस्क का घुमाव ~8 रेव/सेकेंड से लेकर बाहरी भाग पर ~3.5 रेव/सेकेंड तक भिन्न होता है। गड्ढे और भूमि अवसाद (0.12 माइक्रोमीटर गहरे) और समतल खंड हैं जो ट्रैक के साथ बाइनरी डेटा बनाते हैं (0.6 माइक्रोमीटर चौड़ाई)। सीडी प्रक्रिया को निम्नलिखित उप-प्रक्रियाओं के अनुक्रम के रूप में समझा जा सकता है:
 * सिग्नल के स्रोत का चैनल एन्कोडिंग
 * मास्टर डिस्क तैयार करने, उपयोगकर्ता डिस्क का उत्पादन करने और खेलते समय उपयोगकर्ता डिस्क पर एम्बेडेड संकेतों को महसूस करने की यांत्रिक उप-प्रक्रियाएँ - चैनल
 * उपयोगकर्ता डिस्क से प्राप्त संकेतों को डिकोड करना

यह प्रक्रिया बर्स्ट त्रुटियों और यादृच्छिक त्रुटियों दोनों के अधीन है। बर्स्ट त्रुटियों में डिस्क सामग्री (एल्यूमीनियम प्रतिबिंबित फिल्म के दोष, पारदर्शी डिस्क सामग्री का खराब प्रतिबिंबित सूचकांक), डिस्क उत्पादन (डिस्क बनाने और डिस्क काटने आदि के दौरान दोष), डिस्क हैंडलिंग (स्क्रैच - आम तौर पर पतली, रेडियल और रिकॉर्डिंग की दिशा में ऑर्थोगोनल) और प्ले-बैक तंत्र में भिन्नताएं शामिल हैं। यादृच्छिक त्रुटियों में पुनर्निर्मित सिग्नल तरंग की घबराहट और सिग्नल में हस्तक्षेप के कारण होने वाली त्रुटियां शामिल हैं। सीआईआरसी (क्रॉस-इंटरलीव्ड रीड-सोलोमन कोडिंग|क्रॉस-इंटरलीव्ड रीड-सोलोमन कोड) सीडी प्रक्रिया में त्रुटि का पता लगाने और सुधार का आधार है। यह क्रमिक रूप से 3,500 बिट्स (सीडी सतह पर देखी गई लंबाई में 2.4 मिमी) तक त्रुटि विस्फोटों को ठीक करता है और 12,000 बिट्स (8.5 मिमी) तक त्रुटि विस्फोटों की भरपाई करता है जो मामूली खरोंच के कारण हो सकते हैं।

एन्कोडिंग: ध्वनि-तरंगों का नमूना लिया जाता है और ए/डी कनवर्टर द्वारा डिजिटल रूप में परिवर्तित किया जाता है। ध्वनि तरंग का नमूना आयाम के लिए लिया जाता है (44.1 kHz या 44,100 जोड़े पर, स्टीरियो ध्वनि के बाएँ और दाएँ चैनलों के लिए एक-एक)। एक उदाहरण पर आयाम को लंबाई 16 की एक बाइनरी स्ट्रिंग सौंपी गई है। इस प्रकार, प्रत्येक नमूना दो बाइनरी वैक्टर उत्पन्न करता है $$\mathbb{F}_2^{16}$$ या 4 $$\mathbb{F}_2^{8}$$ डेटा के बाइट्स. रिकॉर्ड की गई ध्वनि के प्रत्येक सेकंड में 44,100 × 32 = 1,411,200 बिट्स (176,400 बाइट्स) डेटा प्राप्त होता है। 1.41 Mbit/s नमूना डेटा स्ट्रीम त्रुटि सुधार प्रणाली से होकर गुजरती है और अंततः 1.88 Mbit/s की स्ट्रीम में परिवर्तित हो जाती है।

एनकोडर के लिए इनपुट में 24 8-बिट प्रतीकों (ए/डी कनवर्टर से 12 16-बिट नमूने, बाएं और दाएं डेटा (ध्वनि) स्रोतों से 6 प्रत्येक) के इनपुट फ्रेम होते हैं। एक फ़्रेम का प्रतिनिधित्व किया जा सकता है $$L_1 R_1 L_2 R_2 \ldots L_6 R_6$$ कहाँ $$ L_i $$ और $$R_i$$ से बाएँ और दाएँ चैनल से बाइट्स हैं $$i^{th}$$ फ़्रेम का नमूना.

प्रारंभ में, बाइट्स को नए फ़्रेम बनाने के लिए क्रमपरिवर्तित किया जाता है $$L_1 L_3 L_5 R_1 R_3 R_5 L_2 L_4 L_6 R_2 R_4 R_6$$ कहाँ $$L_i,R_i $$प्रतिनिधित्व करना $$i$$-2 मध्यवर्ती फ़्रेमों के बाद फ़्रेम से बाएँ और दाएँ नमूने।

इसके बाद, इन 24 संदेश प्रतीकों को C2 (28,24,5) रीड-सोलोमन कोड का उपयोग करके एन्कोड किया गया है जो कि एक संक्षिप्त RS कोड है $$\mathbb{F}_{256}$$. यह दो-त्रुटि-सुधार करने वाला है, न्यूनतम दूरी 5 का है। यह अतिरेक के 4 बाइट्स जोड़ता है, $$P_1 P_2$$ एक नया फ्रेम बनाना: $$L_1 L_3 L_5 R_1 R_3 R_5 P_1 P_2 L_2 L_4 L_6 R_2 R_4 R_6$$. परिणामी 28-प्रतीक कोडवर्ड को (28.4) क्रॉस इंटरलीवर के माध्यम से पारित किया जाता है, जिससे 28 इंटरलीव्ड प्रतीक बन जाते हैं। फिर इन्हें C1 (32,28,5) RS कोड से गुजारा जाता है, जिसके परिणामस्वरूप 32 कोडित आउटपुट प्रतीकों के कोडवर्ड प्राप्त होते हैं। किसी कोडवर्ड के विषम संख्या वाले प्रतीकों को अगले कोडवर्ड के सम संख्या वाले प्रतीकों के साथ फिर से समूहीकृत किया जाता है ताकि किसी भी छोटे विस्फोट को तोड़ा जा सके जो उपरोक्त 4-फ्रेम विलंब इंटरलीविंग के बाद भी मौजूद हो सकता है। इस प्रकार, प्रत्येक 24 इनपुट प्रतीकों के लिए 32 आउटपुट प्रतीक होंगे $$ R = 24/32 $$. अंत में नियंत्रण और प्रदर्शन जानकारी की एक बाइट जोड़ी जाती है। 33 बाइट्स में से प्रत्येक को ईएफएम (आठ से चौदह मॉड्यूलेशन) के माध्यम से 17 बिट्स में परिवर्तित किया जाता है और 3 मर्ज बिट्स को जोड़ा जाता है। इसलिए, छह नमूनों के फ्रेम का परिणाम 33 बाइट्स × 17 बिट्स (561 बिट्स) होता है, जिसमें 24 सिंक्रोनाइज़ेशन बिट्स और 3 मर्जिंग बिट्स जोड़े जाते हैं, जिससे कुल 588 बिट्स प्राप्त होते हैं।

डिकोडिंग: सीडी प्लेयर (सीआईआरसी डिकोडर) 32 आउटपुट सिंबल डेटा स्ट्रीम प्राप्त करता है। यह धारा पहले डिकोडर D1 से होकर गुजरती है। डिकोडिंग विधियों पर निर्णय लेना और अपने उत्पाद प्रदर्शन को अनुकूलित करना सीडी सिस्टम के व्यक्तिगत डिजाइनरों पर निर्भर है। न्यूनतम दूरी 5 होने के कारण D1, D2 डिकोडर प्रत्येक के संयोजन को सही कर सकते हैं $$e$$ त्रुटियाँ और $$f$$ ऐसे मिटाता है $$2e+f<5$$. अधिकांश डिकोडिंग समाधानों में, D1 को एकल त्रुटि को ठीक करने के लिए डिज़ाइन किया गया है। और 1 से अधिक त्रुटि के मामले में, यह डिकोडर 28 इरेज़र आउटपुट करता है। अगले चरण में डीइंटरलीवर इन विलोपनों को 28 डी2 कोडवर्ड में वितरित करता है। पुनः अधिकांश समाधानों में, D2 को केवल मिटाने से निपटने के लिए सेट किया गया है (एक सरल और कम महंगा समाधान)। यदि 4 से अधिक विलोपन का सामना करना पड़ता है, तो 24 विलोपन D2 द्वारा आउटपुट होते हैं। इसके बाद, एक त्रुटि छुपाने वाली प्रणाली अचूक प्रतीकों के मामले में (पड़ोसी प्रतीकों से) प्रक्षेप करने का प्रयास करती है, जिसमें विफल रहने पर ऐसे गलत प्रतीकों के अनुरूप ध्वनियाँ म्यूट हो जाती हैं।

सीआईआरसी का प्रदर्शन: सीआईआरसी सरल रैखिक प्रक्षेप द्वारा लंबी बस्ट त्रुटियों को छुपाता है। 2.5 मिमी ट्रैक लंबाई (4000 बिट्स) अधिकतम पूरी तरह से सुधार योग्य बर्स्ट लंबाई है। 7.7 मिमी ट्रैक लंबाई (12,300 बिट्स) अधिकतम बर्स्ट लंबाई है जिसे इंटरपोल किया जा सकता है। बिट त्रुटि दर (बीईआर) पर नमूना प्रक्षेप दर हर 10 घंटे में एक होती है $$= 10^{-4}$$ और बीईआर पर प्रति मिनट 1000 नमूने = $$10^{-3}$$ अज्ञात त्रुटि नमूने (क्लिक): बीईआर = पर हर 750 घंटे में एक से कम $$10^{-3}$$ और BER = पर नगण्य $$10^{-4}$$.

यह भी देखें

 * त्रुटि का पता लगाना और सुधार करना
 * प्रतिक्रिया के साथ त्रुटि-सुधार कोड
 * कोड दर
 * रीड-सोलोमन त्रुटि सुधार