कम यादृच्छिक बी की तुलना में 2 ^ एन के 1 की संभावना का अनुकरण


31

कहो मुझे निम्नलिखित असतत वितरण का अनुकरण करने की आवश्यकता है:

P(X=k)={12N,if k=1112N,if k=0

सबसे स्पष्ट तरीका यादृच्छिक बिट्स को आकर्षित करना है और जांचना है कि क्या उनमें से सभी (या ) के बराबर हैं । हालांकि, सूचना सिद्धांत कहता हैN01

S=iPilogPi=12Nlog12N(112N)log(112N)=12Nlog2N+(112N)log2N2N10

इसलिए बड़े होने के साथ ही आवश्यक न्यूनतम रैंडम बिट्स की संख्या कम हो जाती है । यह कैसे हो सकता है?N

कृपया मान लें कि हम एक ऐसे कंप्यूटर पर चल रहे हैं जहाँ बिट्स यादृच्छिकता का एकमात्र स्रोत है, इसलिए आप एक पक्षपाती सिक्के को नहीं ले सकते।


यह कोडिंग सिद्धांत और कोलमोगोरोव जटिलता से निकटता से संबंधित है, यदि आप खोजशब्दों को गहराई से खोदने के लिए देख रहे हैं। एक ही सा जो DW नीचे का उल्लेख है की दोहरा रन की गिनती की तकनीक एक बहुत ऊपर आता है - इन व्याख्यान नोट्स उदाहरण के लिए उस पर स्पर्श people.cs.uchicago.edu/~fortnow/papers/kaikoura.pdf
ब्रायन गॉर्डन

जवाबों:


28

वाह, बड़ा अच्छा सवाल! मुझे संकल्प समझाने की कोशिश करें। यह तीन अलग-अलग कदम उठाएगा।

ध्यान देने वाली पहली बात यह है कि एन्ट्रापी प्रति ड्रा की औसत बिट्स की औसत संख्या पर अधिक केंद्रित है , न कि बिट्स की अधिकतम संख्या के लिए।

आपकी नमूना प्रक्रिया के साथ, ड्रॉ के लिए आवश्यक यादृच्छिक बिट्स की अधिकतम संख्या बिट्स है, लेकिन आवश्यक बिट्स की औसत संख्या 2 बिट्स है ( 1/2 के साथ एक ज्यामितीय वितरण का औसत ) - यह इसलिए है क्योंकि एक है संभावना है कि आपको केवल 1 बिट की आवश्यकता है (यदि पहला बिट 1 निकला है), संभावना है कि आपको केवल 2 बिट्स की आवश्यकता है (यदि पहले दो बिट्स 01 हो जाते हैं), एक संभावना है कि आपको केवल 3 बिट्स की आवश्यकता है (यदि पहले तीन बिट्स 001 निकलते हैं), और इसी तरह।Np=1/21/21/41/8

ध्यान देने वाली दूसरी बात यह है कि एन्ट्रापी वास्तव में एकल ड्रा के लिए आवश्यक बिट्स की औसत संख्या पर कब्जा नहीं करता है। इसके बजाय, एन्ट्रापी इस वितरण से iid ड्रॉ करने के लिए आवश्यक बिट्स के परिशोधन संख्या को पकड़ती है । मान लीजिए कि हमें ड्रॉ के लिए बिट्स की आवश्यकता है; तब एन्ट्रापी की सीमा के रूप में ।mf(m)mf(m)/mm

ध्यान देने वाली तीसरी बात यह है कि, इस वितरण के साथ, आप बार-बार एक ड्रॉ का नमूना लेने के लिए आवश्यकता से कम बिट्स के साथ iid ड्रॉ का नमूना ले सकते हैं । मान लीजिए आप भोलेपन से, (औसतन 2 अधिक यादृच्छिक बिट्स का प्रयोग करके), एक नमूना (औसतन 2 यादृच्छिक बिट्स लेता है) आकर्षित करने के लिए फिर एक और नमूना आकर्षित फैसला किया, और इतने पर जब तक आप इस दोहराया गया है बार। इसके लिए औसतन लगभग यादृच्छिक बिट्स की आवश्यकता होगी ।mm2m

लेकिन यह पता चला है कि से कम बिट्स का उपयोग करके ड्रॉ से नमूना लेने का एक तरीका है । यह विश्वास करना मुश्किल है, लेकिन यह सच है!m2m

मैं तुम्हें अंतर्ज्ञान दे दूं। मान लीजिए आप नमूने का परिणाम नीचे लिखा खींचता है, जहां वास्तव में बड़ी है। फिर परिणाम एक के रूप में निर्दिष्ट किया जा सकता है -बिट स्ट्रिंग। यह -bit string अधिकतर 0 की होगी, इसमें कुछ 1 है: विशेष रूप से, औसतन इसका लगभग 1 होगा (इससे अधिक या कम हो सकता है, लेकिन यदि पर्याप्त रूप से बड़ा है, तो आमतौर पर संख्या उस के करीब होगी)। 1 के बीच अंतराल की लंबाई यादृच्छिक है, लेकिन आम तौर पर के आसपास के क्षेत्र में कहीं न कहीं अस्पष्ट होगा (आसानी से आधा या दो बार हो सकता है या इससे भी अधिक, लेकिन परिमाण के उस क्रम में)। बेशक, पूरे लिखने के बजायmmmmm/2Nm2Nm-बिट स्ट्रिंग, हम इसे और अधिक संक्षिप्त रूप से अंतराल की लंबाई की सूची लिखकर लिख सकते हैं - जो कि सभी समान जानकारी को एक और अधिक संकुचित प्रारूप में ले जाता है। कितना अधिक रसीला? खैर, हम आमतौर पर प्रत्येक अंतराल की लंबाई का प्रतिनिधित्व करने के लिए बिट्स के बारे में आवश्यकता होगी ; और अंतराल के बारे में होगा ; इसलिए हमें बिट्स के बारे में कुल मिलाकर आवश्यकता होगी (थोड़ा अधिक हो सकता है, थोड़ा कम हो सकता है, लेकिन अगर पर्याप्त रूप से बड़ा है, तो यह आमतौर पर उसके करीब होगा)। यही कारण है कि एक की तुलना में बहुत छोटा है -बिट स्ट्रिंग।Nm/2NmN/2Nmm

और अगर वहाँ एक तरह से नीचे स्ट्रिंग लिखने के लिए यह सफलतापूर्वक है, शायद यह बहुत आश्चर्य की बात नहीं होगा अगर इसका मतलब है कि स्ट्रिंग की लंबाई के बराबर यादृच्छिक यादृच्छिक संख्या के साथ स्ट्रिंग उत्पन्न करने का एक तरीका है। विशेष रूप से, आप बेतरतीब ढंग से प्रत्येक अंतराल की लंबाई उत्पन्न करते हैं; यह साथ एक ज्यामितीय वितरण से नमूना ले रहा है , और यह औसतन ( ) औसतन लगभग यादृच्छिक बिट्स के साथ किया जा सकता है । आपको इस ज्यामितीय वितरण से iid की आवश्यकता होगी, इसलिए आपको कुल लगभग यादृच्छिक बिट्स की आवश्यकता होगी। (यह एक छोटा स्थिर कारक बड़ा हो सकता है, लेकिन बहुत बड़ा नहीं है।) और, ध्यान दें कि यह बिट्स की तुलना में बहुत छोटा है ।p=1/2NN2Nm/2NNm/2N2m

तो, हम आपके वितरण से iid ड्रॉ का नमूना ले सकते हैं , बस यादृच्छिक बिट्स (लगभग) का उपयोग कर। याद रखें कि एन्ट्रापी । तो इसका मतलब है कि आपको एन्ट्रापी होने की उम्मीद करनी चाहिए (लगभग) । वह थोड़ा बहुत बंद है, क्योंकि उपरोक्त गणना स्केच और क्रूड थी - लेकिन उम्मीद है कि यह आपको कुछ अंतर्ज्ञान देता है कि एन्ट्रापी क्या है, और क्यों सब कुछ सुसंगत और उचित है।mf(m)Nm/2Nlimmf(m)/mN/2N


वाह, शानदार जवाब! लेकिन क्या आप इस बारे में विस्तार से बता सकते हैं कि साथ एक ज्यामितीय वितरण से नमूना औसतन बिट्स क्यों लेता है ? मुझे पता है कि इस तरह के एक यादृच्छिक चर का मतलब , इसलिए इसे स्टोर करने के लिए औसत बिट्स लगते हैं, लेकिन मुझे लगता है कि इसका मतलब यह नहीं है कि आप बिट्स के साथ एक उत्पन्न कर सकते हैं । p=12NN2NNN
नालज़ोक

@nalzok, एक निष्पक्ष सवाल! क्या आप शायद एक अलग सवाल के रूप में पूछ सकते हैं? मैं देख सकता हूँ कि यह कैसे करना है, लेकिन अभी टाइप करना थोड़ा गड़बड़ है। यदि आप पूछते हैं कि शायद कोई मुझे उत्तर देने की तुलना में जल्दी जवाब दे सकेगा। मैं जिस दृष्टिकोण के बारे में सोच रहा हूं वह अंकगणित कोडिंग के समान है। परिभाषित करें (जहाँ ज्यामितीय rv है), फिर अंतराल में एक यादृच्छिक संख्या उत्पन्न करें , और ऐसा लगता है कि । यदि आप एक समय में बाइनरी एक्सपेंशन के बिट्स को लिखते हैं, तो आमतौर पर बिट्स लिखने के बाद , पूरी तरह से निर्धारित हो जाऊंगा।qi=Pr[Xi]Xr[0,1)iqir<qi+1rN+O(1)ri
DW

1
तो आप मूल रूप से व्युत्क्रम CDF पद्धति का उपयोग कर बाइनरी खोज के समान विचार के साथ एक समान रूप से वितरित वितरण को एक मनमाने ढंग से वितरण में परिवर्तित करने के लिए उपयोग कर रहे हैं? मुझे यह सुनिश्चित करने के लिए एक ज्यामितीय वितरण की मात्रात्मक फ़ंक्शन का विश्लेषण करने की आवश्यकता होगी, लेकिन यह संकेत पर्याप्त है। धन्यवाद!
नालजोक

1
@nalzok, आह, हाँ, इसके बारे में सोचने का एक अच्छा तरीका है - प्यारा। सुझाव के लिए धन्यवाद। हाँ, यह मेरे दिमाग में था।
DW

2

आप इसे पीछे की ओर सोच सकते हैं: पीढ़ी के बजाय द्विआधारी एन्कोडिंग की समस्या पर विचार करें। मान लीजिए कि आपके पास एक स्रोत है जो , साथ प्रतीकों उत्सर्जित करता है । उदाहरण के लिए, यदि , हमें । तो (शैनन हमें बताता है) एक विशिष्ट रूप से डिकोडिंग बाइनरी एन्कोडिंग , जहां (डेटा बिट्स), जैसे कि हमें अपने मूल प्रतीक के लिए औसतन लगभग डेटा बिट्स की आवश्यकता होती है। ।X{A,B}p(A)=2Np(B)=12NN=3H(X)0.54356XYY{0,1}0.54356X

(यदि आप सोच रहे हैं कि इस तरह के एन्कोडिंग कैसे मौजूद हो सकते हैं, तो यह देखते हुए कि हमारे पास केवल दो स्रोत प्रतीक हैं, और ऐसा लगता है कि हम बेहतर नहीं कर सकते हैं कि तुच्छ एन्कोडिंग, _ , , प्रति बिट एक प्रतीक के साथ, आपको यह समझने की आवश्यकता है कि शैनन बाउंड को अनुमानित करने के लिए हमें स्रोत के "एक्सटेंशन" लेने की आवश्यकता है, अर्थात, पूरे के रूप में इनपुट के अनुक्रमों को कोड करना। विशेष रूप से अंकगणितीय एन्कोडिंग में देखें)।A0B1

एक बार ऊपर स्पष्ट होने के बाद, यदि हम मानते हैं कि हमारे पास एक अवर्णनीय मानचित्रण , और यह सूचित करता है कि, शान्नोन सीमा में में अधिकतम एन्ट्रॉपी (प्रति बिट डेटा की 1 बिट जानकारी) होनी चाहिए, अर्थात , एक निष्पक्ष सिक्का के आंकड़े नहीं हैं, तो हम हाथ में एक पीढ़ी योजना है: आकर्षित यादृच्छिक बिट्स (यहां साथ कोई संबंध नहीं एक निष्पक्ष सिक्का के साथ), के रूप में उत्पादन व्याख्या एनकोडर की , और इससे को डीकोड करें । इस तरह, वांछित संभावना वितरण होगा, और हम जरूरत (औसत में) सिक्के के प्रत्येक मान उत्पन्न करने के लिए ।XnYnYnYnnnNYnXnXnH(X)<1X

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