2010-02-04 13 views
21

मुझे बताया गया है कि Huffman कोडिंग loseless डेटा संपीड़न एल्गोरिथ्म के रूप में प्रयोग किया जाता है, लेकिन मैं यह भी बताया गया है कि वास्तविक डेटा सॉफ्टवेयर कर नहीं काम Huffman कोडिंग, क्योंकि अगर कुंजी वितरित पर्याप्त का विकेंद्रीकरण नहीं कर रहे हैं, संपीड़ित फ़ाइल सका सेक ऑरगिनल फ़ाइल से भी बड़ा हो।हफमैन कोडिंग के असली दुनिया के अनुप्रयोग क्या हैं?

यह मैं वहाँ सोच पत्ते Huffman कोडिंग के किसी भी वास्तविक दुनिया आवेदन कर रहे हैं?

+2

कोई आपको पोर्कियां बता रहा है। – Will

+1

ईमानदारी से, "क्या कोई असली दुनिया गैर-हफमैन संपीड़न है?" हफमैन और एडैप्टिव हफमैन एन्कोडिंग/संपीड़न की वास्तविक दुनिया [टीएम] की सफलता को देखते हुए एक और दिलचस्प सवाल होगा (लेकिन यह अधिक दिलचस्प होगा)। जिसने आपको बताया था कि "वास्तविक डेटा संपीड़न सॉफ्टवेयर हफमैन को नियोजित नहीं करता है" अपने दिमाग में सही नहीं है। – SyntaxT3rr0r

उत्तर

22

Huffman व्यापक रूप से सभी मुख्य धारा संपीड़न प्रारूपों आपके सामने आ सकने में प्रयोग किया जाता है - GZIP, PKZIP (winzip आदि) और BZIP2 से, जैसे JPEG और PNG के रूप में छवि प्रारूप करने के लिए।

सभी संपीड़न योजनाओं में पैथोलॉजिकल डेटा-सेट होते हैं जिन्हें अर्थपूर्ण रूप से संपीड़ित नहीं किया जा सकता है; ऊपर सूचीबद्ध संग्रह प्रारूपों में बस 'स्टोर' जैसी फाइलें असम्पीडित होती हैं जब उनका सामना होता है।

नई arithmetic and range coding योजनाओं को अक्सर patent issues के कारण टाला जाता है, जिसका अर्थ है हफमैन संपीड़न उद्योग का कार्य-घोड़ा बना हुआ है।

+1

तो क्या आपका मतलब है कि हफमैन वास्तव में 'आधार' है यदि संपीड़न उद्योग का 'मूल' नहीं है? – Jichao

+1

बिल्कुल। यह * बिल्कुल * मेरा मतलब है। – Will

+18

हाँ, आपका प्रश्न पूछने जैसा था "मुझे स्टील से बने कार का उदाहरण दें।" – Hogan

4

विषय पर Wikipedia लेख देखें:

Huffman आज कोडिंग को अक्सर कुछ अन्य संपीड़न विधि के लिए एक "बैक-एंड" के रूप में प्रयोग किया जाता है। डिफलेट (पीकेजेआईपी के एल्गोरिदम) और मल्टीमीडिया कोडेक्स जैसे जेपीईजी और एमपी 3 में फ्रंट-एंड मॉडल और क्वांटिज़ेशन है जिसके बाद हफमैन कोडिंग है।

+3

"बैक एंड" क्या है? "फ्रंट एंड" क्या है? – Jichao

+1

@jcyang: वे सिस्टम के केवल दो अलग-अलग हिस्से हैं। बैक-एंड संभवतः फ़ाइल को लिखने के करीब है और संभवतः फ़ाइल को पढ़ता है जहां यह फ़ाइल को पढ़ता है। – Hogan

+1

