संख्याओं के अनुक्रमों के लिए पुनरावृत्ति संबंधों को हल करना या अनुमान लगाना


89

कंप्यूटर विज्ञान में, हमें अक्सर पुनरावृत्ति संबंधों को हल करना पड़ता है , जो संख्याओं के पुनरावर्ती रूप से परिभाषित अनुक्रम के लिए एक बंद रूप ढूंढता है। जब runtimes पर विचार, हम अक्सर मुख्य रूप से इस सीक्वेंस के में रुचि रखते हैं asymptotic विकास

उदाहरण हैं

  1. एक पूंछ-पुनरावर्ती फ़ंक्शन का रनटाइम से से नीचे की ओर बढ़ रहा है जिसका शरीर समय लेता है :0nf(n)

    T(0)=0T(n+1)=T(n)+f(n)

  2. फाइबोनैचि अनुक्रम :

    F0=0F1=1Fn+2=Fn+Fn+1

  3. कोष्ठक जोड़े के साथ डाइक शब्दों की संख्या :n

    C0=1Cn+1=i=0nCiCni

  4. मध्यांतर रनटाइम पुनरावृत्ति लंबाई की सूची पर :n

    T(1)=T(0)=0T(n)=T(n/2)+T(n/2)+n1

पुनरावृत्ति संबंधों को हल करने के तरीके क्या हैं? हम देख रहे हैं

  • सामान्य तरीके और
  • एक महत्वपूर्ण उपवर्ग के लिए तरीके

साथ ही साथ

  • सटीक समाधान और उपज देने वाले तरीके
  • ऐसी विधियाँ जो (विषम) विकास को प्रदान करती हैं।

यह एक संदर्भ प्रश्न बन जाता है। कृपया प्रति विधि एक उत्तर पोस्ट करें और एक सामान्य विवरण के साथ-साथ एक उदाहरण दें।


9
ये नोट मददगार हो सकते हैं। (लेकिन नहीं, मैं उन्हें जवाबों में नहीं
भेजूंगा

जवाबों:


35

पूरा इतिहास सीमित इतिहास में परिवर्तित

यह पुनरावृत्ति को हल करने में एक पहला कदम है जहां किसी भी पूर्णांक पर मूल्य सभी छोटे पूर्णांकों पर मूल्यों पर निर्भर करता है । उदाहरण के लिए, पुनरावृत्ति जो उत्पन्न होती है यादृच्छिक क्विकॉर्ट्स के विश्लेषण में । (यहां, यादृच्छिक रूप से चुनी गई धुरी की श्रेणी है।) किसी भी पूर्णांक , का मान साथ सभी पर निर्भर करता है । इस फॉर्म के पुनरावृत्ति को पूर्ण इतिहास आवर्ती कहा जाता है ।कश्मीरएनटी(एन)टी(कश्मीर)कश्मीर<n

T(n)=n+1nk=1n(T(k1)+T(nk))
knT(n)T(k)k<n

इस पुनरावृत्ति को हल करने के लिए, हम इसे एक सीमित इतिहास पुनरावृत्ति में बदल सकते हैं , जहां केवल पिछले मूल्यों की एक निरंतर संख्या पर निर्भर करता है। लेकिन पहले, यह पुनरावृत्ति को सरल बनाने में मदद करता है, सामान्य शब्दों को इकट्ठा करने और pesky अंशों को खत्म करने के लिए। अब एक सीमित-इतिहास पुनरावृत्ति में बदलने के लिए , हम लिए पुनरावृत्ति लिखते हैं , घटाते हैं, और फिर से लिखते हैं: start एन टी ( एन )T(n) टी(n-1) ( n - 1 ) टी ( n - 1 )

nT(n)=n2+2k=1n1T(k)
T(n1)
(n1)T(n1)=(n1)2+2k=1n2T(k)nT(n)(n1)T(n1)=(2n1)+2T(n1)nT(n)=(2n1)+(n+1)T(n1)T(n)n+1=2n1n(n+1)+T(n1)n

अब अगर हम को परिभाषित करते हैं और अंश को सरल स्पर्शोन्मुख रूप प्रतिस्थापित करते हैं , हम बहुत सरल पुनरावृत्ति एक योग में इस पुनरावृत्ति विस्तार तुरंत हमें देता है , जहां है वें हार्मोनिक संख्या । हम उस निष्कर्ष निकालते हैं ।2 n - 1t(n)=T(n)/(n+1) Θ(1/n)टी(एन)=Θ(1/n)+टी(n-1)टी(एन)=Θ(एचएन)=Θ(लॉग इन करेंn)एचएनएन2n1n(n+1)Θ(1/n)

t(n)=Θ(1/n)+t(n1).
t(n)=Θ(Hn)=Θ(logn)HnnT(n)=Θ(nlogn)

1
यदि आप लिए सटीक समाधान चाहते हैं , तो यह भी मुश्किल नहीं है (यहां), अगर थोड़ा थकाऊ; हमें । दरअसल, मुझे भ्रमित करता है इसलिए मैं सटीक संस्करण पसंद करता हूं। लैंसौ शब्दों की पेस्की रकमटी ( एन ) = 2 ( एन + 1 ) एच एन + ( टी ( 0 ) - 3 ) n + टी ( 0 ) Σ n मैं = 1 Θ ( 1 / मैं ) = Θ ( एच एन )TT(n)=2(n+1)Hn+(T(0)3)n+T(0)i=1nΘ(1/i)=Θ(Hn)
राफेल

दरअसल, यह निरीक्षण करने के लिए पर्याप्त है कि ) , जहां । वास्तव में, मैंने पहले से ही उस चाल का उपयोग शुरू में ही कर दिया था, जब मैंने समय को सरलतम साथ एक सरणी को विभाजित करने के लिए बदल दिया था । यह अंकन का पूरी तरह से मानक दुरुपयोग है। टी * ( एन ) = 1 / n + टी * ( n - 1 ) Θ ( n ) nT(n)/(n+1)=Θ(t(n))t(n)=1/n+t(n1)Θ(n)n
जेफ

