डिफ्लेट: Difference between revisions

From Vigyanwiki
(Created page with "{{short description|Data compression algorithm}} {{About|the data compression algorithm||Deflation (disambiguation)}} {{More citations needed|date=January 2009}} कम्...")
 
No edit summary
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{short description|Data compression algorithm}}
{{short description|Data compression algorithm}}
{{About|the data compression algorithm||Deflation (disambiguation)}}
{{About|the data compression algorithm||Deflation (disambiguation)}}[[ कम्प्यूटिंग |कम्प्यूटिंग]] में, '''डिफ्लेट''' ('''डिफ्लेट''' के रूप में शैलीबद्ध) एक [[दोषरहित संपीड़न|लॉसलेस]] डेटा कम्प्रेशन फ़ाइल फॉर्मेट है जो LZ77_and_LZ78 और [[हफ़मैन कोडिंग]] के संयोजन का उपयोग करता है। इसे [[फिल काट्ज़]] द्वारा उनके [[PKZIP]] आर्चिविंग टूल के संस्करण 2 के लिए डिज़ाइन किया गया था। डिफ्लेट को बाद में 1951 (1996) में निर्दिष्ट किया गया था।<ref name="IETF">{{cite IETF |title=DEFLATE Compressed Data Format Specification version 1.3 |rfc=1951 |section=Abstract |page=1 |first=L. Peter |last=Deutsch |author-link=L. Peter Deutsch |date=May 1996 |publisher=[[Internet Engineering Task Force|IETF]] |access-date=2014-04-23}}</ref>
{{More citations needed|date=January 2009}}


