उपसर्ग कोड: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
उपसर्ग [[कोड]] प्रकार का कोड सिस्टम है जो उपसर्ग संपत्ति के कब्जे से अलग होता है, जिसके लिए आवश्यक है कि सिस्टम में कोई संपूर्ण [[कोड शब्द]] न हो जो सिस्टम में किसी अन्य कोड शब्द का [[उपसर्ग (कंप्यूटर विज्ञान)]] (प्रारंभिक खंड) हो। यह निश्चित-लंबाई कोड के लिए तुच्छ रूप से सत्य है, इसलिए केवल [[चर-लंबाई कोड]] में विचार का बिंदु है।
'''उपसर्ग [[कोड]]''' प्रकार का कोड प्रणाली होती है जो उपसर्ग गुण के अधिकार से पृथक होता है, जिसके लिए आवश्यक होता है कि प्रणाली में कोई संपूर्ण [[कोड शब्द]] न हो जो प्रणाली में किसी अन्य कोड शब्द का [[उपसर्ग (कंप्यूटर विज्ञान)|उपसर्ग]] (प्रारंभिक खंड) हो। यह निश्चित-लंबाई कोड के लिए तुच्छ रूप से सत्य है, इसलिए मात्र [[चर-लंबाई कोड]] में विचार का बिंदु होता है।


उदाहरण के लिए, कोड शब्द {9, 55} वाले कोड में उपसर्ग गुण होता है; {9,5,59,55} वाला कोड ऐसा नहीं करता, क्योंकि 5, 59 का उपसर्ग है और 55 का भी। उपसर्ग कोड [[विशिष्ट रूप से डिकोड करने योग्य कोड]] है: पूर्ण और सटीक अनुक्रम दिए जाने पर, रिसीवर शब्दों के बीच विशेष मार्कर की आवश्यकता के बिना प्रत्येक शब्द की पहचान कर सकता है। हालाँकि, विशिष्ट रूप से डिकोड करने योग्य कोड हैं जो उपसर्ग कोड नहीं हैं; उदाहरण के लिए, उपसर्ग कोड का उल्टा अभी भी विशिष्ट रूप से डिकोड करने योग्य है (यह प्रत्यय कोड है), लेकिन यह जरूरी नहीं कि यह उपसर्ग कोड हो।
उदाहरण के लिए, कोड शब्द {9, 55} वाले कोड में उपसर्ग गुण होता है; परन्तु  {9,5,59,55} वाला कोड ऐसा नहीं करता, क्योंकि वह 5, 59 और 55 का एक उपसर्ग होता है। उपसर्ग कोड [[विशिष्ट रूप से डिकोड करने योग्य कोड]] होता है: पूर्ण और स्पष्ट अनुक्रम दिए जाने पर, प्राप्तकर्ता शब्दों के मध्य विशेष चिह्नक की आवश्यकता के बिना प्रत्येक शब्द की पहचान कर सकता है। यघपि, विशिष्ट रूप से डिकोड करने योग्य कोड होता हैं जो उपसर्ग कोड नहीं होता हैं; उदाहरण के लिए, उपसर्ग कोड का विपरीत अभी भी विशिष्ट रूप से डिकोड करने योग्य होता है (यह प्रत्यय कोड होता है), परन्तु यह आवश्य नहीं कि यह उपसर्ग कोड हो।


