ज़िप संपीड़न कुछ भी क्यों नहीं संकुचित होता है?


18

398MB निर्देशिका केवल 7Z और सामान्य ज़िप संपीड़न का उपयोग करके 393MB तक संपीड़ित की गई थी। क्या यह सामान्य है? यदि हां, तो लोग विंडोज पर जिप का इस्तेमाल क्यों करते हैं?

जवाबों:


70

यदि आप उन चीजों को संकुचित कर रहे हैं जो पहले से ही संकुचित हैं (AVI, JPEG, MP3), तो आप एक ही फाइल में सब कुछ पैक करने के अलावा बहुत कुछ हासिल नहीं करेंगे।


1
और मैंने देखा है कि यह रिवर्स में संचालित होता है, क्योंकि संपीड़ित संग्रह व्यक्तिगत संपीड़ित फ़ाइलों से बड़ा होता है।
Fiasco लैब्स

32

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

इस प्रकार प्रश्न को इस प्रकार रूपांतरित किया जा सकता है: " मैं मूल प्रतिनिधित्व की तुलना में अधिक कॉम्पैक्ट तरीके से 1 और 0 के समूह का प्रतिनिधित्व कैसे कर सकता हूं? "

तो शुरू से शुरू करते हैं, आप एकल बिट (एक एकल या एक 0) के सामान्य प्रतिनिधित्व को कैसे कॉम्पैक्ट कर सकते हैं ?
जवाब वास्तव में आसान है: आप नहीं कर सकते! ... एक एकल बिट का प्रतिनिधित्व सबसे कॉम्पैक्ट तरीके से संभव है।

पर्याप्त रूप से, हम एक बड़ा उदाहरण लेते हैं, आप 0111 0111 0100 0111 जैसे बाइनरी स्ट्रिंग को कैसे संपीड़ित करेंगे ?
ठीक है क्योंकि हम पहले से ही जानते हैं कि व्यक्तिगत बिट्स को देखने से हमें बिल्कुल भी मदद नहीं मिलेगी, हम जानते हैं कि हमें बड़े पैमाने पर देखना होगा। उदाहरण के लिए, चलो एक बार में ४ बिट्स लेते हैं। अब हम देखते हैं कि बाइनरी स्ट्रिंग "0111" उदाहरण में 3 बार होगी, इसलिए हम एक बिट के साथ इसका प्रतिनिधित्व क्यों नहीं करते हैं: 0? लेकिन यह अभी भी अंधेरे में 0100 छोड़ता है, तो आइए हम प्रतिनिधित्व करते हैं कि "1" के साथ
हम जानते हैं कि मूल को संकुचित किया गया है: "210"

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

अब वास्तव में आपके प्रश्न का उत्तर देने के लिए: सभी डेटा को अच्छे से संकुचित क्यों नहीं किया जा सकता ?, अच्छी तरह से एक और उदाहरण लेते हैं: "0001 0110 1000 1111", यदि हम उसी तकनीक का उपयोग करेंगे जैसे कि हम डेटा को संपीड़ित नहीं कर पाएंगे। (कोई पुनरावृत्ति नहीं मिली है), और इस प्रकार संपीड़न से लाभ नहीं होगा ...


(*) इस पर निश्चित रूप से अपवाद हैं। इसका सबसे ज्ञात उदाहरण एमपी 3 फ़ाइलों के लिए उपयोग किया जाने वाला संपीड़न है। यहां ध्वनियों के बारे में कुछ जानकारी कच्ची, मूल फ़ाइल से एमपी 3 प्रारूप में परिवर्तित करने के दौरान खो जाएगी, यह संपीड़न इस प्रकार हानिपूर्ण है । एक अन्य उदाहरण .JPG छवियों के लिए प्रारूप है


6

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


6

से दोषरहित संपीड़न पर विकिपीडिया लेख की सीमाएं अनुभाग :

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

मूल रूप से, सभी संभावित इनपुट डेटा को दोषरहित रूप से संपीड़ित करना सैद्धांतिक रूप से असंभव है।


पहले से संपीड़ित डेटा को संकुचित करना कठिन है। चित्र, वीडियो अधिकतर संकुचित होते हैं क्योंकि मूल आकार बहुत बड़ा होगा
phuclv

4

क्या यह सामान्य है?

नहीं "सामान्य" फाइलों के साथ। आप किस तरह की फाइलें कंप्रेस कर रहे थे? यदि वे पहले से ही संपीड़ित थे, उदाहरण के लिए वे JPGs, GIF, PNG, वीडियो या अन्य ज़िप फ़ाइलें हैं, तो वे किसी भी एल्गोरिथ्म द्वारा बहुत संकुचित नहीं होंगे। यदि आप पाठ, XML, असम्पीडित BMP, स्रोत कोड आदि फ़ाइलों को संपीड़ित करने का प्रयास करते हैं, तो ज़िप अच्छा संपीड़न प्रदान करेगा, लेकिन संभवतः पूर्णतम नहीं।

लोग विंडोज पर जिप का उपयोग क्यों करते हैं?

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


2

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

उदाहरण के लिए, tar.gz फ़ाइलों को एक साथ जोड़ता है, फिर परिणामों को संपीड़ित करता है। इसी तरह एक "ठोस" आरआर फाइल फाइलों के बीच समानता का उपयोग करता है।

Tar.gz या एक ठोस rar के नकारात्मक पक्ष यह है कि अब आप संग्रह को डिकम्प्रेस किए बिना एक बड़े संग्रह से एक भी फ़ाइल नहीं निकाल सकते हैं जहाँ आप चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.