छोटी जगह में संभावना के क्रम में वैक्टर पर पुनरावृति कैसे करें


12

एक पर विचार करें n आयामी वेक्टर v जहां vi{0,1} । प्रत्येक i हम जानते हैं कि pi=P(vi=1) और हमें मान लें vi स्वतंत्र हैं। इन संभावनाओं का उपयोग करना, वहाँ द्विआधारी पर पुनरावृति करने के लिए एक कारगर तरीका है n आयामी वैक्टर क्रम में सबसे से होने की संभावना होने की संभावना कम से कम करने के लिए (संबंधों के लिए मनमाने ढंग से विकल्पों के साथ) उत्पादन आकार में अंतरिक्ष sublinear का उपयोग कर?

उदाहरण के लिए p={0.8,0.3,0.6} । सबसे अधिक संभावना वेक्टर है (1,0,1) और सबसे कम संभावना {0,1,0}

बहुत छोटे n हम 2n vectors में से प्रत्येक को इसकी संभावना के साथ लेबल कर सकते हैं और बस सॉर्ट कर सकते हैं लेकिन यह निश्चित रूप से अभी भी सबलाइन स्पेस का उपयोग नहीं करेगा।

इस सवाल का एक करीबी प्रकार पहले /cs/24123/how-to-iterate-over-vectors-in-order-of-probability पर पूछा गया था ।


क्या कोई कारण है कि आपने वहाँ भी फॉलोअप प्रश्न नहीं पूछा है? यहाँ मुख्य मुद्दा यह सबलाइन स्पेस में ऐसा करने में से एक है?
सुरेश वेंकट

@ सुरेश वेंकट हाँ समस्या पूरी तरह से सबलाइन स्पेस (आउटपुट आकार में) के बारे में है। मैंने इसे यहाँ पूछा क्योंकि मुझे लगता है कि प्रश्न बहुत कठिन हो सकता है।
लेम्बिक

इसे स्थान और समय में हल करने से लगता है कि SUBSET-SUM के समान तकनीकों की आवश्यकता है (जल्दी से यह जानते हुए कि कौन सा उपसमूह लगभग विभिन्न योगों को रद्द करता है)। इस प्रकार, इसका तेज़ समाधान होने की संभावना नहीं है। poly(n)
ज्योफ्री इरविंग

@GeoffreyIrving क्या आपको लगता है कि इस अंतर्ज्ञान को और अधिक औपचारिक बनाया जा सकता है?
लेम्बिक

जवाबों:


9

निम्नलिखित एक एल्गोरिथ्म देता है जो लगभग समय और 2 n / 2 स्थान का उपयोग करता है।2n2n/2

सबसे पहले, के सभी उप-समूहों की रकम छँटाई की समस्या पर के लुक जाने आइटम नहीं है।n

इस उपप्रकार पर विचार करें: आपके पास लंबाई की दो क्रमबद्ध सूचियाँ हैं , और आप सूचियों में संख्याओं के जोड़दार योगों की एक क्रमबद्ध सूची बनाना चाहेंगे। आप इसे लगभग O ( m 2 ) समय (आउटपुट आकार) में करना चाहते हैं, लेकिन सबलाइन स्पेस। हम O ( m ) स्पेस प्राप्त कर सकते हैं । हम एक प्राथमिकता कतार रखते हैं, और बढ़ते क्रम में प्राथमिकता कतार से रकम खींचते हैं।mO(m2)O(m)

बता दें कि सूचियां और b 1b m हैं , जो बढ़ते क्रम में क्रमबद्ध हैं। हम मी sums को i + b 1 , i = 1 ... m लेते हैं, और उन्हें प्राथमिकता कतार में रखते हैं।a1amb1bmmai+b1i=1m

