असममित अंक प्रणाली

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

अन्य बातों के अतिरिक्त, एएनएस का उपयोग फेसबुक फेसबुक ज़ेडस्टैंडर्ड कंप्रेसर  (उदाहरण के लिए लिनक्स कर्नेल, एंड्रॉइड ऑपरेटिंग सिस्टम में भी उपयोग किया जाता है जिसे एमआईएमई और एचटीटीपी के ​​लिए RFC 8478 के रूप में प्रकाशित किया गया था  ), एप्पल इंक एलजेडएफएसई कंप्रेसर, गूगल ड्रेको 3डी कंप्रेसर (उदाहरण के लिए पिक्सर सार्वभौमिक दृश्य विवरण फॉर्मेट में उपयोग किया जाता है ) और पीआईके छवि कंप्रेसर, सीआरएएम डीएनए कंप्रेसर सैमटूल्स उपयोगिताओं से, ड्रॉपबॉक् Divएएनएस  कंप्रेसर, माइक्रोसॉफ्ट डायरेक्टस्टोरेज बीसीपैक टेक्सचर कंप्रेसर, और जेपीईजी एक्सएल छवि कंप्रेसर इत्यादि में किया जाता है।

मूल विचार सूचना को प्राकृतिक संख्या $$x$$ में एन्कोड करना है। मानक बाइनरी संख्या प्रणाली में, हम थोड़ा सा $$s \in \{0, 1\}$$ को सूचना को $$x$$ में जोड़कर $$x$$ के अंत में $$s$$ संलग्न करते है, जिसके फलस्वरूप हमे $$x' = 2x + s$$ प्राप्त होता। एन्ट्रॉपी कोडर के लिए, यह श्रेष्ट होता है यदि $$\Pr(0) = \Pr(1) = 1/2$$ होता है। एएनएस  इस प्रक्रिया $$s \in S$$ को प्रतीकों के अनैतिक समुच्चय संभाव्यता वितरण के साथ $$(p_s)_{s \in S}$$ के लिए सामान्यीकृत करता है। एएनएस में, यदि सूचना $$s$$ से $$x$$में जोड़ा जाता है तो इसके परिणामस्वरूप $$x'$$ प्राप्त होता है, तब $$x' \approx x \cdot p_s^{-1}$$होता है। समान रूप से, $$\log_2(x') \approx \log_2(x) + \log_2(1/p_s)$$ होता है, जहाँ $$\log_2(x)$$ संख्या में संग्रहीत सूचना के बिट्स की संख्या $$x$$ होती है, और $$\log_2(1/p_s)$$ प्रतीक $$s$$ में निहित बिट्स की संख्या होती है।

एन्कोडिंग नियम के लिए, प्राकृतिक संख्याओं के समुच्चय को विभिन्न प्रतीकों के अनुरूप असंयुक्त उपसमूहों में विभाजित किया जाता है –  जैसे सम और विषम संख्याओं के अनुसार, परन्तु  एन्कोड करने के लिए प्रतीकों की संभाव्यता वितरण के अनुरूप घनत्व के साथ। फिर प्रतीक $$s$$ से सूचना को   वर्तमान संख्या में पहले से ही संग्रहीत सूचना $$x$$ में जोड़ता है, इसके पश्चात् हम $$x' = C(x, s) \approx x/p$$ नंबर पर जाते हैं  $$x$$-वें से उपस्थिति की स्थिति होने के नाते $$s$$-वां उपसमुच्चय प्राप्त होता है।

इसे व्यवहार में प्रयुक्त करने के वैकल्पिक विधियाँ होती हैं – एन्कोडिंग और डिकोडिंग चरणों (यूएबीएस और आरएएनएस वेरिएंट) के लिए प्रत्यक्ष गणितीय सूत्र, या कोई संपूर्ण व्यवहार को तालिका (टीएएनएस वेरिएंट) में सम्मिलित कर सकता है। $$x$$ को अनंत तक जाने से रोकने के लिए पुनर्सामान्यीकरण का उपयोग किया जाता है - संचित बिट्स को बिटस्ट्रीम से या उससे स्थानांतरित करना होता है।

एंट्रॉपी कोडिंग
मान लीजिए कि 1,000 शून्य और एक अनुक्रम एन्कोड किया जाता है, जिसे प्रत्यक्ष स्टोर करने में 1000 बिट्स लगते है। यघपि, अगर यह किसी तरह ज्ञात हो कि इसमें मात्र 1 शून्य और 999 होता हैं, तो यह शून्य की स्थिति को एनकोड करने के लिए यह पर्याप्त होता है, जिसके लिए मात्र 1000 बिट्स के अतिरिक्त $$\lceil \log_2(1000)\rceil \approx 10$$  बिट्स की आवश्कता होती है।

