पुनरावर्ती फाइबोनैचि एल्गोरिथ्म की जटिलता


13

निम्नलिखित पुनरावर्ती फाइबोनैचि एल्गोरिथ्म का उपयोग करना:

def fib(n):
   if n==0:
      return 0
   elif n==1
      return 1
   return (fib(n-1)+fib(n-2))

यदि मैं 5 नंबर को फाइब (5) खोजने के लिए इनपुट करता हूं, तो मुझे पता है कि यह 5 आउटपुट देगा लेकिन मैं इस एल्गोरिथ्म की जटिलता की जांच कैसे करूं? मैं शामिल चरणों की गणना कैसे करूं?



मैं उसी के लिए देख रहा था, और मैं MyCodeSchool द्वारा इस वीडियो पर ठोकर खाई मैं इसे बाहर की जाँच करने की सलाह देता हूं।
Snbk97

जवाबों:


23

ज्यादातर बार, आप पुनरावर्ती समीकरणों का उपयोग करके पुनरावर्ती एल्गोरिदम का प्रतिनिधित्व कर सकते हैं। इस स्थिति में इस एल्गोरिथ्म के लिए पुनरावर्ती समीकरण । तब आप प्रतिस्थापन विधि या विस्तार विधि (या पुनरावृत्ति को हल करने के लिए उपयोग की जाने वाली कोई अन्य विधि) का उपयोग करके समीकरण के बंद रूप को पा सकते हैं। इस स्थिति में आपको , जहां स्वर्णिम अनुपात ( ) है।T(n)=T(n1)+T(n2)+Θ(1)T(n)=Θ(ϕn)ϕϕ=(1+5)2

यदि आप पुनरावृत्ति को हल करने के तरीके के बारे में अधिक जानकारी प्राप्त करना चाहते हैं, तो मैं दृढ़ता से आपको एल्गोरिदम के परिचय के अध्याय 4 को पढ़ने की सलाह देता हूं ।


0

पुनरावृत्ति संबंधों / गणित विश्लेषण (लेकिन एक विकल्प नहीं ) के विकल्प के रूप में एक साधारण अनुभवजन्य अभ्यास, जाहिरा तौर पर कक्षाओं में बहुत बार नहीं पढ़ाया जाता है, लेकिन बहुत जानकारीपूर्ण है, फ़ंक्शन के निष्पादन के # गणना करने के लिए है, और फिर एक श्रेणी के लिए गणना को रेखांकन करें। छोटे n निविष्टियाँ, और फिर वक्र परिणाम के लिए उपयुक्त है। परिणाम आम तौर पर सैद्धांतिक गणित दृष्टिकोण के साथ निकटता से मेल खाते हैं।

इस अभ्यास के लिए अच्छी सहायक सामग्री मुफ्त ऑनलाइन अध्याय 3 में देखी जा सकती है, कंप्यूटर विज्ञान , उलेमान के एल्गोरिदम / नींव का समय चल रहा है।


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

1
उत्तर अनिवार्य रूप से आपके अस्वीकरण से शुरू होता है, यह कहते हुए कि प्लॉटिंग गणित विश्लेषण का विकल्प नहीं है । साजिश करना एक वैज्ञानिक तरीका है और यह कहना / निरीक्षण करना कभी-कभी मूर्खतापूर्ण होता है कि डेटा के सांख्यिकीय पहलुओं के बारे में जानने के लिए, जो वैज्ञानिक विश्लेषण का एक और महत्वपूर्ण पहलू है । लगता है कि यह "आसानी से मूर्ख" है बल्कि नाटकीय है, "रोगविज्ञानी" मामले हैं जहां यह विफल हो जाता है लेकिन वे आमतौर पर "विवादित" होते हैं ... सवाल एल्गोरिथ्म की जटिलता की जांच करना था और अनुभवजन्य विश्लेषण एक महत्वपूर्ण पहलू है / उस पर कोण, और स्पष्ट रूप से एकमात्र कोण आदि नहीं ...
vzn

0

फ़ाइबर (n) का परिणाम सभी पुनरावर्ती कॉलों का योग है जो 1 लौटा। इसलिए फ़ाइबर (1) का मूल्यांकन करने वाले फ़ाइबर (n) पुनरावर्ती कॉल हैं। तो निष्पादन का समय Ω (फ़ाइब (n)) है; आपको यह दिखाने की आवश्यकता होगी कि कॉलिंग 0 और अन्य पुनरावर्ती कॉल इस पर महत्वपूर्ण रूप से नहीं जोड़ते हैं।

एक ही तर्क किसी भी पुनरावर्ती परिभाषित फ़ंक्शन पर लागू होता है जो या तो 1, या 0, या किसी अन्य पुनरावर्ती कॉल का परिणाम देता है।


"कम से कम ओ (फ़ाइब (एन))" - इसका कोई मतलब नहीं है। आप का उपयोग करना चाहते हैं । Ω
राफेल

यदि आप इसके बारे में दृढ़ता से महसूस करते हैं तो उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें।
gnasher729

0

एक निचली सीमा सहज है: चूंकि इसलिएT ( n ) > 2 T ( n - 2 ) T ( n - 1 ) > T ( n - 2 ) T ( n ) = Ω ( सी एन )T(n)=T(n1)+T(n2) T(n)>2T(n2)T(n1)>T(n2)T(n)=Ω(cn)

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