28

कार्य उत्पन्न करना

संख्याओं की प्रत्येक श्रृंखला एक जनरेटिंग फंक्शन से मेल खाती है । श्रृंखला के तत्वों - प्लूटेड - यह अक्सर अपने गुणांक के पुनरावृत्ति से आराम से प्राप्त किया जा सकता है।

इस उत्तर में एक सामान्य उदाहरण शामिल है, एक पूर्ण उदाहरण के साथ, एक विशेष मामले के लिए एक शॉर्टकट और इस पद्धति का उपयोग करने के बारे में कुछ नोट एसिम्पोटिक्स प्राप्त करने के लिए (भले ही सटीक परिणाम प्राप्त नहीं किया जा सके)।

प्रक्रिया

Let संख्याओं की एक श्रृंखला। फिर, औपचारिक बिजली श्रृंखला(an)nN

A(z)=n=0anzn

है साधारण पैदा समारोह की ¹ । की श्रृंखला के विस्तार में गुणांक अनुक्रम के बराबर है, यानी । उदाहरण के लिए, प्रसिद्ध कैटलन संख्या का साधारण उत्पादक कार्य है(an)nNA(z)[zn]A(z)=an Cn

C(z)=114z2z

की परिभाषा एक पुनरावृत्ति को हल करने के लिए हमारी ansatz भी है। यह रैखिक पुनरावृत्ति के लिए सबसे अच्छा काम करता है, इसलिए सादगी के लिए फॉर्म की पुनरावृत्ति के लिए मान लेंA

a0=c0ak1=ck1an=f(n)+i=1kbiani,nk

कुछ निश्चित और जो सभी स्वतंत्र है । अब हम बस एंज़ैट में एंकर और पुनरावर्ती भाग को सम्मिलित करते हैं, अर्थात्b1,,bkRf(n):NNai

A(z)=n=0anzn=c0z0+c1z1++ck1zk1+n=k[f(n)+(i=1kbiani)]zn

योग हेरफेर, औपचारिक बिजली श्रृंखला के गुणों और ज्ञात पहचान के गुणों का उपयोग करके , अंतिम दाहिने हाथ की ओर को बंद रूपों में लाया जाना चाहिए, आमतौर पर संदर्भ में । परिणामस्वरूप समीकरण लिए (अक्सर) हल किया जा सकता है । परिणाम का श्रृंखला विस्तार (जिसे आसानी से प्राप्त किया जा सकता है, ज्ञात या अन्यथा स्वीकार्य) अनिवार्य रूप से समाधान है।A(z)A(z)

विल्फ की पुस्तक [3] और जीकेपी [4] में अच्छे परिचय मिल सकते हैं। उन्नत सामग्री फ्लैजलेट और सेडगविक [5] द्वारा एकत्र की गई है।

उदाहरण

विचार करें

a0=1a1=2an=5n+3an12an2,n>1

हम गणना करते हैं:

A(z)=n=0anzn=1+2z+n=2[3an12an2+5n]zn=1+2z+3n=2an1zn2n=2an2zn+5n=2nzn=1+2z+3zn=1anzn2z2n=0anzn+5n=2nzn=1+2z+3z(A(z)a0)2z2A(z)+5(z(1z)2z)=16z+(3z2z2)A(z)+5z(1z)2

यह करने के लिए हल करती है

A(z)=13z+13z26z3(12z)(1z)3=1612z51z5(1z)25(1z)3=16n=02nzn5n=0zn5n=0(n+1)zn5n=0(n+1)(n+2)2zn

अब हम अंत में पढ़ सकते हैं

an=162n55(n+1)52(n+1)(n+2)=2n+452n2252n15

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

यह भी ध्यान दें कि सामान्य तकनीकें भी काम करती हैं यदि मांगी गई वस्तुएं जटिल संख्याएं, या यहां तक ​​कि बहुपद हैं।

एक लघुपरिपथ

रैखिक और सजातीय पुनरावृत्ति के लिए, अर्थात इस तरह के रूप में

a0=c0ak1=ck1an=i=1kbiani,nk

इसके बाद के संस्करण बिल्कुल उसी तरह से गुजरता है, हर बार। प्रतीकात्मक रूप से गणना के ऊपर प्रदर्शन करने से, हम निम्नलिखित लेम्मा पाते हैं । चलो

zkb1zk1b2zk2bk

हो विशेषता polynomal (पुनरावृत्ति की)। इसके अलावा के साथ क्रमशः बहुपद कहा जाने वाला (जोड़ीदार विशिष्ट) शून्य । फिर, वांछित गुणांक द्वारा दिया जाता हैλ1,,λlri

an=i=1lj=1ribi,jnj1λin

अज्ञात । जैसा कि विशिष्ट बहुपद में डिग्री , बिल्कुल (जटिल) शून्य हैं, अर्थात राशि to । इसलिए, गायब गुणांक को (जैसे एंकर) के किसी भी के साथ सूत्र के ऊपर समीकरण द्वारा प्राप्त समीकरणों के साथ रैखिक समीकरण प्रणाली को हल करके निर्धारित किया जा सकता है ।bi,jkkrikkkan

Asymptotics

लिए एक बंद रूप में प्राप्त करना आमतौर पर आसान हिस्सा है। इसे जनरेटिंग फ़ंक्शंस में व्यक्त करना हमें पता है कि (जैसा कि हमने उदाहरण में किया था) के गुणांक जल्दी से कठिन हो जाते हैं, हालांकि। उदाहरण ऊपर से और प्रश्न में उल्लिखित डाइक शब्दों की संख्या के लिए एक है।A(z)C(z)