उपसर्ग कोड को उपसर्ग-मुक्त कोड, उपसर्ग स्थिति कोड और तात्कालिक कोड के रूप में भी जाना जाता है। हालाँकि [[हफ़मैन कोडिंग]] उपसर्ग कोड प्राप्त करने के लिए कई एल्गोरिदम में से है, उपसर्ग कोड को व्यापक रूप से हफ़मैन कोड के रूप में भी जाना जाता है, तब भी जब कोड हफ़मैन एल्गोरिथ्म द्वारा निर्मित नहीं किया गया था। अल्पविराम-मुक्त कोड शब्द को कभी-कभी उपसर्ग-मुक्त कोड के पर्याय के रूप में भी प्रयोग किया जाता है<ref>US [[Federal Standard 1037C]]</ref><ref>{{citation|title=ATIS Telecom Glossary 2007|url=http://www.atis.org/glossary/definition.aspx?id=6416|access-date=December 4, 2010}}</ref> लेकिन अधिकांश गणितीय पुस्तकों और लेखों में (उदा.<ref>{{citation|last1=Berstel|first1=Jean|last2=Perrin|first2=Dominique|title=Theory of Codes|publisher=Academic Press|year=1985}}</ref><ref>{{citation|doi=10.4153/CJM-1958-023-9|last1=Golomb|first1=S. W.|author1-link=Solomon W. Golomb|last2=Gordon|first2=Basil|author2-link=Basil Gordon|last3=Welch|first3=L. R.|title=Comma-Free Codes|journal=Canadian Journal of Mathematics|volume=10|issue=2|pages=202–209|year=1958|s2cid=124092269 |url=https://books.google.com/books?id=oRgtS14oa-sC&pg=PA202|doi-access=free}}</ref>) अल्पविराम-मुक्त कोड का उपयोग [[स्व-सिंक्रनाइज़िंग कोड]], उपसर्ग कोड के उपवर्ग के लिए किया जाता है।
उपसर्ग कोड को '''उपसर्ग-मुक्त कोड''', '''उपसर्ग स्थिति कोड''' और '''तात्कालिक कोड''' के रूप में भी जाना जाता है। यघपि  [[हफ़मैन कोडिंग]] उपसर्ग कोड प्राप्त करने के लिए कई कलन विधि में से होता है, उपसर्ग कोड को व्यापक रूप से हफ़मैन कोड के रूप में भी जाना जाता है, तब भी जब कोड हफ़मैन कलन विधि द्वारा निर्मित नहीं किया गया था। '''अल्पविराम-मुक्त कोड''' शब्द को कभी-कभी उपसर्ग-मुक्त कोड के पर्याय के रूप में भी प्रयोग किया जाता है<ref>US [[Federal Standard 1037C]]</ref><ref>{{citation|title=ATIS Telecom Glossary 2007|url=http://www.atis.org/glossary/definition.aspx?id=6416|access-date=December 4, 2010}}</ref> लेकिन अधिकांश गणितीय पुस्तकों और लेखों में (उदा.<ref>{{citation|last1=Berstel|first1=Jean|last2=Perrin|first2=Dominique|title=Theory of Codes|publisher=Academic Press|year=1985}}</ref><ref>{{citation|doi=10.4153/CJM-1958-023-9|last1=Golomb|first1=S. W.|author1-link=Solomon W. Golomb|last2=Gordon|first2=Basil|author2-link=Basil Gordon|last3=Welch|first3=L. R.|title=Comma-Free Codes|journal=Canadian Journal of Mathematics|volume=10|issue=2|pages=202–209|year=1958|s2cid=124092269 |url=https://books.google.com/books?id=oRgtS14oa-sC&pg=PA202|doi-access=free}}</ref>) अल्पविराम-मुक्त कोड का उपयोग [[स्व-सिंक्रनाइज़िंग कोड]], उपसर्ग कोड के उपवर्ग के लिए किया जाता है।


उपसर्ग कोड का उपयोग करके, संदेश को बिना किसी [[आउट-ऑफ़-बैंड डेटा]] | आउट-ऑफ-बैंड मार्कर या (वैकल्पिक रूप से) शब्दों के बीच विशेष मार्करों के बिना संदेश में शब्दों को फ्रेम करने (दूरसंचार) के रूप में प्रसारित किया जा सकता है। . प्राप्तकर्ता वैध कोड शब्द बनाने वाले अनुक्रमों को बार-बार ढूंढकर और हटाकर, संदेश को स्पष्ट रूप से डिकोड कर सकता है। यह आम तौर पर उन कोडों के साथ संभव नहीं है जिनमें उपसर्ग गुण का अभाव होता है, उदाहरण के लिए {0,1,10,11}: कोड शब्द की शुरुआत में 1 पढ़ने वाला रिसीवर यह नहीं जान पाएगा कि क्या वह पूरा कोड शब्द 1 था, या केवल कोड शब्द 10 या 11 का उपसर्ग; इसलिए स्ट्रिंग 10 की व्याख्या या तो एकल कोडवर्ड के रूप में या 1 और फिर 0 शब्दों के संयोजन के रूप में की जा सकती है।
उपसर्ग कोड का उपयोग करके, संदेश को बिना किसी [[आउट-ऑफ़-बैंड डेटा]] चिह्नक या (वैकल्पिक रूप से) शब्दों के मध्य विशेष चिह्नकों के बिना संदेश में शब्दों को फ्रेम करने (दूरसंचार) के रूप में प्रसारित किया जा सकता है। प्राप्तकर्ता वैध कोड शब्द बनाने वाले अनुक्रमों को बार-बार ढूंढकर और हटाकर, संदेश को स्पष्ट रूप से डिकोड कर सकता है। यह सामान्यतः उन कोडों के साथ संभव नहीं होता है जिनमें उपसर्ग गुण का अभाव होता है, उदाहरण के लिए {0,1,10,11}: कोड शब्द प्रारम्भ में 1 पढ़ने वाला प्राप्तकर्ता यह नहीं जान पाएगा कि क्या वह पूरा कोड शब्द 1 था, या मात्र  कोड शब्द 10 या 11 का उपसर्ग था; इसलिए स्ट्रिंग 10 की व्याख्या या तो एकल कोडवर्ड के रूप में या 1 और फिर 0 शब्दों के संयोजन के रूप में की जा सकती है।


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


उपसर्ग कोड त्रुटि-सुधार करने वाले कोड नहीं हैं। व्यवहार में, संदेश को पहले उपसर्ग कोड के साथ संपीड़ित किया जा सकता है, और फिर ट्रांसमिशन से पहले [[चैनल कोडिंग]] (त्रुटि सुधार सहित) के साथ फिर से एन्कोड किया जा सकता है।
उपसर्ग कोड त्रुटि-सुधार करने वाले कोड नहीं होते हैं। व्यवहार में, संदेश को पहले उपसर्ग कोड के साथ संपीड़ित किया जा सकता है, और फिर संचरण से पहले [[चैनल कोडिंग]] (त्रुटि सुधार सहित) के साथ फिर से एन्कोड किया जा सकता है।


किसी भी वेरिएबल-लेंथ_कोड#Uniquely_decodable_codes कोड के लिए उपसर्ग कोड होता है जिसकी कोड शब्द लंबाई समान होती है।<ref name=LTU2015>Le Boudec, Jean-Yves, Patrick Thiran, and Rüdiger Urbanke. Introduction aux sciences de l'information: entropie, compression, chiffrement et correction d'erreurs. PPUR Presses polytechniques, 2015.</ref> क्राफ्ट की असमानता कोड शब्द लंबाई के सेट की विशेषता बताती है जो वेरिएबल-लेंथ_कोड#यूनीकली_डिकोडेबल_कोड कोड में संभव है।<ref name=BRS75>Berstel et al (2010) p.75</ref>
किसी भी वेरिएबल-लेंथ कोड के लिए उपसर्ग कोड होता है जिसकी कोड शब्द लंबाई समान होती है।<ref name=LTU2015>Le Boudec, Jean-Yves, Patrick Thiran, and Rüdiger Urbanke. Introduction aux sciences de l'information: entropie, compression, chiffrement et correction d'erreurs. PPUR Presses polytechniques, 2015.</ref> क्राफ्ट की असमानता कोड शब्द लंबाई के समुच्चय की विशेषता बताती है जो विशिष्ट रूप से डिकोड करने योग्य कोड में संभव होता है।<ref name=BRS75>Berstel et al (2010) p.75</ref>


== तकनीक ==
== तकनीक ==
यदि कोड में प्रत्येक शब्द की लंबाई समान है, तो कोड को निश्चित-लंबाई कोड, या [[ब्लॉक कोड]] कहा जाता है (हालांकि ब्लॉक कोड शब्द का उपयोग चैनल कोडिंग में निश्चित आकार के [[त्रुटि-सुधार कोड]] के लिए भी किया जाता है)। उदाहरण के लिए, [[ISO 8859-15]] अक्षर हमेशा 8 बिट लंबे होते हैं। UTF-32/UCS-4 अक्षर हमेशा 32 बिट लंबे होते हैं।[[ अतुल्यकालिक अंतरण विधा |अतुल्यकालिक अंतरण विधा]] हमेशा 424 बिट्स (53 बाइट्स) लंबा होता है। निश्चित लंबाई ''k'' बिट्स का निश्चित-लंबाई कोड तक एनकोड कर सकता है <math>2^{k}</math> स्रोत प्रतीक.
यदि कोड में प्रत्येक शब्द की लंबाई समान होती है, तो कोड को '''निश्चित-लंबाई कोड''', या [[ब्लॉक कोड|'''ब्लॉक कोड''']] कहा जाता है (यघपि ब्लॉक कोड शब्द का उपयोग चैनल कोडिंग में निश्चित आकार के [[त्रुटि-सुधार कोड]] के लिए भी किया जाता है)। उदाहरण के लिए, [[ISO 8859-15]] अक्षर हमेशा 8 बिट लंबे होते हैं। UTF-32/UCS-4 अक्षर हमेशा 32 बिट लंबे होते हैं।[[ अतुल्यकालिक अंतरण विधा |अतुल्यकालिक अंतरण विधा]] हमेशा 424 बिट्स (53 बाइट्स) लंबा होता है। निश्चित लंबाई ''k'' बिट्स का निश्चित-लंबाई कोड <math>2^{k}</math> स्रोत प्रतीक तक एनकोड कर सकता है।


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


[[ संक्षिप्त बाइनरी एन्कोडिंग | संक्षिप्त बाइनरी एन्कोडिंग]] उन मामलों से निपटने के लिए निश्चित-लंबाई कोड का सीधा सामान्यीकरण है जहां प्रतीकों की संख्या n दो की शक्ति नहीं है। स्रोत प्रतीकों को लंबाई k और k+1 के कोडवर्ड दिए गए हैं, जहां k को चुना गया है ताकि 2<sup></sup> < n ≤ 2<sup>k+1</sup>.
[[ संक्षिप्त बाइनरी एन्कोडिंग | संक्षिप्त बाइनरी एन्कोडिंग]] उन स्थितियों से सुलझाने के लिए निश्चित-लंबाई कोड का सीधा सामान्यीकरण होता है जहां प्रतीकों की संख्या n दो की शक्ति नहीं होती  है। स्रोत प्रतीकों को लंबाई k और k+1 के कोडवर्ड दिए गए हैं, जहां k क चयन किया जाता है जिससे ''2<sup>k</sup> < n ≤ 2<sup>k+1</sup>'' होता है। .


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


कुछ कोड किसी कोड शब्द के अंत को विशेष अल्पविराम चिह्न (जिसे सेंटिनल मान भी कहा जाता है) से चिह्नित करते हैं, जो सामान्य डेटा से भिन्न होता है।<ref>[http://www.imperial.ac.uk/research/hep/group/theses/JJones.pdf "Development of Trigger and Control Systems for CMS"] by J. A. Jones: "Synchronisation" p. 70</ref> यह कुछ हद तक वाक्य में शब्दों के बीच रिक्त स्थान के समान है; वे चिन्हित करते हैं कि शब्द कहाँ समाप्त होता है और दूसरा कहाँ से शुरू होता है। यदि प्रत्येक कोड शब्द अल्पविराम में समाप्त होता है, और अल्पविराम कोड शब्द में कहीं और प्रकट नहीं होता है, तो कोड स्वचालित रूप से उपसर्ग-मुक्त होता है। हालाँकि, पूरे प्रतीक को केवल अल्पविराम के रूप में उपयोग के लिए आरक्षित करना अक्षम्य हो सकता है, विशेष रूप से कम संख्या में प्रतीकों वाली भाषाओं के लिए। [[मोर्स कोड]] अल्पविराम के साथ चर-लंबाई कोड का रोजमर्रा का उदाहरण है। अक्षरों के बीच लंबे समय तक रुकने और शब्दों के बीच उससे भी लंबे समय तक रुकने से लोगों को यह पहचानने में मदद मिलती है कि अक्षर (या शब्द) कहां समाप्त होता है और दूसरा कहां शुरू होता है। इसी तरह, [[फाइबोनैचि कोडिंग]] प्रत्येक कोड शब्द के अंत को चिह्नित करने के लिए 11 का उपयोग करती है।
कुछ कोड किसी कोड शब्द के अंत को विशेष अल्पविराम चिह्न (जिसे सेंटिनल मान भी कहा जाता है) से चिह्नित करते हैं, जो सामान्य डेटा से भिन्न होता है।<ref>[http://www.imperial.ac.uk/research/hep/group/theses/JJones.pdf "Development of Trigger and Control Systems for CMS"] by J. A. Jones: "Synchronisation" p. 70</ref> यह कुछ सीमा तक वाक्य में शब्दों के मध्य रिक्त स्थान के समान होता है; वे चिन्हित करते हैं कि शब्द कहाँ समाप्त होता है और दूसरा कहाँ से प्रारम्भ होता है। यदि प्रत्येक कोड शब्द अल्पविराम में समाप्त होता है, और अल्पविराम कोड शब्द में कहीं और प्रकट नहीं होता है, तो कोड स्वचालित रूप से उपसर्ग-मुक्त होता है। यघपि, पूरे प्रतीक को मात्र अल्पविराम के रूप में उपयोग के लिए आरक्षित करना अक्षम्य हो सकता है, विशेष रूप से कम संख्या में प्रतीकों वाली भाषाओं के लिए। [[मोर्स कोड]] अल्पविराम के साथ चर-लंबाई कोड का रोजमर्रा का उदाहरण होता है। अक्षरों के मध्य  लंबे समय तक रुकने और शब्दों के मध्य उससे भी लंबे समय तक रुकने से लोगों को यह पहचानने में सहायता मिलती है कि अक्षर (या शब्द) कहां समाप्त होता है और दूसरा कहां प्रारम्भ होता है। इसी तरह, [[फाइबोनैचि कोडिंग]] प्रत्येक कोड शब्द के अंत को चिह्नित करने के लिए 11 का उपयोग करती है।


स्व-सिंक्रोनाइज़िंग कोड उपसर्ग कोड होते हैं जो [[फ्रेम तुल्यकालन]] की अनुमति देते हैं।
स्व-सिंक्रोनाइज़िंग कोड उपसर्ग कोड होते हैं जो [[फ्रेम तुल्यकालन]] की अनुमति देते हैं।


==संबंधित अवधारणाएँ==
==संबंधित अवधारणाएँ==
प्रत्यय कोड शब्दों का समूह है जिनमें से कोई भी किसी अन्य का प्रत्यय नहीं है; समकक्ष रूप से, शब्दों का समूह जो उपसर्ग कोड के विपरीत होता है। उपसर्ग कोड की तरह, ऐसे शब्दों के संयोजन के रूप में स्ट्रिंग का प्रतिनिधित्व अद्वितीय है। बिफ़िक्स कोड शब्दों का समूह है जो उपसर्ग और प्रत्यय कोड दोनों है।<ref name=BPR58>Berstel et al (2010) p.58</ref>
'''प्रत्यय कोड''' शब्दों का समूह होता है जिनमें से कोई भी किसी अन्य का प्रत्यय नहीं होता है; समकक्ष रूप से, शब्दों का समूह जो उपसर्ग कोड के विपरीत होता है। उपसर्ग कोड की तरह, ऐसे शब्दों के संयोजन के रूप में स्ट्रिंग का प्रतिनिधित्व अद्वितीय होता है। '''बिफ़िक्स कोड''' शब्दों का समूह होता है जो उपसर्ग और प्रत्यय कोड दोनों में उपस्थिति होता है।<ref name=BPR58>Berstel et al (2010) p.58</ref>
इष्टतम उपसर्ग कोड न्यूनतम औसत लंबाई वाला उपसर्ग कोड होता है। यानि की वर्णमाला मान लीजिये {{mvar|n}}संभावनाओं वाले प्रतीक <math>p(A_i)</math> उपसर्ग कोड के लिए {{mvar|C}}. अगर {{mvar|C'}} अन्य उपसर्ग कोड है और <math>\lambda'_i</math> के कोडवर्ड की लंबाई हैं {{mvar|C'}}, तब <math>\sum_{i=1}^n { \lambda_i p(A_i) } \leq \sum_{i=1}^n { \lambda'_i p(A_i) } \!</math>.<ref>[http://www.cim.mcgill.ca/~langer/423/lecture2.pdf McGill COMP 423 Lecture notes]</ref>


== उपसर्ग कोड आज उपयोग में हैं ==
मान लीजिये की वर्णमाला '''श्रेष्ट उपसर्ग कोड''' न्यूनतम औसत लंबाई वाला उपसर्ग कोड होता है। अर्थात {{mvar|n}} संभावनाओं वाले प्रतीक <math>p(A_i)</math> उपसर्ग कोड के लिए {{mvar|C}} होता है। अगर {{mvar|C'}} अन्य उपसर्ग कोड होता है और <math>\lambda'_i</math> के कोडवर्ड की लंबाई हैं {{mvar|C'}} होती है, तब <math>\sum_{i=1}^n { \lambda_i p(A_i) } \leq \sum_{i=1}^n { \lambda'_i p(A_i) } \!</math> होता है। <ref>[http://www.cim.mcgill.ca/~langer/423/lecture2.pdf McGill COMP 423 Lecture notes]</ref>
उपसर्ग कोड के उदाहरणों में शामिल हैं:
 
== उपसर्ग कोड आज उपयोग में होता हैं ==
उपसर्ग कोड के उदाहरणों में सम्मिलित होता हैं:
* चर-लंबाई हफ़मैन कोडिंग
* चर-लंबाई हफ़मैन कोडिंग
* देश कॉलिंग कोड
* कंट्री कॉलिंग कोड
* चेन-हो एन्कोडिंग
* चेन-हो एन्कोडिंग
* आईएसबीएन का देश और प्रकाशक भाग
* आईएसबीएन का कंट्री और प्रकाशक भाग
* UMTS W-CDMA 3G वायरलेस स्टैंडर्ड में प्रयुक्त सेकेंडरी सिंक्रोनाइज़ेशन कोड
* UMTS W-CDMA 3G वायरलेस स्टैंडर्ड में प्रयुक्त सेकेंडरी सिंक्रोनाइज़ेशन कोड
* [[वीसीआर प्लस]]|वीसीआर प्लस+ कोड
* [[वीसीआर प्लस]] + कोड
* [[यूनिकोड]] परिवर्तन प्रारूप, विशेष रूप से यूनिकोड वर्णों को एन्कोड करने के लिए [[यूटीएफ-8]] -8 प्रणाली, जो उपसर्ग-मुक्त कोड और स्व-सिंक्रनाइज़िंग कोड दोनों है<ref>{{cite web
* [[यूनिकोड]] परिवर्तन प्रारूप, विशेष रूप से यूनिकोड वर्णों को एन्कोड करने के लिए [[यूटीएफ-8]] -8 प्रणाली होती है, जो उपसर्ग-मुक्त कोड और स्व-सिंक्रनाइज़िंग कोड दोनों में होती है<ref>{{cite web
  | url = http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
  | url = http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt
  | title = UTF-8 history
  | title = UTF-8 history
Line 48: Line 49:


===तकनीक===
===तकनीक===
उपसर्ग कोड के निर्माण के लिए आम तौर पर उपयोग की जाने वाली तकनीकों में हफ़मैन कोडिंग और पहले के शैनन-फ़ानो कोडिंग|शैनन-फ़ानो कोड, और [[यूनिवर्सल कोड (डेटा संपीड़न)]] शामिल हैं जैसे:
उपसर्ग कोड के निर्माण के लिए सामान्यतः उपयोग की जाने वाली तकनीकों में हफ़मैन कोडिंग और पहले के शैनन-फ़ानो कोडिंग, और [[यूनिवर्सल कोड (डेटा संपीड़न)]] सम्मिलित होते हैं जैसे:
* [[इलियास डेल्टा कोडिंग]]
* [[इलियास डेल्टा कोडिंग]]
* [[इलियास गामा कोडिंग]]
* [[इलियास गामा कोडिंग]]
Line 56: Line 57:
* [[यूनरी कोडिंग]]
* [[यूनरी कोडिंग]]
* [[गोलोम्ब राइस कोड]]
* [[गोलोम्ब राइस कोड]]
* [[ फैला हुआ बिसात | फैला हुआ बिसात]] (सरल क्रिप्टोग्राफी तकनीक जो उपसर्ग कोड उत्पन्न करती है)
* [[ फैला हुआ बिसात | विसारित चेकरबोर्ड]] (सरल क्रिप्टोग्राफी तकनीक जो उपसर्ग कोड उत्पन्न करती है)
* बाइनरी कोडिंग<ref>{{citation|doi=10.25209/2079-3316-2018-9-4-239-252|last1=Shevchuk|first1=Y. V.|author1-link=Yury V. Shevchuk|title=Vbinary: variable length integer coding revisited|journal=Program Systems: Theory and Applications|volume=9|issue=4|pages=239–252|year=2018|url=http://psta.psiras.ru//read/psta2018_4_239-252.pdf|doi-access=free}}</ref>
* बाइनरी कोडिंग<ref>{{citation|doi=10.25209/2079-3316-2018-9-4-239-252|last1=Shevchuk|first1=Y. V.|author1-link=Yury V. Shevchuk|title=Vbinary: variable length integer coding revisited|journal=Program Systems: Theory and Applications|volume=9|issue=4|pages=239–252|year=2018|url=http://psta.psiras.ru//read/psta2018_4_239-252.pdf|doi-access=free}}</ref>



Revision as of 00:31, 15 July 2023

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

उदाहरण के लिए, कोड शब्द {9, 55} वाले कोड में उपसर्ग गुण होता है; परन्तु {9,5,59,55} वाला कोड ऐसा नहीं करता, क्योंकि वह 5, 59 और 55 का एक उपसर्ग होता है। उपसर्ग कोड विशिष्ट रूप से डिकोड करने योग्य कोड होता है: पूर्ण और स्पष्ट अनुक्रम दिए जाने पर, प्राप्तकर्ता शब्दों के मध्य विशेष चिह्नक की आवश्यकता के बिना प्रत्येक शब्द की पहचान कर सकता है। यघपि, विशिष्ट रूप से डिकोड करने योग्य कोड होता हैं जो उपसर्ग कोड नहीं होता हैं; उदाहरण के लिए, उपसर्ग कोड का विपरीत अभी भी विशिष्ट रूप से डिकोड करने योग्य होता है (यह प्रत्यय कोड होता है), परन्तु यह आवश्य नहीं कि यह उपसर्ग कोड हो।

उपसर्ग कोड को उपसर्ग-मुक्त कोड, उपसर्ग स्थिति कोड और तात्कालिक कोड के रूप में भी जाना जाता है। यघपि हफ़मैन कोडिंग उपसर्ग कोड प्राप्त करने के लिए कई कलन विधि में से होता है, उपसर्ग कोड को व्यापक रूप से हफ़मैन कोड के रूप में भी जाना जाता है, तब भी जब कोड हफ़मैन कलन विधि द्वारा निर्मित नहीं किया गया था। अल्पविराम-मुक्त कोड शब्द को कभी-कभी उपसर्ग-मुक्त कोड के पर्याय के रूप में भी प्रयोग किया जाता है[1][2] लेकिन अधिकांश गणितीय पुस्तकों और लेखों में (उदा.[3][4]) अल्पविराम-मुक्त कोड का उपयोग स्व-सिंक्रनाइज़िंग कोड, उपसर्ग कोड के उपवर्ग के लिए किया जाता है।

उपसर्ग कोड का उपयोग करके, संदेश को बिना किसी आउट-ऑफ़-बैंड डेटा चिह्नक या (वैकल्पिक रूप से) शब्दों के मध्य विशेष चिह्नकों के बिना संदेश में शब्दों को फ्रेम करने (दूरसंचार) के रूप में प्रसारित किया जा सकता है। प्राप्तकर्ता वैध कोड शब्द बनाने वाले अनुक्रमों को बार-बार ढूंढकर और हटाकर, संदेश को स्पष्ट रूप से डिकोड कर सकता है। यह सामान्यतः उन कोडों के साथ संभव नहीं होता है जिनमें उपसर्ग गुण का अभाव होता है, उदाहरण के लिए {0,1,10,11}: कोड शब्द प्रारम्भ में 1 पढ़ने वाला प्राप्तकर्ता यह नहीं जान पाएगा कि क्या वह पूरा कोड शब्द 1 था, या मात्र कोड शब्द 10 या 11 का उपसर्ग था; इसलिए स्ट्रिंग 10 की व्याख्या या तो एकल कोडवर्ड के रूप में या 1 और फिर 0 शब्दों के संयोजन के रूप में की जा सकती है।

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

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

किसी भी वेरिएबल-लेंथ कोड के लिए उपसर्ग कोड होता है जिसकी कोड शब्द लंबाई समान होती है।[5] क्राफ्ट की असमानता कोड शब्द लंबाई के समुच्चय की विशेषता बताती है जो विशिष्ट रूप से डिकोड करने योग्य कोड में संभव होता है।[6]

तकनीक

यदि कोड में प्रत्येक शब्द की लंबाई समान होती है, तो कोड को निश्चित-लंबाई कोड, या ब्लॉक कोड कहा जाता है (यघपि ब्लॉक कोड शब्द का उपयोग चैनल कोडिंग में निश्चित आकार के त्रुटि-सुधार कोड के लिए भी किया जाता है)। उदाहरण के लिए, ISO 8859-15 अक्षर हमेशा 8 बिट लंबे होते हैं। UTF-32/UCS-4 अक्षर हमेशा 32 बिट लंबे होते हैं।अतुल्यकालिक अंतरण विधा हमेशा 424 बिट्स (53 बाइट्स) लंबा होता है। निश्चित लंबाई k बिट्स का निश्चित-लंबाई कोड स्रोत प्रतीक तक एनकोड कर सकता है।

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

संक्षिप्त बाइनरी एन्कोडिंग उन स्थितियों से सुलझाने के लिए निश्चित-लंबाई कोड का सीधा सामान्यीकरण होता है जहां प्रतीकों की संख्या n दो की शक्ति नहीं होती है। स्रोत प्रतीकों को लंबाई k और k+1 के कोडवर्ड दिए गए हैं, जहां k क चयन किया जाता है जिससे 2k < n ≤ 2k+1 होता है। .

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

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

स्व-सिंक्रोनाइज़िंग कोड उपसर्ग कोड होते हैं जो फ्रेम तुल्यकालन की अनुमति देते हैं।

संबंधित अवधारणाएँ

प्रत्यय कोड शब्दों का समूह होता है जिनमें से कोई भी किसी अन्य का प्रत्यय नहीं होता है; समकक्ष रूप से, शब्दों का समूह जो उपसर्ग कोड के विपरीत होता है। उपसर्ग कोड की तरह, ऐसे शब्दों के संयोजन के रूप में स्ट्रिंग का प्रतिनिधित्व अद्वितीय होता है। बिफ़िक्स कोड शब्दों का समूह होता है जो उपसर्ग और प्रत्यय कोड दोनों में उपस्थिति होता है।[8]

मान लीजिये की वर्णमाला श्रेष्ट उपसर्ग कोड न्यूनतम औसत लंबाई वाला उपसर्ग कोड होता है। अर्थात n संभावनाओं वाले प्रतीक उपसर्ग कोड के लिए C होता है। अगर C' अन्य उपसर्ग कोड होता है और के कोडवर्ड की लंबाई हैं C' होती है, तब होता है। [9]

उपसर्ग कोड आज उपयोग में होता हैं

उपसर्ग कोड के उदाहरणों में सम्मिलित होता हैं:

  • चर-लंबाई हफ़मैन कोडिंग
  • कंट्री कॉलिंग कोड
  • चेन-हो एन्कोडिंग
  • आईएसबीएन का कंट्री और प्रकाशक भाग
  • UMTS W-CDMA 3G वायरलेस स्टैंडर्ड में प्रयुक्त सेकेंडरी सिंक्रोनाइज़ेशन कोड
  • वीसीआर प्लस + कोड
  • यूनिकोड परिवर्तन प्रारूप, विशेष रूप से यूनिकोड वर्णों को एन्कोड करने के लिए यूटीएफ-8 -8 प्रणाली होती है, जो उपसर्ग-मुक्त कोड और स्व-सिंक्रनाइज़िंग कोड दोनों में होती है[10]
  • परिवर्तनीय-लंबाई मात्रा

तकनीक

उपसर्ग कोड के निर्माण के लिए सामान्यतः उपयोग की जाने वाली तकनीकों में हफ़मैन कोडिंग और पहले के शैनन-फ़ानो कोडिंग, और यूनिवर्सल कोड (डेटा संपीड़न) सम्मिलित होते हैं जैसे:

टिप्पणियाँ

  1. US Federal Standard 1037C
  2. ATIS Telecom Glossary 2007, retrieved December 4, 2010
  3. Berstel, Jean; Perrin, Dominique (1985), Theory of Codes, Academic Press
  4. Golomb, S. W.; Gordon, Basil; Welch, L. R. (1958), "Comma-Free Codes", Canadian Journal of Mathematics, 10 (2): 202–209, doi:10.4153/CJM-1958-023-9, S2CID 124092269
  5. Le Boudec, Jean-Yves, Patrick Thiran, and Rüdiger Urbanke. Introduction aux sciences de l'information: entropie, compression, chiffrement et correction d'erreurs. PPUR Presses polytechniques, 2015.
  6. Berstel et al (2010) p.75
  7. "Development of Trigger and Control Systems for CMS" by J. A. Jones: "Synchronisation" p. 70
  8. Berstel et al (2010) p.58
  9. McGill COMP 423 Lecture notes
  10. Pike, Rob (2003-04-03). "UTF-8 history".
  11. Shevchuk, Y. V. (2018), "Vbinary: variable length integer coding revisited" (PDF), Program Systems: Theory and Applications, 9 (4): 239–252, doi:10.25209/2079-3316-2018-9-4-239-252

संदर्भ


बाहरी संबंध