यह कोड विशिष्ट रूप से डिकोडेबल क्यों है?


21

स्रोत वर्णमाला:{a,b,c,d,e,f}

कोड वर्णमाला:{0,1}

  • a:0101
  • b:1001
  • c:10
  • d:000
  • e:11
  • f:100

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


10
उपसर्ग-मुक्त का तात्पर्य विशिष्ट रूप से डिकोडेबल है, लेकिन यह "यदि और केवल यदि" कथन नहीं है। उदाहरण के लिए, यहां देखें ।
डेकाए

ठीक है, मैं देख रहा हूं, लेकिन मेरी पाठ्य पुस्तक यह कहती है: कोड ए विशिष्ट रूप से डिकोडेबल है क्योंकि इसके रिवर्स में यह उपसर्ग है, इसलिए विशिष्ट रूप से डिकोडेबल क्या आप समझते हैं कि इसके रिवर्स से क्या मतलब है?
2000mroliver

1
संभवतः सभी कोडवर्ड को उल्टा करके प्राप्त किया गया कोड।
डेकाए

और ऐसा क्यों है कि विशिष्ट रूप से डिकोडेबल है, मुझे यह नहीं मिलता है
2000mroliver

1
cका एक उपसर्ग bऔर हो सकता है f, लेकिन जो प्रत्यय शेष हैं, वे कोड में मौजूद नहीं हैं। जब आप कोड को उल्टा करते हैं, तो प्रत्यय उपसर्ग बन जाते हैं, और फिर यह उपसर्ग मुक्त हो जाता है।
बरमार

जवाबों:


26

आपके कोड में यह गुण है कि यदि आप सभी कोडवर्ड को उलटते हैं, तो आपको एक उपसर्ग कोड मिलता है। इसका मतलब है कि आपका कोड विशिष्ट रूप से डिकोडेबल है।

वास्तव में, किसी भी कोड पर विचार करें जिसका रिवर्स विशिष्ट रूप से डिकोडेबल है। मेरा दावा है कि विशिष्ट रूप से डिकोडेबल भी है। ऐसा इसलिए है क्योंकि शब्दों में, कोडवर्ड में डिकम्पोज़िशन , के कोडवर्ड में साथ एक-से-एक पत्राचार में होते हैं । चूंकि उत्तरार्द्ध अद्वितीय हैं, इसलिए पूर्व हैं।C=x1,,xnCR:=x1R,,xnRC

w=xi1xim if and only if wR=ximRxi1R.
wCwRCR

चूंकि उपसर्ग कोड विशिष्ट रूप से डिकोडेबल होते हैं, इसलिए यह निम्न है कि एक उपसर्ग कोड का उल्टा भी विशिष्ट रूप से डिकोडेबल है। यह आपके उदाहरण में मामला है।

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

i=1n2|xi|1.

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

0,01,110.
111001001010

prefix00010011001110codeword001001
लॉन्ग रन रन नहीं बना सकते सभी को डिकोड किया जाए।1


2
ऐसा लगता है कि ओपी के उदाहरण में, हम अंकों की एक निश्चित राशि के बाद पहले कोडवर्ड को डिकोड नहीं कर सकते हैं, असीम रूप से कई मामले हैं: या 1001010101010101…तो हो सकता है, और हमें निर्णय लेने के लिए इनपुट के अंत तक इंतजार करना पड़ सकता है। fcccccc…caaa…
बरगी

1
यह भी लिए होता है । 1,10,00
युवल फिल्मस

4
@Bergi अंकों की किसी भी परिमित राशि के लिए यह हमेशा डिकोडेबल होता है। किसी भी अवशेष के बिना एन्कोडिंग को डिकोड करने का केवल एक ही तरीका है। कोई भी अन्य प्रयास अतिरिक्त 1 या 0s के साथ समाप्त हो जाएगा। ऐसा इसलिए है क्योंकि अगर हम इसे पहले पढ़ते हैं तो कोड विशिष्ट रूप से डिकोडेबल होता है। सिद्धांत रूप में अगर कुछ एक दिशा में विशिष्ट रूप से डिकोडेबल है, तो इसका कोई मतलब नहीं है कि दूसरी दिशा में एक से अधिक समाधान हो सकते हैं
स्लीवेटमैन

@slebetman मैं एक परिमित उपसर्ग (संभव अवशेष के साथ) का उल्लेख कर रहा था। हां, अगर हम पूरे इनपुट को लें तो यह हमेशा डिकोडेबल होता है।
बरगी

5

यदि मैं आपको कोई संदेश देता हूं जिसे आप डिकोड करने वाले हैं, तो आप निम्न कार्य कर सकते हैं: संदेश को उल्टा कर दें, पहले बिट के बजाय अंतिम बिट से शुरू करें। कोड शब्दों को उलट दें। संदेश को डिकोड करें। डिकोडेड स्ट्रिंग को उल्टा करें।

आप ऐसा कर सकते हैं क्योंकि छह कोड शब्दों को उलटने के बाद, आपको एक उपसर्ग-मुक्त कोड प्राप्त होता है: 1010, 1001, 01, 000, 11, 001 उपसर्ग मुक्त।


0

यदि उपसर्ग-मुक्त का अर्थ है कि मुझे क्या लगता है, 'a' का उल्टा 1, या 10, या 101 के साथ शुरू होता है, जिनमें से कोई भी अन्य संपूर्ण मान्य कोड नहीं है।

इसलिए, यदि कोई संदेश 0101 के साथ समाप्त होता है, तो यह केवल एक 'ए' हो सकता है और आप पूर्ववर्ती बिट (ओं) के समान तर्क लागू कर सकते हैं।

हालांकि, क्या होगा अगर वहाँ से शुरू करने के लिए कोई अंत नहीं है? ठीक है, अगर पहली बिट 1 है, तो आप जानते हैं कि यह 'ए' या 'डी' नहीं है। दूसरा बिट 'ई' या {'बी', 'सी', 'एफ'} को खत्म कर देगा। तीसरा बिट इसे एक विकल्प में नीचे ला सकता है, लेकिन यदि नहीं, तो यह चौथे बिट द्वारा अद्वितीय है।

जैसे ही आपको एक अद्वितीय अनुक्रम मिलता है, आप एल्गोरिथ्म को अगले बिट पर पुनः आरंभ करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.