गुणांकों के लिए असममित दवाओं को प्राप्त करने के लिए, जटिल विश्लेषण मशीनरी, विशेष रूप से विलक्षणता विश्लेषण को नियोजित किया जा सकता है; buzzwords में Darboux की विधि और काठी-बिंदु विधि शामिल हैं। ये अवशेषों के प्रमेय और कॉची के अभिन्न सूत्र पर आधारित हैं । विवरण के लिए देखें [६]।


  1. आप इसी तरह की चीजों को घातीय , डिरिचलेट और कुछ अन्य उत्पन्न कार्यों के साथ कर सकते हैं । जो सबसे अच्छा काम करता है वह हाथ में अनुक्रम पर और विशेष रूप से इस बात पर निर्भर करता है कि क्या आपको आवश्यक बंद फॉर्म मिलते हैं।
  2. उदाहरण के लिए टीसीएस चीट शीट या [3] से।
  3. generatingfunctionology एच विल्फ़ द्वारा (1994, 2 एड।) - मुफ्त डाउनलोड के लिए उपलब्ध
  4. आरएल ग्राहम, डी। नुथ और ओ। पाटशनिक (1994, द्वितीय संस्करण) द्वारा ठोस गणित
  5. आर। सेडग्विक और पी। फ्लाजोलेट (2 संस्करण, 2013) द्वारा एल्गोरिदम के विश्लेषण का परिचय - उपलब्ध डाउनलोड के लिए
  6. पी। फ्लैजलेट और आर। सेडग्विक (2009) द्वारा एनालिटिक कॉम्बिनेटरिक्स - मुफ्त डाउनलोड के लिए उपलब्ध है

21

मास्टर प्रमेय

मास्टर प्रमेय तथाकथित के समाधान के लिए asymptotics देता विभाजन और जीत पुनरावृत्ति, कि इस तरह की है कि (बजाय दूर स्थिरांक काटने का) आनुपातिक मात्रा में अपने पैरामीटर विभाजित करते हैं। वे आम तौर पर तब होते हैं जब विश्लेषण (पुनरावर्ती) एल्गोरिदम को विभाजित और जीतते हैं, इसलिए नाम। प्रमेय लोकप्रिय है क्योंकि इसे लागू करना अक्सर अविश्वसनीय रूप से आसान होता है। दूसरी ओर, इसे केवल निम्नलिखित फॉर्म के पुनरावृत्ति पर लागू किया जा सकता है:

T(n)=aT(nb)+f(n)

साथ । तीन मामले हैंa1,b>1

  1. fO(nlogb(a)ε)

    कुछ ;ε>0

  2. fΘ(nlogbalogkn) ,

    कुछ ;k0

  3. fΩ(nlogb(a)+ε)

    कुछ और के लिएε>0

    af(nb)cf(n)

    कुछ और ।c<1n

जिसका मतलब है कि स्पर्शोन्मुख

  1. TΘ(nlogba) ,
  2. TΘ(nlogbalogk+1n) और
  3. TΘ(f) ,

