आज कक्षा में मेरी शिक्षक ब्लैकबोर्ड पर लिखा है इस पुनरावर्ती भाज्य एल्गोरिथ्म:जटिलता
int factorial(int n) {
if (n == 1)
return 1;
else
return n * factorial(n-1);
}
उन्होंने कहा कि T(n-1) + 1
की लागत है।
फिर पुनरावृत्ति विधि के साथ उसने कहा कि T(n-1) = T(n-2) + 2 = T(n-3) + 3 ... T(n-j) + j
, इसलिए n - j = 1
, j = n - 1
पर एल्गोरिदम बंद हो जाता है।
उसके बाद, उन्होंने को T(n-1) + 1
में प्रतिस्थापित किया, और T(1) + n-1
प्राप्त किया।
वह सीधे कहा कि उस के लिए n-1 = 2 (लॉग n-1), तो एल्गोरिथ्म की लागत घातीय है।
मैं वास्तव में पिछले दो चरणों को खो दिया। क्या कोई उन्हें मुझे समझा सकता है?
इससे बहुत मदद मिली। बहुत से बहुत धन्यवाद। –
लगता है जैसे [अर्ध-बहुपद समय] (http://en.wikipedia.org/wiki/Quasi-polynomial_time#Quasi-polynomial_time)। – Nuclearman
@ न्यूक्लर्मन- यह निश्चित रूप से बहुपद समय है, quasipolynomial समय नहीं। यह सिर्फ एक समझदार लाभ के साथ एक एक्सपोनेंट और लॉगरिदम के साथ वास्तव में उलझन में लिखा गया है। – templatetypedef