सामान्यतः, ऐसी लंबाई $$n$$ अनुक्रम युक्त $$pn$$ शून्य और $$(1-p)n$$ वाले, कुछ संभावना के लिए $$p\in(0,1)$$, संयोजन कहलाते हैं। स्टर्लिंग सन्निकटन का उपयोग करके हमें उनकी स्पर्शोन्मुख संख्या प्राप्त होती है


 * $${n \choose pn }\approx 2^{nh(p)} \text{ for large } n \text{ and } h(p) =-p \log_2(p)-(1-p)\log_2(1-p), $$

जिसे एन्ट्रॉपी (सूचना सिद्धांत) कहा जाता है।

इसलिए, ऐसे किसी क्रम को चुनने के लिए हमें न्यूनाधिक $$n h(p)$$ बिट्स की आवश्यकता होती है। यह अब भी $$n$$ बिट्स होता है अगर $$p=1/2$$ होता है यघपि, यह बहुत छोटा भी हो सकता है। उदाहरण के लिए, हमें मात्र  $$\approx n/2$$ के लिए बिट्स $$p = 0.11$$की आवश्यकता होती है।

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

एन्कोडिंग संयोजनों के विपरीत, यह संभाव्यता वितरण सामान्यतः डेटा कंप्रेसर में भिन्न होता है। इस प्रयोजन के लिए, शैनन एन्ट्रॉपी को भारित औसत के रूप में देखा जा सकता है: संभाव्यता का प्रतीक $$p$$ को $$\log_2(1/p)$$ सूचना के बिट्स से संलग्न किया जाता है। एएनएस जानकारी को एक प्राकृतिक संख्या $$x$$ में एन्कोड करता है, जिसकी व्याख्या सूचना के $$\log_2(x)$$ के रूप में दी जाती है। संभाव्यता के प्रतीक $$p$$ से सूचना जोड़ने से यह  सूचनात्मक सामग्री$$\log_2(x)+\log_2(1/p)=\log_2(x/p)$$ तक बढ़ जाती है। इसलिए, नए नंबर $$x'\approx x/p $$ में दोनों सूचना होनी चाहिए।

प्रेरक उदाहरण
1/2, 1/4, 1/4 प्रायिकता के साथ 3 अक्षरों A, B, C वाले स्रोत पर विचार करें। बाइनरी में सर्वश्रेष्ठ उपसर्ग कोड  A = 0, B = 10, C = 11 बनाना सरल होता  है। फिर संदेश को ABC -> 01011 के रूप में एन्कोड किया जाता है।

हम देखते हैं कि एन्कोडिंग करने के लिए समकक्ष विधि इस प्रकार है:


 * संख्या 1 से प्रारंभ करें, और प्रत्येक इनपुट अक्षर के लिए संख्या पर संचालन करें।
 * A = 2 से गुणा करें; B= 4 से गुणा करें, 2 जोड़ें; C = 4 से गुणा करें, 3 जोड़ें।
 * संख्या को बाइनरी में व्यक्त करें, फिर प्रथम अंक 1 हटा दें।

तर्कसंगत संभावनाओं $$n_1/N, ..., n_k/N$$ के साथ k अक्षरों वाले अधिक सामान्य स्रोत पर विचार करेंI फिर स्रोत पर अंकगणितीय कोडिंग करने के लिए मात्र पूर्णांकों के साथ स्पष्ट अंकगणित की आवश्यकता होती है।

सामान्यतः, एएनएस अंकगणितीय कोडिंग का प्राक्कलन होता है जो वास्तविक संभावनाओं $$r_1, ..., r_k$$ तर्कसंगत $$n_1/N, ..., n_k/N$$ संख्याओं द्वारा  छोटे हर के साथ $$N$$का प्राक्कलन लगाता है।