क्रमशः। ध्यान दें कि आधार मामलों को यहां नहीं कहा गया है या उनका उपयोग नहीं किया गया है; यह समझ में आता है, यह देखते हुए कि हम केवल स्पर्शोन्मुख व्यवहार की जांच कर रहे हैं । हम चुपचाप मान लेते हैं कि वे कुछ स्थिरांक (वे और क्या हो सकता है। रहे हैं कौन सा स्थिरांक हम नहीं दिख रहा है अप्रासंगिक है, वे सब में गायब हो ।Θ

उदाहरण

  1. पुनरावृत्ति पर विचार करें

    T(n)=4T(n3)+n

    साथ और - ध्यान दें कि हम उस मामले एक को देखने के साथ लागू होता है । इसलिए, ।f(n)=n,a=4b=3logba1.26ε=0.25TΘ(nlog34)=Θ(n1.261)

  2. पुनरावृत्ति पर विचार करें

    T(n)=2T(n/2)+n

    साथ और - ध्यान दें कि हम चाहते हैं कि मामले में दो के साथ लागू होता है देखना । इसलिए, ।f(n)=n,a=2b=2logba=1k=0TΘ(nlogn)

  3. पुनरावृत्ति पर विचार करें

    T(n)=3T(n4)+n

    साथ और - ध्यान दें कि हम उस मामले में तीन को देखने के साथ लागू होता है और । इसलिए, ।f(n)=n,a=3b=4logba0.79ε=0.2c=1TΘ(n)

  4. पुनरावृत्ति पर विचार करें

    T(n)=16T(n4)+n!

    यहाँ हमारे पास , और- कई मानक उदाहरणों में बहुपद , लेकिन यह एक नियम नहीं है। हमारे पास , और केस तीन फिर से लागू होता है। इस उदाहरण में, हम रूप में किसी भी और चुन सकते हैं सभी के लिए । इसलिए ।a=16b=4f(n)=n!flogba=2εc>0n!Ω(nk)kTΘ(n!)

आगे की पढाई

  • यह अच्छी तरह से संभव है कि मास्टर प्रमेय के मामलों में से कोई भी लागू न हो। उदाहरण के लिए, उपप्रकारों में समान आकार नहीं हो सकता है या अधिक जटिल रूप हो सकता है। उदाहरण के लिए, अकरा-बाज़ी [1] या रौरा [2] के लिए मास्टर प्रमेय के कुछ विस्तार हैं । यहां तक ​​कि एक संस्करण भी है जो असतत पुनरावृत्ति के लिए काम करता है (यानी फर्श और छत पुनरावर्ती मापदंडों पर उपयोग किए जाते हैं) और तेज परिणाम प्रदान करते हैं [3]।

  • मास्टर प्रमेय लागू करने से पहले आमतौर पर, आपको वास्तविक पुनरावृत्ति संबंध की मालिश करनी होगी। सामान्य परिवर्तन जो कि एसिम्पटोटिक्स को संरक्षित करते हैं, जिसमें फर्श और छत छोड़ने के साथ-साथ । ध्यान रखें कि यहां चीजों को तोड़ना नहीं है; [४] धारा ४.६ और विवरण के लिए यह प्रश्न देखें।n=bk


  1. एम। अक्र्रा और एल। बज़ज़ी (1998) द्वारा रैखिक पुनरावृत्ति समीकरणों के समाधान पर
  2. एस। रौरा (1997) द्वारा विभाजित और विजय प्राप्त करने के लिए एक बेहतर मास्टर प्रमेय
    अन्य बेहतर मास्टर प्रमेयों को संदर्भित करता है।
  3. एम। ड्रामोटा और डब्लू। स्ज़पांकोव्स्की (2011) द्वारा फूट डालो और जीतो जीत के लिए एक मास्टर प्रमेय
  4. कॉर्मेन एट अल द्वारा एल्गोरिदम का परिचय । (2009, तीसरा संस्करण)

यह बेवकूफी भरा सवाल हो सकता है, लेकिन मैं अक्सर मानसिक मॉडल को धारण करने में विफल रहता हूं जब कोई बी के बराबर नहीं होता है, मुझे पता नहीं क्यों लेकिन अंतर्ज्ञान से मुझे हमेशा लगता है कि दोनों को हमेशा एक जैसा होना चाहिए, जैसे मर्जेसर्ट में हम समस्या को विभाजित करते हैं दो समान (लगभग) आधा और प्रत्येक के साथ n / 2 उदाहरण हैं। इसके अलावा अगर हम एल्गोरिथ्म को तीन समान भागों में विभाजित करते हैं तो इनपुट को भी तीन बराबर भागों में विभाजित किया जाना चाहिए जो फिर से एक और बी को बराबर बनाता है। मैं इस गलत अंतर्ज्ञान को कैसे तोड़ सकता हूं?
कोडियोगी

17

अनुमान और साबित करो

या मैं इसे कैसे कॉल करना पसंद करता हूं, " तकनीक"। इसे सभी प्रकार की पहचानों पर लागू किया जा सकता है। विचार सरल है:

समाधान का अनुमान लगाएं और इसकी शुद्धता साबित करें।

यह एक लोकप्रिय तरीका है, यकीनन क्योंकि इसमें आमतौर पर कुछ रचनात्मकता और / या अनुभव (दिखावा करने के लिए अच्छा) की आवश्यकता होती है, लेकिन कुछ मैकेनिक (सुरुचिपूर्ण दिखते हैं)। यहाँ की कला अच्छा, शिक्षित अनुमान लगाना है; प्रमाण (हमारे मामले में) आम तौर पर कम या ज्यादा सरल प्रेरण है।

जब पुनरावृत्ति के लिए आवेदन किया जाता है, तो "अनुमान लगाना" आम तौर पर होता है

  • पुनरावृत्ति का विस्तार एक दो बार,
  • लंगर का पता लगाना और
  • मध्यवर्ती ( ) के लिए पैटर्न का अनुमान

सरल उदाहरण

s0=s1=s2=1sn=5sn3+6n2

आइए हम कुछ बार की परिभाषा का विस्तार करें :sn

sn=5sn3+6=5(5sn6+6)+6=5(5(5sn9+6)+6)+6 =5(5(5(51n÷3 times+6)+6)+6)+6n÷3 times

यहां, पैटर्न को स्पॉट करना आसान है और यह हमें दावे की ओर ले जाता है:

sn=5n3+6i=0n315i=525n364

अब हम इंडक्शन द्वारा पहचान साबित करते हैं। के लिए , हम संबंधित मान में एक प्लग इन करके शुद्धता स्थापित कर सकते हैं। मान लिया गया कि पहचान सभी लिए है एक मनमाना लेकिन निश्चित , हम गणना करते हैंn{0,1,2}nnn3

sn+3=5sn+6=5(525n364)+6=525n3+164=525n+3364

जो प्रेरण की शक्ति द्वारा पहचान को प्रमाणित करता है।

यदि आप अधिक सम्मिलित पुनरावृत्ति पर इसका उपयोग करने का प्रयास करते हैं, तो आप जल्दी से इस विधि के प्रमुख नुकसान का सामना करते हैं: पैटर्न को देखना कठिन हो सकता है , या इसे एक अच्छे बंद रूप में संघनित कर सकता है।

Asymptotics

यह भी asymptotics के लिए इस विधि का उपयोग करना संभव है। हालांकि, अवगत रहें, कि आपको लैंडौ प्रतीकों के लिए स्थिरांक का अनुमान लगाना होगा क्योंकि एक ऐसा स्थिरांक होता है जो सभी लिए बाध्यता स्थापित करता है , अर्थात प्रेरण के दौरान निरंतर कारक नहीं बदल सकता है।n

उदाहरण के लिए, ¹ के मामले के लिए सरलीकृत मर्ज़ोर्ट रनटाइम पुनरावृत्तिn=2k

T(1)=T(0)=0T(n)=2T(n/2)+n1n1

हम अनुमान लगाते हैं कि निरंतर , वह । हम पर प्रेरण द्वारा इसे साबित करते हैं ; आगमनात्मक कदम इस तरह दिखता है:T(n)O(nlogn)c=1T(n)nlognk

T(n)=2T(n/2)+n12n2logn2+n1=nlognnlog2+n1<nlogn


  1. भीलों के गैर-घटते क्रमों के लिए, प्रत्येक अनंत बाद के मूल अनुक्रम के समान ही विषम विकास होता है।

15

एकरा-बाज़ी पद्धति

Akra-Bazzi विधि : फार्म की पुनरावृत्ति के लिए asymptotics देता है यह सामान्य विभाजन और जीत की पुनरावृत्ति को कवर करता है, लेकिन ऐसे मामले भी जिनमें विभाजन असमान है। "ठगना" शब्द उन विभाजनों को पूरा कर सकता है जो सटीक रूप से बाहर नहीं आते हैं, उदाहरण के लिए। प्रयोज्यता की शर्तें हैं:

T(x)=1ikaiT(bix+hi(x))+g(x)for xx0
hi(x)
  • पुनरावृत्ति होने के लिए पर्याप्त आधार मामले हैं
  • और सभी स्थिरांक हैंaibi
  • सभी के लिए ,iai>0
  • सभी ,i0<bi<1
  • |g(x)|=O(xc) कुछ स्थिर के लिएcx
  • सभी के लिए ,i|hi(x)|=O(x/(logx)2)
  • x0 एक स्थिर है

ध्यान दें कि , और sawtooth फ़ंक्शन के रूप में हमेशा 0 और 1 के बीच होता है, जो प्रतिस्थापित करता है। (या as ) पर शर्तों को पूरा ।bix=bix{bix}{u}=uubixbixhi

ऐसा ज्ञात करें : तब का स्पर्शोन्मुख व्यवहार, जैसा कि द्वारा दिया गया है: साथ "बड़ा पर्याप्त", यानी वहाँ है ताकि सभी ।p

1ikaibip=1
T(x)x
T(x)=Θ(xp(1+x1xg(u)up+1du))
x1k1>0
(2)g(x/2)k1g(x)
x>x1

उदाहरण ए

उदाहरण के लिए, लिए पुनरावर्तन लें , जहां : शर्तों से संतुष्ट हैं, हमें : जैसा कि भाग्य में होगा, । इस प्रकार हमारे पास है: n5T(0)=T(1)=T(2)=T(3)=T(4)=17

T(n)=9T(n/5)+T(4n/5)+3nlogn
p
9(15)p+(45)p=1
p=2
T(n)=Θ(n2(1+3n3uloguu3du))=Θ(n2)

चूँकि हम सभी लिए पूरा करते हैं । ध्यान दें कि क्योंकि अभिन्न अभिन्न रूप से हम अन्य स्थिरांक का उपयोग करते हैं, जैसे कि , कम बाउंड के रूप में, साथ ही साथ उन का उपयोग करना कानूनी है; अंतर में गायब हो जाता है ।k112(1log2log3)(2)x31Θ

उदाहरण बी

एक और उदाहरण लिए निम्नलिखित है : हमारे पास , जाँच करें। हमारे पास एक एकल , , जो जांच करता है। यह मानते हुए कि वास्तव में और / या , निहित भी देखें। तो हमें इसकी आवश्यकता है: इस प्रकार , और: n2

T(n)=4T(n/2)+n2/lgn
g(n)=n2/lnn=O(n2)a1=4b1=1/2n/2n/2n/2hi(n)
a1b1p=4(1/2)p=1
p=2
T(n)=Θ(n2(1+2nu2duu3lnu))=Θ(n2(1+2nduulnu))=Θ(n2lnlnn)
हम ऊपर के समान ट्रिक लागू करते हैं। अभिन्न का निचला भाग, केवल हम उपयोग करते हैं क्योंकि अभिन्न लिए अभिसरण नहीं करता है ।21

( बीजगणित के साथ मैक्सिमा की मदद कृतज्ञतापूर्वक स्वीकार की जाती है)


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

1
इसके अलावा, मूल पेपर साथ संस्करण नहीं देता है ; क्या यह लीटन की पांडुलिपि से लिया गया है? क्या आपके पास उसके लिए सहकर्मी-समीक्षा का संदर्भ है? क्या हमें अकरा और बज्जी द्वारा 1998 के पेपर में दिए गए संस्करण पर जाना चाहिए? hi
राफेल

1
मुझे लगता है कि प्रमेय में एक असंगति प्रतीत होती है । शायद आपको जवाब पता हो?
राफेल

11

summations

अक्सर एक जहां मोनोटोन है फॉर्म की पुनरावृत्ति का सामना करता है। इस स्थिति में, हम और इसलिए का अनुमान लगाने के लिए एक प्रारंभिक मूल्य दिया गया है। हमें योग का अनुमान लगाने की आवश्यकता है ।

T(n)=T(n1)+f(n),
f(n)
T(n)=T(c)+m=c+1nf(m),
T(c)T(n)f(c+1)++f(m)

गैर-घटतीf(n)

जब मोनोटोन कम हो रहा है, हमारे पास स्पष्ट सीमाएं ये सीमाएं इस अर्थ में सर्वोत्तम हैं कि वे कुछ कार्यों के लिए तंग हैं: निरंतर कार्यों के लिए ऊपरी बाउंड, और चरण कार्यों के लिए निचली बाउंड ( लिए और के लिए ।) हालांकि, कई मामलों में ये अनुमान बहुत मददगार नहीं हैं। उदाहरण के लिए, जब , निचला बाउंड और ऊपरी बाउंड , तो वे काफी अलग हैं।f(n)

f(n)m=c+1nf(m)(nc)f(n).
f(m)=1mnf(m)=0m<nf(m)=mn(nc)n

एकीकरण

एकीकरण द्वारा एक बेहतर अनुमान दिया गया है: के लिए , इस निचले क्रम के शब्दों के लिए राशि की सही मान देता है: जब हम योग की गणना स्पष्ट रूप से कर सकते हैं, लेकिन कई मामलों में स्पष्ट गणना कठिन है। उदाहरण के लिए, जब , का विरोधी , और इसलिए

cnf(x)dxm=c+1nf(m)c+1n+1f(x)dx.
f(m)=m
12n212c2m=c+1nm12(n+1)212(c+1)2.
f(m)=mf(m)=mlogmf(1/2)x2logx(1/4)x2
m=c+1nmlogm=12n2logn±Θ(n2).

यूलर-मक्लौरिन सूत्र बेहतर अनुमान देता है। इस सूत्र का उपयोग किया जा सकता है, उदाहरण के लिए, स्टर्लिंग के फार्मूले के मजबूत रूपों को साबित करने के लिए, योग अनुमान लगाकर ।logn!=m=1nlogm

गैर-बढ़तीf(n)

कुछ मामलों में, मोनोटोन गैर-बढ़ती है। तुच्छ अनुमान और अभिन्न अनुमान उदाहरण के लिए, , का उपयोग करके हम f(n)

f(1)m=c+1nf(m)(nc)f(1),
c+1n+1f(x)dxm=c+1nf(m)cnf(x)dx.
f(m)=1/mf(m)=logm
m=c+1n1m=logn±Θ(1).

यह उत्तर पुनरावृत्ति को हल करने के बजाय कम होता है, लेकिन अनुमान लगाने के योगों के साथ (जो उपयोगी समाधान पुनरावृत्ति हो सकता है); तकनीक रिमान sums की दोहरी है । यह निरंतर लिए अन्य रूपों जैसे के साथ भी काम करना चाहिए ? T(nd)d
राफेल

राइट, को भी इस तरह हल किया जा सकता है। T(n)=cT(nd)+f(n)
युवल फिल्मस

9

Sedgewick और Flajolet ने एनालिटिकल कॉम्बिनेटरिक्स में व्यापक काम किया है , जो पुनरावृत्ति को उत्पन्न करने वाले कार्यों और जटिल विश्लेषण के संयोजन का उपयोग करके हल किया जा सकता है। उनका काम कई पुनरावृत्तियों को स्वचालित रूप से हल करने की अनुमति देता है, और कुछ कंप्यूटर बीजगणित प्रणालियों में लागू किया गया है।

विषय पर यह पाठ्यपुस्तक फ्लैजलेट और सेडगविक द्वारा लिखी गई थी और यह एक उत्कृष्ट संदर्भ है। एल्गोरिदम विश्लेषण के अनुप्रयोगों की दिशा में एक सरल सरल प्रदर्शनी, सेडगेविक और फ्लाजोलेट का यह पाठ है।

उम्मीद है की यह मदद करेगा!


4
यह एक अच्छा संदर्भ है, लेकिन हम एक सुलभ तरीके से तरीकों को इकट्ठा करना चाहते हैं। क्या आप एक विशेष विधि को विस्तार से प्रस्तुत कर सकते हैं?
राफेल

9

ऐसा समय हो सकता है जब आप इस तरह की एक अजीब पुनरावृत्ति पर आते हैं: यदि आप मेरे जैसे हैं, तो आपको एहसास होगा कि आप मास्टर प्रमेय का उपयोग नहीं कर सकते हैं और फिर आप सोच सकते हैं, " हम्म् ... शायद एक पुनरावृत्ति पेड़ विश्लेषण काम कर सकता है। " तब आपको एहसास होगा कि पेड़ को वास्तव में तेजी से सकल मिलना शुरू हो जाता है। इंटरनेट पर कुछ सर्च करने के बाद आप देखें कि अक्र्रा-बाज़ी विधि काम करेगी! तब आप वास्तव में इसे देखना शुरू करते हैं और महसूस करते हैं कि आप वास्तव में सभी गणित नहीं करना चाहते हैं। यदि आप इस बिंदु तक मेरे जैसे हैं, तो आप यह जानने के लिए उत्साहित होंगे कि वहाँ एक आसान तरीका है।

T(n)={cn<72T(n5)+4T(n7)+cnn7


असमान स्प्लिट प्रमेय भाग 1

चलो और सकारात्मक स्थिरांक हैं।ck

तो फिर सकारात्मक स्थिरांक जैसे कि ।{a1,a2,,ak}1kai<1

हमारे पास फॉर्म की पुनरावृत्ति भी होनी चाहिए (जैसे हमारे ऊपर का उदाहरण):

T(n)c0<n<max{a11,a21,,ak1}T(n)cn+T(a1n)+T(a2n)+T(akn)nmax{a11,a21,,ak1}

दावा

तब मैं दावा करता हूं कि जहां एक स्थिरांक है (उदाहरण के तौर पर रैखिक) और:T(n)bnb

b=c1(1kai)

इंडक्शन द्वारा प्रमाण

आधार :n<max{a11,a21,,ak1}T(n)c<b<bn

इंडक्शन : किसी भी लिए सही मानें , तो हमारे पास हैn<n

T(n)cn+T(a1n)+T(a2n)++T(akn)cn+ba1n+ba2n++bakncn+ba1n+ba2n++bakn=cn+bn1kai=cncn1kai1(1kai)+cn1kai1(1kai)=cn1(1kai)=bn

तब हमारे पास ।T(n)bnT(n)=O(n)

उदाहरण

T(n)={cn<72T(n5)+4T(n7)+cnn7
हम पहले पुनरावर्ती कॉल योग के अंदर गुणांक को एक से कम करने के लिए सत्यापित करते हैं:
1>1kai=15+15+17+17+17+17=25+47=3435

हम अगला पुष्टि करते हैं कि आधार मामला गुणांकों के व्युत्क्रम के अधिकतम से कम है:

n<max{a11,a21,,ak1}=max{5,5,7,7,7,7}=7

इन शर्तों को पूरा करने के साथ, हम जानते हैं कि जहाँ एक बराबर है: इसलिए हमारे पास: T(n)bnb

b=c1(1kai)=c13435=35c
T(n)35cnT(n)cnT(n)=Θ(n)


असमान स्प्लिट प्रमेय भाग 2

इसी तरह जब हम लिए बाध्य होते हैं, तो हम उन्हें प्रमाणित कर सकते हैं । प्रमाण एक ही प्रारूप का बहुत पालन करेगा:1k=1

आज्ञा देना और सकारात्मक स्थिरांक हैं जैसे कि ।ckk>1

फिर को सकारात्मक स्थिरांक जैसे कि ।{a1,a2,,ak}1kai=1

हमारे पास फॉर्म की पुनरावृत्ति भी होनी चाहिए (जैसे हमारे ऊपर का उदाहरण):

T(n)c0<n<max{a11,a21,,ak1}T(n)cn+T(a1n)+T(a2n)+T(akn)nmax{a11,a21,,ak1}

दावा

तब मैं दावा करता हूं कि (हम बेस चुनते हैं क्योंकि रिकर्सन ट्री का ब्रांचिंग फैक्टर होगा) जहां और स्थिरांक होते हैं (उदाहरण के लिए asptptotically linearithmic) ) ऐसा है कि:T(n)αnlogkn+βnlogkkαβ

β=c
और
α=c1kailogkai1

इंडक्शन द्वारा प्रमाण

आधार :n<max{a11,a21,,ak1}T(n)c=β<αnlogkn+βn

इंडक्शन : किसी भी लिए सही मानें , तो हमारे पास हैn<n

T(n)cn+T(a1n)+T(a2n)++T(akn)cn+1k(αainlogkain+βain)=cn+αn1k(ailogkain)+βn1kai=cn+αn1k(ailogknai1)+βn=cn+αn1k(ai(logknlogkai1))+βn=cn+αn1kailogknαn1kailogkai1+βn=αn1kailogkn+βn=αnlogkn+βn

तो फिर हमारे पास ।T(n)αnlogkn+βnT(n)=O(nlogn)

उदाहरण

चलिए उस पिछले उदाहरण को संशोधित करते हैं जिसे हमने केवल एक छोटा सा प्रयोग किया है:

T(n)={cn<352T(n5)+4T(n7)+T(n35)+cnn35

हम पहले एक के लिए पुनरावर्ती कॉल के अंदर गुणांक को सत्यापित करते हैं:

1=1kai=15+15+17+17+17+17+135=25+47+135=3535

हम अगला पुष्टि करते हैं कि आधार मामला गुणांकों के व्युत्क्रम के अधिकतम से कम है:

n<max{a11,a21,,ak1}=max{5,5,7,7,7,7,35}=35

इन शर्तों को पूरा करने के साथ, हम जानते हैं कि जहां और एक स्थिर बराबर है: इसलिए हमारे पास: T(n)αnlogn+βnβ=cα

b=c1kailogkai1=c2log755+4log777+log735351.048c
T(n)1.048cnlog7n+cnT(n)=O(nlogn)


6

इस पोस्ट को फिर से जाँचने के बाद, मुझे आश्चर्य है कि यह अभी तक यहाँ पर नहीं है।

डोमेन परिवर्तन / चर का परिवर्तन

आवर्ती के साथ काम करते समय यह कभी-कभी आपके डोमेन को बदलने में सक्षम होने के लिए उपयोगी होता है यदि यह स्पष्ट नहीं है कि पुनरावृत्ति स्टैक कितना गहरा जाएगा।

उदाहरण के लिए, निम्न पुनरावृत्ति लें:

T(n)=T(22loglogn)+logloglogn

हम इसे कैसे हल कर सकते हैं? हम श्रृंखला का विस्तार कर सकते हैं, लेकिन मैं वादा करता हूं कि यह वास्तव में तेज होगा। इसके बजाय, आइए विचार करें कि प्रत्येक कॉल के साथ हमारा इनपुट कैसे बदलता है।

हमारे पास पहले है:

  1. n , तब
  2. 22loglogn , फिर
  3. 22loglog(22loglogn) , और इतने पर।

एक डोमेन परिवर्तन का लक्ष्य अब हमारी पुनरावृत्ति को समतुल्य में बदलना होगा, जैसे कि उपरोक्त बदलावों के बजाय, हमारे पास ।S(k)k,k1,k2,

उदाहरण के लिए, यदि हम , तो यह वही है जो हम अपने उपरोक्त पुनरावृत्ति के लिए प्राप्त करते हैं: तब हम इसे फिर से लिख सकते हैं: फिर आपको बस इतना करना है कि वापस बदलना है : n=2222k

T(2222k)=T(22loglog2222k)+logloglog(2222k)=T(2222k1)+2k
T(k)=T(k1)+2k=i=1k2k=2k+11
kn
T(n)=2(loglogloglogn)+11=O(logloglogn)


इस उदाहरण के साथ, अब हम अपना लक्ष्य देख सकते हैं।

मान लें कि कुछ स्थिरांक के लिए और फ़ंक्शंस और ।

T(n)={h(1)n=1aT(f(n))+h(n)otherwise
af(n)h(n)

अब हम कुछ फंक्शन और को खोजने की कोशिश कर रहे हैं, जैसे कि g(k)=nf(g(k))=g(k1)

T(g(k))=aT(f(g(k)))+h(g(k))=aT(g(k1))+h(g(k))

आम तौर पर, हम चाहते हैं कि जहां , बार पर का दोहराया आवेदन है । (उदाहरण )। यह को "पुनरावृत्ति" फ़ंक्शन के रूप में कार्य करने की अनुमति देगा । कहाँ, गहराई में प्रत्यावर्तन की, काम बस है।f(i)(n)=g(ki)f(i)(n)fnif(2)(n)=f(f(n))g(k)ih(g(ki))

फिर हम इसे आसानी से परिवर्तित कर सकते हैं ताकि तब हमें केवल चिंता करना होगा संक्षेप सभी के लिए किसी दिए गए आधार मामले पर निर्भर है। अर्थात, S(k)=T(g(k))

S(k)=aS(k1)+h(g(k))
h(g(k))k
S(k)=i=g1(1)kakih(g(i))

यदि हम कुछ बंद फॉर्म फ़ंक्शन के लिए निर्धारित कर सकते हैं, तो हम को रूप में निर्धारित कर सकते हैं।S(k)=γ(k)γT(n)

T(n)=γ(g1(n))

फिर हम इसका उपयोग ऊपर दिए गए अन्य तरीकों में से एक के माध्यम से पर एक बाध्यता प्राप्त करने के लिए करते हैं। आप स्पष्ट रूप से इस विधि को अपने विनिर्देश में थोड़ा संशोधित कर सकते हैं, लेकिन सामान्य तौर पर आप को एक साधारण पुनरावृत्ति में बदलने के लिए एक पुनरावृत्ति फ़ंक्शन खोजने की कोशिश कर रहे हैं ।T(n)g(k)T(n)

मैं इस बिंदु पर निर्धारित करने के एक सटीक तरीके के बारे में नहीं जानता , लेकिन मैं इसके बारे में सोचता रहूंगा और अगर यह स्पष्ट हो जाता है (या यदि किसी टिप्पणीकार के पास कुछ सुझाव हैं तो अद्यतन करें!)। मैंने ज्यादातर अपने कार्यों को अतीत में परीक्षण और त्रुटि के माध्यम से पाया है उदाहरण के लिए यहां , यहां , यहां , और यहां देखें )।g(k)g(k)


1
क्या , , और / या पर कोई प्रतिबंध है ? मैं विशेष रूप से पूछ रहा हूँ क्योंकि इसी तरह के लोकगीत प्रतिस्थापन ट्रिक कभी-कभी तब विफल हो जाते हैं जब लैंडौ संकेतन शामिल होता है, जो मुझे चिंतित करता है अगर यह वास्तव में हमेशा सही उत्तर होता है। fghγg1
राफेल

@ राफेल, यह वह हिस्सा है जिसके बारे में मुझे पूरी तरह से यकीन नहीं है। कुछ चीजें हैं जो मुझे लगता है कि हमें समता स्थापित करने के लिए सुनिश्चित करने की आवश्यकता है। 1) पुनरावृत्ति की गहराई समान है, यह और द्वारा सुनिश्चित किया जा सकता है । 2) पुनरावृत्ति के प्रत्येक स्तर पर किया गया कार्य वही है, जो मेरा मानना ​​है कि और फिर द्वारा लागू किया गया है । इसका मूल विचार केवल को एक योग में बदलने का है, जिसका नाम है । रूपांतरण से मैं भी 100% निश्चित नहीं हूं (मेरे पास कोई प्रमाण नहीं है), लेकिन मैं यह नहीं देख सकता कि यह क्यों होगा गलत। विचार? f(g(k))=g(k1)g(k)=ng(k)=nh(g(k))=h(n)T(n)i=ckh(g(i))γ(k)γ(g1(n))
रयान

@ रिपेल आप उस मामले पर भी विचार कर सकते हैं, जहां बजाय , फिर कनवर्ट करना अधिक सीधा होना चाहिए आगे। यह साबित करना आसान है कि क्या आपको लगता है कि आप सिर्फ समन में समानता दिखाते हैं। आप शायद लांडौ संकेतन के साथ कुछ मज़ेदार मुसीबत में भागेंगे, लेकिन अगर आपने लांडौ को इसमें से छोड़ दिया और केवल सटीक समानता के साथ अटक गए, तो मुझे लगता है कि यह ठीक होना चाहिए। S(k)=γ(k)ΘT(n)=γ(g1(n))
राणे

@ राफेल मैंने इसे केवल समानता का उपयोग करने के लिए संपादित किया है, इसलिए लैंडौ संकेतन को इसे गड़बड़ नहीं करना चाहिए। साथ ही थोड़ा और सामान्य किया। जो तुम भी एक समारोह का उपयोग करने के थोड़ा और सामान्यीकरण कर सकता निरंतर के बजाय । फिर योग में बजाय , बस का एक आवेदन है । β(n)aakiβ(g(i))
राणे

5

एक और दृष्टिकोण है जो सरल पुनरावृत्ति संबंधों के लिए काम करता है: आपके लिए पुनरावृत्ति को हल करने के लिए वुल्फराम अल्फा से पूछें ।

उदाहरण के लिए, f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2)वुल्फराम अल्फा में टाइप करने की कोशिश करें । आपको फाइबोनैचि संख्याओं के लिंक के साथ एक समाधान मिलेगा। या फिर कोशिश f(1)=1, f(n)=f(n-1)+nया f(1)=1, f(n)=2*f(n-1)+3*nया f(n)=f(n-1) + 2 f(n-2), f(1)=1, f(2)=3अन्य उदाहरण के लिए। हालांकि, चेतावनी दी जा सकती है: वोल्फ्राम अल्फा कुछ बहुत ही सरल पुनरावृत्ति को हल कर सकता है, लेकिन यह अधिक जटिल लोगों के लिए अलग हो जाता है।

