> huffman | सर्वोत्तम | कोड <
// हफमैन कोडिंग - प्रीफिक्स-फ्री सर्वोत्तम संपीड़न एल्गोरिदम
>> विशेषताएँ
सर्वोत्तम कोड
दी गई आवृत्तियों के लिए औसत कोड लंबाई को न्यूनतम करता है।
प्रीफिक्स-फ्री
कोई भी कोड दूसरे कोड का प्रीफिक्स नहीं होता, जिससे डिकोडिंग स्पष्ट रहती है।
आवृत्ति आधारित
जो अक्षर अधिक बार आते हैं, उन्हें अपने आप छोटे कोड मिलते हैं।
>> तकनीकी जानकारी
हफमैन कोडिंग कैसे काम करती है
हफमैन कोडिंग एक बाइनरी ट्री नीचे से ऊपर की ओर बनाती है। अक्षरों की आवृत्ति से शुरू करके, यह बार‑बार सबसे कम आवृत्ति वाले दो नोड्स को जोड़कर एक पैरेंट नोड बनाती है, जब तक केवल रूट नोड न बच जाए। बायां किनारा '0' और दायां किनारा '1' दर्शाता है। अधिक बार आने वाले अक्षरों को छोटे कोड मिलते हैं, जिससे दी गई आवृत्ति वितरण के लिए लगभग सर्वोत्तम संपीड़न मिलता है।
हफमैन कोडिंग का उदाहरण
Text: "AABBBCCCC"
Frequencies:
A: 2
B: 3
C: 4
Tree Building:
1. Combine A(2) + B(3) = AB(5)
2. Combine C(4) + AB(5) = Root(9)
Tree:
Root(9)
/ \
C(4) AB(5)
/ \
A(2) B(3)
Codes:
C: 0
A: 10
B: 11
Encoded: 10 10 11 11 11 0 0 0 0
= 1010111111 0000
हफमैन कोडिंग क्यों उपयोग करें?
- लगभग सर्वोत्तम संपीड़न अनुपात
- सरल कार्यान्वयन
- ZIP/JPEG संपीड़न की बुनियाद
- डेटा में कोई हानि नहीं
- सिद्ध दक्षता और प्रदर्शन
>> अक्सर पूछे जाने वाले प्रश्न
हफमैन कोडिंग क्या है?
हफमैन कोडिंग एक प्रीफिक्स-फ्री, सर्वोत्तम संपीड़न एल्गोरिदम है जिसे 1952 में डेविड ए. हफमैन ने प्रस्तावित किया था। यह अक्षरों की आवृत्ति के आधार पर उन्हें परिवर्तनशील लंबाई वाले कोड असाइन करती है; जो अक्षर अधिक बार आते हैं, उन्हें छोटे कोड मिलते हैं और औसत कोड लंबाई न्यूनतम हो जाती है।
इसे प्रीफिक्स-फ्री क्यों कहा जाता है?
कोड प्रीफिक्स-फ्री तब होता है जब कोई भी कोड किसी दूसरे कोड का शुरुआती हिस्सा (प्रीफिक्स) न हो। उदाहरण के लिए, यदि 'A' का कोड '01' है, तो किसी अन्य अक्षर का कोड '01' से शुरू नहीं हो सकता। इससे डिकोडिंग में कोई अस्पष्टता नहीं रहती और बिना अलग विभाजक चिन्ह के पता चल जाता है कि एक कोड कहाँ समाप्त होता है और अगला कहाँ शुरू।
हफमैन कोडिंग कितनी प्रभावी है?
दी गई आवृत्ति वितरण के लिए हफमैन कोडिंग लगभग सैद्धांतिक एंट्रॉपी सीमा तक सर्वोत्तम संपीड़न प्राप्त करती है — सामान्यतः 1 बिट के भीतर। अंग्रेजी पाठ के लिए यह अक्सर 60–70% तक संपीड़न देती है और तब खास तौर पर प्रभावी होती है जब अक्षरों की आवृत्ति में बड़ा अंतर हो।
हफमैन कोडिंग कहाँ उपयोग होती है?
हफमैन कोडिंग JPEG इमेज संपीड़न, ZIP फ़ाइल संपीड़न (DEFLATE में LZ77 के साथ), MP3 ऑडियो और कई अन्य फ़ॉर्मैट में उपयोग होती है। इसे अक्सर अन्य एल्गोरिद्म के साथ जोड़ा जाता है — जैसे JPEG में DCT और क्वांटाइज़ेशन के बाद हफमैन, जबकि ZIP में LZ77 के बाद।