कोडिंग थ्योरी: Difference between revisions

From Vigyanwiki
No edit summary
 
(15 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{Short description|Study of the properties of codes and their fitness}}
[[File:Hamming.jpg|thumb|[[हैमिंग दूरी]] का द्वि-आयामी दृश्य, कोडिंग सिद्धांत में एक महत्वपूर्ण उपाय।]]'''कोडिंग थ्योरी''' विशिष्ट अनुप्रयोगों के लिए कोड के गुणों और उनकी उपयुक्तता का अध्ययन है। कोड का उपयोग डेटा संपीड़न, [[क्रिप्टोग्राफी]], त्रुटि का पता लगाने और सुधार, [[डेटा ट्रांसमिशन]] और डेटा [[आधार सामग्री भंडारण|भंडारण]] के लिए किया जाता है। कुशल और विश्वसनीय डेटा ट्रांसमिशन विधियों की रचना करने के उद्देश्य से विभिन्न वैज्ञानिक विषयों जैसे [[सूचना सिद्धांत]], [[विद्युत अभियन्त्रण]], गणित, [[भाषा विज्ञान]] और [[कंप्यूटर विज्ञान]] द्वारा कोड का अध्ययन किया जाता है। इसमें आमतौर पर अतिरेक को हटाना और संचरित डेटा में त्रुटियों का सुधार या पता लगाना सम्मिलित है।
[[File:Hamming.jpg|thumb|[[हैमिंग दूरी]] का द्वि-आयामी दृश्य, कोडिंग सिद्धांत में एक महत्वपूर्ण उपाय।]]कोडिंग सिद्धांत विशिष्ट अनुप्रयोगों के लिए कोड के गुणों और उनकी उपयुक्तता का अध्ययन है। कोड का उपयोग डेटा संपीड़न, [[क्रिप्टोग्राफी]], त्रुटि का पता लगाने और सुधार, [[डेटा ट्रांसमिशन]] और डेटा [[आधार सामग्री भंडारण|भंडारण]] के लिए किया जाता है। कुशल और विश्वसनीय डेटा ट्रांसमिशन विधियों को डिजाइन करने के उद्देश्य से विभिन्न वैज्ञानिक विषयों-जैसे [[सूचना सिद्धांत]], [[विद्युत अभियन्त्रण]], गणित, [[भाषा विज्ञान]] और [[कंप्यूटर विज्ञान]] द्वारा कोड का अध्ययन किया जाता है। इसमें आमतौर पर अतिरेक को हटाना और संचरित डेटा में त्रुटियों का सुधार या पता लगाना शामिल है।


