क्या हम समय में


11

मैं समस्या के लिए एक कुशल एल्गोरिथ्म चाह रहा हूँ:

इनपुट : कुछ पूर्णांक लिए धनात्मक पूर्णांक (बिट्स के रूप में संग्रहीत) । एन 03nn0

आउटपुट : संख्या ।n

प्रश्न : क्या हम समय में के बिट से गणना कर सकते हैं ?n3nO(n)


यह एक सैद्धांतिक प्रश्न है जो मेरे गणित के उत्तर से प्रेरित है। प्रश्न यह है कि इस आक्षेप के लिए फार्मूला कैसे खोजा जाए? । इस प्रश्न में, लेखक और प्राकृतिक संख्या । मैंने समाधान के रूप में प्रस्तावित किया । एक अन्य उत्तर में कहा गया है "कोई सरल सूत्र नहीं है", जो मुझे आश्चर्यचकित करता है कि (कम्प्यूटेशनल रूप से) मेरा प्रस्तावित समाधान कितना सरल है।

{2n3m:n0 and m0}
N={1,2,}
2m3n2m(2n+1)

मेरी प्रस्तावित समाधान के साथ, यदि हम जानते हैं और , हम आसानी से गणना कर सकता है (बाइनरी अंकों की लिखना के बाद के बाद शून्य)। इसमें समय लगता है।m 2 m ( 2 n + 1 ) n 1 m O ( n + m )nm2m(2n+1)n1mO(n+m)

ढूँढना के टुकड़े से (है, जो सही सा बदलाव की गणना के द्वारा की जा सकती है छोड़ने कम से कम महत्वपूर्ण बिट पाने के लिए मात्रा स्मृति में)। इसमें समय लगता है।2 एम 3 एन 3 एन( एम )m2m3n3nO(m)

हालांकि, हमें खोजने की भी आवश्यकता है , जो अधिक कठिन हो सकता है। बार-बार विभाजित करके को खोजना संभव होगा , लेकिन यह बेकार लगता है। इसके लिए डिवीजन संचालन की आवश्यकता होती है , जिनमें से प्रत्येक को समय लगेगा, इसलिए यह कुल मिलाकर समय है। [वास्तव में, प्रत्येक पुनरावृत्ति के बाद, अंकों की संख्या में रैखिक रूप से कमी आएगी, लेकिन इससे अभी भी O ( n 2 ) समय निकलता है।]n 3 n O ( n )nn3nO(n)O(n2)O(n2)

ऐसा लगता है कि इनपुट का शक्ति को जानने के लिए हमें शोषण करने में सक्षम होना चाहिए ।3


2
कम्प्यूटेशन का आपका सटीक मॉडल क्या है? समय में कौन से संचालन की अनुमति है ? (अगर हम संख्या 2 के साथ अंकगणित कर सकते हैं जैसे कि लॉग 2 3 यह काफी उपयोगी होगा ...)O(1)log23
युवल फिल्मस

3
क्या डाउनवॉटर डाउनवोट की व्याख्या कर सकता है? यह एक तुच्छ प्रश्न की तरह प्रतीत नहीं होता है। कुछ उचित गणना मॉडल के तहत सबसे अच्छा चलने वाला समय क्या है?
युवल फिल्मस

1
मैं 0, 1, और खाली कोशिकाओं (टेप की अनंत संख्या के साथ) के साथ टेपों की कल्पना कर रहा हूं। मैं समय में चलने के लिए सिंगल बिट टॉगल और लेफ्ट / राइट शिफ्टिंग ऑपरेशन चाहता हूं । (यदि हमारे पास अनंत टेप पर 0-th बिट का मार्कर है, तो मार्कर को स्थानांतरित करने से बाएं / दाएं स्थानांतरण प्राप्त होता है)। ट्यूरिंग मशीन के विपरीत, मैं यह नहीं चाहता कि मुझे एक पॉइंटर को स्थानांतरित करने में कोई समय लगे। इसलिए "0-वें बिट को टॉगल करें" 124126-बिट के "टॉगल" के समान समय लेता है। O(1)
रेबेका जे। स्टोन्स

यह किसी भी तरह इस सवाल
जे.ई.

क्या की निचली सीमा स्पष्ट है? Ω(n)
बोरिस बुक

जवाबों:


9

स्पष्ट दृष्टिकोण है:

