स्रोत → चैनल: दो-चरणीय एन्कोडिंग
Hamming का अध्याय 10 Shannon के संचार मॉडल से शुरू होता है, जो सूचना को स्थानांतरित करने वाली प्रत्येक प्रणाली पर लागू होता है: टेलीफोन कॉल, रेडियो, हार्ड ड्राइव, DNA प्रतिकृति, कंप्यूटर मेमोरी।
दो-चरणीय आर्किटेक्चर
चरण 1: स्रोत एन्कोडिंग (संपीड़न)। स्रोत संदेश को एक कॉम्पैक्ट प्रतिनिधित्व में परिवर्तित करें। लक्ष्य: स्रोत में निहित अनावश्यकता को हटाएं। Morse कोड यह करता है: सामान्य अक्षर संक्षिप्त कोड प्राप्त करते हैं, दुर्लभ अक्षर लंबे कोड प्राप्त करते हैं।
चरण 2: चैनल एन्कोडिंग (त्रुटि सुरक्षा)। चैनल की शोर विशेषताओं के अनुकूल नियंत्रित अनावश्यकता जोड़ें। एक शोरगुल टेलीफोन लाइन को फाइबर ऑप्टिक केबल की तुलना में अधिक अनावश्यकता की आवश्यकता है। दो चरण अलग हो जाते हैं: अपने स्वयं के कार्य के लिए प्रत्येक को स्वतंत्र रूप से अनुकूलित करें।
दो चरणों के बीच सामान्य इंटरफेस - एक मानकीकृत बिट स्ट्रीम - का मतलब है कि कोई भी स्रोत किसी भी चैनल के साथ जोड़ी बना सकता है। यह मॉड्यूलरिटी Shannon की मुख्य आर्किटेक्चरल अंतर्दृष्टि है।
संचार के रूप में भंडारण। Hamming ने नोट किया कि संदेश को अंतरिक्ष के माध्यम से भेजना (संचरण) और इसे समय के माध्यम से भेजना (भंडारण) एक ही मॉडल का उपयोग करते हैं। एक बैकअप ड्राइव समय में एक शोरगुल चैनल है।
शोर की भूमिका
Shannon का मॉडल एक मौलिक धारणा बनाता है: शोर अपरिहार्य है। प्रत्येक चैनल, प्रत्येक भंडारण माध्यम, प्रत्येक स्विचिंग सर्किट त्रुटि की कुछ संभावना का परिचय देता है। सवाल यह नहीं है कि 'हम शोर को कैसे समाप्त करते हैं?' बल्कि 'हम शोर के बावजूद मूल संदेश को कैसे पुनः प्राप्त करते हैं?'
यह शास्त्रीय भौतिकी के विपरीत है, जहां शोर एक अनुमति के रूप में प्रवेश करता है (अनिश्चितता सिद्धांत)। Shannon शोर को मौलिक स्थिति के रूप में मानता है - सभी सिद्धांत इससे निर्मित होते हैं।
अभी के लिए, अध्याय 10 शोरहीन स्थिति पर केंद्रित है: त्रुटियों के बिना स्रोत कोडिंग। चैनल कोडिंग समस्या (त्रुटि सुधार) बाद के अध्यायों की प्रतीक्षा करती है।
जब आप अद्वितीय रूप से डिकोड कर सकते हैं?
एक परिवर्तनीय-लंबाई कोड के लिए उपयोगी होने के लिए, प्राप्तकर्ता को बिट्स की एक धारा को स्पष्ट रूप से डिकोड करना चाहिए। Hamming एक 4-प्रतीक कोड के साथ चित्रण करते हैं जो इस परीक्षा में विफल होता है, फिर सुधार का परिचय देता है: उपसर्ग-मुक्त कोड।
उपसर्ग-मुक्त स्थिति
एक कोड उपसर्ग-मुक्त (या तात्कालिक) है यदि कोई कोडवर्ड किसी अन्य कोडवर्ड का उपसर्ग नहीं है। प्राप्त बिट धारा को देखते हुए, आप जानते हैं कि एक प्रतीक समाप्त हो गया है क्योंकि आप डिकोडिंग ट्री में एक पत्ती तक पहुंचे हैं - कोई lookahead आवश्यक नहीं है।
उदाहरण उपसर्ग-मुक्त कोड {s1, s2, s3, s4} के लिए: s1 = 0, s2 = 10, s3 = 110, s4 = 111।
सत्यापित करें: 0 10, 110, या 111 का उपसर्ग नहीं है। 10 110 या 111 का उपसर्ग नहीं है (10 के बाद अधिक बिट्स 100... या 101... देते हैं, जिनमें से कोई भी 110 या 111 से शुरू नहीं होता है)। कोड योग्य है।
डिकोडिंग प्रक्रिया: ट्री का अनुसरण करें, प्रत्येक आने वाले बिट पर शाखा करें, जब आप एक पत्ती से टकराएं तो प्रतीक उत्सर्जित करें, रूट पर वापस जाएं।
Kraft असमानता
किसी भी उपसर्ग-मुक्त बाइनरी कोड के लिए कोडवर्ड लंबाई l_1, l_2, ..., l_n के साथ:
Σ 2^(−l_i) ≤ 1
समानता तब होती है जब कोड पूर्ण हो (पत्तियां कोई अंतराल के साथ पूर्ण बाइनरी ट्री को टाइल करती हैं)। यह एक आवश्यक शर्त है: कोई भी उपसर्ग-मुक्त कोड इसका उल्लंघन नहीं कर सकता। इसके विपरीत, Kraft असमानता को संतुष्ट करने वाली लंबाई के किसी भी सेट के लिए, एक उपसर्ग-मुक्त कोड मौजूद है।
Kraft असमानता लागू करना
कोडवर्ड लंबाई को देखते हुए, Kraft को सत्यापित करें: Σ 2^(−l_i) ≤ 1।
{s1=0, s2=10, s3=110, s4=111} के लिए: लंबाई 1, 2, 3, 3 हैं।
Σ = 2^(−1) + 2^(−2) + 2^(−3) + 2^(−3) = 1/2 + 1/4 + 1/8 + 1/8 = 1। ✓
Shannon एन्ट्रॉपी
एक परिवर्तनीय-लंबाई कोड की औसत कोड लंबाई: L = Σ p_i · l_i, जहां p_i प्रतीक s_i की संभावना है और l_i इसकी कोड लंबाई है।
L कितना छोटा हो सकता है? Shannon का उत्तर: स्रोत एन्ट्रॉपी से कम नहीं।
Shannon एन्ट्रॉपी: H = −Σ p_i · log₂(p_i) (इकाई: बिट्स/प्रतीक)
एन्ट्रॉपी प्रत्येक प्रतीक के औसत सूचना को मापता है। उच्च एन्ट्रॉपी का मतलब है कि प्रतीक लगभग समान रूप से संभावित हैं (अधिकतम अप्रत्याशितता)। कम एन्ट्रॉपी का मतलब है कि कुछ प्रतीक प्रबल हैं (उच्च पूर्वानुमेयता, अधिक संपीड़ित)।
शोरहीन कोडिंग प्रमेय
किसी भी उपसर्ग-मुक्त कोड के लिए, H(स्रोत) ≤ L ≤ H(स्रोत) + 1।
कोई भी कोड एन्ट्रॉपी को हरा नहीं सकता। Huffman कोडिंग (अगला अध्याय) ऊपरी सीमा को प्राप्त करता है: L < H + 1। n प्रतीकों पर ब्लॉक कोड के लिए, सीमा सख्त होती है: H ≤ L/n < H + 1/n।
एन्ट्रॉपी सैद्धांतिक संपीड़न सीमा भी है: आप सूचना खोए बिना किसी स्रोत को H बिट्स प्रति प्रतीक से कम में संपीड़ित नहीं कर सकते।
एन्ट्रॉपी की गणना करना
उदाहरण: 4 प्रतीक संभावनाओं के साथ p = [1/2, 1/4, 1/8, 1/8]।
H = −(1/2)·log₂(1/2) − (1/4)·log₂(1/4) − (1/8)·log₂(1/8) − (1/8)·log₂(1/8)
= (1/2)·1 + (1/4)·2 + (1/8)·3 + (1/8)·3
= 0.5 + 0.5 + 0.375 + 0.375 = 1.75 बिट्स/प्रतीक
और Huffman कोड {0, 10, 110, 111} L = 1.75 = H को बिल्कुल प्राप्त करता है।
एन्ट्रॉपी क्यों एक निचली सीमा है
शोरहीन कोडिंग प्रमेय की निचली सीमा केवल एक सूत्र नहीं है - यह सूचना के बारे में कुछ गहरा दर्शाता है: आप जो पहले से ही अधिकतम अप्रत्याशित है उसे संपीड़ित नहीं कर सकते।
जब सभी प्रतीक समान रूप से संभावित हों (समान वितरण), एन्ट्रॉपी H = log₂(n) n प्रतीकों के लिए। log₂(n) बिट्स की ब्लॉक कोड बिल्कुल H को प्राप्त करता है। कोई भी कोड बेहतर नहीं कर सकता।
जब एक प्रतीक प्रबल हो (कहो, p(A) = 0.99, p(B) = 0.01), H छोटा है - 0 के करीब। एक परिवर्तनीय-लंबाई कोड A को बहुत संक्षिप्त कोड निर्दिष्ट कर सकता है, धारा को बहुत कुशलता से एन्कोड कर सकता है।
व्यावहारिक निष्कर्ष: बड़े संपीड़न लाभ केवल तब मौजूद होते हैं जब प्रतीक संभावनाएं काफी भिन्न होती हैं। यदि स्रोत पहले से 'समान' है (यादृच्छिक दिखता है), Huffman कोडिंग कुछ नहीं हासिल करता है।