फ़ाइल संपीड़न कैसे काम करता है

Jan 18 2001
संपीड़न प्रोग्राम सेकंड में फ़ाइल आकार के 50 से 95 प्रतिशत को समाप्त कर सकते हैं, लेकिन जब आप फ़ाइल खोलते हैं तो डेटा अभी भी वहां है! जानें कि कैसे संपीड़न एल्गोरिदम डेटा को मारे बिना बाइट्स में कटौती करते हैं।
अपनी फ़ाइलों को संपीड़ित करने की आवश्यकता है? स्टर्टी / गेट्टी छवियां

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

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

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

एक उदाहरण के रूप में, आइए एक ऐसी जानकारी को देखें जिससे हम सभी परिचित हैं: शब्द।

जॉन एफ कैनेडी के 1961 के उद्घाटन भाषण में, उन्होंने यह प्रसिद्ध पंक्ति दी:

"यह मत पूछो कि आपका देश आपके लिए क्या कर सकता है - पूछें कि आप अपने देश के लिए क्या कर सकते हैं।"

उद्धरण में 17 शब्द हैं, जो 61 अक्षरों, 16 रिक्त स्थान, एक डैश और एक अवधि से बना है। यदि प्रत्येक अक्षर, स्थान या विराम चिह्न स्मृति की एक इकाई लेता है , तो हमें 79 इकाइयों का कुल फ़ाइल आकार मिलता है। फ़ाइल का आकार कम करने के लिए, हमें अतिरेक की तलाश करनी होगी।

तुरंत, हम देखते हैं कि:

  • "पूछो" दो बार प्रकट होता है
  • "क्या" दो बार दिखाई देता है
  • "आपका" दो बार प्रकट होता है
  • "देश" दो बार दिखाई देता है
  • "कैन" दो बार प्रकट होता है
  • "do" दो बार दिखाई देता है
  • "के लिए" दो बार प्रकट होता है
  • "आप" दो बार प्रकट होता है

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

हम देखेंगे कि फ़ाइल-संपीड़न सिस्टम कैसे अतिरेक से निपटते हैं अगले भाग में विस्तार से।

अंतर्वस्तु
  1. अतिरेक और एल्गोरिदम
  2. पैटर्न की खोज
  3. हानिपूर्ण और दोषरहित संपीड़न

अतिरेक और एल्गोरिदम

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

शब्दकोशों को व्यवस्थित करने की प्रणाली भिन्न होती है, लेकिन यह एक क्रमांकित सूची जितनी सरल हो सकती है। जब हम कैनेडी के प्रसिद्ध शब्दों के माध्यम से जाते हैं, तो हम दोहराए गए शब्दों को चुनते हैं और उन्हें क्रमांकित सूचकांक में डाल देते हैं। फिर, हम पूरे शब्द को लिखने के बजाय केवल संख्या लिखते हैं।

तो, अगर यह हमारा शब्दकोश है:

  1. पूछना
  2. क्या
  3. आपका
  4. देश
  5. कर सकते हैं
  6. के लिए
  7. आप

हमारा वाक्य अब पढ़ता है:  "1 नहीं 2 3 4 5 6 7 8 - 1 2 8 5 6 7 3 4"

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

लेकिन इस प्रणाली से हमने वास्तव में कितनी जगह बचाई है? "1 नहीं 2 3 4 5 6 7 8 - 1 2 8 5 6 7 3 4" निश्चित रूप से "यह मत पूछो कि आपका देश आपके लिए क्या कर सकता है, पूछें कि आप अपने देश के लिए क्या कर सकते हैं" से छोटा है। लेकिन ध्यान रखें कि हमें फाइल के साथ ही डिक्शनरी को भी सेव करना होगा

एक वास्तविक संपीड़न योजना में, विभिन्न फ़ाइल आवश्यकताओं का पता लगाना काफी जटिल होगा; लेकिन हमारे उद्देश्यों के लिए, आइए इस विचार पर वापस जाएं कि प्रत्येक वर्ण और प्रत्येक स्थान स्मृति की एक इकाई लेता है। हम पहले ही देख चुके हैं कि पूरा वाक्यांश 79 इकाइयाँ लेता है। हमारा संकुचित वाक्य (रिक्त स्थान सहित) ३७ इकाइयाँ लेता है, और शब्दकोश (शब्द और संख्याएँ) भी ३७ इकाइयाँ लेता है। यह हमें 74 का फ़ाइल आकार देता है, इसलिए हमने फ़ाइल का आकार बहुत कम नहीं किया है।

लेकिन यह सिर्फ एक वाक्य है! आप कल्पना कर सकते हैं कि यदि संपीड़न कार्यक्रम कैनेडी के बाकी भाषण के माध्यम से काम करता है, तो यह इन शब्दों और अन्य को कई बार दोहराया जाएगा। और, जैसा कि हम अगले भाग में देखेंगे, यह संभव सबसे कुशल संगठन प्राप्त करने के लिए शब्दकोश को फिर से लिखना भी होगा।