(1) 2 ( 3 n ) करने के लिए एक सन्निकटन की गणना करें । आप दिए गए द्विआधारी प्रतिनिधित्व में बिट्स की संख्या की गणना, और का एक additive त्रुटि के भीतर करने के लिए से 1 के एक additive त्रुटि के भीतर करने के लिए यह अनुमान लगा सकता है ε अतिरिक्त शीर्ष पर देख कर हे ( लॉग इन करें 1log2(3n)ϵइनपुट के बिट्स। यह एक निरंतर मूल्य चुनने के लिए पर्याप्त होना चाहिएεताकि के एक additive त्रुटि के भीतर अंतिम परिणाम समाप्त होता है ऊपर ((2) चरण में त्रुटि के साथ संयोजन के बाद),1/2सही की।O(log1ϵ)ϵ1/2

(2) लिए एक सन्निकटन की गणना करें । मैं इसके लिए एल्गोरिदम से परिचित नहीं हूं, लेकिन मुझे उम्मीद है कि उन्हें आपके द्वारा आवश्यक परिशुद्धता के बिट्स की संख्या में बहुपद का समय लगता है, और आपको केवल O ( लॉग एन ) बिट्स सटीक की आवश्यकता होती है।log2(3)O(logn)

(3) (2) के उत्तर से (1) को विभाजित करें, और निकटतम पूर्णांक पर गोल करें।

तो पहला कदम रैखिक समय लेता है (गणना के अधिकांश मॉडलों में हालांकि शायद एकल-सिर ट्यूरिंग मशीनों जैसे कुछ कम शक्ति वाले लोगों के लिए नहीं ) और शेष चरणों को पॉलीग्लारिथमिक होना चाहिए।


3
मुझे विश्वास है कि कंप्यूटिंग करने के लिए टी परिशुद्धता के टुकड़े लेता है समय हे ( एम ( टी ) लॉग टी ) , जहां एम ( टी ) हे ( टी लॉग टी 2 लॉग * टी ) गुणा करने का समय है टी -बिट संख्या। ब्रेंट देखें - ज़िम्मरमैन, loria.fr/~zimmerma/mca/pub226.htmllog2(3)tO(M(t)logt)M(t)O(tlogt2logt)t
रयान ओ'डॉनेल

संदर्भ के लिए धन्यवाद, और खुद को देखने के लिए बहुत आलसी होने के लिए माफी।
डेविड एप्पस्टीन

9

किसी भी पूर्णांक के लिए , लेखन 3 एन बाइनरी में की आवश्यकता है वास्तव में एल = लोग इन 2 ( 3 एन ) + 1 बिट्स। कुछ प्राथमिक बीजगणित का अर्थ है कि एल - 2n>03nL=log2(3n)+1 किसी भी बिट लंबाई के लिएएल1, इस श्रेणी में सबसे एक पूर्णांक में है। इस प्रकार,3की एक अभिन्न शक्ति हैजो किएलबिट्स लंबी है, प्रतिपादक पूर्णांकn=alL-1होना चाहिए

L2log23nL1log23.
L13L
n=L1log23.

4

यहाँ एक और दृष्टिकोण है। कम देखते हुए के अंकों 3 n , आप सीख सकते हैं 3 एन आधुनिक 10 कश्मीर और इस तरह 3 एन आधुनिक 5 कश्मीर । ऐसा लगता है कि 3 एक जनरेटर सापेक्ष है 5 कश्मीर (यानी, 3 आदेश है φ ( 5 कश्मीर ) = 5 कश्मीर - 1 × 4 )।k3n3nmod10k3nmod5k35k3φ(5k)=5k1×4

इसलिए, असतत लॉग और Hensel उठाने का उपयोग करके, मुझे लगता है कि आप की गणना करने में सक्षम होना चाहिए कम से कश्मीर के अंकों 3 n बहुत कुशलतापूर्वक। दूसरे शब्दों में, आप 3 n के कम अंक से n मॉड 4 की गणना करके शुरू करते हैं , 3 n mod 5 के असतत लॉग को आधार 3 , modulo 5 में ले जाकर ; इससे n मॉड 4 का पता चलता है , और इसे O ( 1 ) में किया जा सकता हैnmodφ(5k)k3nnmod43n3nmod535nmod4O(1)समय। फिर, आपको बेस , मोडुलो 25 के के असतत लॉग मिलते हैं ; इससे n मॉड 20 का पता चलता है , और इसे O ( 1 ) समय में किया जा सकता है ( n mod 4 के ज्ञान का लाभ उठाते हुए , केवल 5 संभावनाएँ हैं जिन्हें आपको आज़माना है)। दोहराएं। हर कदम पर, आप के ज्ञान का उपयोग n आधुनिक φ ( 5 कश्मीर - 1 ) मदद करने के लिए आप कुशलता से असतत लॉग गणना की 3 एन mod 53nmod25e25nmod20O(1)nmod45nmodφ(5k1)3nmod5kइस तथ्य केवल देखते हैं कि का इस्तेमाल कर रही के लिए संभावित मान n आधुनिक φ ( 5 कश्मीर )5nmodφ(5k)

अब बस को पर्याप्त बड़ा होने दें, और यह पता चलता है nkn

आपको यह पता लगाने की आवश्यकता होगी कि क्या चल रहा समय , लेकिन यह मुझे ऐसा लगता है जैसे यह हो सकता है। मुझे संदेह है कि यह k = O ( n ) को बताने के लिए पर्याप्त है , और मुझे संदेह है कि आप O ( 1 ) समय में, कुल O ( n ) समय के लिए प्रत्येक पुनरावृत्ति कर सकते हैं ।O(n)k=O(n)O(1)O(n)

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