अब, जब हम छोटी से छोटी शेष राशि खींच प्राथमिकता कतार से बाहर, अगर j < मीटर हम तो राशि डाल एक मैं + j + 1 प्राथमिकता कतार में। अंतरिक्ष में प्राथमिकता कतार का वर्चस्व है, जिसमें हमेशा सबसे अधिक एम शामिल हैं । और समय ( एम 2 लॉग एम ) है , क्योंकि हम प्रत्येक प्राथमिकता कतार संचालन के लिए ( लॉग एम ) का उपयोग करते हैं। इससे पता चलता है कि हम O ( m 2) में उपप्रकार कर सकते हैंai+bjj<mai+bj+1mO(m2logm)O(logm) समय और( एम ) अंतरिक्ष।O(m2logm)O(m)

अब, संख्याओं के सभी सबसेट के योगों को छांटने के लिए , हम बस इस उप-रेखा का उपयोग करते हैं, जहाँ सूची i एक आइटमों के पहले आधे हिस्से के योगों का समूह है, और सूची b i , सबसेट के योगों का समूह है मदों की दूसरी छमाही के। हम इन सूचियों को एक ही एल्गोरिदम के साथ पुनरावर्ती पा सकते हैं।naibi

अब हम मूल समस्या पर विचार करेंगे। को निर्देशांक का सेट होने दें जो 0 हैं , और S 1 निर्देशांक का सेट है जो 1 हैं । तब Π मैं एस 0 पी ( v मैं = 0 ) Π मैं एस 1 पी ( v मैं = 1 )S00S11

iS0p(vi=0)iS1p(vi=1)=1inp(vi=0)iS1p(vi=1)p(vi=0)=1inp(vi=0)exp(iS1logp(vi=1)p(vi=0)).

इन नंबरों छंटाई छँटाई नंबरों के समान है , तो हम के सबसेट की रकम छँटाई करने के लिए समस्या को कम कर दिया n आइटम नहीं है।iS1logp(vi=1)logp(vi=0)n


क्या ऐसा करने के लिए एक पॉली टाइम / स्पेस सॉल्यूशन संभव हो सकता है?
लेम्बिक

आप शायद एक समाधान प्राप्त नहीं करने जा रहे हैं जो से कम समय लेता है , क्योंकि यह आउटपुट का आकार है (और मेरा समाधान n लेता है2n समय)। मैं अंतरिक्ष के लिए एक अच्छा कम बाध्य नहीं है, यद्यपि। n2n
पीटर शोर

धन्यवाद। मैं निश्चित रूप से पाली समय का मतलब नहीं था, बल्कि उत्पादन आकार और पाली अंतरिक्ष में कुछ रैखिक।
लिम्बिक

4

हम ऐसा अंतरिक्ष में कर सकते हैं (यदि हम चल रहे समय की परवाह नहीं करते हैं)।O(n)

  1. एक दिया स्ट्रिंग के लिए , हम अंतरिक्ष में गणना कर सकता है हे ( एन ) संख्या आर (x{0,1}nO(n) तार की तुलना में अधिक होने की संभावना है की एक्स ; यह है कि, की संख्या एक्स ' सेंट पी ( एक्स ' ) > पी ( एक्स ) : बस सब कुछ खत्म हो जाने के एक्स '{ 0 , 1 } n और की संख्या की गिनती एक्स ' सेंटr(x)xxp(x)>p(x)x{0,1}nx । ध्यान दें कि r ( x ) आउटपुट मेंस्ट्रिंग x की क्रमिक संख्या है।p(x)>p(x)r(x)x
  2. हर , हम x को r ( x ) = k के साथ पा सकते हैंkxr(x)=k अंतरिक्ष में में सभी जाना: एक्स { 0 , 1 } n , प्रत्येक के लिए एक्स गणना आर ( एक्स ) , रोकने के लिए और उत्पादन एक्स अगर आर ( x ) = केO(n)x{0,1}nxr(x)xr(x)=k
  3. अब बस सब कुछ खत्म हो जाने के से 0 करने के लिए 2 n - 1 , के लिए प्रत्येक कश्मीर प्रिंट एक्स के साथ आर ( एक्स ) = कश्मीरk02n1kxr(x)=k

(हमें संभावित संबंधों का भी ध्यान रखना चाहिए, लेकिन यह मुश्किल नहीं है।)


