> अरिथमेटिक कोडिंग | भिन्नात्मक बिट्स | ऑप्टिमल <
// अरिथमेटिक कोडिंग - एंट्रॉपी सीमा के पास भिन्नात्मक बिट एन्कोडिंग
लगभग सर्वोत्तम
कम्प्रेशन दक्षता के लिए सैद्धांतिक एंट्रॉपी सीमा के बहुत क़रीब पहुँचता है।
भिन्नात्मक बिट्स
प्रायिकता के आधार पर प्रतीकों को भिन्नात्मक बिट्स के साथ एन्कोड करता है।
स्ट्रीमिंग
डेटा के आते ही उसे क्रमिक रूप से एन्कोड और डिकोड कर सकता है।
>> तकनीकी जानकारी
अरिथमेटिक कोडिंग कैसे काम करती है:
अरिथमेटिक कोडिंग पूरे संदेश को [0,1) अंतराल में एक एकल संख्या के रूप में दर्शाती है। प्रत्येक प्रतीक अपनी प्रायिकता के आधार पर इस अंतराल को संकीर्ण करता है। अंतिम अंतराल को बाइनरी भिन्न के रूप में एन्कोड किया जाता है, जिससे एंट्रॉपी सीमा के बहुत पास कम्प्रेशन प्राप्त होता है।
एन्कोडिंग प्रक्रिया:
टेक्स्ट: "AAB" प्रायिकता: A=0.67, B=0.33 1. प्रारंभ: [0, 1) 2. 'A': [0, 0.67) 3. 'A': [0, 0.45) 4. 'B': [0.30, 0.45) आउटपुट: [0.30, 0.45) अंतराल में कोई भी संख्या बाइनरी: 0.010011...
अरिथमेटिक कोडिंग क्यों उपयोग करें:
- >बेहतर कम्प्रेशन अनुपात
- >एंट्रॉपी सीमा के लगभग बराबर
- >किसी भी प्रायिकता वितरण को संभालता है
- >JPEG2000/H.264 जैसे मानकों में उपयोग
- >पेटेंट समाप्त (2024)
>> अक्सर पूछे जाने वाले प्रश्न
अरिथमेटिक कोडिंग क्या है?
अरिथमेटिक कोडिंग एंट्रॉपी कोडिंग का एक रूप है जो प्रतीकों की शृंखला को एकल भिन्नात्मक संख्या में बदल देता है। Huffman कोडिंग, जो केवल पूरे बिट्स का उपयोग करती है, के विपरीत अरिथमेटिक कोडिंग प्रति प्रतीक भिन्नात्मक बिट्स का उपयोग कर सकती है।
यह Huffman से बेहतर क्यों है?
अरिथमेटिक कोडिंग एंट्रॉपी सीमा के मनचाहे क़रीब तक कम्प्रेशन प्राप्त कर सकती है, जबकि Huffman प्रति प्रतीक पूरे बिट्स तक सीमित है। बहुत असंतुलित प्रायिकताओं के लिए अरिथमेटिक कोडिंग काफी बेहतर हो सकती है।
प्रिसिशन पैरामीटर क्या है?
प्रिसिशन आंतरिक गणनाओं के लिए उपयोग किए जाने वाले बिट्स की संख्या नियंत्रित करता है। अधिक प्रिसिशन लंबे संदेशों को एन्कोड करने की अनुमति देता है लेकिन अधिक मेमोरी की आवश्यकता होती है। छोटे टेक्स्ट के लिए आमतौर पर 16‑बिट पर्याप्त होता है।
अरिथमेटिक कोडिंग कहाँ उपयोग होती है?
अरिथमेटिक कोडिंग आधुनिक कम्प्रेशन मानकों जैसे H.264/H.265 वीडियो, JPEG2000 इमेज और ZIP के DEFLATE64 मोड में उपयोग होती है। पहले यह कई पेटेंट से बंधी हुई थी, लेकिन अब प्रमुख पेटेंट समाप्त हो चुके हैं।
// हल किया गया उदाहरण
| Step | Symbol | low | high |
|---|---|---|---|
| 0 | — | 0 | 1 |
| 1 | A | 0 | 0.5 |
| 2 | B | 0.25 | 0.375 |
| 3 | C | 0.34375 | 0.375 |
// कोड उदाहरण
Model P(A)=0.5 P(B)=0.25 P(C)=0.25 -> A:[0,0.5) B:[0.5,0.75) C:[0.75,1)
Update width = high - low
high = low + width * cum_high(symbol)
low = low + width * cum_low(symbol)
Output any value in [0.34375, 0.375) e.g. 0.34375 = 0.01011b (5 bits = 1 + 2 + 2)
Entropy -log2 P(A) - log2 P(B) - log2 P(C) = 1 + 2 + 2 = 5 bits
>> और प्रश्न
प्र: अंकगणितीय कोडिंग अक्सर Huffman से बेहतर क्यों है?
उ: Huffman हर प्रतीक को पूर्ण संख्या में बिट देता है (कम से कम 1)। अंकगणितीय कोडिंग पूरे संदेश को [0, 1) में एक भिन्न के रूप में कोड करती है और एंट्रॉपी के करीब पहुँचती है, यहाँ तक कि 50% से अधिक प्रायिकता वाले प्रतीकों के लिए भी, जिन पर Huffman में 1 बिट लगता है।
प्र: ABC अंतराल का उदाहरण कैसे काम करता है?
उ: A=0.5, B=0.25, C=0.25 के साथ हर प्रतीक पर अंतराल सिकुड़ता है: [0,1) → [0,0.5) → [0.25, 0.375) → [0.34375, 0.375)। इसके भीतर कोई भी संख्या, जैसे बाइनरी 0.01011 (=0.34375), "ABC" को 5 बिट में कोड करती है, यानी ठीक एंट्रॉपी।
प्र: अंकगणितीय कोडिंग कहाँ इस्तेमाल होती है?
उ: H.264/HEVC के CABAC, JPEG 2000 और JBIG2 के MQ कोडर, तथा range coding (AV1) और ANS (zstd, JPEG XL) जैसे रूपों में। शुरुआती पेटेंट ने प्रसार धीमा किया; अब अधिकांश समाप्त हो चुके हैं।