हफ़मैन कोड: उदाहरण, अनुप्रयोग

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

एल्गोरिथम इतिहास

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

Huffman कोड
इस हफ़मैन एल्गोरिथ्म का भी उपयोग किया जाता हैजेपीईजी छवियों और अन्य ग्राफिक वस्तुओं का संपीड़न। खैर, सभी आधुनिक फ़ैक्स भी कोडिंग का उपयोग करते हैं, 1952 में आविष्कार किया गया था। इस तथ्य के बावजूद कि कोड के निर्माण के बाद से इतना समय बीत चुका है, आज तक इसका उपयोग नवीनतम गोले में और पुराने और आधुनिक प्रकार के उपकरणों पर किया जाता है।

कुशल कोडिंग का सिद्धांत

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

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

हफमैन कोड उदाहरण

एल्गोरिथ्म को समझाने के लिए, ले लोकोड ट्री निर्माण का ग्राफिक संस्करण। इस पद्धति को प्रभावी बनाने के लिए, यह इस पद्धति की अवधारणा के लिए आवश्यक कुछ मूल्यों की परिभाषा को स्पष्ट करने के लायक है। नोड से नोड तक निर्देशित किए जाने वाले कई आर्क्स और नोड्स के सेट को ग्राफ कहा जाता है। वृक्ष अपने आप में विशिष्ट गुणों के समूह के साथ एक ग्राफ है:

  • प्रत्येक नोड में आर्क्स में से एक से अधिक नहीं शामिल हो सकता है;
  • नोड्स में से एक पेड़ की जड़ होना चाहिए, अर्थात, इसमें आर्क्स शामिल नहीं होना चाहिए;
  • यदि आप जड़ से आर्क्स के साथ बढ़ना शुरू करते हैं, तो इस प्रक्रिया से आपको पूरी तरह से किसी भी नोड को प्राप्त करने की अनुमति मिल सकती है।

huffman कोड उदाहरण
संहिताओं में शामिल ऐसी अवधारणा भी हैहफमैन के पेड़ के पत्ते की तरह। यह एक नोड है जिसमें से किसी भी आर्क्स को बाहर नहीं निकलना चाहिए। यदि दो नोड्स एक चाप द्वारा जुड़े हुए हैं, तो उनमें से एक माता-पिता है, दूसरा एक बच्चा है, जिसके आधार पर चाप किस नोड से बाहर निकलता है और किस में प्रवेश करता है। यदि दो नोड्स में एक ही मूल नोड है, तो उन्हें आमतौर पर बहन नोड कहा जाता है। यदि, पत्तियों के अलावा, नोड्स पर कई चाप निकलते हैं, तो इस पेड़ को द्विआधारी कहा जाता है। बस ऐसे ही हफमैन का पेड़ है। इस निर्माण के नोड्स की एक विशेषता यह है कि प्रत्येक माता-पिता का वजन उसके सभी नोडल बच्चों के वजन के योग के बराबर है।

हफमैन ट्री एल्गोरिदम

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

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

वृद्धि क्षमता बढ़ाना

संपीड़न दक्षता बढ़ाने के लिए, आपको करने की आवश्यकता हैपेड़ से जुड़ी किसी विशेष फ़ाइल में दिखाई देने वाले पत्रों की संभावना और उन्हें बड़ी संख्या में पाठ दस्तावेज़ों में बिखरे रहने की अनुमति नहीं देने के संबंध में सभी डेटा का उपयोग करने के लिए कोड ट्री बनाने का समय है। यदि आप पहली बार इस फ़ाइल के माध्यम से जाते हैं, तो आप तुरंत आंकड़ों की गणना कर सकते हैं कि ऑब्जेक्ट से कितनी बार संपीड़ित होने के पत्र मिलते हैं।

संपीड़न प्रक्रिया को गति दें

एल्गोरिथ्म को गति देने के लिए, अक्षरों की परिभाषाकिसी पत्र की उपस्थिति की संभावना के संकेतक द्वारा नहीं, बल्कि इसकी घटना की आवृत्ति द्वारा संचालित करना आवश्यक है। इसके लिए धन्यवाद, एल्गोरिथ्म सरल हो जाता है, और इसके साथ काम में काफी तेजी आती है। यह फ्लोटिंग पॉइंट और डिवीजन ऑपरेशंस से भी बचता है।

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

निष्कर्ष

Коды Хаффмана - простой и давно созданный एक एल्गोरिथ्म जो अभी भी कई प्रसिद्ध कार्यक्रमों और कंपनियों द्वारा उपयोग किया जाता है। इसकी सादगी और समझदारी किसी भी वॉल्यूम के फ़ाइल संपीड़न के प्रभावी परिणाम प्राप्त करने और भंडारण डिस्क पर उनके कब्जे वाले स्थान को काफी कम करने की अनुमति देती है। दूसरे शब्दों में, हफ़मैन एल्गोरिथ्म एक लंबी-अध्ययन और विकसित योजना है, जिसकी प्रासंगिकता आज तक कम नहीं हुई है।

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