धन्यवाद। हालाँकि यह काफी धीमा एल्गोरिथम है:
लेम्बिक

0

संपादित करें: यह उत्तर गलत है। विवरण के लिए टिप्पणियाँ देखें। ~ gandaliter

आउटपुट में रैखिक का अर्थ । मुझे लगता है कि स्पष्ट एल्गोरिथ्म केवल ( एन ) स्थान का उपयोग करता है, इसके अलावा आउटपुट से ही।O(2n)O(n)

  1. जोड़ियों की सूची लें , और इसे क्रमबद्ध करें | 0.5 - पी i | , सबसे पहले।(i,pi)|0.5pi|

  2. एक दोगुना पुनरावर्ती क्रिया जो इस तरह के जोड़े और एक आंशिक रूप से भरे वेक्टर की एक सूची लेता है परिभाषित , का मान सेट वी मैंvvi के रूप में अगर पी मैं > 0.5 , और 0 अन्यथा, और recurses (सूची की पूंछ का उपयोग कर, और वी ) , फिर v i को फ़्लिप करता है और फिर से रिकवर करता है। यदि सूची खाली है तो इसके बजाय v को आउटपुट करें ।1pi>0.50vviv

  3. इस पुनरावर्ती फ़ंक्शन को सॉर्ट की गई सूची और एक खाली वेक्टर पर कॉल करें।

अंतर्ज्ञान यह है कि आप पहले वेक्टर में सबसे निश्चित तत्वों के मान सेट कर रहे हैं (जिनकी संभावनाएं और 1 के सबसे करीब हैं ), और वेक्टर को उस तरह से भरना है, जिनकी संभावना 0.5 के करीब है । प्रत्येक संभावित मूल्य जो पूरे वेक्टर को ले सकता है, इसकी संभावना के क्रम में आउटपुट किया जाता है।010.5

रन टाइम , जो कि निचला बाउंड है क्योंकि यह आउटपुट की लंबाई है। अंतरिक्ष जटिलता O ( n ) हैO(2n)O(n) क्योंकि इस प्रकार से अधिक की आवश्यकता नहीं है, और पुनरावर्ती लंबाई वेक्टर की लंबाई है, जो । मेरा मानना ​​है कि यह निचली सीमा भी है क्योंकि एल्गोरिथ्म के चलने में हर बार चरण के लिए स्मृति में एक अलग स्थिति होनी चाहिए, और समय जटिलता O ( 2 n ) हैO ( n ) मेमोरी में स्थितियाँ O की गणना करना आवश्यक है ( 2 n )nO(2n)O(n)O(2n)समय कदम। इसलिए यह एल्गोरिथम सबसे खराब स्थिति वाली जटिलता है।


के रूप में यह एक प्राथमिकता कतार की आवश्यकता है और इसलिए का उपयोग करता है अन्य जवाब निश्चित रूप से अलग है अंतरिक्ष। Θ(2n)
लेम्बिक

धन्यवाद। मैंने स्पष्ट रूप से इसे ध्यान से नहीं पढ़ा था! मैंने अपना उत्तर संपादित कर दिया है।
गैंडर

3
क्या आप सुनिश्चित हैं कि यह समाधान काम करता है? मैं दोहरे पुनरावर्तन के विवरण का पता नहीं लगा सका (स्यूडोकोड मदद करेगा!), लेकिन मुझे नहीं लगता कि यह कैसे काम कर सकता है। विशेष रूप से, आपका समाधान स्थानीय प्रतीत होता है: यदि यह सेट करता है , तो यह अब v 1 = 1 के साथ 2 n - 1 उत्तर आउटपुट करने जा रहा है । लेकिन वास्तविक उत्तरों को इस तरह नहीं देखना चाहिए। वास्तव में, जहां तक ​​मैंने आपके समाधान को समझा, यह सबसे सरल मामले के लिए भी विफल प्रतीत होता है जहां सभी पीv1=12n1v1=1pi=0.5
मोबियस ने

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