यह विचार मेरे लिए एक बच्चे के रूप में आया जो प्रोग्राम को सीख रहा था और पहले PRNG का सामना कर रहा था। मैं अभी भी नहीं जानता कि यह कितना यथार्थवादी है, लेकिन अब स्टैक एक्सचेंज है।
यहाँ एक 14 साल की योजना एक अद्भुत संपीड़न एल्गोरिथ्म के लिए है:
एक s
छद्म यादृच्छिक बाइट्स का एक लंबा अनुक्रम प्राप्त करने के लिए एक PRNG लें और इसे बीज के साथ बीज दें। उस अनुक्रम को किसी अन्य पार्टी में संचारित करने के लिए, आपको केवल PRNG, उपयुक्त बीज और संदेश की लंबाई का वर्णन करने की आवश्यकता है। एक लंबे पर्याप्त अनुक्रम के लिए, यह विवरण बहुत छोटा होगा और फिर अनुक्रम ही होगा।
अब मुझे लगता है कि मैं इस प्रक्रिया को उल्टा कर सकता हूं। पर्याप्त समय और कम्प्यूटेशनल संसाधनों को देखते हुए, मैं एक ब्रूट-फोर्स खोज कर सकता हूं और एक बीज (और PRNG, या दूसरे शब्दों में: एक प्रोग्राम) खोज सकता हूं जो मेरा वांछित अनुक्रम पैदा करता है (आइए बताते हैं बिल्लियों के शरारती होने का एक मनोरंजक फोटो)।
बड़ी संख्या में बिट्स उत्पन्न होने के बाद PRNGs दोहराते हैं, लेकिन "विशिष्ट" चक्रों की तुलना में मेरा संदेश काफी छोटा है इसलिए यह समस्या की तरह प्रतीत नहीं होता है।
Voila, एक प्रभावी (यदि रब-गोल्डबेरिज़न) डेटा को संपीड़ित करने का तरीका है।
तो, यह मानते हुए:
- मैं जिस अनुक्रम को संक्षिप्त करना चाहता हूं वह परिमित है और पहले से जाना जाता है।
- मैं नकदी या समय से कम नहीं हूं (जब तक दोनों की एक परिमित राशि आवश्यक है)
मैं जानना चाहता हूं:
- क्या योजना के पीछे तर्क में कोई मूलभूत दोष है?
- इस तरह के विचार प्रयोगों का विश्लेषण करने का मानक तरीका क्या है?
सारांश
यह अक्सर ऐसा होता है कि अच्छे उत्तर न केवल उत्तर स्पष्ट करते हैं, लेकिन यह क्या है कि मैं वास्तव में पूछ रहा था। सभी के धैर्य और विस्तृत जवाब के लिए धन्यवाद।
यहाँ उत्तर के सारांश पर मेरा प्रयास है:
- PRNG / बीज कोण कुछ भी योगदान नहीं करता है, यह एक प्रोग्राम से अधिक नहीं है जो आउटपुट के रूप में वांछित अनुक्रम का उत्पादन करता है।
- कबूतर का सिद्धांत: लंबाई के कई और संदेश हैं> कश्मीर की तुलना में (संदेश उत्पन्न करने वाले) लंबाई के प्रोग्राम <= k हैं। इसलिए कुछ अनुक्रम केवल संदेश से कम प्रोग्राम का आउटपुट नहीं हो सकते।
- यह ध्यान देने योग्य है कि कार्यक्रम (संदेश) की व्याख्या आवश्यक रूप से पहले से तय है। और यह डिज़ाइन संदेश का एक छोटा (छोटा) सबसेट निर्धारित करता है जो लंबाई k का संदेश प्राप्त होने पर उत्पन्न किया जा सकता है।
इस बिंदु पर मूल PRNG विचार पहले से ही मर चुका है, लेकिन बसने के लिए कम से कम एक आखिरी सवाल है:
- प्रश्न: क्या मैं भाग्यशाली हो सकता हूं और पा सकता हूं कि मेरा लंबा (लेकिन परिमित) संदेश सिर्फ लंबाई के कार्यक्रम के उत्पादन के लिए होता है <k बिट्स?
सख्ती से बोलना, यह मौका की बात नहीं है क्योंकि हर संभव संदेश (कार्यक्रम) के अर्थ को पहले से जाना जाना चाहिए। या तो यह है <कश्मीर बिट्स के कुछ संदेश के अर्थ या यह नहीं है ।
यदि मैं यादृच्छिक रूप से> = k बिट्स का एक यादृच्छिक संदेश चुनता हूं (मैं क्यों?), तो मैं किसी भी मामले में k बिट्स से कम का उपयोग करके इसे भेजने में सक्षम होने की एक संभावित संभावना होगी, और भेजने में सक्षम नहीं होने की लगभग निश्चितता कम से कम k बिट्स का उपयोग करना।
OTOH, अगर मैं उन लोगों से> k = बिट्स का एक विशिष्ट संदेश चुनता हूँ, जो k बिट्स से कम के प्रोग्राम का आउटपुट हैं (यह मानते हुए कि ऐसा कोई संदेश है), तो वास्तव में मैं पहले से प्रसारित बिट्स का लाभ उठा रहा हूँ रिसीवर (दुभाषिया का डिज़ाइन), जो स्थानांतरित किए गए संदेश के भाग के रूप में गिना जाता है।
आखिरकार:
- प्रश्न: यह सभी एन्ट्रापी / कोलमोगोरोव जटिलता व्यवसाय क्या है?
अंततः, दोनों हमें एक ही बात बताते हैं कि (सरल) कबूतर सिद्धांत हमें इस बारे में बताता है कि हम कितना संपीड़ित कर सकते हैं: शायद बिल्कुल नहीं, शायद कुछ, लेकिन निश्चित रूप से उतना नहीं जितना हम कल्पना करते हैं (जब तक कि हम धोखा नहीं देते)।