एसिम्प्टोटिक नोटेशन के उपयोग में त्रुटि


10

मैं समझने की कोशिश कर रहा हूं कि निम्नलिखित पुनरावृत्ति के सबूत के साथ क्या गलत है

टी(एन)2(n

T(n)=2T(n2)+n
T(n)2(cn2)+ncn+n=n(c+1)=O(n)

प्रलेखन आगमनात्मक परिकल्पना की वजह से गलत का कहना है कि क्या Am मुझे याद आ रही?

T(n)cn

2
मास्टर प्रमेय का उपयोग करके इस फॉर्म की पुनरावृत्ति को भी हल किया जा सकता है ।
जुहो

2
@ रैन: मुझे नहीं लगता कि मास्टर-प्रमेय इस प्रश्न के लिए एक उपयुक्त टैग है। सवाल यह नहीं है कि इसे कैसे हल किया जाए, बल्कि एक विशेष तर्क में गिरावट को इंगित करने के लिए। इसके अलावा, मास्टर-प्रमेय शायद बहुत विशिष्ट है, और शायद इसका अपना टैग होने के लायक नहीं है। सामान्य तौर पर, हमें प्रश्न के आधार पर टैगिंग करनी चाहिए, उत्तर संभव नहीं। उदाहरण के लिए, क्या आप इस akra-bazzi को टैग करेंगे?
आर्यभट्ट

"निम्नलिखित प्रमाण में क्या गलत है" - मुझे कोई प्रमाण नहीं दिखता। गलतियों को ठीक करने के लिए एक पूर्ण प्रमाण (यानी इंडक्शन को स्पष्ट करना) लिखना अक्सर सहायक होता है।
राफेल

जवाबों:


12

मान लीजिए कि अंतिम लक्ष्य साबित करना है । आप प्रेरण परिकल्पना के साथ शुरू करते हैं:T(n)=O(n)

सभी के लिए मैं < nT(i)cii<n

और सबूत पूरा करने के लिए, आपको लगता है कि दिखाने के लिए के रूप में अच्छी तरह से।T(n)cn

हालांकि, अगर आप क्या अनुमान रहे हैं सक्षम है , जो प्रमाण पूरा करने के लिए उपयोगी नहीं है, आपको (लगभग) सभी n के लिए एक निरंतर सी की आवश्यकता है । इसलिए, हम कुछ भी निष्कर्ष नहीं निकाल सकते हैं और टी ( एन ) = ( एन ) साबित नहीं होता है।T(n)(c+1)ncnT(n)=O(n)

ध्यान दें कि आप परिणाम और प्रमाण प्रक्रिया के बीच भ्रमित हैं। और एक और बात, वास्तव में है Θ ( n लॉग इन करें n ) इस मामले में तो आप एक उपयुक्त प्रेरण परिकल्पना यह साबित करने में सक्षम होने की सोच सकते हैं।T(n)Θ(nlogn)


यदि हम c '= c + 1 को प्रतिस्थापित करते हैं, तो क्या यह कोई परिवर्तन करेगा?
एर्ब

@ शेर: नहीं, यह नहीं होगा। आपको एक चुने हुए निरंतर के लिए साबित करना होगा। जगह तो आपको धीरे-धीरे है टी ( एन ) ( ' + 1 ) एन (या टी ( एन ) ( + 2 ) एन ) तो परिणाम एक ही है। c=c+1T(n)(c+1)nT(n)(c+2)n
पैड

8

आपने कुछ चरणों को छोड़ दिया है। ऐसा लगता है कि आप प्रेरण द्वारा साबित करने का प्रयास कर रहे हैं कि , और आपका प्रमाण जाता है:T(n)=O(n)

मान लीजिए के लिए कश्मीर < n । इसका मतलब यह है टी ( कश्मीर ) T(k)=O(k)k<n कुछ सी के लिए । फिर टी ( एन ) = 2 टी ( n / 2 ) + n 2 n / 2 + n ( + 1 )T(k)ckc , so T ( n ) = O ( n )T(n)=2T(n/2)+n2cn/2+n(c+1)nT(n)=O(n)

यह प्रमाण शुरू से ही गलत है: " लिए के < n " का कोई मतलब नहीं है। बिग ओह एक asymptotic धारणा है: टी ( कश्मीर ) = हे ( कश्मीर ) का मतलब है कि वहाँ कुछ निरंतर और एक सीमा एन ऐसी है कि कश्मीर एन , टी ( कश्मीर ) T(k)=O(k)k<nT(k)=O(k)c । और फिर से अंत में, आप यह निष्कर्ष नहीं निकाल सकते हैं कि " T ( n ) = O ( n ) ", क्योंकि यह फ़ंक्शन T के बारे में कुछ कहता हैऔर आपने केवल विशेष मान T ( n ) के बारे में कुछ साबित किया है।kN,T(k)ckT(n)=O(n)TT(n)

आपको अर्थ के बारे में स्पष्ट होना चाहिए । तो शायद आपका सबूत चला जाए:O

मान लीजिए कि T(k)ckk<nT(n)=2T(n/2)+n2cn/2+n(c+1)n

यह एक प्रेरक कदम साबित नहीं होता है: आपने से शुरू कियाT(k)ckk=nT(k)(c+1)kT(k)ckcTck

c1km=2pkcm=ck+pck=c0log2k

k1T(k)clog2(k)

पुनरावृत्ति का संबंध विभाज्य और विजयी एल्गोरिदम के लिए विशिष्ट है जो डेटा को दो समान भागों में रैखिक समय में विभाजित करते हैं। ऐसे एल्गोरिदम में काम करते हैंΘ(nlog(n))O(n)

2T(n/2)nlog2(2)=1Θ(nlog(n))


7

मैं पहले से दिए गए उत्तर का विस्तार कर रहा हूं, शायद केवल अपनी टिप्पणी को अधिक विस्तार से समझाकर।

T(n)=aT(n/b)+f(n)a1b>1f(n)n/2n/2n/2

a=2b=2f(n)=Θ(n)nlogba=nlog22=nf(n)=Θ(n)T(n)=Θ(nlogn)


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