कोडिंग चार प्रकार की होती है:<ref>{{cite book  
कोडिंग चार प्रकार की होती है:<ref>{{cite book  
Line 11: Line 10:
</ref>
</ref>
# डेटा संपीड़न (या स्रोत कोडिंग)
# डेटा संपीड़न (या स्रोत कोडिंग)
# त्रुटि नियंत्रण (या चैनल कोडिंग)
# त्रुटि नियंत्रण (या माध्यम कोडिंग)
# क्रिप्टोग्राफी
# क्रिप्टोग्राफी
# [[लाइन कोड]]
# [[लाइन कोड]]
Line 17: Line 16:
डेटा संपीड़न किसी स्रोत से डेटा को अधिक कुशलता से प्रसारित करने के लिए अवांछित अतिरेक को हटाने का प्रयास करता है। उदाहरण के लिए, [[ज़िप (फ़ाइल स्वरूप)|ज़िप डेटा संपीड़न]] इंटरनेट ट्रैफ़िक को कम करने जैसे उद्देश्यों के लिए डेटा फ़ाइलों को छोटा बनाता है। डेटा संपीड़न और त्रुटि सुधार का संयोजन में अध्ययन किया जा सकता है।
डेटा संपीड़न किसी स्रोत से डेटा को अधिक कुशलता से प्रसारित करने के लिए अवांछित अतिरेक को हटाने का प्रयास करता है। उदाहरण के लिए, [[ज़िप (फ़ाइल स्वरूप)|ज़िप डेटा संपीड़न]] इंटरनेट ट्रैफ़िक को कम करने जैसे उद्देश्यों के लिए डेटा फ़ाइलों को छोटा बनाता है। डेटा संपीड़न और त्रुटि सुधार का संयोजन में अध्ययन किया जा सकता है।


त्रुटि का पता लगाने और सुधार ट्रांसमिशन चैनल पर मौजूद गड़बड़ी के लिए ट्रांसमिशन को अधिक मजबूत बनाने के लिए स्रोत से डेटा में उपयोगी [[अतिरेक (सूचना सिद्धांत)|अतिरेक]] जोड़ता है। त्रुटि सुधार का उपयोग करने वाले कई अनुप्रयोगों के बारे में सामान्य उपयोगकर्ता को पता नहीं हो सकता है। एक विशिष्ट म्यूजिक [[कॉम्पैक्ट डिस्क डिजिटल ऑडियो|कॉम्पैक्ट डिस्क]] (सीडी) खरोंच और धूल को ठीक करने के लिए रीड-सोलोमन कोड का उपयोग करता है। इस एप्लिकेशन में ट्रांसमिशन चैनल सीडी ही है। उच्च आवृत्ति रेडियो प्रसारण के लुप्त होने और शोर को ठीक करने के लिए सेल फोन भी कोडिंग तकनीकों का उपयोग करते हैं। डेटा मोडेम, टेलीफोन प्रसारण, और [[नासा डीप स्पेस नेटवर्क]] सभी बिट्स प्राप्त करने के लिए चैनल कोडिंग तकनीकों को नियोजित करते हैं, उदाहरण के लिए [[टर्बो कोड]] और [[एलडीपीसी कोड]]।<!--Kvng RTH-->
त्रुटि का पता लगाने और सुधार ट्रांसमिशन माध्यम पर मौजूद गड़बड़ी के लिए ट्रांसमिशन को अधिक मजबूत बनाने के लिए स्रोत से डेटा में उपयोगी [[अतिरेक (सूचना सिद्धांत)|अतिरेक]] जोड़ता है। त्रुटि सुधार का उपयोग करने वाले कई अनुप्रयोगों के बारे में सामान्य उपयोगकर्ता को पता नहीं हो सकता है। एक विशिष्ट म्यूजिक [[कॉम्पैक्ट डिस्क डिजिटल ऑडियो|कॉम्पैक्ट डिस्क]] (सीडी) खरोंच और धूल को ठीक करने के लिए रीड-सोलोमन कोड का उपयोग करता है। इस एप्लिकेशन में ट्रांसमिशन माध्यम सीडी ही है। उच्च आवृत्ति रेडियो प्रसारण के लुप्त होने और शोर को ठीक करने के लिए सेल फोन भी कोडिंग तकनीकों का उपयोग करते हैं। डेटा मोडेम, टेलीफोन प्रसारण, और [[नासा डीप स्पेस नेटवर्क]] सभी बिट्स प्राप्त करने के लिए माध्यम कोडिंग तकनीकों को नियोजित करते हैं, उदाहरण के लिए [[टर्बो कोड]] और [[एलडीपीसी कोड]]।
== कोडिंग सिद्धांत का इतिहास ==
== कोडिंग थ्योरी का इतिहास ==
1948 में, [[क्लाउड शैनन]] ने बेल सिस्टम टेक्निकल जर्नल के जुलाई और अक्टूबर के अंक में दो भागों में एक लेख, [[संचार का एक गणितीय सिद्धांत]] प्रकाशित किया। यह कार्य इस समस्या पर केंद्रित है कि एक प्रेषक जिस सूचना को संचारित करना चाहता है, उसे कैसे सर्वोत्तम तरीके से एन्कोड किया जाए। इस मूलभूत कार्य में उन्होंने [[नॉर्बर्ट वीनर]] द्वारा विकसित संभाव्यता सिद्धांत के साधनों का उपयोग किया, जो उस समय संचार सिद्धांत पर लागू होने के अपने शुरुआती चरणों में थे। शैनन ने सूचना सिद्धांत के क्षेत्र का अनिवार्य रूप से आविष्कार करते हुए संदेश में अनिश्चितता के उपाय के रूप में [[सूचना एन्ट्रापी]] विकसित की।
1948 में, [[क्लाउड शैनन]] ने बेल सिस्टम टेक्निकल जर्नल के जुलाई और अक्टूबर के अंक में दो भागों में एक लेख, [[संचार का एक गणितीय सिद्धांत]] प्रकाशित किया। यह कार्य इस समस्या पर केंद्रित है कि एक प्रेषक जिस सूचना को संचारित करना चाहता है, उसे कैसे सर्वोत्तम तरीके से एन्कोड किया जाए। इस मूलभूत कार्य में उन्होंने [[नॉर्बर्ट वीनर]] द्वारा विकसित संभाव्यता सिद्धांत के साधनों का उपयोग किया, जो उस समय संचार सिद्धांत लागू होने के अपने शुरुआती चरणों में थे। शैनन ने सूचना सिद्धांत के क्षेत्र का अनिवार्य रूप से आविष्कार करते हुए संदेश में अनिश्चितता के उपाय के रूप में [[सूचना एन्ट्रापी]] विकसित की।


[[बाइनरी भाषा में कोड]] 1949 में विकसित किया गया था। यह एक त्रुटि-सुधार कोड है जो प्रत्येक 24-बिट शब्द में तीन त्रुटियों को ठीक करने और चौथे का पता लगाने में सक्षम है।
[[बाइनरी भाषा में कोड]] 1949 में विकसित किया गया था। यह एक त्रुटि-सुधार कोड है जो प्रत्येक 24-बिट शब्द में तीन त्रुटियों को ठीक करने और चौथे का पता लगाने में सक्षम है।
Line 28: Line 27:


== स्रोत कोडिंग ==
== स्रोत कोडिंग ==
{{main|Data compression}}[[बेचा]]{{main|Data compression}}
{{main|आधार - सामग्री संकोचन}}[[बेचा]]{{main|आधार - सामग्री संकोचन}}
स्रोत कोडिंग का उद्देश्य स्रोत डेटा लेना और उसे छोटा करना है।
स्रोत कोडिंग का उद्देश्य स्रोत डेटा लेना और उसे छोटा करना है।


Line 42: Line 41:
<math>C(x)</math> से जुड़ा कोड वर्ड <math>x</math> है |
<math>C(x)</math> से जुड़ा कोड वर्ड <math>x</math> है |


कूट शब्द की लंबाई इस रूप में लिखा जाता है
कूट शब्द की लंबाई इस रूप में लिखी जाती है


:<math>l(C(x)).</math>
:<math>l(C(x)).</math>
Line 54: Line 53:
:<math>C(\epsilon) = \epsilon</math>
:<math>C(\epsilon) = \epsilon</math>
=== गुण ===
=== गुण ===
# <math>C:\mathcal{X}\to\Sigma^*</math> गैर-एकवचन अगर [[इंजेक्शन समारोह|अंत:क्षेपक]]
# <math>C:\mathcal{X}\to\Sigma^*</math> गैर-एकवचन अगर [[इंजेक्शन समारोह|अंत:क्षेपक है।]]
# <math>C:\mathcal{X}^*\to\Sigma^*</math>विशिष्ट रूप से डिकोड करने योग्य कोड यदि अंत:क्षेपक है।
# <math>C:\mathcal{X}^*\to\Sigma^*</math>विशिष्ट रूप से डिकोड करने योग्य कोड यदि अंत:क्षेपक है।
# <math>C:\mathcal{X}\to\Sigma^*</math> तात्कालिक यदि <math>C(x_1)</math>, <math>C(x_2)</math>का उपसर्ग नहीं है (और इसके विपरीत भी)।
# <math>C:\mathcal{X}\to\Sigma^*</math> तात्कालिक यदि <math>C(x_1)</math>, <math>C(x_2)</math>का उपसर्ग नहीं है (और इसके विपरीत भी)।


=== सिद्धांत ===
=== थ्योरी ===
किसी स्रोत की एन्ट्रापी सूचना का माप है। मूल रूप से, स्रोत कोड स्रोत में मौजूद अतिरेक को कम करने का प्रयास करते हैं, और स्रोत का प्रतिनिधित्व कम से कम  बिट्स में करते हैं जो अधिक जानकारी रखते हैं।
किसी स्रोत की एन्ट्रापी सूचना का माप है। मूल रूप से, स्रोत कोड स्रोत में मौजूद अतिरेक को कम करने का प्रयास करते हैं, और स्रोत का प्रतिनिधित्व कम से कम  बिट्स में करते हैं जो अधिक जानकारी रखते हैं।


Line 68: Line 67:
[[फैक्स]] ट्रांसमिशन एक साधारण [[रन-लेंथ एन्कोडिंग|रन-लेंथ कोड]] का उपयोग करता है। स्रोत कोडिंग ट्रांसमीटर की आवश्यकता के लिए अनावश्यक सभी डेटा को हटा देता है, जिससे ट्रांसमिशन के लिए आवश्यक बैंडविड्थ कम हो जाती है।
[[फैक्स]] ट्रांसमिशन एक साधारण [[रन-लेंथ एन्कोडिंग|रन-लेंथ कोड]] का उपयोग करता है। स्रोत कोडिंग ट्रांसमीटर की आवश्यकता के लिए अनावश्यक सभी डेटा को हटा देता है, जिससे ट्रांसमिशन के लिए आवश्यक बैंडविड्थ कम हो जाती है।


== चैनल कोडिंग ==
== माध्यम कोडिंग ==
{{main|त्रुटि का पता लगाना और सुधार}}
{{main|त्रुटि का पता लगाना और सुधार}}
चैनल कोडिंग सिद्धांत का उद्देश्य उन कोडों को खोजना है जो जल्दी से प्रसारित होते हैं, जिनमें कई मान्य [[कोड शब्द]] होते हैं और कम से कम त्रुटि का पता लगाने में कई त्रुटियों को ठीक कर सकते हैं। जबकि परस्पर अनन्य नहीं है, इन क्षेत्रों में प्रदर्शन एक समझौता है। इसलिए, अलग-अलग अनुप्रयोगों के लिए अलग-अलग कोड इष्टतम हैं। इस कोड के आवश्यक गुण मुख्य रूप से संचरण के दौरान होने वाली त्रुटियों की संभावना पर निर्भर करते हैं। एक विशिष्ट सीडी में, हानि मुख्य रूप से धूल या खरोंच होती है।
माध्यम कोडिंग थ्योरी का उद्देश्य उन कोडों का पता लगाना है जो शीघ्रता से प्रसारित होते हैं, जिनमें कई मान्य [[कोड शब्द]] होते हैं और कम से कम त्रुटि का पता लगाने में कई त्रुटियों को ठीक कर सकते हैं। जबकि परस्पर अनन्य नहीं है, इन क्षेत्रों में प्रदर्शन एक समझौता है। इसलिए, अलग-अलग अनुप्रयोगों के लिए अलग-अलग कोड इष्टतम हैं। इस कोड के आवश्यक गुण मुख्य रूप से संचरण के दौरान होने वाली त्रुटियों की संभावना पर निर्भर करते हैं। एक विशिष्ट सीडी में, हानि मुख्य रूप से धूल या खरोंच होती है।


डिस्क पर डेटा को लिखने के लिए सीडी क्रॉस-इंटरलीव्ड रीड-सोलोमन कोडिंग का उपयोग करती हैं।<ref>
डिस्क पर डेटा को लिखने के लिए सीडी क्रॉस-इंटरलीव्ड रीड-सोलोमन कोडिंग का उपयोग करती हैं।<ref>
Line 77: Line 76:
</ref>
</ref>


हालांकि यह एक बहुत अच्छा कोड नहीं है, एक साधारण दोहराव वाला कोड समझने योग्य उदाहरण के रूप में काम कर सकता है। मान लीजिए हम डेटा बिट्स का एक ब्लॉक लेते हैं और इसे तीन बार भेजते हैं। रिसीवर पर हम तीन दोहरावों की बिट दर बिट जांच करेंगे और बहुमत वोट लेंगे। इसमें समस्या यह है कि हम केवल बिट्स को क्रम में नहीं भेजते हैं बल्कि हम उन्हें निकालते भी हैं। डेटा बिट समूह को पहले 4 छोटे समूहों में बांटा जाता है। फिर हम समूह के बिट भेजने का सिलसिला शुरू करते हैं और पहले एक बिट भेजते हैं, फिर दूसरा, आदि। यह डिस्क की सतह पर डेटा को लिखने के लिए तीन बार किया जाता है। सरल दोहराने वाले कोड के संदर्भ में, यह प्रभावी प्रतीत नहीं हो सकता है। हालांकि, अधिक शक्तिशाली कोड ज्ञात हैं जो इस इंटरलीविंग तकनीक का उपयोग करते समय खरोंच या धूल के धब्बे की बौछार त्रुटि को ठीक करने में बहुत प्रभावी होते हैं।
हालांकि यह बहुत अच्छा कोड नहीं है, एक साधारण दोहराव वाला कोड समझने योग्य उदाहरण के रूप में काम कर सकता है। मान लीजिए हम डेटा बिट्स का एक ब्लॉक लेते हैं और इसे तीन बार भेजते हैं। रिसीवर पर हम तीन दोहरावों की बिट दर बिट जांच करते हैं और बहुमत वोट लेते हैं। इसमें समस्या यह है कि हम केवल बिट्स को क्रम में नहीं भेजते हैं बल्कि हम उन्हें निकालते भी हैं। डेटा बिट समूह को पहले 4 छोटे समूहों में बांटा जाता है। फिर हम समूह के बिट भेजने का सिलसिला शुरू करते हैं और पहले एक बिट भेजते हैं, फिर दूसरा, आदि। यह डिस्क की सतह पर डेटा को लिखने के लिए तीन बार किया जाता है। सरल दोहराने वाले कोड के संदर्भ में, यह प्रभावी प्रतीत नहीं हो सकता है। हालांकि, अधिक शक्तिशाली कोड ज्ञात हैं जो इस इंटरलीविंग तकनीक का उपयोग करते समय खरोंच या धूल के धब्बे की बौछार त्रुटि को ठीक करने में बहुत प्रभावी होते हैं।


अन्य कोड विभिन्न अनुप्रयोगों के लिए अधिक उपयुक्त हैं। गहन अंतरिक्ष संचार, रिसीवर के [[थर्मल शोर]] से सीमित होते हैं जो बौछार वाली प्रकृति की तुलना में निरंतर प्रकृति का अधिक होता है। इसी तरह, नैरोबैंड मोडेम टेलीफोन नेटवर्क में मौजूद शोर से सीमित होते हैं और निरंतर गड़बड़ी के रूप में भी बेहतर तरीके से तैयार किए जाते हैं।{{Citation needed|date=July 2008}} सेल फोन रैपिड फेडिंग के अधीन हैं। उच्च आवृत्तियाँ का उपयोग, सिग्नल के रैपिड फेडिंग होने का कारण बन सकती हैं, भले ही रिसीवर कुछ इंच आगे बढ़ जाए। फिर से चैनल कोड का एक वर्ग है जो कॉम्बैट फेडिंग के लिए डिज़ाइन किया गया है।{{Citation needed|date=July 2008}}
अन्य कोड विभिन्न अनुप्रयोगों के लिए अधिक उपयुक्त हैं। गहन अंतरिक्ष संचार, रिसीवर के [[थर्मल शोर]] से सीमित होते हैं जो बौछार वाली प्रकृति की तुलना में निरंतर प्रकृति का होता है। इसी तरह, नैरोबैंड मोडेम टेलीफोन नेटवर्क में मौजूद शोर से सीमित होते हैं और निरंतर गड़बड़ी के रूप में भी बेहतर तरीके से तैयार किए जाते हैं। सेल फोन रैपिड फेडिंग के अधीन होते हैं। उच्च आवृत्तियाँ का उपयोग, सिग्नल के रैपिड फेडिंग होने का कारण बन सकती हैं, भले ही रिसीवर कुछ इंच आगे बढ़ जाए। फिर से माध्यम कोड का एक वर्ग है जो कॉम्बैट फेडिंग के लिए डिज़ाइन किया गया है।
=== रैखिक कोड ===
=== रैखिक कोड ===
{{Main|रैखिक कोड}}
{{Main|रैखिक कोड}}
बीजगणितीय कोडिंग सिद्धांत शब्द कोडिंग सिद्धांत के उप-क्षेत्र को दर्शाता है जहां कोड के गुणों को बीजगणितीय पदों में व्यक्त किया जाता है और फिर आगे शोध किया जाता है।{{Citation needed|date=July 2008}}
बीजगणितीय कोडिंग थ्योरी शब्द कोडिंग थ्योरी के उप-क्षेत्र को दर्शाता है जहां कोड के गुणों को बीजगणितीय पदों में व्यक्त किया जाता है और फिर आगे शोध किया जाता है।


बीजगणितीय कोडिंग सिद्धांत को मूल रूप से दो प्रमुख प्रकार के कोड में विभाजित किया गया है:{{Citation needed|date=July 2008}}
बीजगणितीय कोडिंग थ्योरी को मूल रूप से दो प्रमुख प्रकार के कोड में विभाजित किया गया है:
* रैखिक ब्लॉक कोड
* रैखिक ब्लॉक कोड
* कोंवोलुशनल कोड
* कोंवोलुशनल कोड


यह कोड के निम्नलिखित तीन गुणों का विश्लेषण करता है - मुख्य रूप से:{{Citation needed|date=July 2008}}
यह कोड के निम्नलिखित तीन गुणों का विश्लेषण करता है - मुख्य रूप से:
* कोड शब्द की लंबाई
* कोड शब्द की लंबाई
* मान्य कोड शब्दों की कुल संख्या
* मान्य कोड शब्दों की कुल संख्या
Line 108: Line 107:
# पुनरावृत्ति कोड
# पुनरावृत्ति कोड
# [[समता द्वियक|समतुल्य कोड]]
# [[समता द्वियक|समतुल्य कोड]]
# [[बहुपद कोड]] (जैसे, BCH कोड)
# [[बहुपद कोड]] (जैसे, बीसीएच कोड)
# रीड-सोलोमन कोड
# रीड-सोलोमन कोड
# [[बीजगणितीय ज्यामितीय कोड]]
# [[बीजगणितीय ज्यामितीय कोड]]
Line 116: Line 115:
ब्लॉक कोड [[गोलाकार पैकिंग|स्फीयर पैकिंग]] समस्या से जुड़े हैं, जिस पर पिछले कुछ वर्षों में कुछ ध्यान दिया गया है। दो आयामों में, कल्पना करना आसान है। टेबल पर सिक्कों का  गुच्छा लें और उन्हें एक साथ बिखेर दें। नतीजा मधुमक्खी के घोंसले की तरह एक हेक्सागोन पैटर्न है। लेकिन ब्लॉक कोड अधिक आयामों पर निर्भर करते हैं जिन्हें आसानी से नहीं देखा जा सकता है। गहरे अंतरिक्ष संचार में प्रयुक्त शक्तिशाली (24,12) बाइनरी गोले कोड 24 आयामों का उपयोग करता है। यदि एक बाइनरी कोड के रूप में उपयोग किया जाता है (जो कि यह आमतौर पर होता है) तो आयाम कोडवर्ड की लंबाई को संदर्भित करते हैं जैसा कि ऊपर परिभाषित किया गया है।
ब्लॉक कोड [[गोलाकार पैकिंग|स्फीयर पैकिंग]] समस्या से जुड़े हैं, जिस पर पिछले कुछ वर्षों में कुछ ध्यान दिया गया है। दो आयामों में, कल्पना करना आसान है। टेबल पर सिक्कों का  गुच्छा लें और उन्हें एक साथ बिखेर दें। नतीजा मधुमक्खी के घोंसले की तरह एक हेक्सागोन पैटर्न है। लेकिन ब्लॉक कोड अधिक आयामों पर निर्भर करते हैं जिन्हें आसानी से नहीं देखा जा सकता है। गहरे अंतरिक्ष संचार में प्रयुक्त शक्तिशाली (24,12) बाइनरी गोले कोड 24 आयामों का उपयोग करता है। यदि एक बाइनरी कोड के रूप में उपयोग किया जाता है (जो कि यह आमतौर पर होता है) तो आयाम कोडवर्ड की लंबाई को संदर्भित करते हैं जैसा कि ऊपर परिभाषित किया गया है।


कोडिंग का सिद्धांत N-आयामी गोलाकार मॉडल का उपयोग करता है। उदाहरण के लिए, टेबलटॉप पर एक सर्कल में कितने सिक्के पैक किए जा सकते हैं, या 3 आयामों में कितने कंचे ग्लोब में पैक किए जा सकते हैं। अन्य विचार एक कोड की पसंद दर्ज करते हैं। उदाहरण के लिए, आयताकार बॉक्स की सीमा में हेक्सागोन पैकिंग कोनों पर खाली जगह छोड़ देगी। जैसे-जैसे आयाम बड़े होते जाते हैं, रिक्त स्थान का प्रतिशत छोटा होता जाता है। लेकिन कुछ आयामों पर, पैकिंग सभी जगह का उपयोग करती है और ये कोड तथाकथित [[हैमिंग बाध्य|संपन्न]] कोड होते हैं। केवल अतुच्छ और उपयोगी [[हैमिंग बाध्य|संपन्न]] कोड दूरी -3 हैमिंग कोड हैं जो पैरामीटर संतोषजनक (2r - 1, 2r - 1 - r, 3), और [23,12,7] बाइनरी और [11,6,5] टर्नरी गोले-कोड के साथ हैं।<sup><ref name="terras">
कोडिंग का सिद्धांत N-आयामी गोलाकार मॉडल का उपयोग करता है। उदाहरण के लिए, टेबलटॉप पर एक सर्कल में कितने सिक्के पैक किए जा सकते हैं, या 3 आयामों में कितने कंचे ग्लोब में पैक किए जा सकते हैं। अन्य विचार एक कोड की पसंद दर्शाते करते हैं। उदाहरण के लिए, आयताकार बॉक्स की सीमा में हेक्सागोन पैकिंग कोनों पर खाली जगह छोड़ देगी। जैसे-जैसे आयाम बड़े होते जाते हैं, रिक्त स्थान का प्रतिशत छोटा होता जाता है। लेकिन कुछ आयामों पर, पैकिंग सभी जगह का उपयोग करती है और ये कोड तथाकथित [[हैमिंग बाध्य|संपन्न]] कोड होते हैं। केवल अतुच्छ और उपयोगी [[हैमिंग बाध्य|संपन्न]] कोड दूरी -3 हैमिंग कोड हैं जो पैरामीटर संतोषजनक (2r - 1, 2r - 1 - r, 3), और [23,12,7] बाइनरी और [11,6,5] टर्नरी गोले-कोड के साथ हैं।<sup><ref name="terras">
{{cite book | title = Fourier Analysis on Finite Groups and Applications |first=Audrey |last=Terras |author-link=Audrey Terras| publisher = [[Cambridge University Press]] | year = 1999 | isbn = 978-0-521-45718-7 | url = https://archive.org/details/fourieranalysiso0000terr | url-access = registration | page = [https://archive.org/details/fourieranalysiso0000terr/page/195 195] }}</ref><ref name="blahut">{{cite book |title = डेटा ट्रांसमिशन के लिए बीजगणितीय कोड|first=Richard E. |last=Blahut | publisher = Cambridge University Press | year = 2003 | isbn = 978-0-521-55374-2 | url = https://books.google.com/books?id=n0XHMY58tL8C&pg=PA60}}
{{cite book | title = Fourier Analysis on Finite Groups and Applications |first=Audrey |last=Terras |author-link=Audrey Terras| publisher = [[Cambridge University Press]] | year = 1999 | isbn = 978-0-521-45718-7 | url = https://archive.org/details/fourieranalysiso0000terr | url-access = registration | page = [https://archive.org/details/fourieranalysiso0000terr/page/195 195] }}</ref><ref name="blahut">{{cite book |title = डेटा ट्रांसमिशन के लिए बीजगणितीय कोड|first=Richard E. |last=Blahut | publisher = Cambridge University Press | year = 2003 | isbn = 978-0-521-55374-2 | url = https://books.google.com/books?id=n0XHMY58tL8C&pg=PA60}}
</ref>
</ref>


<big><sup>एक अन्य कोड गुण पड़ोसियों की संख्या है जो एक एकल कोडवर्ड हो सकता है।<ref name="schlegel">
<sup><big>एक अन्य कोड गुण पड़ोसियों की संख्या है जो एक एकल कोडवर्ड हो सकता है।<ref name="schlegel">
{{cite book
{{cite book
  | title = Trellis and turbo coding
  | title = Trellis and turbo coding
Line 130: Line 129:
  }}</ref><sup>एक उदाहरण के रूप में फिर से सिक्कों पर विचार करें। पहले हम सिक्के को एक आयताकार ग्रिड में पैक करते हैं। प्रत्येक सिक्के में 4 निकटवर्ती पड़ोसी होंगे (और 4 कोनों पर जो दूर हैं)। एक षट्भुज में, प्रत्येक सिक्के में 6 निकट पड़ोसी होंगे। जब हम आयाम बढ़ाते हैं तो निकट पड़ोसियों की संख्या बहुत तेजी से बढ़ती है। नतीजा यह है कि रिसीवर को पड़ोसी चुनने के लिए शोर के तरीकों की संख्या (इसलिए एक त्रुटि) भी बढ़ती है। यह ब्लॉक कोड और वास्तव में सभी कोड की मूलभूत सीमा है। किसी एक पड़ोसी के लिए त्रुटि करना कठिन हो सकता है, लेकिन पड़ोसियों की संख्या काफी बड़ी हो सकती है, इसलिए कुल त्रुटि संभावना वास्तव में समस्या होती है।<ref name="schlegel" /></big>
  }}</ref><sup>एक उदाहरण के रूप में फिर से सिक्कों पर विचार करें। पहले हम सिक्के को एक आयताकार ग्रिड में पैक करते हैं। प्रत्येक सिक्के में 4 निकटवर्ती पड़ोसी होंगे (और 4 कोनों पर जो दूर हैं)। एक षट्भुज में, प्रत्येक सिक्के में 6 निकट पड़ोसी होंगे। जब हम आयाम बढ़ाते हैं तो निकट पड़ोसियों की संख्या बहुत तेजी से बढ़ती है। नतीजा यह है कि रिसीवर को पड़ोसी चुनने के लिए शोर के तरीकों की संख्या (इसलिए एक त्रुटि) भी बढ़ती है। यह ब्लॉक कोड और वास्तव में सभी कोड की मूलभूत सीमा है। किसी एक पड़ोसी के लिए त्रुटि करना कठिन हो सकता है, लेकिन पड़ोसियों की संख्या काफी बड़ी हो सकती है, इसलिए कुल त्रुटि संभावना वास्तव में समस्या होती है।<ref name="schlegel" /></big>


कई अनुप्रयोगों में रैखिक ब्लॉक कोड के गुणों का उपयोग किया जाता है। उदाहरण के लिए, रेखीय ब्लॉक कोड के सिंड्रोम-कोसेट विशिष्टता गुण का उपयोग ट्रेलिस को आकार देने में किया जाता है,<ref>{{cite journal |first=G.D. Jr. |last=Forney |author-link=Dave Forney |title=ट्रेलिस को आकार देना|journal=IEEE Transactions on Information Theory |volume=38 |issue=2 Pt 2 |pages=281–300 |date=March 1992 |doi=10.1109/18.119687 |s2cid=37984132 }}</ref> सबसे प्रचलित [[आकार देने वाले कोड]] में से एक।
कई अनुप्रयोगों में रैखिक ब्लॉक कोड के गुणों का उपयोग किया जाता है। उदाहरण के लिए, रेखीय ब्लॉक कोड के सिंड्रोम-कोसेट विशिष्टता गुण का उपयोग ट्रेलिस शेपिंग, सबसे प्रचलित [[आकार देने वाले कोड]] में से एक, में किया जाता है,<ref>{{cite journal |first=G.D. Jr. |last=Forney |author-link=Dave Forney |title=ट्रेलिस को आकार देना|journal=IEEE Transactions on Information Theory |volume=38 |issue=2 Pt 2 |pages=281–300 |date=March 1992 |doi=10.1109/18.119687 |s2cid=37984132 }}</ref>


==== कोंवोलुशनल कोड ====
==== कोंवोलुशनल कोड ====
Line 146: Line 145:


== क्रिप्टोग्राफिक कोडिंग ==
== क्रिप्टोग्राफिक कोडिंग ==
{{main|Cryptography}}
{{main|क्रिप्टोग्राफी}}
क्रिप्टोग्राफी या क्रिप्टोग्राफिक कोडिंग तीसरे पक्ष की उपस्थिति में [[सुरक्षित संचार]] के लिए तकनीकों का अभ्यास और अध्ययन है (जिसे [[विरोधी (क्रिप्टोग्राफी)]] कहा जाता है)।<ref name="rivest90">{{cite book|first=Ronald L.|last=Rivest|author-link=Ron Rivest|editor=J. Van Leeuwen|title=सैद्धांतिक कंप्यूटर विज्ञान की पुस्तिका|chapter=Cryptology|volume=1|publisher=Elsevier|year=1990}}</ref> अधिक सामान्यतः, यह [[संचार प्रोटोकॉल]] के निर्माण और विश्लेषण के बारे में है जो विरोधियों को रोकता है;<ref name="modern-crypto">{{Cite book|first1=Mihir|last1=Bellare|first2=Phillip|last2=Rogaway|title=आधुनिक क्रिप्टोग्राफी का परिचय|chapter=Introduction|page=10|date=21 September 2005}}</ref> [[सूचना सुरक्षा]] में विभिन्न पहलू जैसे डेटा [[गोपनीयता]], [[डेटा अखंडता]], [[प्रमाणीकरण]] और गैर-अस्वीकृति<ref name="hac">{{cite book |first1=A. J. |last1=Menezes |first2=P. C. |last2=van Oorschot |first3=S. A. |last3=Vanstone |url=https://archive.org/details/handbookofapplie0000mene |title=एप्लाइड क्रिप्टोग्राफी की पुस्तिका|isbn=978-0-8493-8523-0 |year=1997 |url-access=registration }}</ref> आधुनिक क्रिप्टोग्राफी के केंद्र हैं। आधुनिक क्रिप्टोग्राफी गणित, [[संगणक]] विज्ञान और इलेक्ट्रिकल इंजीनियरिंग के विषयों के चौराहे पर मौजूद है। क्रिप्टोग्राफी के अनुप्रयोगों में स्वचालित टेलर मशीन, [[पासवर्ड]] और [[इलेक्ट्रॉनिक वाणिज्य]] शामिल हैं।


आधुनिक युग से पहले क्रिप्टोग्राफी प्रभावी रूप से [[कूटलेखन]] का पर्यायवाची थी, एक पठनीय स्थिति से स्पष्ट [[बकवास]] में सूचना का रूपांतरण। एक एन्क्रिप्टेड संदेश के प्रवर्तक ने मूल जानकारी को पुनर्प्राप्त करने के लिए आवश्यक डिकोडिंग तकनीक को केवल इच्छित प्राप्तकर्ताओं के साथ साझा किया, जिससे अवांछित व्यक्तियों को ऐसा करने से रोका जा सके। प्रथम विश्व युद्ध और कंप्यूटर के आगमन के बाद से, क्रिप्टोलॉजी करने के लिए उपयोग की जाने वाली विधियाँ तेजी से जटिल हो गई हैं और इसका अनुप्रयोग अधिक व्यापक हो गया है।
क्रिप्टोग्राफी या क्रिप्टोग्राफिक कोडिंग तीसरे पक्ष (जिसे  [[विरोधी (क्रिप्टोग्राफी)|प्रतिपक्षी]] कहा जाता है) की उपस्थिति में [[सुरक्षित संचार]] के लिए तकनीकों का अभ्यास और अध्ययन है।<ref name="rivest90">{{cite book|first=Ronald L.|last=Rivest|author-link=Ron Rivest|editor=J. Van Leeuwen|title=सैद्धांतिक कंप्यूटर विज्ञान की पुस्तिका|chapter=Cryptology|volume=1|publisher=Elsevier|year=1990}}</ref> अधिक सामान्यतः, यह [[संचार प्रोटोकॉल]] के निर्माण और विश्लेषण के बारे में है जो  प्रतिपक्षियों को रोकता है;<ref name="modern-crypto">{{Cite book|first1=Mihir|last1=Bellare|first2=Phillip|last2=Rogaway|title=आधुनिक क्रिप्टोग्राफी का परिचय|chapter=Introduction|page=10|date=21 September 2005}}</ref> [[सूचना सुरक्षा]] में विभिन्न पहलू जैसे डेटा [[गोपनीयता]], [[डेटा अखंडता]], [[प्रमाणीकरण]] और गैर-अस्वीकृति<ref name="hac">{{cite book |first1=A. J. |last1=Menezes |first2=P. C. |last2=van Oorschot |first3=S. A. |last3=Vanstone |url=https://archive.org/details/handbookofapplie0000mene |title=एप्लाइड क्रिप्टोग्राफी की पुस्तिका|isbn=978-0-8493-8523-0 |year=1997 |url-access=registration }}</ref> आधुनिक क्रिप्टोग्राफी के केंद्र हैं। आधुनिक क्रिप्टोग्राफी गणित, [[संगणक]] विज्ञान और इलेक्ट्रिकल इंजीनियरिंग के विषयों के संगम पर मौजूद है। क्रिप्टोग्राफी के अनुप्रयोगों में स्वचालित टेलर मशीन, कंप्यूटर [[पासवर्ड]] और [[इलेक्ट्रॉनिक वाणिज्य]] सम्मिलित हैं।


आधुनिक क्रिप्टोग्राफी काफी हद तक गणितीय सिद्धांत और कंप्यूटर विज्ञान अभ्यास पर आधारित है; क्रिप्टोग्राफ़िक एल्गोरिदम को कम्प्यूटेशनल कठोरता मान्यताओं के आसपास डिज़ाइन किया गया है, ऐसे एल्गोरिदम को किसी भी विरोधी द्वारा व्यवहार में तोड़ना कठिन बना दिया गया है। इस तरह की प्रणाली को तोड़ना सैद्धांतिक रूप से संभव है, लेकिन किसी ज्ञात व्यावहारिक माध्यम से ऐसा करना संभव नहीं है। इसलिए इन योजनाओं को कम्प्यूटेशनल रूप से सुरक्षित कहा जाता है; सैद्धांतिक प्रगति, उदाहरण के लिए, पूर्णांक गुणनखंड एल्गोरिदम में सुधार, और तेज़ कंप्यूटिंग तकनीक के लिए इन समाधानों को लगातार अनुकूलित करने की आवश्यकता होती है। [[सूचना सैद्धांतिक सुरक्षा]] मौजूद है। सूचना-सैद्धांतिक रूप से सुरक्षित योजनाएं हैं {{not a typo|provably}} असीमित कंप्यूटिंग शक्ति के साथ भी नहीं तोड़ा जा सकता है - एक उदाहरण एक बार का पैड है - लेकिन इन योजनाओं को लागू करना सैद्धांतिक रूप से भंग करने योग्य लेकिन कम्प्यूटेशनल रूप से सुरक्षित तंत्र की तुलना में अधिक कठिन है।
आधुनिक युग से पहले क्रिप्टोग्राफी प्रभावी रूप से [[कूटलेखन|कूटलेखन, स्पष्ट]] [[बकवास|अनर्थक]] सूचना का पठनीय स्थिति से रूपांतरण, का पर्यायवाची था। एन्क्रिप्टेड संदेश के प्रवर्तक ने मूल जानकारी को पुनर्प्राप्त करने के लिए आवश्यक डिकोडिंग तकनीक को केवल इच्छित प्राप्तकर्ताओं के साथ साझा किया, जिससे अवांछित व्यक्तियों को ऐसा करने से रोका जा सके। प्रथम विश्व युद्ध और कंप्यूटर के आगमन के बाद से, क्रिप्टोलॉजी करने के लिए उपयोग की जाने वाली विधियाँ तेजी से जटिल हो गई हैं और इसका अनुप्रयोग अधिक व्यापक हो गया है।
 
आधुनिक क्रिप्टोग्राफी काफी हद तक गणितीय सिद्धांत और कंप्यूटर विज्ञान के अभ्यास पर आधारित है; क्रिप्टोग्राफ़िक एल्गोरिदम को कम्प्यूटेशनल कठोरता मान्यताओं के आसपास डिज़ाइन किया गया है, ऐसे एल्गोरिदम को किसी भी [[विरोधी (क्रिप्टोग्राफी)|प्रतिपक्षी]] द्वारा व्यवहार में तोड़ना कठिन बना दिया गया है। इस तरह की प्रणाली को तोड़ना सैद्धांतिक रूप से संभव है, लेकिन किसी ज्ञात व्यावहारिक माध्यम से ऐसा करना संभव नहीं है। इसलिए इन योजनाओं को कम्प्यूटेशनल रूप से सुरक्षित कहा जाता है; सैद्धांतिक प्रगति, उदाहरण के लिए, पूर्णांक गुणनखंड एल्गोरिदम में सुधार, और तेज़ कंप्यूटिंग तकनीक के लिए इन समाधानों को लगातार अनुकूलित करने की आवश्यकता होती है। [[सूचना सैद्धांतिक सुरक्षा]] मौजूद है। सूचना-सैद्धांतिक रूप से सुरक्षित योजनाएं हैं जो असीमित कंप्यूटिंग शक्ति के साथ भी नहीं तोड़ी जा सकती हैं - एक उदाहरण वन-टाइम पैड है - लेकिन इन योजनाओं को लागू करना, सैद्धांतिक रूप से भंग करने योग्य लेकिन कम्प्यूटेशनल रूप से सुरक्षित तंत्र की तुलना में अधिक कठिन है।


== लाइन कोडिंग ==
== लाइन कोडिंग ==
{{main|Line code}}
{{main|लाइन कोड}}
एक लाइन कोड (जिसे डिजिटल [[बेसबैंड]] मॉड्यूलेशन या डिजिटल बेसबैंड ट्रांसमिशन विधि भी कहा जाता है) बेसबैंड ट्रांसमिशन (दूरसंचार) उद्देश्यों के लिए [[संचार प्रणाली]] के भीतर उपयोग के लिए चुना गया कोड है। लाइन कोडिंग का उपयोग अक्सर डिजिटल डेटा ट्रांसपोर्ट के लिए किया जाता है।
 
लाइन कोड (जिसे डिजिटल [[बेसबैंड]] मॉड्यूलेशन या डिजिटल बेसबैंड ट्रांसमिशन विधि भी कहा जाता है) बेसबैंड ट्रांसमिशन उद्देश्यों के लिए [[संचार प्रणाली]] के भीतर उपयोग के लिए चुना गया कोड है। लाइन कोडिंग का उपयोग अक्सर डिजिटल डेटा ट्रांसपोर्ट के लिए किया जाता है।


लाइन कोडिंग में [[डिजिटल सिग्नल (इलेक्ट्रॉनिक्स)]] का प्रतिनिधित्व एक आयाम- और समय-असतत सिग्नल द्वारा किया जाता है जो भौतिक चैनल (और प्राप्त करने वाले उपकरण) के विशिष्ट गुणों के लिए इष्टतम रूप से ट्यून किया जाता है। ट्रांसमिशन लिंक पर डिजिटल डेटा के 1s और 0s का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले वोल्टेज या करंट के [[तरंग]] पैटर्न को लाइन एन्कोडिंग कहा जाता है। लाइन एन्कोडिंग के सामान्य प्रकार यूनि[[ध्रुवीय कोडिंग]], पोलर एन्कोडिंग, [[द्विध्रुवी एन्कोडिंग]] और [[मैनचेस्टर एन्कोडिंग]] हैं।
लाइन कोडिंग में [[डिजिटल सिग्नल (इलेक्ट्रॉनिक्स)|डिजिटल सिग्नल]] का प्रतिनिधित्व आयाम- और समय-असतत सिग्नल द्वारा किया जाता है जो भौतिक माध्यम (और प्राप्त करने वाले उपकरण) के विशिष्ट गुणों के लिए इष्टतम रूप से ट्यून किया जाता है। संचरण कड़ी पर डिजिटल डेटा के 1s और 0s का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले वोल्टेज या करंट के [[तरंग]] पैटर्न को लाइन एन्कोडिंग कहा जाता है। लाइन एन्कोडिंग के सामान्य प्रकार एकल[[ध्रुवीय कोडिंग|ध्रुवीय एन्कोडिंग]], पोलर एन्कोडिंग, [[द्विध्रुवी एन्कोडिंग]] और [[मैनचेस्टर एन्कोडिंग]] हैं।


== कोडिंग सिद्धांत के अन्य अनुप्रयोग ==
== कोडिंग थ्योरी के अन्य अनुप्रयोग ==
{{misleading|date=August 2012}}
कोडिंग थ्योरी की एक और चिंता कोड डिजाइन करना है जो [[तादात्म्य|तुल्यकालन]] में मदद करती है। कोड डिज़ाइन किया जा सकता है ताकि फेज शिफ्ट को आसानी से पता लगाया जा सके और ठीक किया जा सके और एक ही माध्यम पर कई सिग्नल भेजे जा सकें।
कोडिंग सिद्धांत की एक और चिंता कोड डिजाइन करना है जो [[तादात्म्य]] में मदद करती है। एक कोड डिज़ाइन किया जा सकता है ताकि एक चरण (तरंगों) को आसानी से पता लगाया जा सके और ठीक किया जा सके और एक ही चैनल पर कई सिग्नल भेजे जा सकें।{{Citation needed|date=July 2008}}
कोड का एक अन्य अनुप्रयोग, जिसका उपयोग कुछ मोबाइल फोन प्रणालियों में किया जाता है, [[कोड डिवीजन मल्टीपल एक्सेस]] (सीडीएमए) है। प्रत्येक फोन को एक कोड अनुक्रम दिया जाता है जो अन्य फोन के कोड से लगभग असंबद्ध होता है।{{Citation needed|date=July 2008}} संचारण करते समय, ध्वनि संदेश का प्रतिनिधित्व करने वाले डेटा बिट्स को संशोधित करने के लिए कोड शब्द का उपयोग किया जाता है। रिसीवर पर, डेटा को पुनर्प्राप्त करने के लिए एक डिमॉड्यूलेशन प्रक्रिया की जाती है। कोड के इस वर्ग के गुण कई उपयोगकर्ताओं (विभिन्न कोडों के साथ) को एक ही समय में एक ही रेडियो चैनल का उपयोग करने की अनुमति देते हैं। रिसीवर के लिए, अन्य उपयोगकर्ताओं के सिग्नल डेमोडुलेटर को केवल निम्न-स्तर के शोर के रूप में दिखाई देंगे।{{Citation needed|date=July 2008}}
कोड का एक अन्य सामान्य वर्ग स्वचालित रिपीट-रिक्वेस्ट (ARQ) कोड हैं। इन कोडों में प्रेषक प्रत्येक संदेश में त्रुटि जाँच के लिए अतिरेक जोड़ता है, आमतौर पर चेक बिट्स जोड़कर। यदि चेक बिट आने पर बाकी संदेश के अनुरूप नहीं है, तो रिसीवर प्रेषक से संदेश को फिर से भेजने के लिए कहेगा। सरलतम [[वाइड एरिया नेटवर्क]] प्रोटोकॉल को छोड़कर सभी ARQ का उपयोग करते हैं। सामान्य प्रोटोकॉल में [[तुल्यकालिक डेटा लिंक नियंत्रण]] (IBM), [[ट्रांसमिशन कंट्रोल प्रोटोकॉल]] (इंटरनेट), X.25 (इंटरनेशनल) और कई अन्य शामिल हैं। एक नए पैकेट के खिलाफ एक अस्वीकृत पैकेट के मिलान की समस्या के कारण इस विषय पर शोध का एक व्यापक क्षेत्र है। क्या यह नया है या यह एक पुन: प्रसारण है? आमतौर पर नंबरिंग स्कीम का इस्तेमाल किया जाता है, जैसा कि टीसीपी में