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

From Vigyanwiki
(Created page with "एक उपसर्ग कोड एक प्रकार का कोड सिस्टम है जो उपसर्ग संपत्ति के कब्...")
 
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>
किसी भी वेरिएबल-लेंथ_कोड#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>


== तकनीक ==
यदि कोड में प्रत्येक शब्द की लंबाई समान है, तो कोड को निश्चित-लंबाई कोड, या [[ब्लॉक कोड]] कहा जाता है (हालांकि ब्लॉक कोड शब्द का उपयोग चैनल कोडिंग में निश्चित आकार के [[त्रुटि-सुधार कोड]] के लिए भी किया जाता है)। उदाहरण के लिए, [[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>क</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>
 


==उपसर्ग कोड आज उपयोग में हैं==
== उपसर्ग कोड आज उपयोग में हैं ==
उपसर्ग कोड के उदाहरणों में शामिल हैं:
उपसर्ग कोड के उदाहरणों में शामिल हैं:
* चर-लंबाई हफ़मैन कोडिंग
* चर-लंबाई हफ़मैन कोडिंग
Line 40: Line 38:
* 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 58: Line 56:
* [[यूनरी कोडिंग]]
* [[यूनरी कोडिंग]]
* [[गोलोम्ब राइस कोड]]
* [[गोलोम्ब राइस कोड]]
* [[ फैला हुआ बिसात ]] (सरल क्रिप्टोग्राफी तकनीक जो उपसर्ग कोड उत्पन्न करती है)
* [[ फैला हुआ बिसात | फैला हुआ बिसात]] (सरल क्रिप्टोग्राफी तकनीक जो उपसर्ग कोड उत्पन्न करती है)
* बाइनरी कोडिंग<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>


 
== टिप्पणियाँ ==
==टिप्पणियाँ==
{{Reflist}}
{{Reflist}}


 
== संदर्भ ==
==संदर्भ==
* {{cite book | last1=Berstel | first1=Jean | last2=Perrin | first2=Dominique | last3=Reutenauer | first3=Christophe | title=Codes and automata | series=Encyclopedia of Mathematics and its Applications | volume=129 | location=Cambridge | publisher=[[Cambridge University Press]] | year=2010 | url=http://www-igm.univ-mlv.fr/~berstel/LivreCodes/Codes.html | isbn=978-0-521-88831-8 | zbl=1187.94001 }}
* {{cite book | last1=Berstel | first1=Jean | last2=Perrin | first2=Dominique | last3=Reutenauer | first3=Christophe | title=Codes and automata | series=Encyclopedia of Mathematics and its Applications | volume=129 | location=Cambridge | publisher=[[Cambridge University Press]] | year=2010 | url=http://www-igm.univ-mlv.fr/~berstel/LivreCodes/Codes.html | isbn=978-0-521-88831-8 | zbl=1187.94001 }}
* {{cite journal | last=Elias | first=Peter | author-link=Peter Elias | title=Universal codeword sets and representations of the integers | journal=IEEE Trans. Inf. Theory | volume=21 | number=2 | year=1975 | pages=194–203 | issn=0018-9448 | zbl=0298.94011 | doi=10.1109/tit.1975.1055349}}
* {{cite journal | last=Elias | first=Peter | author-link=Peter Elias | title=Universal codeword sets and representations of the integers | journal=IEEE Trans. Inf. Theory | volume=21 | number=2 | year=1975 | pages=194–203 | issn=0018-9448 | zbl=0298.94011 | doi=10.1109/tit.1975.1055349}}

Revision as of 23:16, 14 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 जी वायरलेस मानक में उपयोग किए जाने वाले माध्यमिक सिंक्रोनाइज़ेशन कोड, और अधिकांश कंप्यूटर माइक्रोआर्किटेक्चर के निर्देश सेट (मशीन भाषा) उपसर्ग कोड हैं।

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

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

तकनीक

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

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

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

संदर्भ


बाहरी संबंध