यह दृष्टिकोण किसी भी सोच की आवश्यकता को टालता है, जिसे बग या फीचर के रूप में देखा जा सकता है।


3
मैं है कि इस साइट का उद्देश्य समझाने के लिए किया जाएगा लगता है कि कैसे कंप्यूटर बीजगणित अपने अंधा प्रयोग की वकालत करने के लिए नहीं इस तरह काम करता है,। लेकिन उपकरण उपयोगी होते हैं, इसलिए वास्तव में उपयोगी होते हैं कि किसी को हमेशा "बर्बाद" समय ("अभ्यास") से पहले उन्हें आज़माना चाहिए।
राफेल

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

5

मास्टर प्रमेय के केस 2, जैसा कि आमतौर पर कहा गया है, केवल फॉर्म का पुनरावृत्ति संभालता है जिसमें के लिए । निम्नलिखित प्रमेय, एक से लिया हैंडआउट जेफरी लियोन की, नकारात्मक के लिए इस सवाल का जवाब देता है :T(n)=aT(n/b)+f(n)f(n)=Θ(nlogablogkn)k0k

एक उचित आधार मामले के साथ पुनरावृत्ति करें।T(n)=aT(n/b)+f(n)

  1. यदि तो लिए ।f(n)=O(nlogbalogc1n)c<0T(n)=Θ(nlogba)

  2. अगर लिए तो ।f(n)=Θ(nlogbalogc1n)c=0T(n)=Θ(nlogbaloglogn)

  3. अगर लिए तो )।f(n)=Θ(nlogbalogc1n)c>0T(n)=Θ(nlogbalogcn

सबूत दोहराया प्रतिस्थापन की विधि का उपयोग करता है, जैसा कि हम अब स्केच करते हैं। मान लीजिए कि और । फिर की शक्ति के लिए , अब हम एक-एक करके मामलों पर विचार करते हैं। जब , श्रृंखला धर्मान्तरित, और इसलिए । जब , योग हार्मोनिक योग , और इसी तरहf(n)=nlogbalogbc1nT(1)=0nb

T(n)=i=0logbn1ai(nbi)logbalogbc1(nbi)=i=0logbn1nlogba(logbni)c1=nlogbaj=1logbnjc1.
c<0j=0jc1T(n)=Θ(nlogba)c=0Hlogbn=log(logbn)+O(1)T(n)=Θ(nlogbaloglogn) । जब , हम एक अभिन्न का उपयोग कर राशि का अनुमान लगा सकते हैं: और इसलिए ।c>0
j=1logbn0logbnxc1dx=xcc|0logbn=logbcnc,
T(n)=Θ(nlogbalogcn)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.