क्या 0 और 1 के एक तार को संपीड़ित किया जा सकता है के लिए एक ज्ञात अधिकतम है?


38

कुछ समय पहले मैंने एक अखबार के लेख को पढ़ा था, जहां किसी प्रकार के एक प्रोफेसर ने कहा था कि भविष्य में हम डेटा को केवल दो बिट्स (या ऐसा कुछ) में संपीड़ित कर पाएंगे।

यह निश्चित रूप से सही नहीं है (और यह भी हो सकता है कि मेरी स्मृति जो उसने बताई है वह सही नहीं है)। निश्चित रूप से यह 0 और 1 के किसी भी स्ट्रिंग को केवल दो बिट्स में संपीड़ित करने के लिए व्यावहारिक नहीं होगा क्योंकि (भले ही यह तकनीकी रूप से संभव था), बहुत अधिक विभिन्न प्रकार के तार एक ही दो बिट्स को संपीड़ित करना समाप्त कर देंगे (क्योंकि हमारे पास केवल 0101 है 'और' 10 'से चुनने के लिए)।

वैसे भी, यह मुझे 0 और 1 की मनमानी लंबाई स्ट्रिंग को संपीड़ित करने की व्यवहार्यता के बारे में कुछ योजना के अनुसार सोच रहा था। इस तरह की स्ट्रिंग के लिए, क्या स्ट्रिंग लंबाई (0 और 1 के बीच का अनुपात शायद कोई फर्क नहीं पड़ता) और अधिकतम संपीड़न के बीच एक ज्ञात संबंध है?

दूसरे शब्दों में, क्या यह निर्धारित करने का एक तरीका है कि न्यूनतम (सबसे छोटी संभव) लंबाई क्या है जो 0 और 1 के तारों की एक स्ट्रिंग को संकुचित कर सकती है?

(यहां मैं गणितीय अधिकतम संपीड़न में दिलचस्पी रखता हूं, न कि वर्तमान में तकनीकी रूप से जो संभव है।)


7
हमारे पास चुनने के लिए '00' और '11' भी होंगे। लेकिन तर्क समान है, यदि आप उन का उपयोग करते हैं, तो केवल चार अलग-अलग तार हैं जो आप संपीड़ित कर सकते हैं।
रेमकोगर्लिच

3
mathoverflow.net/q/160099/34859 : pl यहां देखें कि कबूतर के सिद्धांत को रद्द करने के लिए हमेशा एक अनंत संख्या में तार होंगे जो संपीड़ित नहीं किए जा सकते हैं ... एल्गोरिथ्म का उपयोग किए बिना। प्रश्न
एआरआई

4
संपीड़न उस ज्ञान पर निर्भर करता है जो आपके पास डेटा की संरचना के बारे में है। शतरंज की चालों को संपीड़ित करने के बारे में यह लेख था जो दिखाता है कि ज्ञान को जोड़ने से संपीड़न को बढ़ाने में मदद मिलती है।
चश्मा

1
क्या आप स्पष्ट कर सकते हैं: संपीड़न "हानिपूर्ण" हो सकता है, या "दोषरहित" (या कुछ "हाइब्रिड" जो दोनों का उपयोग कर सकते हैं)। क्या आप केवल "दोषरहित" संपीड़न विधियों का उपयोग करके अधिकतम संपीड़न के बारे में बात कर रहे हैं, या आप (हानिपूर्ण ") संपीड़न विधियों के उपयोग को भी शामिल (अनुमति) कर रहे हैं। दूसरे शब्दों में, मुझे लगता है कि 3 संभावनाएं हैं: "अधिकतम संपीड़न" की तलाश में जहां (1) डेटा को हमेशा उसी तरह से विघटित होना चाहिए जैसा कि संपीड़न से पहले था, (2) डेटा को विघटित होने में सक्षम होना चाहिए, लेकिन कुछ "हानि" की अनुमति है (3) यह एक आवश्यकता नहीं है कि डेटा विघटित होने में सक्षम हो।
केविन फेगन

हाय @KevinFegan, इस मामले में यह विकल्प 1 होगा: "डेटा को हमेशा उसी तरह से विघटित होना चाहिए जैसा कि यह संपीड़न से पहले था"
x457812

जवाबों:


45

कोल्मोगोरोव जटिलता गणितीय रूप से इसे औपचारिक रूप देने के लिए एक दृष्टिकोण है। दुर्भाग्य से, एक स्ट्रिंग की कोलमोगोरोव जटिलता की गणना एक समस्या है। यह भी देखें: Kolmogorov जटिलता का अनुमान

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


पूर्ण संपीड़न की असंभवता पर, आपको निम्नलिखित में भी रुचि हो सकती है।


लेकिन, एन्ट्रापी के आकलन के लिए संपीड़न एक तकनीक है। क्या संपीड़न और एन्ट्रॉपी एक ही चीज़ के दो पहलू हो सकते हैं?
पॉल उस्ज़ाक

1
@PaulUszak, हाँ, वे बहुत निकट से संबंधित हैं: देखें, जैसे, शैनन का प्रमेय । लेकिन, कृपया ध्यान दें: टिप्पणियों का उपयोग केवल पोस्ट को सुधार / स्पष्टीकरण देने के लिए किया जाना चाहिए, न कि अनुवर्ती प्रश्नों को पूछने के लिए। एक नया प्रश्न पूछने के लिए, पृष्ठ के ऊपरी-दाएँ भाग में "प्रश्न पूछें" लिंक का उपयोग करें।
DW

35

Nlog2N

इसके अलावा, कई मामलों में हम सटीक पुनर्निर्माण की परवाह नहीं करते हैं । इसे हानिपूर्ण संपीड़न कहा जाता है , और यह है कि संगीत और वीडियो कैसे संपीड़ित होते हैं। इस मामले में ऊपर दी गई निचली सीमा पकड़ में नहीं आती है, लेकिन आप अन्य निचले सीमा के साथ आ सकते हैं।


1
Nlog2N

27

यहाँ एक सरल योजना है जो मनमाने ढंग से बिट स्ट्रिंग्स को दोषरहित कर सकती है, जिसका सबसे छोटा परिणाम सिर्फ एक बिट है:

यदि बीथोवेन की 9 वीं सिम्फनी की रिकॉर्डिंग के लिए स्ट्रिंग एक समान मिलान है, तो चौथे आंदोलन, एएसी प्रारूप में जो मेरे कंप्यूटर की हार्ड ड्राइव पर संग्रहीत है, फिर आउटपुट एक एकल बिट '0' है।

यदि स्ट्रिंग कुछ और है, तो आउटपुट एक एकल '1' है, उसके बाद मूल स्ट्रिंग की एक समान प्रतिलिपि है।

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


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

6

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

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

तो बिट्स के एक स्ट्रिंग की संपीड़ितता वास्तव में स्ट्रिंग की लंबाई का कार्य नहीं है, लेकिन संपीड़न एल्गोरिदम के संबंध में इसकी जटिलता है।


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

@DavidRicherby यह सच है, बिल्कुल। लेकिन मुझे इस सवाल से आभास हुआ कि ओपी दोषरहित संपीड़न के बारे में पूछ रहा था, क्योंकि यह एक हानिपूर्ण योजना के अधिकतम संपीड़न पर चर्चा करने का कोई मतलब नहीं है; यह विचार कि आप इसे अनुपयोगी चरम सीमा तक ले जा सकते हैं, हानिपूर्ण संपीड़न की अवधारणा में निहित है।
एम ६ ९ ’’ स्नार्की एंड अनकल्डिंग ’’

हां, मुझे लगता है कि यह एक उचित व्याख्या है।
डेविड रिचरबी

-2

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

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

यह विशेष रूप से उदाहरण के लिए कुशल है जब 10,000 उपयोगकर्ताओं को सभी समान ऑपरेटिंग सिस्टम और एप्लिकेशन इंस्टॉल किए जाते हैं। एकल उपयोगकर्ताओं के लिए यह बहुत उपयोगी नहीं है।


4
यह दिलचस्प है लेकिन मैं यह नहीं देखता कि यह सवाल का जवाब कैसे देता है। सवाल संपीड़न पर सीमाएं पूछता है, उद्यम बैकअप की सामान्य चर्चा नहीं।
डेविड रिचेर्बी

इसे डिडुप्लीकेशन कहा जाता है, और हैश का उपयोग करके किया जाता है। डिस्क पर प्रत्येक ब्लॉक के लिए 128 बिट हैश को स्टोर करने के लिए बहुत सी रैम लगती है। ZFS कुछ ब्लॉक-ऑन-राइट स्टोरेज स्पेस को साझा करने के लिए अवसरवादी रूप से ऐसा कर सकता है। लेकिन इस तरह की संपीड़न समस्या (जहां आप एक बड़े डेटा सेट को संपीड़ित करने की कोशिश कर रहे हैं, जिसकी आपको यादृच्छिक पहुंच की आवश्यकता है, और यह सामान्य स्ट्रीम संपीड़न के लिए बहुत तेज़ी से बदल रहा है, लेकिन इसमें ब्लॉक-स्तर अतिरेक है) इस के उत्तर के रूप में प्रासंगिक नहीं है सवाल।
पीटर कॉर्ड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.