पैटर्न की खोज

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

यदि हम इस दृष्टिकोण से वाक्यांश को देखें, तो हम एक पूरी तरह से अलग शब्दकोश के साथ समाप्त होते हैं।

यदि संपीड़न कार्यक्रम ने कैनेडी के वाक्यांश को स्कैन किया, तो यह पहली अतिरेक जो सामने आएगी वह केवल कुछ अक्षरों की लंबी होगी। "आस्क नॉट व्हाट योर," में "टी" अक्षर का दोहराव पैटर्न होता है जिसके बाद एक स्पेस होता है - "नहीं" और "क्या।" यदि कंप्रेशन प्रोग्राम ने इसे डिक्शनरी में लिखा है, तो यह हर बार "टी" के बाद एक स्पेस के बाद "1" लिख सकता है। लेकिन इस संक्षिप्त वाक्यांश में, यह पैटर्न इसे एक सार्थक प्रविष्टि बनाने के लिए पर्याप्त नहीं है, इसलिए प्रोग्राम अंततः इसे अधिलेखित कर देगा।

अगली चीज़ जो प्रोग्राम नोटिस कर सकता है वह है "ओयू", जो "आपके" और "देश" दोनों में दिखाई देता है। यदि यह एक लंबा दस्तावेज़ होता, तो इस पैटर्न को शब्दकोश में लिखने से काफी जगह बच सकती थी -- "ou" अंग्रेजी भाषा में काफी सामान्य संयोजन है। लेकिन जैसा कि इस वाक्य के माध्यम से संपीड़न कार्यक्रम काम करता है, यह जल्दी से एक शब्दकोश प्रविष्टि के लिए एक बेहतर विकल्प की खोज करेगा: न केवल "ओयू" दोहराया जाता है, बल्कि पूरे शब्द "आपका" और "देश" दोनों दोहराए जाते हैं, और वे वास्तव में दोहराए जाते हैं एक साथ, "आपका देश" वाक्यांश के रूप में। इस मामले में, प्रोग्राम "आपके देश" के लिए प्रविष्टि के साथ "ou" के लिए शब्दकोश प्रविष्टि को अधिलेखित कर देगा।

वाक्यांश "के लिए कर सकता है" भी दोहराया जाता है, एक बार "आपका" और एक बार "आप" के बाद, हमें "आपके लिए कर सकते हैं" का दोहराया पैटर्न देता है। यह हमें एक संख्या मान के साथ 15 वर्ण (रिक्त स्थान सहित) लिखने देता है, जबकि "आपका देश" हमें केवल एक संख्या मान के साथ 13 वर्ण (रिक्त स्थान के साथ) लिखने देता है, इसलिए प्रोग्राम "आपका देश" प्रविष्टि को "r" के रूप में अधिलेखित कर देगा देश," और फिर "आपके लिए कर सकते हैं" के लिए एक अलग प्रविष्टि लिखें। कार्यक्रम इस तरह से आगे बढ़ता है, सभी दोहराई गई सूचनाओं को उठाता है और फिर गणना करता है कि इसे कौन से पैटर्न को शब्दकोश में लिखना चाहिए। शब्दकोश को फिर से लिखने की यह क्षमता एलजेड अनुकूली शब्दकोश-आधारित एल्गोरिदम का "अनुकूली" हिस्सा है ।जिस तरह से एक कार्यक्रम वास्तव में ऐसा करता है वह काफी जटिल है, जैसा कि आप चर्चाओं से देख सकते हैंडेटा-संपीड़न . com ।

कोई फर्क नहीं पड़ता कि आप किस विशिष्ट विधि का उपयोग करते हैं, यह गहन खोज प्रणाली आपको केवल शब्दों को चुनकर फ़ाइल को अधिक कुशलता से संपीड़ित करने देती है। ऊपर दिए गए पैटर्न का उपयोग करके, और रिक्त स्थान के लिए "__" जोड़कर, हम इस बड़े शब्दकोश के साथ आते हैं:

  1. पूछना__
  2. क्या__
  3. आप
  4. r__देश
  5. __can__do__for__you 

और यह छोटा वाक्य: "1not__2345__--__12354"

वाक्य अब 18 यूनिट मेमोरी लेता है, और हमारे डिक्शनरी में 41 यूनिट लगते हैं। इसलिए हमने कुल फ़ाइल आकार को 79 इकाइयों से 59 इकाइयों तक संकुचित कर दिया है! यह वाक्यांश को संपीड़ित करने का सिर्फ एक तरीका है, और जरूरी नहीं कि सबसे कुशल हो। (देखें कि क्या आपको कोई बेहतर तरीका मिल सकता है!)