'बैकएंड' का अर्थ उन मानों का एन्कोडिंग है जो पहले प्रीप्रोसेस्ड किए गए हैं और संभावित रूप से किसी अन्य एल्गोरिदम के साथ संपीड़ित हैं। उदाहरण के लिए, डफ्लेट डुप्लिकेट अनुक्रमों को एन्कोड करने के लिए LZ77 का उपयोग करता है, इससे पहले कि हफमैन उन अक्षरों को एन्कोड करने के लिए अनुक्रम में नहीं है। – Will

2

जब एक संपीड़न एल्गोरिदम समझता है वहाँ अक्सर लाभ और प्रत्येक के लिए नुकसान कर रहे हैं। यह संपीड़न की प्रकृति है जो इनपुट का एक सेट देती है, उस डेटा के लिए बेहतर और खराब संपीड़न एल्गोरिदम मौजूद है।

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

यदि आपका प्रोफेसर या पुस्तक आप धारणा है कि Huffman इस्तेमाल नहीं किया है दे दी है, वे गलत हैं। उदाहरण के लिए इंटरनेट के साथ और उससे लगभग सभी संचार कुछ हफमैन एन्कोड किए गए हैं। (कई संचार प्रोटोकॉल इसका उपयोग करते हैं।) अधिकांश छवि फ़ाइलें (जेपीईजी) हफमैन एन्कोडेड हैं। अधिकांश संगीत फ़ाइलें (एमपी 3) हफमैन एन्कोडेड हैं। वहां कई अन्य उदाहरण हैं।

एक कारण यह Huffman प्रयोग किया जाता है, क्योंकि यह कर सकते हैं एक अलग अनुकूली Huffman कहा जाता एल्गोरिथ्म के माध्यम से "खोजा" किया है। जैसे ही आप फ़ाइल पढ़ते हैं, आप हफमैन कोड सीखते हैं और "जैसे ही आप जाते हैं"। यह एक सरलीकृत अवलोकन है, लेकिन आपको विचार मिलता है।

उपयोग स्थिति समस्या के लिए सबसे अच्छा एल्गोरिथ्म हल करने के लिए, ज़िप फ़ाइलें अलग बार दबाने के एक नंबर क्या सबसे अच्छा एक एक दिया फ़ाइल के लिए है पर निर्भर करता है के उपयोग की अनुमति।

+0

हफमैन 'खोज' नहीं है - यह धारा आधारित नहीं है। स्ट्रीम-आधारित 'अनुकूली' हफमैन भिन्नताएं हैं, लेकिन वे पर्याप्त रूप से अलग हैं कि कोई भी आपको लगता है कि आप एक अनुकूली बदलाव का मतलब नहीं है अगर आपने बस 'हफमैन' कहा था। – Will

+1

कौन से इंटरनेट प्रोटोकॉल इसका उपयोग करते हैं? – Will

+0

इंटरनेट प्रोटोकॉल गलत शब्द था - संचार प्रोटोकॉल मेरा मतलब था। इसे बदल रहा है – Hogan

0

Huffman कोड varible लंबाई कोड है, जो क्षतिरहित संपीड़न में जो परिणाम में निश्चित लंबाई कोड कन्वर्ट करने के लिए प्रयोग किया जाता है। इच्छित संपीड़न अनुपात प्राप्त करने के लिए जेपीईजी और एमपीईजी तकनीकों का उपयोग करके परिवर्तनीय लंबाई कोड को और संपीड़ित किया जा सकता है।

3

हफमैन एन्कोडिंग के बहुत सारे वास्तविक-दुनिया अनुप्रयोग हैं। ज़िप शायद सबसे व्यापक रूप से उपयोग किया जाने वाला संपीड़न उपकरण है जो हफमैन एन्कोडिंग को इसके आधार के रूप में उपयोग करता है। पिछले महीने Google द्वारा जारी किए गए सबसे कुशल लापरवाही संपीड़न एल्गोरिदम, ब्रोटली संपीड़न का नवीनतम भी हफमैन कोडिंग का उपयोग करता है।इसके अलावा, ब्रोटली भी एलजेड 77 और कुछ अन्य मौलिक लापरवाही संपीड़न एल्गोरिदम का उपयोग करता है। Brotli.

संबंधित मुद्दे