एएनएस की मूल अवधारणाएँ
कल्पना कीजिए कि कुछ सूचना प्राकृतिक संख्या $$x$$ में संग्रहीत होता है, उदाहरण के लिए इसके बाइनरी विस्तार के बिट अनुक्रम के रूप में होता है। बाइनरी वेरिएबल $$s$$ से सूचना जोड़ने के लिए, हम कोडिंग फलन का उपयोग कर सकते हैं $$x'=C(x,s) = 2x + s $$, जो सभी बिट्स को स्थान ऊपर स्थानांतरित करता है, और नए बिट को कम से कम महत्वपूर्ण स्थान पर रखता है। अब डिकोडिंग फलन $$D(x')=(\lfloor x'/2 \rfloor, \mathrm{mod}(x',2))$$ किसी को पिछले को पुनः प्राप्त करने की अनुमति देता है $$x$$ और इसमें थोड़ा सा संलग्न किया गया: $$D(C(x,s))=(x,s),\ C(D(x'))=x'$$होता है। हम $$x=1$$ प्रारंभिक अवस्था से  प्रारम्भ कर सकते हैं, फिर उपयोग कर सकते है $$C$$अंतिम प्राप्त करने के लिए परिमित बिट अनुक्रम के क्रमिक बिट्स पर कार्य करता है $$x$$ इस पूरे अनुक्रम को संग्रहीत करने वाली संख्या होती  है। फिर $$D$$ का उपयोग तब तक कार्य के लिए किया जाता है जब तक  $$x=1$$ किसी को बिट अनुक्रम को व्युत्क्रम क्रम में पुनः प्राप्त करने की अनुमति देता है।

उपरोक्त प्रक्रिया प्रतीकों $$\Pr(0)=\Pr(1)=1/2$$ के समान (सममित) संभाव्यता वितरण के लिए सर्वश्रेष्ठ होता है। एएनएस इसे प्रतीकों $$\Pr(s)=p_s$$ के किसी भी चयन किये हुए (असममित) संभाव्यता वितरण के लिए सर्वश्रेष्ठ बनाने के लिए सामान्यीकृत करता है। जबकि $$s$$ उपरोक्त उदाहरण में सम और विषम $$C(x,s)$$ के मध्य चयन करना था, एएनएस में प्राकृतिक संख्याओं के इस सम/विषम विभाजन को कल्पित संभाव्यता वितरण के अनुरूप घनत्व वाले उपसमूहों में विभाजन के साथ प्रतिस्थापित किया जाता है। $$\{p_s\}_s$$: पद $$x$$ तक, न्यूनाधिक हैं $$x p_s$$ प्रतीक की घटनाएँ $$s$$.

कोडिंगफलन $$ C(x,s)$$ को लौटाता है $$x$$प्रतीक के अनुरूप ऐसे उपसमुच्चय से -वाँ स्वरूप $$ s$$. घनत्व धारणा स्थिति के बराबर है $$ x'=C(x,s) \approx x / p_s $$. यह मानते हुए कि यह प्राकृतिक संख्या है $$ x $$ रोकना $$ \log_2(x) $$ सूचना के टुकड़े, $$ \log_2(C(x,s)) \approx \log_2(x) + \log_2(1/ p_s) $$. अतः संभाव्यता का प्रतीक है $$ p_s $$ युक्त के रूप में एन्कोड किया गया है $$ \approx\log_2(1/ p_s) $$ एन्ट्रॉपी एन्कोडिंग से आवश्यक सूचना के टुकड़े।

यूनिफ़ॉर्म बाइनरी वेरिएंट (यूएबीएस)
आइए द्विआधारी वर्णमाला और संभाव्यता वितरण से शुरुआत करें $$ \Pr(1) = p$$, $$\Pr(0)=1-p $$. पद तक $$ x $$ हम न्यूनाधिक चाहते हैं $$ p\cdot x $$ विषम संख्याओं के अनुरूप (के लिए) $$s = 1$$). हम दिखावे की इस संख्या को इस प्रकार चुन सकते हैं $$\lceil x\cdot p \rceil$$, उपार्जन $$s = \lceil (x+1)\cdot p \rceil - \lceil x\cdot p \rceil $$. इस संस्करण को यूएबीएस कहा जाता है और यह निम्नलिखित डिकोडिंग और एन्कोडिंग कार्यों की ओर ले जाता है: डिकोडिंग: एन्कोडिंग: के लिए $$p=1/2$$ यह अलग के लिए मानक बाइनरी सिस्टम (0 और 1 उलटा के साथ) के बराबर है $$p$$ यह इस दिए गए संभाव्यता वितरण के लिए सर्वश्रेष्ठ बन जाता है। उदाहरण के लिए, के लिए $$p=0.3$$ ये सूत्र छोटे मानों के लिए तालिका की ओर ले जाते हैं $$x$$:

प्रतीक $$s=1$$ घनत्व के साथ प्राकृतिक संख्याओं के सबसमुच्चय से मेल खाता है $$p=0.3$$, जो इस मामले में पद हैं $$\{0,3,6,10,13,16,20,23,26,\ldots\}$$. जैसा $$1/4< 0.3 < 1/3$$, इन पदों में 3 या 4 की वृद्धि होती है। क्योंकि $$p=3/10$$ यहां, प्रतीकों का पैटर्न हर 10 स्थिति में दोहराया जाता है।

कोडिंग $$C(x,s)$$ किसी दिए गए प्रतीक के अनुरूप पंक्ति लेकर पाया जा सकता है $$s$$, और दिए गए को चुनना $$x$$ इस पंक्ति में. फिर शीर्ष पंक्ति प्रदान करती है $$C(x,s)$$. उदाहरण के लिए, $$C(7,0)=11 $$ मध्य से शीर्ष पंक्ति तक.

कल्पना कीजिए कि हम '0100' से प्रारम्भ  होने वाले अनुक्रम को एन्कोड करना चाहेंगे $$x=1$$. पहला $$s=0$$ हमें ले जाता है $$x=2$$, तब $$s=1$$ को $$x=6$$, तब $$s=0$$ को $$x=9$$, तब $$s=0$$ को $$x=14$$. डिकोडिंगफलन का उपयोग करके $$D(x')$$ इस फाइनल पर $$x$$, हम प्रतीक अनुक्रम पुनः प्राप्त कर सकते हैं। इस प्रयोजन के लिए तालिका का उपयोग करते हुए, $$x$$ पहली पंक्ति में कॉलम निर्धारित होता है, फिर गैर-रिक्त पंक्ति और लिखित मान संबंधित निर्धारित करते हैं $$s$$ और $$x$$.

रेंज वेरिएंट (आरएएनएस) और स्ट्रीमिंग
श्रेणी संस्करण अंकगणितीय सूत्रों का भी उपयोग करता है, परन्तु बड़े वर्णमाला पर संचालन की अनुमति देता है। सहज रूप से, यह प्राकृतिक संख्याओं के समुच्चय  को आकार में विभाजित करता है $$2^n$$ श्रेणियाँ, और उनमें से प्रत्येक को कल्पित संभाव्यता वितरण द्वारा दिए गए अनुपातों की उपश्रेणियों में समान विधियाँ से विभाजित करें।

हम संभाव्यता वितरण के परिमाणीकरण से शुरुआत करते हैं $$2^n$$ हर, कहाँ $n$ चुना गया है (सामान्यतः 8-12 बिट्स): $$p_s \approx f[s]/2^n$$ कुछ प्राकृतिक के लिए $$f[s]$$ संख्याएँ (उपश्रेणियों के आकार)।

निरूपित $$\text{mask} = 2^n-1$$, और संचयी वितरणफलन :


 * $$\operatorname{CDF}[s] = \sum_{i<s} f[i] =f[0]+ \cdots +f[s-1].$$

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

के लिए $$y\in[0,2^n-1]$$फलन को निरूपित करें (सामान्यतः तालिकाबद्ध)

अब कोडिंगफलन है:

डिकोडिंग:

इस तरह हम प्रतीकों के अनुक्रम को बड़ी प्राकृतिक संख्या में कूटबद्ध कर सकते हैं $x$. बड़ी संख्या के अंकगणित के उपयोग से बचने के लिए, व्यवहार में स्ट्रीम वेरिएंट का उपयोग किया जाता है: जो प्रयुक्त करता है $$ x\in [L, b \cdot L-1] $$ पुनर्सामान्यीकरण द्वारा: कम से कम महत्वपूर्ण बिट्स भेजना $x$ बिटस्ट्रीम से या उससे (सामान्यतः $L$ और $b$ 2) की शक्तियां हैं।

rएएनएस संस्करण में $x$ उदाहरण के लिए 32 बिट है। 16 बिट पुनर्सामान्यीकरण के लिए, $$ x\in [2^{16},2^{32}-1]$$, डिकोडर जरूरत पड़ने पर बिटस्ट्रीम से कम से कम महत्वपूर्ण बिट्स को फिर से भरता है:

सारणीबद्ध संस्करण (tएएनएस )
टीएएनएस संस्करण संपूर्ण व्यवहार (पुनर्सामान्यीकरण सहित) को रखता है $$x\in[L,2L-1]$$ तालिका में जो गुणन की आवश्यकता से बचते हुए परिमित-राज्य मशीन उत्पन्न करती है।

अंत में, डिकोडिंग लूप के चरण को इस प्रकार लिखा जा सकता है: एन्कोडिंग लूप का चरण: प्रत्येक को प्रतीक निर्दिष्ट करके विशिष्ट टीएएनएस कोडिंग निर्धारित की जाती है $$[L,2L-1]$$ स्थिति, उनकी उपस्थिति की संख्या कल्पित संभावनाओं के समानुपाती होनी चाहिए। उदाहरण के लिए, कोई Pr(a)=3/8, Pr(b)=1/8, Pr(c)=2/8, Pr(d)=2/8 संभाव्यता वितरण के लिए abdacdac असाइनमेंट चुन सकता है। यदि प्रतीकों को 2 की घात वाली लंबाई की श्रेणियों में निर्दिष्ट किया गया है, तो हमें हफ़मैन कोडिंग मिलेगी। उदाहरण के लिए, aaabcdd प्रतीक असाइनमेंट के साथ tएएनएस के लिए a->0, b->100, c->101, d->11 उपसर्ग कोड प्राप्त किया जाएगा।



टिप्पणियाँ
हफ़मैन कोडिंग के लिए, tएएनएस की संभाव्यता वितरण को संशोधित करना अपेक्षाकृत महंगा है, इसलिए इसका उपयोग मुख्य रूप से स्थैतिक स्थितियों में किया जाता है, सामान्यतः कुछ LZ77 और LZ78|लेम्पेल-ज़िव योजना (जैसे ZSTD, LZFSE) के साथ। इस मामले में, फ़ाइल को ब्लॉकों में विभाजित किया गया है - उनमें से प्रत्येक के लिए प्रतीक आवृत्तियों को स्वतंत्र रूप से गिना जाता है, फिर प्राक्कलन (परिमाणीकरण) के बाद ब्लॉक हेडर में लिखा जाता है और tएएनएस  के लिए स्थिर संभाव्यता वितरण के रूप में उपयोग किया जाता है।

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

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

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

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

डूडा (संयोग से) Google के पेटेंट इरादों की खोज से खुश नहीं था, क्योंकि वह स्पष्ट था कि वह इसे सार्वजनिक डोमेन के रूप में चाहता था, और उसने विशेष रूप से उस आधार पर Google की सहायता की थी। डूडा ने बाद में तृतीय-पक्ष आवेदन दायर किया अमेरिकी पेटेंट कार्यालय में अस्वीकृति की मांग करते हुए। यूएसपीटीओ ने 2018 में इसके आवेदन को खारिज कर दिया और बाद में Google ने पेटेंट को छोड़ दिया। जून 2019 में Microsoft ने रेंज असममित संख्या प्रणाली एन्कोडिंग और डिकोडिंग की विशेषताएं नामक पेटेंट आवेदन दर्ज किया। यूएसपीटीओ ने 27 अक्टूबर, 2020 को आवेदन की अंतिम अस्वीकृति जारी की। फिर भी 2 मार्च, 2021 को, माइक्रोसॉफ्ट ने यूएसपीटीओ व्याख्यात्मक फाइलिंग दी जिसमें कहा गया कि आवेदक सम्मानपूर्वक अस्वीकृति से असहमत है।, आफ्टर फाइनल कंसीडरेशन पायलट 2.0 कार्यक्रम के तहत अंतिम अस्वीकृति को पलटने की मांग की जा रही है। पुनर्विचार के बाद, यूएसपीटीओ ने 25 जनवरी, 2022 को आवेदन स्वीकार कर लिया।

यह भी देखें

 * एन्ट्रापी एन्कोडिंग
 * हफ़मैन कोडिंग
 * अंकगणित कोडिंग
 * रेंज एन्कोडिंग
 * ज़स्टैंडर्ड फेसबुक कंप्रेसर
 * LZFSE एप्पल कंप्रेसर

बाहरी संबंध

 * High throughput hardware architectures for asymmetric numeral systems entropy coding S. M. Najmabadi, Z. Wang, Y. Baroud, S. Simon, ISPA 2015
 * New Generation Entropy coders Finite state entropy (FSE) implementation of tएएनएस by Yann Collet
 * rygorous/ryg_rएएनएस Implementation of rएएनएस  by Fabian Giesen
 * jkbonfield/rएएनएस _static Fast implementation of rएएनएस and aritmetic coding by James K. Bonfield
 * facebook/zstd Facebook Zstandard compressor by Yann Collet (author of LZ4)
 * LZFSE LZFSE compressor (LZ+FSE) of Apple Inc.
 * CRAM 3.0 DNA compressor (order 1 rएएनएस ) (part of SAMtools) by European Bioinformatics Institute
 * implementation for Google VP10
 * implementation for Google WebP
 * Google Draco 3D compression library
 * aom_dsp - aom - Git at Google implementation of Alliance for Open Media
 * Data Compression Using Asymmetric Numeral Systems - Wolfram Demonstrations Project Wolfram Demonstrations Project
 * GST: GPU-decodable Supercompressed Textures GST: GPU-decodable Supercompressed Textures
 * Understanding compression book by A. Haecky, C. McAnlis