सीमा के निर्देशिका सेट को संपादित करें

हम त्रिकोण की सूची में तत्व के बारे में जानकारी दर्ज करने की जरूरत है.

हम इस बात पर ध्यान देंगे कि एनकोडिंग की तुलना में एक सेट के बराबर समस्या (एक बक्सा जो गैर-संरूप तत्वों को भंडारित करता है), विशेष तत्वों का पता लगाने के लिए सेट किया गया है कि केवल पूर्णांक सीमा के तत्व शामिल हो सकते हैं: [0 - 1, त्रिकोण की संख्या, जो त्रिकोण की सूची है.


ऑब्जेक्ट: इस सेट को बिट्स की न्यूनतम संख्या का उपयोग करने के लिए.

वर्णन

चलो छोटी सी बात को देखें, जो कई मामलों में कठोर हो सकती है:

यह भंडार था:

  • सीमा में तत्वों की संख्या ( ३१ बिट्स के साथ), चूंकि जावा सूची में केवल २^31 - १ तत्व ही सीमित हैं.
  • प्रत्येक सूची के लिए 1 बिट द्वारा पालन करें, यह सूचित करने के लिए कि तत्व सेट में मौजूद है या नहीं ।

यह वह कार्यान्वयन है जो कि डिवेंट छवि के पहले संस्करण को भंडारित करता है, ताकि डाटा बांट कर सहेजे जाने वाले अंश को जमा करे और शिंग्रास के अंदर ले जाएँ.

हालांकि यह कम से कम करने के लिए तत्वों की संख्या कम हो जाने के लिए, वे कुल का एक बहुत छोटा सा भाग बन जाते हैं, जिस में छोटे एनकोडिंग काफी बेहतर हो सकता है.


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


पहला कदम : जब सेट में तत्वों की संख्या सीमा के आकार से बहुत छोटी होती है, तो हम इस बात पर विचार कर सकते हैं कि वे कहाँ हैं ।

इस मामले में, प्रयोग होता:

  • सीमा में तत्वों की संख्या के लिए 31 बिट्स.
  • सेट में मौजूद तत्वों की संख्या के लिए 31 बिट्स.
  • 31 बिट्स * सेट में मौजूद तत्वों की संख्या.


दूसरा तरीका .. हम प्रत्येक भंडारित तत्व की संख्या बेहतर करते हैं:

  • सीमा में तत्वों की संख्या के लिए 31 बिट्स. सीमा में सबसे बड़े तत्व की संख्या (e) एन. ए. हिसाब किया जाएगा.
  • जमा करने के लिए 5 बिट्स एन. ए. ___तो, यदि सीमा के तत्वों की संख्या १०23 थी, तो इन ५ बिट्स में १० व्यक्‍ति जमा किए जाएँगे ।
  • एन. ए. बिट्स, सेट में तत्वों की संख्या स्टोर करने के लिए.
  • एन. ए. सेट में मौजूद तत्वों की संख्या बिट्स *.

खैर, छोटे से हम एक बेहतर एनकोडिंग के करीब हो रहे हैं...


तृतीय एप्रेशन .. हम जानते हैं कि अगर हम बढ़ते क्रम में सेट की तरह, डेल्टा ( निरंतर तत्वों के बीच) शायद कम बिट्स के साथ दर्ज किया जा सकता है सीमा के पूर्ण तत्व से कम बिट्स के साथ:

  • सीमा में तत्वों की संख्या के लिए 31 बिट्स.
  • हम एक तत्व को दर्ज करने के लिए सबसे छोटे संख्या Bebelelm की गणना करते हैं.डेल्टा्स की सूची की हम भी गणना करते हैं (जब सेट में तत्वों की अलग- अलग- अलग- अलग- अलग- अलग तत्वों की सूची).और अंत में, हम भी गणना एनमुल्सडीए
  • जमा करने के लिए 5 बिट्स एन. ए. ___
  • जमा करने के लिए 5 बिट्स एनमुल्सडीए ___
  • एन. ए. बिट्स, सेट में तत्वों की संख्या स्टोर करने के लिए.
  • एनमुल्सडीए सेट में तत्वों की संख्या बिट्स *.


ठीक है, ऐसा लगता है कि हम पहले से ही सहसा एनकोडिंग पहुँच रहे हैं, है ना?

चलो जारी रखते हैं...

चौथा एग्रिमेशन .. हम इस बात पर ध्यान केंद्रित करते हैं कि छोटे डेल्टा की एक बहुत बड़ी संख्या हो सकती है, और शायद कुछ बड़े लोग हैं, कि ई तोड़ने एनमुल्सडीए एस.

इन परिस्थितियों में, हम एक ई मिल सकता है अ- धातु अधिकतम मान से छोटा है हमममुला `%s', जो बदले में कम है या समान है एन. ए. एस.

लेकिन कैसे हम एक डेल्टा तत्व है कि ई से अधिक अ- धातु है ना?

खैर... क्योंकि डेल्टा 0 कभी नहीं होगा (कोई दोहराया तत्वों सेट में नहीं हैं), हम मूल्य 0 का उपयोग कर सकते हैं यह सूचित करने के लिए कि यह एक विशेष मूल्य है.

और कि 0 डेल्टा के मूल्य के बाद पीछा किया जाएगा, लेकिन इस बार D के साथ दर्ज किया जाएगा हमममुला एस.आकाश की कुल संख्या की गणना ऐसे की जा सकती है:

  • सीमा में तत्वों की संख्या के लिए 31 बिट्स. हम छोटे से छोटे की गणना करते हैं एन. ए. एक तत्व सहेजने में समर्थ होने के लिए. हम डेल्टा की सूची की गणना में लगातार तत्वों के सेट के बीच अंतरों की सूची (सूची) की गणना करते हैं.
  • 31 बिट्स, सेट में तत्वों की संख्या स्टोर करने के लिए.
  • जमा करने के लिए 5 बिट्स अ- धातु ___
  • जमा करने के लिए 5 बिट्स हमममुला ___
  • अ- धातु सेट में तत्वों की संख्या बिट्स *.
  • हमममुला बिट्स * डेल्टा की संख्या जो इससे ज्यादा है अ- धातु ___


क्या हम पहले से ही अनुकूलित एनकोडिंग तक पहुँच चुके हैं?

पांचवां एग्रोमेशन ठीक है... क्योंकि हम पहले से ही यह सब तय कर चुके हैं...हम सहज स्थिति के बारे में सोच सकते हैं...क्या यह संभव है कि एक ही एल्गोरिथ्म के साथ सेट के अवयव का एनकोडिंग अधिक संपीडित परिणाम उत्पन्‍न करेगा?

एक और सेट के रूप में नियत, मूल सेट से अलग किए गए समूह के रूप में समझा जाता है, जिसका मूल सेट में पूरी सीमा है ।

यही वजह है कि मूल सेट में जितने भी पहलू रह जाते थे, उनमें से कोई भी मूल स्थान में नहीं रह सकता था ।

इसलिए हम मूल सेट को प्राप्त कर सकते हैं, और इस वजह से उस व्यक्‍ति को सुरक्षित रख सकते हैं ।

स्पष्ट अनुप्रयोग एक सेट है कि सीमा के सभी तत्वों को एक, या कुछ में...

ठीक है... अगर हम केवल पीछे रखे हैं (संग्रेजी सेट), यह एक बहुत छोटे आकार में रखा जा सकता है, है ना?

इस केस में एनकोडिंग इस तरह हो सकता है:

  • सीमा में तत्वों की संख्या के लिए 31 बिट्स. हम छोटे से छोटे की गणना करते हैं एन. ए. अवयव सहेजने के लिए. हम डेल्टा्स की सूची की भी गणना करते हैं (अंग्रेड में तत्वों की सूची).
  • 1 थोड़ा - सा स्टोर करने के लिए, चाहे हम मूल सेट जमा करें या फिर मेल - जोल रखते हों ।यह अतिरिक्त सा है.
  • 31 बिट्स, सेट में तत्वों की संख्या स्टोर करने के लिए.
  • जमा करने के लिए 5 बिट्स अ- धातु ___
  • जमा करने के लिए 5 बिट्स हमममुला ___
  • अ- धातु सेट में तत्वों की संख्या बिट्स *.
  • हमममुला बिट्स * डेल्टा की संख्या जो इससे ज्यादा है अ- धातु , जहां वे प्रकट पदों में.

ठीक है... अब हम बात कर रहे हैं.

तो यही कारण है कि मैं फँस गया... लेकिन मुझे पता है कि अगर उन सभी चमत्कार किया जा सकता है, क्या अन्य पैटर्नों के लिए देख कर नहीं किया जा सकता, या बस एक बेकार या 7z की तरह...


यही कारण है कि अगली बार के लिए वापस बर्नर पर इंतजार करना होगा...

कोड वर्णन

लक्षण तुच्छ है... आप सिर्फ बिट लाइन के पैरामीटर पढ़ने की जरूरत है और मूल सेट प्राप्त करने के लिए आवश्यक क्रियाओं को लागू करें.


मैं एनकोडर एल्गोरिदम पर ध्यान केंद्रित करने के लिए जा रहा हूँ, आपरेशनों की संख्या कम करने की कोशिश कर रहा हूँ.

विचार है कि यह बिट्स की संख्या की गणना करने के लिए प्रत्येक क़िस्म के एनकोडिंग के साथ रहता है और डेमम को बनाए रखता है.

क्योंकि यह डेल्टा एनकोडिंग उपयोग करने का मतलब नहीं होगा अगर यह छोटे एनकोडिंग से अधिक पर निर्भर करता है.

तो... हम हिसाब लगाते हैं कि छोटे एनकोडिंग क्या होगा।

और... हम और अधिक विस्तृत डेल्टा- क़िस्म के एनकोडिंग की गणना करते हैं कि हम पिछले भाग में समझाया।


यह एनकोडिंग की संख्या का अनुमान लगाने के द्वारा किया जाएगा पैरामीटर युग्म की अवधि के लिए:

  • अ- धातु
  • हमममुला यह तय है.
  • मूल या संक्षिप्त सेट इस्तेमाल करें.


अत्यधिक गणनात्मक पैरामीटर्स खोजने से बचने के लिए (जिसे बड़ी सीमाओं के इस्तेमाल से बदला जा सकता है) हम निम्नलिखित करते हैं:

इसे बनाने के लिए सिर्फ एक ही बार और जमा किया जाता है ।

मूल सेट की डेल्टा सूची तथा पूर्व सेट की केवल एक बार और भंडारित है.

भिन्न पैरामीटरों द्वारा बनाए गए बिट्स की संख्या की गणना करें:

हम डेल्टा सूची में बिट्स की संख्या की गणना करते हैं एक बार केवल एक बार. इस हिस्टोग्राम पर आधारित, बिट्स की कुल संख्या आसान है और इन गणना की गणना करना आसान है यदि हम "अनुभिक" तत्व से अधिक कम है.


एक बार डेल्टा एनकोडिंग के लिए पैरामीटर संयोजन प्राप्त किया जाता है, इसके आकार की तुलना छोटे एनकोडिंग से की जाती है, और दोनों में से सबसे अच्छा चुना जाता है.

डाउनलोड्स