क्या हफ़मैन एन्कोडिंग हमेशा इष्टतम है?


9

वृक्ष के पूर्ण होने के कारण बड़े वृक्षों में पूर्वनिर्मित मुक्त परिणाम के लिए एन्कोडिंग की आवश्यकता होती है । क्या कोई थ्रेशोल्ड है जहाँ डेटा की एन्कोडिंग की तुलना में डेटा की निश्चित-लंबाई गैर-एन्कोडेड संग्रहण अधिक कुशल होगा?


सामान्य तौर पर 'नहीं'। एक औसत डेटा के लिए, प्रत्येक वर्ण की आवृत्ति> 1 होगी और निश्चित लंबाई वाले कोड के बजाय हफ़मैन एन्कोडिंग का उपयोग करना अच्छा है

@arunmoezhi क्या आप ऊपर दिए गए उदाहरण को संबोधित कर सकते हैं? प्रत्येक वर्ण की आवृत्ति 1 से अधिक है, फिर भी निश्चित-लंबाई अधिक इष्टतम है।

यह उदाहरण दिलचस्प है। लेकिन क्या आप आवृत्ति के बजाय प्रत्येक वर्ण की संभावनाओं के साथ इस तरह का परिदृश्य प्रदान कर सकते हैं और सुनिश्चित कर सकते हैं कि सभी पात्रों की संभावनाओं को

@arunmoezhi मैंने पात्रों की संभावनाओं को शामिल किया है और वे

जवाबों:


4

H(A)इस समस्या के लिए एन्ट्रापी है 1.998। इस समस्या के लिए हफ़मैन कोडिंग और निश्चित लंबाई कोडिंग दोनों में avg कोडवर्ड की लंबाई है 2। और FYI करें आपको हफ़मैन एनकोडिंग का उपयोग करते हुए कोडिंग गलत है। हफ़मैन एनकोडिंग भी इस समस्या के लिए निर्धारित लंबाई के समान कोड का उत्पादन करता है। यह लालची दृष्टिकोण का उपयोग करता है। तो aएक कोड के रूप में नहीं मिलता है, 0लेकिन इसके बजाय यह हो जाता है 00। हफ़मैन कोडिंग का उपयोग करके आप जिस पेड़ पर उत्पन्न होते हैं, उस पर दौड़ना। आपको जो पेड़ मिलना चाहिए वह है:यहाँ छवि विवरण दर्ज करें


धन्यवाद। क्या आप किसी प्रकार का प्रमाण दे सकते हैं कि हफ़मैन एन्कोडिंग हमेशा निश्चित लंबाई की तुलना में अधिक इष्टतम है, या कम से कम मुझे एक को देखें?

1
आप के Introduction to Algorithmsद्वारा उल्लेख कर सकते हैं CLRS। अध्याय में जो greedy algorithmsआप पर बात करता है , उसके लिए औपचारिक प्रमाण प्राप्त कर सकते हैं Huffman algorithm। इसका लंबा प्रमाण है और पढ़ने के लिए धैर्य की आवश्यकता है।

8

हफ़मैन कोडिंग जनसंख्या वितरण को दो प्रायिकता की शक्तियों के साथ अनुमानित करता है। यदि सही वितरण में दो प्रायिकता की शक्तियाँ समाहित हैं (और इनपुट प्रतीक पूरी तरह से असंबंधित हैं), हफ़मैन कोडिंग इष्टतम है। यदि नहीं, तो आप श्रेणी एन्कोडिंग के साथ बेहतर कर सकते हैं। यह हालांकि सभी एन्कोडिंग के बीच इष्टतम है जो इनपुट में विशिष्ट प्रतीकों को बिट्स के विशिष्ट सेट प्रदान करता है।


"जनसंख्या वितरण का अनुमान लगाने" से आपका क्या मतलब है?

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

8

हाँ, यह हमेशा इष्टतम है।

नहीं, कोई थ्रेसहोल्ड नहीं है जहां यह तय लंबाई के गैर-एन्कोडेड डेटा का उपयोग करने के लिए कम जगह का उपयोग करेगा।

मुझे वेब पर कई प्रमाण मिले, लेकिन विकिपीडिया लेख हफ़मैन कोडिंग में पर्याप्त चर्चा है ।

यह अन्य तकनीकों को भी शामिल करता है जो उच्च संपीड़न (अंतरिक्ष के बाहर काम करना जिसके लिए हफ़मैन कोड इष्टतम है)।

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