संभव डुप्लिकेट:
क्यों ज़िप संपीड़न कुछ भी संपीड़ित नहीं करता है?
मैंने .exe फ़ाइल 7zipping की कोशिश की, लेकिन यह वास्तव में बड़ा हो गया।
क्या यह अपेक्षित परिणाम है?
संभव डुप्लिकेट:
क्यों ज़िप संपीड़न कुछ भी संपीड़ित नहीं करता है?
मैंने .exe फ़ाइल 7zipping की कोशिश की, लेकिन यह वास्तव में बड़ा हो गया।
क्या यह अपेक्षित परिणाम है?
जवाबों:
यह एन्ट्रापी नामक एक अवधारणा के लिए आता है । विकिपीडिया देखें ।
मूल विचार यह है कि, अगर कोई संपीड़न ऑपरेशन मौजूद होता है जो हमेशा फ़ाइल को छोटा बना सकता है , तो तर्क यह बताता है कि संपीड़न ऑपरेशन किसी भी फ़ाइल को 0 बाइट्स में कम करने में सक्षम होगा और अभी भी सभी डेटा को बनाए रखेगा। लेकिन यह बेतुका है , क्योंकि हम जानते हैं कि 0 बाइट्स किसी भी जानकारी को व्यक्त नहीं कर सकते हैं। इसलिए हमने केवल यह साबित किया है कि एक संपीड़न एल्गोरिदम मौजूद नहीं हो सकता है जो हमेशा अपने इनपुट को छोटा बनाता है, क्योंकि अगर ऐसा होता, तो किसी भी जानकारी को 0 बाइट्स में संग्रहीत किया जा सकता है - लेकिन 0 बाइट्स जानकारी के अभाव का मतलब है , इसलिए आप ' t साथ में कोई जानकारी और सभी जानकारी नहीं है। इसलिए, यह बेतुका है।
इस सैद्धांतिक अवधारणा के कारण, आपके द्वारा उपयोग किया जाने वाला प्रत्येक संपीड़न प्रोग्राम कुछ इनपुट के आकार (या सर्वोत्तम रूप से, उसी आकार को बनाए रखने) को बढ़ाने जा रहा है । यही है, आपके द्वारा डिज़ाइन या उपयोग किए जाने वाले किसी भी संपीड़न एल्गोरिदम के लिए, कुछ इनपुट होंगे जो छोटे से निकलेंगे, और कुछ ऐसे नहीं होंगे।
पहले से संपीड़ित डेटा आम तौर पर आगे के संपीड़न के लिए एक भयानक उम्मीदवार है, क्योंकि अधिकांश दोषरहित संपीड़न एल्गोरिदम एक ही सैद्धांतिक सिद्धांतों पर आधारित हैं। यह है आगे भी खराब संकुचित डेटा को संपीड़ित करने के लिए संभव; लेकिन यह मूल डेटा से उपलब्ध सर्वोत्तम एल्गोरिथ्म के साथ इसे संक्षिप्त करने की तुलना में कम कुशल है।
उदाहरण के लिए, यदि आपके पास एक 100 एमबी पाठ फ़ाइल थी और इसे नियमित ज़िप एल्गोरिथ्म का उपयोग करके संपीड़ित किया गया था, तो यह 50 एमबी तक संकुचित हो सकता है। यदि आप LZMA2 के साथ ज़िप फ़ाइल को संपीड़ित करते हैं, तो आप इसे 40 या 45 एमबी तक नीचे ला सकते हैं, क्योंकि LZMA में ज़िप की तुलना में अधिकांश संपीड़ित डेटा के लिए उच्च संपीड़न अनुपात है। तो यह इस कारण से है कि यह ज़िप डेटा को संपीड़ित कर सकता है, क्योंकि ज़िप पूरी तरह से इसमें से सभी एन्ट्रापी को नहीं चूसता है। लेकिन अगर आप ज़िप कंटेनर को पूरी तरह से खत्म कर देते हैं, तो आप LZMA2 के साथ कच्चे पाठ को संपीड़ित करके इसे और भी छोटा कर सकते हैं, संभावित रूप से 30 - 35 एमबी (ये अवधारणा को स्पष्ट करने के लिए ये केवल "एयर नंबर" हैं) ।
उस बाइनरी के मामले में, जिसे आप संपीड़ित करने का प्रयास कर रहे हैं, यह बड़ा है क्योंकि 7-ज़िप फ़ाइल प्रारूप को अपनी आंतरिक संरचना बनाना है और पहले से संपीड़ित निष्पादन योग्य डेटा को 7-ज़िप प्रारूप में पैक करना है। इसमें शब्दकोश, फ़ाइल हेडर और इसी तरह की चीजें शामिल हैं। ये अतिरिक्त डेटा आमतौर पर डेटा को स्वयं को संपीड़ित करने की बचत से अधिक होते हैं, लेकिन ऐसा प्रतीत होता है कि जिस निष्पादन योग्य को आप संपीड़ित करने का प्रयास कर रहे हैं, वह पहले से ही LZMA के कुछ रूप के साथ संपीड़ित है; अन्यथा, यह संभवतः निष्पादन योग्य के आकार को छोटा कर देगा या बहुत कम बढ़ा देगा, बजाय इसे 2 एमबी बढ़ाकर (जो बहुत अधिक है)।
2^(n+1)-1
आकार n- बिट या उससे कम के संभावित संदेश हैं । हमारे एल्गोरिथ्म को इनमें से हर एक को एक अद्वितीय आउटपुट में मैप करना होगा । यदि इनमें से एक भी कम बिट्स के साथ एक मूल्य के लिए मैप किया जाता है, तो दूसरे मूल्य को आवश्यक रूप से अधिक के साथ मैप किया जाना चाहिए।
7z में प्रयुक्त अंतर्निहित संपीड़न एल्गोरिदम दोषरहित हैं । जिसका अर्थ है कि आप किसी फ़ाइल को कई बार संपीड़ित-डिकम्प्रेस कर सकते हैं। इसके अलावा, प्रत्येक पुनरावृत्ति के बाद फ़ाइल बिल्कुल वैसी ही रहेगी ।
दुर्भाग्य से, आप उम्मीद नहीं कर सकते कि दोषरहित संपीड़न एल्गोरिथ्म हमेशा सकारात्मक परिणाम के साथ कई बार लागू किया जाता है। एक सख्त सीमा है जिस पर वह कूद नहीं सकता। मोटे तौर पर, यह सीमा इस बात पर निर्भर करती है कि इनपुट अनुक्रम कितनी बारीकी से यादृच्छिक डेटा को सुनिश्चित करता है। इन सबसे ऊपर, दोषरहित एल्गोरिदम का उपयोग फ़ाइलों के संपीड़न, इंटरनेट HTML डेटा ट्रांसफ़र, बैकअप और अन्य कार्यों के लिए किया जाता है, जो आउटपुट फ़ाइल को उसी मूल इनपुट फ़ाइल में विघटित होने की उम्मीद करते हैं।
दोषरहित संपीड़न के विपरीत , आप हमेशा दोषपूर्ण (या हानिरहित) संपीड़न एल्गोरिदम के साथ संपीड़न के बाद फ़ाइल आकार में कमी की उम्मीद कर सकते हैं । नीचे की ओर है कि आप नहीं कर सकते हैं वास्तव में एक एकल संपीड़ित-दबाव हटाना यात्रा के बाद एक मूल फ़ाइल को पुनर्स्थापित। ये एल्गोरिदम ऑडियो / वीडियो / छवि प्रसारण और भंडारण के लिए सबसे प्रसिद्ध हैं।
bzip2 , LZMA , LZMA2 और 7z प्रारूप द्वारा उपयोग किए जाने वाले अन्य एल्गोरिदम सभी दोषरहित हैं । इसलिए एक सीमा होगी जिसके बाद यह अब संपीड़ित नहीं हो सकता है। उसके ऊपर, निष्पादन योग्य छवियां (.exe) आमतौर पर अत्यधिक संपीड़ित फ़ाइलें होती हैं। 7zip के रूप में कई अन्य संपीड़न उपकरण कुछ मेटाडेटा एम्बेड करता है, जो वास्तव में आउटपुट फ़ाइल को बड़ा बना सकता है।
इस स्थिति में, आप हमेशा देखेंगे कि संपीड़ित फ़ाइल इनपुट फ़ाइल से छोटी है। एक टिप्पणी देखें कि यह क्यों संभव नहीं है।
अधिकांश संपीड़न एल्गोरिदम एक प्रतीक तालिका नामक व्हाट्सएप का उपयोग करते हैं, मूल रूप से फ़ाइल के केवल पेइसेस का उपयोग करते हैं जो इसे संपीड़ित कर सकते हैं। यह, निश्चित रूप से फ़ाइल में कुछ ओवरहेड बनाता है, लेकिन आमतौर पर एक बहुत छोटी फ़ाइल होती है।
पहले से ही संपीड़ित फ़ाइलों में, यह अभी भी प्रतीकों का एक सेट बनाता है, लेकिन बहुत कम है जो आकार को कम कर सकता है। आपके मामले में, पहले से ही संपीड़ित फ़ाइल का प्रतीक तालिका शायद 2 एमबी के पड़ोस में है या शायद अधिक है अगर उसने दो कंप्रेस्डिंग करने का प्रबंधन किया।