[[ कम्प्यूटिंग ]] में, डिफ्लेट (डिफ्लेट के रूप में शैलीबद्ध) एक [[दोषरहित संपीड़न]] डेटा संपीड़न फ़ाइल प्रारूप है जो LZ77_and_LZ78 और [[हफ़मैन कोडिंग]] के संयोजन का उपयोग करता है। इसे [[फिल काट्ज़]] द्वारा उनके [[PKZIP]] संग्रह उपकरण के संस्करण 2 के लिए डिज़ाइन किया गया था। डिफ्लेट को बाद में [[टिप्पणियों के लिए अनुरोध]] 1951 (1996) में निर्दिष्ट किया गया था।<ref name="IETF">{{cite IETF |title=DEFLATE Compressed Data Format Specification version 1.3 |rfc=1951 |section=Abstract |page=1 |first=L. Peter |last=Deutsch |author-link=L. Peter Deutsch |date=May 1996 |publisher=[[Internet Engineering Task Force|IETF]] |access-date=2014-04-23}}</ref>
काट्ज़ ने डिफ्लेट स्ट्रीम के निर्माण के लिए उपयोग किए जाने वाले मूल एल्गोरिदम को भी डिज़ाइन किया। इस एल्गोरिदम को {{US patent|5051745}} के रूप में [[सॉफ्टवेयर पेटेंट]] कराया गया था, और PKWARE, Inc. को सौंपा गया था।<ref name="patent">{{cite patent |country=US |number=5051745 |publication-date=1991-09-24 |issue-date=1991-09-24 |title=स्ट्रिंग खोजकर्ता, और कंप्रेसर समान का उपयोग कर रहे हैं|inventor-last=Katz|inventor-first=Phillip W.|inventorlink=Phil Katz |assign1= PKWare Inc. | status=patent}}</ref><ref>{{cite book|title=Data Compression: The Complete Reference | last=David | first=Salomon|year=2007|edition=4|page=241|publisher=Springer|isbn=978-1-84628-602-5|url=https://books.google.com/books?id=ujnQogzx_2EC&pg=PA241}}</ref> जैसा कि आरएफसी डॉक्यूमेंट में कहा गया है, डिफ्लेट फ़ाइलों का उत्पादन करने वाले एल्गोरिदम को व्यापक रूप से पेटेंट द्वारा कवर नहीं किए जाने वाले तरीके से इम्प्लीमेंटेशन योग्य माना जाता था।<ref name="IETF" />इससे इसका व्यापक उपयोग हुआ - उदाहरण के लिए, जीज़िप कंप्रेस्ड फ़ाइलों और पीएनजी इमेज फ़ाइलों में, ज़िप फ़ाइल फॉर्मेट के अलावा जिसके लिए कैटज़ ने मूल रूप से इसे डिज़ाइन किया था। पेटेंट अब समाप्त हो चुका है।
काट्ज़ ने डिफ्लेट स्ट्रीम के निर्माण के लिए उपयोग किए जाने वाले मूल एल्गोरिदम को भी डिज़ाइन किया। यह एल्गोरिदम [[सॉफ्टवेयर पेटेंट]] के रूप में था {{US patent|5051745}}, और PKWARE, Inc को सौंपा गया।<ref name="patent">{{cite patent |country=US |number=5051745 |publication-date=1991-09-24 |issue-date=1991-09-24 |title=स्ट्रिंग खोजकर्ता, और कंप्रेसर समान का उपयोग कर रहे हैं|inventor-last=Katz|inventor-first=Phillip W.|inventorlink=Phil Katz |assign1= PKWare Inc. | status=patent}}</ref><ref>{{cite book|title=Data Compression: The Complete Reference | last=David | first=Salomon|year=2007|edition=4|page=241|publisher=Springer|isbn=978-1-84628-602-5|url=https://books.google.com/books?id=ujnQogzx_2EC&pg=PA241}}</ref> जैसा कि आरएफसी दस्तावेज़ में कहा गया है, डिफ्लेट फ़ाइलों का उत्पादन करने वाले एल्गोरिदम को व्यापक रूप से पेटेंट द्वारा कवर नहीं किए जाने वाले तरीके से कार्यान्वयन योग्य माना जाता था।<ref name="IETF" />इससे इसका व्यापक उपयोग हुआ - उदाहरण के लिए, जिप (फ़ाइल प्रारूप) फ़ाइल प्रारूप के अलावा, जी[[ gzip ]] संपीड़ित फ़ाइलों और [[ पोर्टेबल नेटवर्क ग्राफ़िक्स ]] छवि फ़ाइलों में, जिसके लिए कैटज़ ने मूल रूप से इसे डिज़ाइन किया था। पेटेंट अब समाप्त हो चुका है।


== स्ट्रीम प्रारूप ==
== स्ट्रीम फॉर्मेट ==
डिफ्लेट स्ट्रीम में ब्लॉकों की एक श्रृंखला होती है। प्रत्येक ब्लॉक के पहले 3-[[ अंश ]] हेडर होता है:
डिफ्लेट स्ट्रीम में ब्लॉकों की एक श्रृंखला होती है। प्रत्येक ब्लॉक के पहले 3-[[ अंश |बिट]] हेडर होता है:


* पहला बिट: अंतिम-ब्लॉक-इन-स्ट्रीम मार्कर:
* पहला बिट: अंतिम-ब्लॉक-इन-स्ट्रीम मार्कर:
** <code>1</code>: यह धारा का अंतिम ब्लॉक है।
** <code>1</code>: यह स्ट्रीम का अंतिम ब्लॉक है।
** <code>0</code>: इसके बाद संसाधित करने के लिए और भी ब्लॉक हैं।
** <code>0</code>: इसके बाद संसाधित करने के लिए और भी ब्लॉक हैं।
* दूसरा और तीसरा बिट: इस ब्लॉक प्रकार के लिए उपयोग की जाने वाली एन्कोडिंग विधि:
* दूसरा और तीसरा बिट: इस ब्लॉक प्रकार के लिए उपयोग की जाने वाली एन्कोडिंग विधि:
** <code>00</code>: एक संग्रहीत (उर्फ कच्चा या शाब्दिक) अनुभाग, लंबाई में 0 और 65,535 बाइट्स के बीच
** <code>00</code>: स्टोर्ड (उर्फ रॉ या शाब्दिक) अनुभाग, लंबाई में 0 और 65,535 बाइट्स के बीच
** <code>01</code>: आरएफसी में परिभाषित पूर्व-सहमत हफमैन पेड़ का उपयोग करके एक स्थिर हफमैन संपीड़ित ब्लॉक
** <code>01</code>: स्टेटिक हफमैन कंप्रेस्ड ब्लॉक, आरएफसी में परिभाषित पूर्व-सहमत हफ़मैन ट्री का उपयोग करना
** <code>10</code>: एक गतिशील हफ़मैन संपीड़ित ब्लॉक, आपूर्ति की गई हफ़मैन तालिका के साथ पूर्ण
** <code>10</code>: डायनामिक हफ़मैन कंप्रेस्ड ब्लॉक, आपूर्ति की गई हफ़मैन तालिका के साथ पूर्ण
** <code>11</code>: आरक्षित—उपयोग न करें।
** <code>11</code>: रिजर्व्ड—उपयोग न करें।


संग्रहीत ब्लॉक विकल्प न्यूनतम ओवरहेड जोड़ता है और उस डेटा के लिए उपयोग किया जाता है जो असम्पीडित है।
स्टोर्ड ब्लॉक विकल्प न्यूनतम ओवरहेड जोड़ता है और उस डेटा के लिए उपयोग किया जाता है जो इनकंप्रेसिब्ल है।


अधिकांश संपीड़ित डेटा अंततः विधि का उपयोग करके एन्कोड किया जाएगा <code>10</code>, गतिशील हफ़मैन एन्कोडिंग, जो व्यक्तिगत रूप से डेटा के प्रत्येक ब्लॉक के लिए अनुकूलित एक अनुकूलित हफ़मैन ट्री तैयार करता है। आवश्यक हफ़मैन ट्री उत्पन्न करने के निर्देश तुरंत ब्लॉक हेडर का पालन करें। स्थैतिक हफ़मैन विकल्प का उपयोग छोटे संदेशों के लिए किया जाता है, जहां पेड़ को हटाकर प्राप्त की गई निश्चित बचत गैर-इष्टतम (इस प्रकार, तकनीकी रूप से हफ़मैन नहीं) कोड का उपयोग करने के कारण प्रतिशत संपीड़न हानि से अधिक होती है।
अधिकांश कंप्रेस्ड डेटा को विधि <code>10</code>, डायनामिक हफ़मैन एन्कोडिंग का उपयोग करके एन्कोड किया जाएगा, जो व्यक्तिगत रूप से डेटा के प्रत्येक ब्लॉक के लिए कस्टमाइज्ड एक ऑप्टीमाइज़्ड हफ़मैन ट्री का उत्पादन करता है। आवश्यक हफ़मैन ट्री उत्पन्न करने के निर्देश तुरंत ब्लॉक हेडर का पालन करें। स्टेटिक हफ़मैन विकल्प का उपयोग छोटे संदेशों के लिए किया जाता है, जहां ट्री को हटाकर प्राप्त की गई निश्चित बचत नॉन ऑप्टीमल (इस प्रकार, तकनीकी रूप से हफ़मैन नहीं) कोड का उपयोग करने के कारण प्रतिशत कम्प्रेशन लॉस से अधिक होती है।


संपीड़न दो चरणों के माध्यम से प्राप्त किया जाता है:
कम्प्रेशन दो चरणों के माध्यम से प्राप्त किया जाता है:


* पॉइंटर्स के साथ डुप्लिकेट स्ट्रिंग्स का मिलान और प्रतिस्थापन।
* पॉइंटर्स के साथ डुप्लिकेट स्ट्रिंग्स का मैच और प्रतिस्थापन।
* उपयोग की आवृत्ति के आधार पर प्रतीकों को नए, भारित प्रतीकों से बदलना।
* उपयोग की आवृत्ति के आधार पर भारित प्रतीक को नए, सिम्बल्स से बदलना।


=== डुप्लिकेट स्ट्रिंग उन्मूलन ===
=== डुप्लिकेट स्ट्रिंग एलिमिनेशन ===
{{main article|LZ77 and LZ78|LZSS}}
{{main article|LZ77 and LZ78|LZSS}}


संपीड़ित ब्लॉकों के भीतर, यदि बाइट्स की एक डुप्लिकेट श्रृंखला (एक दोहराई गई स्ट्रिंग) देखी जाती है, तो एक बैक-रेफरेंस (कंप्यूटर विज्ञान) डाला जाता है, जो उस समान स्ट्रिंग के पिछले स्थान से लिंक होता है। पिछली स्ट्रिंग के एन्कोडेड मिलान में डुप्लिकेट की शुरुआत में 8-बिट लंबाई (3-258 बाइट्स) और 15-बिट दूरी (1-32,768 बाइट्स) होती है। सापेक्ष बैक-रेफरेंस किसी भी संख्या में ब्लॉक में किए जा सकते हैं, जब तक कि दूरी डिकोड किए गए असम्पीडित डेटा के अंतिम 32 [[किबिबाइट]] के भीतर दिखाई देती है (स्लाइडिंग विंडो कहा जाता है)।
कंप्रेस्ड ब्लॉकों के भीतर, यदि बाइट्स की एक डुप्लिकेट श्रृंखला (एक दोहराई गई स्ट्रिंग) देखी जाती है,तो उसके स्थान पर उस समान स्ट्रिंग के पिछले स्थान से लिंक करते हुए एक बैक-रेफरेंस (कंप्यूटर विज्ञान) डाला जाता है। पिछली स्ट्रिंग के एन्कोडेड मैच में डुप्लिकेट की प्रारम्भ में 8-बिट लंबाई (3-258 बाइट्स) और 15-बिट डिस्टेंस (1-32,768 बाइट्स) होती है। सापेक्ष बैक-रेफरेंस किसी भी संख्या में ब्लॉक में किए जा सकते हैं, जब तक कि डिस्टेंस डिकोड किए गए इनकंप्रेसिब्ल डेटा के अंतिम 32 [[किबिबाइट]] (स्लाइडिंग विंडो कहा जाता है) के भीतर दिखाई देती है


यदि दूरी लंबाई से कम है, तो डुप्लिकेट स्वयं ओवरलैप हो जाता है, जो पुनरावृत्ति का संकेत देता है। उदाहरण के लिए, 10 समान बाइट्स के एक रन को एक बाइट के रूप में एन्कोड किया जा सकता है, इसके बाद पिछले बाइट से शुरू करके लंबाई 9 की डुप्लिकेट बनाई जा सकती है।
यदि डिस्टेंस लंबाई से कम है, तो डुप्लिकेट स्वयं ओवरलैप हो जाता है, जो पुनरावृत्ति का संकेत देता है। उदाहरण के लिए, 10 समान बाइट्स के एक रन को एक बाइट के रूप में एन्कोड किया जा सकता है, इसके बाद पिछले बाइट से प्रारम्भ करके लंबाई 9 की डुप्लिकेट बनाई जा सकती है।


डुप्लिकेट सबस्ट्रिंग के लिए पूर्ववर्ती पाठ की खोज करना DEFLATE एल्गोरिदम का सबसे कम्प्यूटेशनल रूप से महंगा हिस्सा है, और वह ऑपरेशन जो संपीड़न स्तर सेटिंग्स को प्रभावित करता है।
डुप्लिकेट सबस्ट्रिंग के लिए पूर्ववर्ती पाठ की खोज करना डिफ्लेट एल्गोरिदम का सबसे कम्प्यूटेशनल रूप से महंगा भाग है, और वह ऑपरेशन जो कम्प्रेशन स्तर सेटिंग्स को प्रभावित करता है।


=== बिट कमी ===
=== बिट रिडक्शन ===
{{main article|Huffman coding}}
{{main article|हफमैन कोडिंग}}


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


एक पेड़ बनाया गया है, जिसमें 288 प्रतीकों के लिए जगह है:
एक ट्री बनाया गया है, जिसमें 288 सिम्बल्स के लिए जगह है:


* 0-255: शाब्दिक बाइट्स/प्रतीकों 0-255 का प्रतिनिधित्व करें।
* 0-255: शाब्दिक बाइट्स/सिम्बल्स 0-255 का प्रतिनिधित्व करते है ।
* 256: ब्लॉक का अंत - अंतिम ब्लॉक होने पर प्रोसेसिंग रोकें, अन्यथा अगले ब्लॉक पर प्रोसेसिंग शुरू करें।
* 256: ब्लॉक का अंत - अंतिम ब्लॉक होने पर प्रोसेसिंग बंद हो जाता है, अन्यथा अगले ब्लॉक पर प्रोसेसिंग प्रारम्भ बंद हो जाता है।
* 257-285: अतिरिक्त बिट्स के साथ संयुक्त, 3-258 बाइट्स की एक मिलान लंबाई।
* 257-285: अतिरिक्त बिट्स के साथ संयुक्त, 3-258 बाइट्स की एक मैच लंबाई है।
* 286, 287: उपयोग नहीं किया गया, आरक्षित और अवैध लेकिन फिर भी पेड़ का हिस्सा।
* 286, 287: उपयोग नहीं किया गया, रिजर्व्ड और अवैध लेकिन फिर भी ट्री का भाग है।


मैच लंबाई कोड के बाद हमेशा दूरी कोड आएगा। पढ़े गए दूरी कोड के आधार पर, अंतिम दूरी उत्पन्न करने के लिए अतिरिक्त अतिरिक्त बिट्स पढ़े जा सकते हैं। दूरी वृक्ष में 32 प्रतीकों के लिए स्थान होता है:
मैच लंबाई कोड के बाद प्रायः डिस्टेंस कोड आएगा। पढ़े गए डिस्टेंस कोड के आधार पर, अंतिम डिस्टेंस उत्पन्न करने के लिए अतिरिक्त अतिरिक्त बिट्स पढ़े जा सकते हैं। डिस्टेंस ट्री में 32 सिम्बल्स के लिए स्थान होता है:


* 0-3: दूरियाँ 1-4
* 0-3: 1-4 डिस्टेंस
* 4-5: दूरियाँ 5-8, 1 अतिरिक्त बिट
* 4-5: 1 अतिरिक्त बिट, डिस्टेंस 5-8
* 6-7: दूरियाँ 9-16, 2 अतिरिक्त बिट्स
* 6-7: 2 अतिरिक्त बिट्स, डिस्टेंस 9-16
* 8-9: दूरियाँ 17-32, 3 अतिरिक्त बिट्स
* 8-9: 3 अतिरिक्त बिट्स, डिस्टेंस 17-32
*...
*...
* 26-27: दूरियाँ 8,193-16,384, 12 अतिरिक्त बिट्स
* 26-27: 12 अतिरिक्त बिट्स, डिस्टेंस 8,193-16,384
* 28-29: दूरियाँ 16,385-32,768, 13 अतिरिक्त बिट्स
* 28-29: 13 अतिरिक्त बिट्स, डिस्टेंस 16,385-32,768
*30-31: उपयोग नहीं किया गया, आरक्षित और अवैध लेकिन फिर भी पेड़ का हिस्सा।
*30-31: उपयोग नहीं किया गया, रिजर्व्ड और अवैध लेकिन फिर भी ट्री का भाग।


ध्यान दें कि मिलान दूरी प्रतीकों 2-29 के लिए, अतिरिक्त बिट्स की संख्या की गणना इस प्रकार की जा सकती है <math>\left\lfloor\frac{n}{2}\right\rfloor-1</math>.
ध्यान दें कि मैच डिस्टेंस सिम्बल्स 2-29 के लिए, अतिरिक्त बिट्स की संख्या की गणना <math>\left\lfloor\frac{n}{2}\right\rfloor-1</math> प्रकार की जा सकती है .


दो कोड (288-प्रतीक लंबाई/शाब्दिक वृक्ष और 32-प्रतीक दूरी वृक्ष) स्वयं प्रत्येक प्रतीक के लिए कोड की बिट लंबाई देकर [[विहित हफ़मैन कोड]] के रूप में एन्कोड किए गए हैं। बिट लंबाई स्वयं [[रन-लंबाई एन्कोडिंग]] है | रन-लेंथ जितना संभव हो उतना कॉम्पैक्ट प्रतिनिधित्व उत्पन्न करने के लिए एन्कोड किया गया है। वृक्ष प्रतिनिधित्व को शामिल करने के विकल्प के रूप में, स्थिर वृक्ष विकल्प मानक निश्चित हफ़मैन वृक्ष प्रदान करता है। स्थिर पेड़ों का उपयोग करके संपीड़ित आकार की गणना उन्हीं आंकड़ों (प्रत्येक प्रतीक के प्रकट होने की संख्या) का उपयोग करके की जा सकती है, जिनका उपयोग गतिशील पेड़ों को उत्पन्न करने के लिए किया जाता है, इसलिए कंप्रेसर के लिए जो भी छोटा हो उसे चुनना आसान होता है।
दो कोड (288-प्रतीक लंबाई/शाब्दिक ट्री और 32-प्रतीक डिस्टेंस ट्री) स्वयं प्रत्येक प्रतीक के लिए कोड की बिट लंबाई देकर [[विहित हफ़मैन कोड]] के रूप में एन्कोड किए गए हैं। जितना संभव हो उतना कॉम्पैक्ट प्रतिनिधित्व उत्पन्न करने के लिए बिट लंबाई [[रन-लंबाई एन्कोडिंग]] होती है। ट्री प्रतिनिधित्व को सम्मिलित करने के विकल्प के रूप में, स्टेटिक ट्री विकल्प मानक निश्चित हफ़मैन ट्री प्रदान करता है। स्टेटिक ट्री का उपयोग करके कंप्रेस्ड आकार की गणना उन्हीं आंकड़ों (प्रत्येक प्रतीक के प्रकट होने की संख्या) का उपयोग करके की जा सकती है, जिनका उपयोग डायनामिक ट्री को उत्पन्न करने के लिए किया जाता है, इसलिए कंप्रेसर के लिए जो भी छोटा हो उसे चुनना आसान होता है।


== एनकोडर/कंप्रेसर ==
== एनकोडर/कंप्रेसर ==
संपीड़न चरण के दौरान, यह एनकोडर है जो मिलान स्ट्रिंग की तलाश में बिताए गए समय की मात्रा को चुनता है। Zlib/gzip [[संदर्भ कार्यान्वयन]] उपयोगकर्ता को संभावित परिणामी संपीड़न-स्तर बनाम एन्कोडिंग की गति के स्लाइडिंग पैमाने से चयन करने की अनुमति देता है। विकल्प से लेकर होते हैं <code>0</code> (संपीड़न का प्रयास न करें, केवल असंपीड़ित संग्रहित करें)<code>9</code> zlib/gzip में संदर्भ कार्यान्वयन की अधिकतम क्षमता का प्रतिनिधित्व करना।
कम्प्रेशन चरण के समय, यह एनकोडर है जो मैच स्ट्रिंग की अनुसंधान में बिताए गए समय की मात्रा को चुनता है। Zlib/gzip [[संदर्भ कार्यान्वयन|संदर्भ इम्प्लीमेंटेशन]] उपयोगकर्ता को संभावित परिणामी कम्प्रेशन-स्तर बनाम एन्कोडिंग की स्पीड के स्लाइडिंग पैमाने से चयन करने की अनुमति देता है। विकल्प <code>0</code> से लेकर (कम्प्रेशन का प्रयास न करें, केवल अकंप्रेस्ड आर्चिविंग करें) <code>9</code> तक होते हैं जो zlib/gzip में संदर्भ इम्प्लीमेंटेशन की अधिकतम क्षमता का प्रतिनिधित्व करते हैं।
 
अन्य डिफ्लेट एनकोडर का उत्पादन किया गया है, जो सभी एक संगत [[बिटस्ट्रीम]] का उत्पादन करेंगे जो किसी भी मौजूदा डिफ्लेट डिकोडर द्वारा डीकंप्रेस्ड होने में सक्षम होंगे। अलग-अलग कार्यान्वयन से उत्पादित अंतिम एन्कोडेड बिट-स्ट्रीम पर भिन्नता उत्पन्न होने की संभावना है। एनकोडर के गैर-ज़्लिब संस्करणों का ध्यान आम तौर पर अधिक कुशलता से संपीड़ित और छोटी एन्कोडेड स्ट्रीम का उत्पादन करने पर होता है।
 
=== डिफ्लेट64/उन्नत डिफ्लेट ===
PKWARE द्वारा निर्दिष्ट Deflate64, Deflate का एक मालिकाना संस्करण है। यह मूल रूप से वही एल्गोरिदम है। जो परिवर्तन हुआ है वह है शब्दकोश का आकार 32 केबी से बढ़ाकर 64 केबी, दूरी कोड को 16 बिट तक विस्तारित करना ताकि वे 64 केबी की सीमा को संबोधित कर सकें, और लंबाई कोड, जिसे 16 बिट तक बढ़ाया गया है ताकि यह तीन से 65,538 बाइट्स की लंबाई को परिभाषित कर सके।<ref>{{Cite web |url=http://www.binaryessence.com/dct/imp/en000225.htm |title=Binary Essence – Deflate64 |access-date=22 May 2011 |archive-url=https://web.archive.org/web/20170621195505/http://www.binaryessence.com/dct/imp/en000225.htm |archive-date=21 June 2017 |url-status=bot: unknown }}</ref> इसके कारण Deflate64 का संपीड़न समय लंबा हो जाता है, और संभावित रूप से Deflate की तुलना में थोड़ा अधिक संपीड़न अनुपात होता है।<ref>{{Cite web |url=http://www.binaryessence.com/dct/apc/en000263.htm |title=Binary Essence – "Calgary Corpus" compression comparisons |access-date=22 May 2011 |archive-url=https://web.archive.org/web/20171227131819/http://www.binaryessence.com/dct/apc/en000263.htm |archive-date=27 December 2017 |url-status=bot: unknown }}</ref> कई मुफ़्त और/या ओपन सोर्स प्रोजेक्ट्स Deflate64 का समर्थन करते हैं, जैसे [[7-ज़िप]],<ref>{{Cite web|url=https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm|title=-एम (संपीड़न विधि सेट करें) स्विच|website=sevenzip.osdn.jp}}</ref> जबकि अन्य, जैसे [[zlib]], प्रक्रिया की स्वामित्व प्रकृति के परिणामस्वरूप ऐसा नहीं करते हैं<ref>History of Lossless Data Compression Algorithms – [http://ieeeghn.org/wiki/index.php/History_of_Lossless_Data_Compression_Algorithms#DEFLATE64 Deflate64]</ref> और डिफ्लेट की तुलना में प्रदर्शन में बहुत मामूली वृद्धि हुई।<ref>zlib FAQ – [https://www.zlib.net/zlib_faq.html#faq40 Does zlib support the new "Deflate64" format introduced by PKWare?]</ref>


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


=== डिफ्लेट64/इन्हैंस्ड डिफ्लेट ===
PKWARE द्वारा निर्दिष्ट डिफ्लेट64, डिफ्लेट का एक संपदा संस्करण है। यह मूल रूप से वही एल्गोरिदम है, जो परिवर्तन हुआ है वह है शब्दकोश का आकार 32 केबी से बढ़ाकर 64 केबी, डिस्टेंस कोड को 16 बिट तक विस्तारित करना ताकि वे 64 केबी की सीमा को संबोधित कर सकें, और लंबाई कोड, जिसे 16 बिट तक बढ़ाया गया है ताकि यह तीन से 65,538 बाइट्स की लंबाई को परिभाषित कर सके।<ref>{{Cite web |url=http://www.binaryessence.com/dct/imp/en000225.htm |title=Binary Essence – Deflate64 |access-date=22 May 2011 |archive-url=https://web.archive.org/web/20170621195505/http://www.binaryessence.com/dct/imp/en000225.htm |archive-date=21 June 2017 |url-status=bot: unknown }}</ref> इसके कारण डिफ्लेट64 का कम्प्रेशन समय लंबा हो जाता है, और संभावित रूप से डिफ्लेट की तुलना में थोड़ा अधिक कम्प्रेशन अनुपात होता है।<ref>{{Cite web |url=http://www.binaryessence.com/dct/apc/en000263.htm |title=Binary Essence – "Calgary Corpus" compression comparisons |access-date=22 May 2011 |archive-url=https://web.archive.org/web/20171227131819/http://www.binaryessence.com/dct/apc/en000263.htm |archive-date=27 December 2017 |url-status=bot: unknown }}</ref> कई निर्बाध और/या ओपन सोर्स प्रोजेक्ट्स डिफ्लेट64 का समर्थन करते हैं, जैसे [[7-ज़िप]],<ref>{{Cite web|url=https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm|title=-एम (संपीड़न विधि सेट करें) स्विच|website=sevenzip.osdn.jp}}</ref> जबकि अन्य, जैसे [[zlib]], प्रक्रिया की स्वामित्व प्रकृति के परिणामस्वरूप ऐसा नहीं करते हैं<ref>History of Lossless Data Compression Algorithms – [http://ieeeghn.org/wiki/index.php/History_of_Lossless_Data_Compression_Algorithms#DEFLATE64 Deflate64]</ref> और डिफ्लेट की तुलना में प्रदर्शन में बहुत सामान्य वृद्धि हुई है।<ref>zlib FAQ – [https://www.zlib.net/zlib_faq.html#faq40 Does zlib support the new "Deflate64" format introduced by PKWare?]</ref>
== नए सॉफ्टवेयर में डिफ्लेट का उपयोग ==
== नए सॉफ्टवेयर में डिफ्लेट का उपयोग ==
डिफ्लेट का कार्यान्वयन कई भाषाओं में निःशुल्क उपलब्ध है। C (प्रोग्रामिंग भाषा) में लिखे गए ऐप्स आमतौर पर zlib लाइब्रेरी (अनुमेय zlib लाइसेंस के तहत) का उपयोग करते हैं। [[बोर्लैंड पास्कल]] (और संगत भाषाओं) में ऐप्स paszlib का उपयोग कर सकते हैं। [[C++]] में ऐप्स 7-ज़िप में बेहतर डिफ्लेट लाइब्रेरी का लाभ उठा सकते हैं। [[जावा (सॉफ़्टवेयर प्लेटफ़ॉर्म)]] और .NET फ़्रेमवर्क दोनों अपने पुस्तकालयों में डिफ्लेट के लिए आउट-ऑफ़-द-बॉक्स समर्थन प्रदान करते हैं (क्रमशः, <code>java.util.zip</code> और [https://docs.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream System.IO.Compression])। Ada (प्रोग्रामिंग भाषा) में ऐप्स [http://unzip-ada.sourceforge.net/ Zip-Ada] (शुद्ध) या [http://zlib-ada.sourceforge.net/ ZLib-Ada] का उपयोग कर सकते हैं।
डिफ्लेट का इम्प्लीमेंटेशन कई लैंग्वेजओं में निःशुल्क उपलब्ध है। C (प्रोग्रामिंग लैंग्वेज) में लिखे गए ऐप्स सामान्यतः zlib लाइब्रेरी (अनुमेय zlib लाइसेंस के तहत) का उपयोग करते हैं। [[बोर्लैंड पास्कल]] (और संगत लैंग्वेजओं) में ऐप्स paszlib का उपयोग कर सकते हैं। [[C++]] में ऐप्स 7-ज़िप में बेहतर डिफ्लेट लाइब्रेरी का लाभ उठा सकते हैं। [[जावा (सॉफ़्टवेयर प्लेटफ़ॉर्म)]] और .NET फ़्रेमवर्क दोनों अपने लाइब्रेरीज में डिफ्लेट के लिए आउट-ऑफ़-द-बॉक्स समर्थन प्रदान करते हैं (क्रमशः, <code>java.util.zip</code> और [https://docs.microsoft.com/en-us/dotnet/api/system.io.compression.deflatestream System.IO.Compression])। Ada (प्रोग्रामिंग लैंग्वेज) में ऐप्स [http://unzip-ada.sourceforge.net/ Zip-Ada] (शुद्ध) या [http://zlib-ada.sourceforge.net/ ZLib-Ada] का उपयोग कर सकते हैं।
 
=== एनकोडर कार्यान्वयन ===
* PKZIP: पहला कार्यान्वयन, मूल रूप से PKZip के हिस्से के रूप में फिल काट्ज़ द्वारा किया गया
* zlib: इसके ओपन-सोर्स, अनुमेय लाइसेंस के कारण कई ऐप्स में मानक संदर्भ कार्यान्वयन अपनाया गया है। देखना {{section link|Zlib#Forks}} उच्च-प्रदर्शन वाले फ़ोर्क्स के लिए।
* [[क्रिप्टो++]]: संभावित [[भेद्यता (कंप्यूटिंग)]] को कम करने के उद्देश्य से C++ में एक सार्वजनिक-डोमेन कार्यान्वयन शामिल है। लेखक, वेई दाई कहते हैं <उद्धरण>यह कोड कम चतुर है, लेकिन उम्मीद है कि अधिक समझने योग्य और रखरखाव योग्य है [zlib की तुलना में]</cite>।
* 7-ज़िप: सी++ में इगोर पावलोव द्वारा लिखित, यह संस्करण स्वतंत्र रूप से लाइसेंस प्राप्त है और सीपीयू उपयोग की कीमत पर zlib की तुलना में उच्च संपीड़न प्राप्त करता है। DEFLATE64 संग्रहण प्रारूप का उपयोग करने का विकल्प है।
* पुटी 'sshzlib.c': साइमन टैथम द्वारा [[मेरा लाइसेंस]] के तहत एक स्टैंडअलोन कार्यान्वयन, इसमें पूर्ण डिकोडिंग क्षमता है, लेकिन केवल स्थिर वृक्ष निर्माण का समर्थन करता है
* लिबफ़्लेट:<ref>{{Cite web |url=http://plan9.bell-labs.com/sources/plan9/sys/src/libflate/ |title=Plan 9 from Bell Labs's /n/sources/plan9/sys/src/libflate |website=plan9.bell-labs.com |publisher=Lucent Technologies |archive-date=2006-03-15 |archive-url=https://web.archive.org/web/20060315063934/http://plan9.bell-labs.com/sources/plan9/sys/src/libflate/ |url-status=dead }}</ref> बेल लैब्स की योजना 9 का हिस्सा, डिफ्लेट कम्प्रेशन को लागू करता है
* रेड गेट सॉफ्टवेयर#हाइपरबैक: DEFLATE64 स्टोरेज फॉर्मेट को लागू करने के विकल्प के साथ अपनी स्वयं की मालिकाना संपीड़न लाइब्रेरी (C++ और असेंबली में) का उपयोग करता है
* [[Zopfli]]: [[Google]] द्वारा [[अपाचे लाइसेंस]] के तहत C कार्यान्वयन; सीपीयू उपयोग की कीमत पर उच्चतम संपीड़न प्राप्त करता है। ZopfliPNG पोर्टेबल नेटवर्क ग्राफ़िक्स फ़ाइलों के साथ उपयोग के लिए Zopfli का एक रूप है।
* igzip: [[x86 असेंबली भाषा]] में लिखा गया एक एनकोडर, जो MIT लाइसेंस के तहत [[इंटेल]] द्वारा जारी किया गया है। zlib -1 से 3 गुना तेज। जीनोमिक डेटा को संपीड़ित करने के लिए उपयोगी।<ref>{{cite web |title=जीनोमिक डेटा सेट के लिए अनुकूलन के साथ उच्च प्रदर्शन DEFLATE संपीड़न|url=https://software.intel.com/en-us/articles/igzip-a-high-performance-deflate-compressor-with-optimizations-for-genomic-data |website=Intel Software |access-date=18 January 2020 |date=1 October 2019}}</ref>
AdvanceCOMP 7-ज़िप, लिबडेफ्लेट और ज़ोपफ्ली में डिफ्लेट के उच्च संपीड़न अनुपात संस्करणों का उपयोग करता है ताकि जीज़िप की तुलना में छोटे फ़ाइल आकार की संभावना के साथ जीज़िप, पोर्टेबल नेटवर्क ग्राफिक्स, [[ मल्टीपल-इमेज नेटवर्क ग्राफ़िक्स ]] और ज़िप फ़ाइल प्रारूप फ़ाइलों के पुनर्संपीड़न को सक्षम किया जा सके। अधिकतम सेटिंग्स पर प्राप्त करें।<ref>{{cite web |last1=Mazzoleni |first1=Andrea |title=amadvance/advancecomp |website=[[GitHub]] |url=https://github.com/amadvance/advancecomp/blob/fcf71a89265c78fc26243574dda3a872574a5c02/doc/advzip.txt |date=21 February 2023}}</ref>
 


=== एनकोडर इम्प्लीमेंटेशन ===
* PKZIP: पहला इम्प्लीमेंटेशन, मूल रूप से PKZip के भाग के रूप में फिल काट्ज़ द्वारा किया गया
* zlib: इसके ओपन-सोर्स, अनुमेय लाइसेंस के कारण कई ऐप्स में मानक संदर्भ इम्प्लीमेंटेशन अपनाया गया है। उच्च-प्रदर्शन वाले फ़ोर्क्स के लिए {{section link|Zlib#Forks}} देखें।
* [[क्रिप्टो++]]: संभावित [[भेद्यता (कंप्यूटिंग)]] को कम करने के उद्देश्य से C++ में एक सार्वजनिक-डोमेन इम्प्लीमेंटेशन सम्मिलित है। लेखक, वेई दाई कहते हैं "यह कोड कम चतुर है, लेकिन उम्मीद है कि [zlib की तुलना में] अधिक समझने योग्य और रखरखाव योग्य है"।
* 7-ज़िप: C++ में इगोर पावलोव द्वारा लिखित, यह संस्करण स्वतंत्र रूप से लाइसेंस प्राप्त है और सीपीयू उपयोग की कीमत पर zlib की तुलना में उच्च कम्प्रेशन प्राप्त करता है। डिफ्लेट64 आर्चिव फॉर्मेट का उपयोग करने का विकल्प है।
* पुटी 'sshzlib.c': साइमन टैथम द्वारा [[मेरा लाइसेंस|एमआईटी  लाइसेंस]] के तहत एक स्टैंडअलोन इम्प्लीमेंटेशन, इसमें पूर्ण डिकोडिंग क्षमता है, लेकिन केवल स्टेटिक ट्री निर्माण का समर्थन करता है
* लिबफ़्लेट:<ref>{{Cite web |url=http://plan9.bell-labs.com/sources/plan9/sys/src/libflate/ |title=Plan 9 from Bell Labs's /n/sources/plan9/sys/src/libflate |website=plan9.bell-labs.com |publisher=Lucent Technologies |archive-date=2006-03-15 |archive-url=https://web.archive.org/web/20060315063934/http://plan9.bell-labs.com/sources/plan9/sys/src/libflate/ |url-status=dead }}</ref> बेल लैब्स की योजना 9 का भाग, डिफ्लेट कम्प्रेशन को लागू करता है
* हाइपरबैक: डिफ्लेट64 स्टोरेज फॉर्मेट को लागू करने के विकल्प के साथ अपनी स्वयं की मालिकाना कम्प्रेशन लाइब्रेरी (C++ और असेंबली में) का उपयोग करता है
* [[Zopfli]]: [[Google]] द्वारा [[अपाचे लाइसेंस]] के तहत C इम्प्लीमेंटेशन; सीपीयू उपयोग की कीमत पर उच्चतम कम्प्रेशन प्राप्त करता है। ZopfliPNG पोर्टेबल नेटवर्क ग्राफ़िक्स फ़ाइलों के साथ उपयोग के लिए Zopfli का एक रूप है।
* igzip:एमआईटी लाइसेंस के तहत [[इंटेल]] द्वारा जारी [[x86 असेंबली भाषा|x86 असेंबली लैंग्वेज]] में लिखा गया एक एनकोडर। zlib -1 से 3 गुना तेज। जीनोमिक डेटा को कंप्रेस्ड करने के लिए उपयोगी।<ref>{{cite web |title=जीनोमिक डेटा सेट के लिए अनुकूलन के साथ उच्च प्रदर्शन DEFLATE संपीड़न|url=https://software.intel.com/en-us/articles/igzip-a-high-performance-deflate-compressor-with-optimizations-for-genomic-data |website=Intel Software |access-date=18 January 2020 |date=1 October 2019}}</ref>
AdvanceCOMP 7-ज़िप, लिबडेफ्लेट और ज़ोपफ्ली में डिफ्लेट के उच्च संपीड़न अनुपात संस्करणों का उपयोग करता है ताकि जीज़िप, पीएनजी, एमएनजी और ज़िप फ़ाइलों के पुनर्संपीड़न को सक्षम किया जा सके, जिसमें zlib की तुलना में छोटे फ़ाइल आकार की संभावना अधिकतम सेटिंग्स पर प्राप्त करने में सक्षम है। <ref>{{cite web |last1=Mazzoleni |first1=Andrea |title=amadvance/advancecomp |website=[[GitHub]] |url=https://github.com/amadvance/advancecomp/blob/fcf71a89265c78fc26243574dda3a872574a5c02/doc/advzip.txt |date=21 February 2023}}</ref>
=== हार्डवेयर एनकोडर ===
=== हार्डवेयर एनकोडर ===
* एएचए 361-पीसीआई/एएचए362-पीसीआई एक्स [http://www.aha.com/ कॉमटेक एएचए] से {{Webarchive|url=https://web.archive.org/web/20061208005415/http://www.aha.com/ |date=2006-12-08 }}. कॉमटेक ने एक [[पीसीआई-एक्स]] कार्ड (पीसीआई-आईडी) तैयार किया: <code>193f:0001</code>) आने वाले असम्पीडित डेटा के लिए 3.0 जीबी/एस (375 एमबी/एस) तक की दर पर डिफ्लेट का उपयोग करके स्ट्रीम को संपीड़ित करने में सक्षम है। AHA361-PCIX के लिए [[लिनक्स (कर्नेल)]] [[डिवाइस ड्राइवर]] के साथ एक है<code>ahagzip</code>उपयोगिता और अनुकूलित<code>mod_deflate_aha</code>[[अपाचे HTTP सर्वर]] से हार्डवेयर संपीड़न का उपयोग करने में सक्षम। हार्डवेयर [[Xilinx]] Virtex ([[FPGA]]) FPGA और चार कस्टम AHA3601 एप्लिकेशन-विशिष्ट एकीकृत सर्किट पर आधारित है। AHA361/AHA362 बोर्ड केवल स्थिर हफ़मैन ब्लॉकों को संभालने तक ही सीमित हैं और समर्थन जोड़ने के लिए सॉफ़्टवेयर को संशोधित करने की आवश्यकता होती है - कार्ड पूर्ण डिफ्लेट विनिर्देश का समर्थन करने में सक्षम नहीं थे, जिसका अर्थ है कि वे केवल अपने स्वयं के आउटपुट को विश्वसनीय रूप से डीकोड कर सकते हैं (एक स्ट्रीम जिसमें कोई गतिशील हफ़मैन प्रकार 2 ब्लॉक शामिल नहीं थे)।
* कॉमटेक एएचए से AHA361-PCIX/AHA362-PCIX संग्रहीत 2006-12-08 को वेबैक मशीन पर। कॉमटेक ने एक [[पीसीआई-एक्स]] कार्ड (PCI-ID: 193f:0001) तैयार किया, जो आने वाले इनकंप्रेसिब्ल डेटा के लिए 3.0 Gbit/s (375 MB/s) तक की दर पर डिफ्लेट का उपयोग करके स्ट्रीम को कंप्रेस्ड करने में सक्षम है। AHA361-PCIX के लिए [[लिनक्स (कर्नेल)]] [[डिवाइस ड्राइवर]] के साथ एक "aagzip" उपयोगिता और अनुकूलित "mod_डिफ्लेट_aha" है जो [[अपाचे HTTP सर्वर]] से हार्डवेयर कम्प्रेशन का उपयोग करने में सक्षम है। हार्डवेयर Xilinx Virtex FPGA और चार कस्टम AHA3601 ASIC पर आधारित है। AHA361/AHA362 बोर्ड केवल स्थैतिक हफ़मैन ब्लॉकों को संभालने तक ही सीमित हैं और समर्थन जोड़ने के लिए सॉफ़्टवेयर को संशोधित करने की आवश्यकता है - कार्ड पूर्ण डिफ्लेट विनिर्देश का समर्थन करने में सक्षम नहीं थे, जिसका अर्थ है कि वे केवल अपने स्वयं के आउटपुट को विश्वसनीय रूप से डीकोड कर सकते हैं (एक स्ट्रीम जो नहीं करती थी) इसमें कोई भी डायनामिक हफ़मैन प्रकार 2 ब्लॉक सम्मिलित हैं)।
* [http://www.dranetworks.com/SC300.html StorCompress 300]/[http://www.dranetworks.com/SCMX3.html MX3] [http://www.dranetworks.com/ इंद्रा नेटवर्क्स] से। यह [[पीसीआई लोकल बस]] की एक श्रृंखला है (पीसीआई-आईडी: <code>17b4:0011</code>) या PCI-X कार्ड जिसमें एक से छह कम्प्रेशन इंजन होते हैं जिनकी प्रोसेसिंग गति 3.6 Gbit/s (450 MB/s) तक होने का दावा किया जाता है। कार्ड का एक संस्करण अलग ब्रांड WebEnhance के साथ उपलब्ध है जो विशेष रूप से [[संरक्षण क्षेत्र नियंत्रण क