तो यह प्रणाली कितनी अच्छी है? फ़ाइल कमी अनुपात कारकों, फ़ाइल प्रकार, फ़ाइल आकार और संपीड़न योजना सहित अनेक पर निर्भर करता है।

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

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

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

हानिपूर्ण और दोषरहित संपीड़न

हम यहां जिस प्रकार के संपीड़न की चर्चा कर रहे हैं, उसे दोषरहित संपीड़न कहा जाता है , क्योंकि यह आपको मूल फ़ाइल को ठीक-ठीक फिर से बनाने देता है। सभी दोषरहित संपीड़न एक फ़ाइल को संचरण या भंडारण के लिए "छोटे" रूप में तोड़ने और फिर इसे दूसरे छोर पर एक साथ रखने के विचार पर आधारित है ताकि इसे फिर से उपयोग किया जा सके।

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

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

बेशक, हानिपूर्ण संपीड़न के साथ, आप मूल फ़ाइल को संपीड़ित करने के बाद वापस नहीं पा सकते हैं। आप मूल के संपीड़न कार्यक्रम की पुनर्व्याख्या के साथ फंस गए हैं। इस कारण से, आप इस तरह के संपीड़न का उपयोग किसी भी चीज़ के लिए नहीं कर सकते हैं, जिसे सॉफ़्टवेयर एप्लिकेशन, डेटाबेस और राष्ट्रपति के उद्घाटन भाषणों सहित ठीक से पुन: प्रस्तुत करने की आवश्यकता है।

फ़ाइल संपीड़न और संबंधित विषयों के बारे में अधिक जानकारी के लिए, अगले पृष्ठ पर लिंक देखें।

मूल रूप से प्रकाशित: जनवरी १८, २००१

फ़ाइल संपीड़न अक्सर पूछे जाने वाले प्रश्न

किसी फाइल को कंप्रेस करने से क्या होता है?
संपीड़न फ़ाइल आकार को कम करने में मदद करता है। इस तरह, आप तेजी से डेटा भेज और प्राप्त कर सकते हैं।
फ़ाइल संपीड़न योजनाओं के मूल प्रकार क्या हैं?
फ़ाइल संपीड़न को दो प्रकारों में वर्गीकृत किया गया है: हानिपूर्ण और दोषरहित। दोषरहित संपीड़न फ़ाइल आकार को संचरण के लिए छोटे आकार में तोड़ देता है और इसे दूसरे छोर पर वापस एक साथ रखता है ताकि इसे फिर से उपयोग किया जा सके। हानिपूर्ण संपीड़न सूचना के "अनावश्यक" बिट्स को हटा देता है, फ़ाइल को इस तरह से तैयार करता है कि यह छोटा हो; इसे बड़ी फ़ाइल में वापस नहीं रखा जा सकता है।
ज़िप फ़ाइलें किस संपीड़न का उपयोग करती हैं?
ज़िप फ़ाइलें दोषरहित डेटा संपीड़न का उपयोग करती हैं। इन फ़ाइलों में कई निर्देशिकाएँ हो सकती हैं जो संपीड़ित हो सकती हैं। वे DEFLATE जैसे कुछ संपीड़न एल्गोरिदम का उपयोग करते हैं।
क्या फ़ाइल संपीड़न गुणवत्ता को कम करता है?
किसी कंप्यूटर या कैमरे में किसी छवि के संपीड़ित होने के बाद, संपीड़न तीक्ष्णता, कंट्रास्ट और बेहतर रंग विवरण को कम कर सकता है।

बहुत अधिक जानकारी

संबंधित आलेख

  • MP3 फ़ाइलें कैसे काम करती हैं
  • एमपी3 प्लेयर कैसे काम करते हैं
  • डीवीडी कैसे काम करती है
  • रिमूवेबल स्टोरेज कैसे काम करता है
  • कंप्यूटर मेमोरी कैसे काम करती है
  • बिट्स और बाइट्स कैसे काम करते हैं
  • फ्लॉपी ड्राइव की तुलना में ज़िप ड्राइव इतना अधिक डेटा कैसे स्टोर करता है?
  • मेरी डिजिटल फ़ोटोग्राफ़ फ़ाइलें इतनी बड़ी क्यों हैं जबकि अन्य वेब साइटों पर फ़ोटो बहुत छोटी हैं?

अधिक बढ़िया लिंक

  • डेटा-संपीड़न.com
  • संपीड़न कार्यक्रमों की तुलना
  • संपीड़न साइट
  • संपीड़न अक्सर पूछे जाने वाले प्रश्न
  • ओपन डायरेक्टरी: डेटा कंप्रेशन - ढ़ेरों लिंक