यह फ़ंक्शन समय में क्यों गणना योग्य है ?


10

मेरी पाठ्यपुस्तक कहती है: "हम फ़ंक्शन को परिभाषित करते हैं इस प्रकार है: और। ध्यान दें कि दिए गए , हम आसानी से पा सकते हैं समय संख्या ऐसा है कि के बीच sandwiched है और । "f:NNf(1)=2f(i+1)=2f(i)1.2nO(n1.5)inf(i)f(i+1)

मैं खुद को कैसे समझा सकते हैं कि हम वास्तव में आसानी से पा सकते हैं में समय? जैसा कि को पुनरावर्ती रूप से परिभाषित किया गया है, मुझे लगता है कि हमें तक । आदेश समय है कि इन गणनाओं ले पता लगाने के लिए में, मुझे लगता है कि हम एक उपयुक्त ऊपरी के लिए बाध्य खोजने के लिए पर निर्भर और हम एक ऊपरी समारोह का निष्पादन समय पर बाध्य खोजने के लिए। अंत में, हम उम्मीद कर सकते हैं कि उद्धृत प्रस्ताव दिखा सकते हैं। दुर्भाग्य से, मैं न तो एक चीज और न ही दूसरे को देखता हूं।iO(n1.5)ff(1),f(2),f(3)f(j)f(j)ninx2x1.2

मैं उल्लेख करना भूल गया: कृपया ध्यान दें कि हम एक nondeterministic संदर्भ में हैं। इसलिए को एक nondeterministic Turing मशीन द्वारा में गणना करने का दावा किया जाता है ।fO(n1.5)


जैसा कि काफी लोगों ने पहले ही इस सवाल को पढ़ लिया है, उनमें से कुछ ने इसे उपयोगी और दिलचस्प भी पाया है, लेकिन अब तक किसी ने भी जवाब नहीं दिया है, मैं संदर्भ पर कुछ और जानकारी प्रदान करना चाहता हूं: उद्धृत दावा इस बात के प्रमाण का एक अभिन्न अंग है nondeterministic समय पदानुक्रम प्रमेय। प्रमाण (दावे के साथ) उदाहरण के लिए अरोड़ा और बराक की पुस्तक में पाया जा सकता है , लेकिन मुझे वेब पर कुछ अन्य संसाधन भी मिले हैं जो समान प्रमाण प्रस्तुत करते हैं। उनमें से प्रत्येक दावा को आसान या तुच्छ बताता है और इस बारे में विस्तृत जानकारी नहीं देता है कि समय में कैसे ढूंढूं । तो या तो इन सभी संसाधनों को सिर्फ अरोड़ा और बराक से कॉपी किया गया है या दावा वास्तव में इतना मुश्किल नहीं है।iO(n1.5)


1
यह अरोड़ा और बराक में nondeterministic समय पदानुक्रम प्रमेय सबूत की तरह लग रहा है, है ना? यदि ऐसा है, तो मुझे लगता है कि नॉनडेटर्मिनिज़म यहाँ एक भूमिका निभाता है।
जी। बैच

आप सही हे। इसके लिए खेद है, मुझे nondeterministic संदर्भ का उल्लेख करना चाहिए था। क्या आप कृपया अधिक विस्तार से बता सकते हैं कि कैसे nondeterminism हमें O (n ^ 1.5) बाध्य दिखाने में मदद करता है?
user1494080

जवाबों:


4

द्वारा निरूपित करें |x| एक संख्या की लंबाई x, अर्थात log2x+1 (के लिये x>0)। गिना जा रहा है2x समय की आवश्यकता है O(x) रैम मॉडल में, और इसलिए गणना f(i+1) से f(i) समय लगता है O(f(i)1.2)=O(|f(i+1)|)। जबसेf(i) गणना करने के लिए समग्र समय, ज्यामितीय रूप से तेजी से बढ़ रहा है f(i+1) है O(|f(i+1)|)। जैसा कि आप बताते हैं, आपको तब तक ऐसा करने की आवश्यकता हैf(i+1)n, जिसका मतलब है कि f(i)<n। इसलिए कुल चलने का समय हैO(|f(i+1)|)=O(f(i)1.2)=O(n1.2)

एक टेप के साथ ट्यूरिंग मशीन मॉडल में, गणना करना 2x समय लगता है O(xlogx), और इसलिए कुल चलने का समय है O(n1.2logn)=O(n1.5)। कंप्यूटिंग के लिए एल्गोरिथ्म2x की जगह [x] द्वारा 1[[x]] (यहाँ [x] का द्विआधारी प्रतिनिधित्व है x, तथा [[x]] विभिन्न अंकों का उपयोग करके द्विआधारी प्रतिनिधित्व है 0,1), और फिर बार-बार परिवर्तन चलाता है [[x]]0[[x1]], जो समय लेता है O(|x|)=O(logx)


बहुत बहुत धन्यवाद! एक और सवाल: क्या हमें यह तर्क नहीं देना है कि एफ (i) | ज्यामितीय रूप से तेजी से बढ़ता है बजाय इसके कि च (i) ज्यामितीय रूप से तेजी से बढ़ता है?
user1494080

जबसे |f(i+1)|=f(i)1.2, यह एक ही बात है, लेकिन आप सही हैं। हम वास्तव में क्या चाहते हैंΣजेमैं|(जे)|=हे(|(मैं)|)
युवल फिल्मस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.