मास्टर प्रमेय (एल्गोरिदम का विश्लेषण): Difference between revisions
No edit summary |
No edit summary |
||
Line 15: | Line 15: | ||
Call procedure p recursively on each subproblem | Call procedure p recursively on each subproblem | ||
Combine the results from the subproblems | Combine the results from the subproblems | ||
</syntaxhighlight>[[File:Recursive_problem_solving.svg|thumb|right|359x359px|समाधान ट्री।]]उपरोक्त | </syntaxhighlight>[[File:Recursive_problem_solving.svg|thumb|right|359x359px|समाधान ट्री।]]उपरोक्त कलन विधि समस्या को पुनरावर्ती रूप से कई उप-समस्याओं में विभाजित करता है, प्रत्येक उप-समस्या आकार {{math|''n''/''b''}} की होती है. इसके समाधान के पेड़ में प्रत्येक पुनरावर्ती कॉल के लिए एक नोड होता है, उस नोड के बच्चे उस कॉल से किए गए अन्य कॉल होते हैं। पेड़ की पत्तियां पुनरावर्तन के आधार मामले हैं, उप-समस्याएं (के से कम आकार की) जो पुनरावर्तन नहीं करती हैं। उपरोक्त उदाहरण होगा {{mvar|a}} प्रत्येक गैर-पत्ती नोड पर चाइल्ड नोड। प्रत्येक नोड काम की मात्रा करता है जो उप-समस्या {{mvar|n}} के आकार के अनुरूप होता है पुनरावर्ती कॉल के उस उदाहरण को पास किया गया और इसके <math>f(n)</math> द्वारा दिया गया . संपूर्ण एल्गोरिथम द्वारा किए गए कार्य की कुल राशि ट्री में सभी नोड्स द्वारा किए गए कार्य का योग है। | ||
एल्गोरिथम का रनटाइम जैसे आकार 'n' के इनपुट पर ऊपर 'p', आमतौर पर <math>T(n)</math> द्वारा निरूपित किया जाता है, पुनरावृत्ति संबंध द्वारा व्यक्त किया जा सकता है | एल्गोरिथम का रनटाइम जैसे आकार 'n' के इनपुट पर ऊपर 'p', आमतौर पर <math>T(n)</math> द्वारा निरूपित किया जाता है, पुनरावृत्ति संबंध द्वारा व्यक्त किया जा सकता है | ||
Line 27: | Line 27: | ||
== सामान्य रूप == | == सामान्य रूप == | ||
मास्टर प्रमेय हमेशा विभाजित और जीत एल्गोरिदम से पुनरावृत्ति के लिए असम्बद्ध रूप से तंग सीमा उत्पन्न करता है जो इनपुट को समान आकार के छोटे उप-समस्याओं में विभाजित करता है, उप-समस्याओं को पुनरावर्ती रूप से हल करता है, और फिर मूल समस्या का समाधान देने के लिए उप-समस्या समाधानों को जोड़ता है। इस तरह के | मास्टर प्रमेय हमेशा विभाजित और जीत एल्गोरिदम से पुनरावृत्ति के लिए असम्बद्ध रूप से तंग सीमा उत्पन्न करता है जो इनपुट को समान आकार के छोटे उप-समस्याओं में विभाजित करता है, उप-समस्याओं को पुनरावर्ती रूप से हल करता है, और फिर मूल समस्या का समाधान देने के लिए उप-समस्या समाधानों को जोड़ता है। इस तरह के कलन विधि के लिए समय उस कार्य को जोड़कर व्यक्त किया जा सकता है जो वे अपने पुनरावर्तन के शीर्ष स्तर पर (समस्याओं को उप-समस्याओं में विभाजित करने के लिए और फिर उप-समस्याओं के समाधानों को संयोजित करने के लिए) एक साथ कलन विधि के पुनरावर्ती कॉल में किए गए समय के साथ करते हैं। अगर <math>T(n)</math> आकार के इनपुट पर कलन विधि के लिए कुल समय <math>n</math> को दर्शाता है, और <math>f(n)</math> पुनरावृत्ति के शीर्ष स्तर पर लगने वाले समय की मात्रा को दर्शाता है तो समय को पुनरावृत्ति संबंध द्वारा व्यक्त किया जा सकता है जो रूप लेता है: | ||
:<math>T(n) = a \; T\!\left(\frac{n}{b}\right) + f(n)</math> | :<math>T(n) = a \; T\!\left(\frac{n}{b}\right) + f(n)</math> | ||
यहाँ <math>n</math> एक इनपुट समस्या का आकार है, <math>a</math> पुनरावर्तन में उपसमस्याओं की संख्या है, और <math>b</math> वह कारक है जिसके द्वारा प्रत्येक पुनरावर्ती कॉल (b> 1) में उप-समस्या का आकार कम हो जाता है। महत्वपूर्ण रूप से, <math>a</math> और <math>b</math> पर <math>n</math> निर्भर नहीं होना चाहिए. नीचे दिया गया प्रमेय यह भी मानता है कि, पुनरावृत्ति के आधार मामले के रूप में, <math>T(n)=\Theta(1)</math> तब <math>n</math> किसी <math>\kappa > 0</math> सीमा से कम है, सबसे छोटा इनपुट आकार जो पुनरावर्ती कॉल की ओर ले जाएगा। | यहाँ <math>n</math> एक इनपुट समस्या का आकार है, <math>a</math> पुनरावर्तन में उपसमस्याओं की संख्या है, और <math>b</math> वह कारक है जिसके द्वारा प्रत्येक पुनरावर्ती कॉल (b> 1) में उप-समस्या का आकार कम हो जाता है। महत्वपूर्ण रूप से, <math>a</math> और <math>b</math> पर <math>n</math> निर्भर नहीं होना चाहिए. नीचे दिया गया प्रमेय यह भी मानता है कि, पुनरावृत्ति के आधार मामले के रूप में, <math>T(n)=\Theta(1)</math> तब <math>n</math> किसी <math>\kappa > 0</math> सीमा से कम है, सबसे छोटा इनपुट आकार जो पुनरावर्ती कॉल की ओर ले जाएगा। | ||
Line 96: | Line 96: | ||
|} | |} | ||
स्थिति 2 का एक उपयोगी विस्तार सभी मानो <math>k</math> को संभालता है:<ref name="Yap"> | |||
Chee Yap, A real elementary approach to the master recurrence and generalizations, Proceedings of the 8th annual conference on Theory and applications of models of computation (TAMC'11), pages 14–26, 2011. [https://web.archive.org/web/20180428180729/https://pdfs.semanticscholar.org/5273/51a915d7f34f8965c74ecf422e70cd410b52.pdf Online copy.] | Chee Yap, A real elementary approach to the master recurrence and generalizations, Proceedings of the 8th annual conference on Theory and applications of models of computation (TAMC'11), pages 14–26, 2011. [https://web.archive.org/web/20180428180729/https://pdfs.semanticscholar.org/5273/51a915d7f34f8965c74ecf422e70cd410b52.pdf Online copy.] | ||
</ref> | </ref> | ||
Line 116: | Line 116: | ||
(बाध्य बंटवारे की अवधि है, जहां लॉग को एक शक्ति द्वारा संवर्धित किया जाता है।) | (बाध्य बंटवारे की अवधि है, जहां लॉग को एक शक्ति द्वारा संवर्धित किया जाता है।) | ||
| यदि <math>b=a^2</math> और <math>f(n) = \Theta(n^{1/2}/\log^{1/2} n)</math>, | | यदि <math>b=a^2</math> और <math>f(n) = \Theta(n^{1/2}/\log^{1/2} n)</math>, तब <math>T(n) = \Theta(n^{1/2} \log^{1/2} n)</math>. | ||
|- | |- | ||
Line 127: | Line 127: | ||
(बाध्य बंटवारे की अवधि है, जहां लॉग व्युत्क्रम को पुनरावृत्त log द्वारा प्रतिस्थापित किया जाता है।) | (बाध्य बंटवारे की अवधि है, जहां लॉग व्युत्क्रम को पुनरावृत्त log द्वारा प्रतिस्थापित किया जाता है।) | ||
| यदि <math>b=a^2</math> और <math>f(n) = \Theta(n^{1/2}/\log n)</math>, | | यदि <math>b=a^2</math> और <math>f(n) = \Theta(n^{1/2}/\log n)</math>, तब <math>T(n) = \Theta(n^{1/2} \log \log n)</math>. | ||
|- | |- | ||
Line 138: | Line 138: | ||
(बाध्य बंटवारे की अवधि है, जहां log गायब हो जाता है।) | (बाध्य बंटवारे की अवधि है, जहां log गायब हो जाता है।) | ||
| यदि <math>b=a^2</math> और <math>f(n) = \Theta(n^{1/2}/\log^2 n)</math>, | | यदि <math>b=a^2</math> और <math>f(n) = \Theta(n^{1/2}/\log^2 n)</math>, तब <math>T(n) = \Theta(n^{1/2})</math>. | ||
|} | |} | ||
Line 151: | Line 151: | ||
:<math>a = 8, \, b = 2, \, f(n) = 1000n^2</math>, इसलिए | :<math>a = 8, \, b = 2, \, f(n) = 1000n^2</math>, इसलिए | ||
:<math>f(n) = O\left(n^c\right)</math>, जहाँ <math>c = 2</math> | :<math>f(n) = O\left(n^c\right)</math>, जहाँ <math>c = 2</math> | ||
अगला, हम देखते हैं कि क्या हम | अगला, हम देखते हैं कि क्या हम स्थिति 1 शर्त को पूरा करते हैं: | ||
:<math>\log_b a = \log_2 8 = 3>c</math>. | :<math>\log_b a = \log_2 8 = 3>c</math>. | ||
Line 157: | Line 157: | ||
:<math>T(n) = \Theta\left( n^{\log_b a} \right) = \Theta\left( n^{3} \right)</math> | :<math>T(n) = \Theta\left( n^{\log_b a} \right) = \Theta\left( n^{3} \right)</math> | ||
(इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो | (इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो <math>T(n) = 1001 n^3 - 1000 n^2</math>, मानते हुए <math>T(1) = 1</math>) है. | ||
==== | ==== स्थिति 2 उदाहरण ==== | ||
<math>T(n) = 2 T\left(\frac{n}{2}\right) + 10n</math> | <math>T(n) = 2 T\left(\frac{n}{2}\right) + 10n</math> | ||
जैसा कि हम उपरोक्त सूत्र में देख सकते हैं कि चरों को निम्नलिखित मान मिलते हैं: | जैसा कि हम उपरोक्त सूत्र में देख सकते हैं कि चरों को निम्नलिखित मान मिलते हैं: | ||
:<math>a = 2, \, b = 2, \, c = 1, \, f(n) = 10n</math> | :<math>a = 2, \, b = 2, \, c = 1, \, f(n) = 10n</math> | ||
:<math>f(n) = \Theta\left(n^{c} \log^{k} n\right)</math> जहाँ <math>c = 1, k = 0</math> | :<math>f(n) = \Theta\left(n^{c} \log^{k} n\right)</math> जहाँ <math>c = 1, k = 0</math> | ||
अगला, हम देखते हैं कि क्या हम | अगला, हम देखते हैं कि क्या हम स्थिति 2 शर्त को पूरा करते हैं: | ||
:<math>\log_b a = \log_2 2 = 1</math>, और इसलिए, | :<math>\log_b a = \log_2 2 = 1</math>, और इसलिए, c और <math>\log_b a</math> बराबर हैं | ||
तो यह मास्टर प्रमेय के दूसरे मामले से आता है: | तो यह मास्टर प्रमेय के दूसरे मामले से आता है: | ||
:<math>T(n) = \Theta\left( n^{\log_b a} \log^{k+1} n\right) = \Theta\left( n^{1} \log^{1} n\right) = \Theta\left(n \log n\right)</math> इस प्रकार दिया गया पुनरावृत्ति संबंध <math>T(n)</math> में | :<math>T(n) = \Theta\left( n^{\log_b a} \log^{k+1} n\right) = \Theta\left( n^{1} \log^{1} n\right) = \Theta\left(n \log n\right)</math> इस प्रकार दिया गया पुनरावृत्ति संबंध <math>T(n)</math> में <math>\Theta(n \log n)</math> था. | ||
(इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो | (इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो <math>T(n) = n + 10 n\log_2 n</math>, मानते हुए <math>T(1) = 1</math>) है. | ||
==== | ==== स्थिति 3 उदाहरण ==== | ||
:<math>T(n) = 2 T\left(\frac{n}{2}\right) + n^2</math> | :<math>T(n) = 2 T\left(\frac{n}{2}\right) + n^2</math> | ||
जैसा कि हम उपरोक्त सूत्र में देख सकते हैं कि चरों को निम्नलिखित मान मिलते हैं: | जैसा कि हम उपरोक्त सूत्र में देख सकते हैं कि चरों को निम्नलिखित मान मिलते हैं: | ||
Line 180: | Line 181: | ||
:<math>a = 2, \, b = 2, \, f(n) = n^2</math> | :<math>a = 2, \, b = 2, \, f(n) = n^2</math> | ||
:<math>f(n) = \Omega\left(n^c\right)</math>, जहाँ <math>c = 2</math> | :<math>f(n) = \Omega\left(n^c\right)</math>, जहाँ <math>c = 2</math> | ||
अगला, हम देखते हैं कि क्या हम | अगला, हम देखते हैं कि क्या हम स्थिति 3 शर्त को पूरा करते हैं: | ||
:<math>\log_b a = \log_2 2 = 1</math>, और इसलिए, हाँ, <math>c > \log_b a</math> | :<math>\log_b a = \log_2 2 = 1</math>, और इसलिए, हाँ, <math>c > \log_b a</math> | ||
नियमितता की स्थिति भी रखती है: | नियमितता की स्थिति भी रखती है: | ||
Line 188: | Line 189: | ||
:<math>T \left(n \right) = \Theta\left(f(n)\right) = \Theta \left(n^2 \right).</math> | :<math>T \left(n \right) = \Theta\left(f(n)\right) = \Theta \left(n^2 \right).</math> | ||
इस प्रकार दिया गया पुनरावृत्ति संबंध <math>T(n)</math> में था <math>\Theta(n^2)</math>, जो इसका | इस प्रकार दिया गया पुनरावृत्ति संबंध <math>T(n)</math> में था <math>\Theta(n^2)</math>, जो इसका <math>f(n)</math> मूल सूत्र का अनुपालन करता है। | ||
(इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो | (इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो <math>T(n) = 2 n^2 - n</math>, मानते हुए <math>T(1) = 1</math>.) है. | ||
== अस्वीकार्य समीकरण == | == अस्वीकार्य समीकरण == | ||
Line 205: | Line 206: | ||
*:<math> a<1 </math> एक से कम उप समस्या नहीं हो सकती | *:<math> a<1 </math> एक से कम उप समस्या नहीं हो सकती | ||
*<math>T(n) = 64T\left (\frac{n}{8}\right )-n^2\log n</math> | *<math>T(n) = 64T\left (\frac{n}{8}\right )-n^2\log n</math> | ||
*:<math>f(n)</math>, जो संयोजन समय | *:<math>f(n)</math>, जो संयोजन समय सकारात्मक नहीं है | ||
*<math>T(n) = T\left (\frac{n}{2}\right )+n(2-\cos n)</math> | *<math>T(n) = T\left (\frac{n}{2}\right )+n(2-\cos n)</math> | ||
*: | *:स्थिति 3 लेकिन नियमितता का उल्लंघन। | ||
उपरोक्त दूसरे अस्वीकार्य उदाहरण में, के बीच का अंतर <math>f(n)</math> और <math>n^{\log_b a}</math> अनुपात में व्यक्त किया जा सकता है <math>\frac{f(n)}{n^{\log_b a}} = \frac{n / \log n}{n^{\log_2 2}} = \frac{n}{n \log n} = \frac{1}{\log n}</math>. यह स्पष्ट है कि <math>\frac{1}{\log n} < n^\epsilon</math> किसी स्थिरांक के लिए <math>\epsilon > 0</math>. इसलिए, अंतर बहुपद नहीं है और मास्टर प्रमेय का मूल रूप लागू नहीं होता है। विस्तारित रूप ( | उपरोक्त दूसरे अस्वीकार्य उदाहरण में, के बीच का अंतर <math>f(n)</math> और <math>n^{\log_b a}</math> अनुपात में व्यक्त किया जा सकता है <math>\frac{f(n)}{n^{\log_b a}} = \frac{n / \log n}{n^{\log_2 2}} = \frac{n}{n \log n} = \frac{1}{\log n}</math>. यह स्पष्ट है कि <math>\frac{1}{\log n} < n^\epsilon</math> किसी स्थिरांक के लिए <math>\epsilon > 0</math>. इसलिए, अंतर बहुपद नहीं है और मास्टर प्रमेय का मूल रूप लागू नहीं होता है। विस्तारित रूप (स्थिति 2बी) समाधान <math>T(n) = \Theta(n\log\log n)</math> देते हुए लागू होता है. | ||
== सामान्य एल्गोरिदम के लिए आवेदन == | == सामान्य एल्गोरिदम के लिए आवेदन == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! कलन विधि | ||
! | ! पुनरावर्ती संबंध | ||
! | ! कार्यावधि | ||
! | ! टिप्पणी | ||
|- | |- | ||
| [[Binary search]] | | [[Binary search|बाइनरी खोज]] | ||
| <math>T(n) = T\left(\frac{n}{2}\right) + O(1)</math> | | <math>T(n) = T\left(\frac{n}{2}\right) + O(1)</math> | ||
| <math>O(\log n)</math> | | <math>O(\log n)</math> | ||
| | | मास्टर प्रमेय <math>c = \log_b a</math> मामला लागू करें, जहाँ <math>a = 1, b = 2, c = 0, k = 0</math><ref name="dartmouth"> | ||
Dartmouth College, | Dartmouth College, | ||
http://www.math.dartmouth.edu/archive/m19w03/public_html/Section5-2.pdf | http://www.math.dartmouth.edu/archive/m19w03/public_html/Section5-2.pdf | ||
</ref> | </ref> | ||
|- | |- | ||
| | | बाइनरी ट्री ट्रैवर्सल | ||
| <math>T(n) = 2 T\left(\frac{n}{2}\right) + O(1)</math> | | <math>T(n) = 2 T\left(\frac{n}{2}\right) + O(1)</math> | ||
| <math>O(n)</math> | | <math>O(n)</math> | ||
| | | मास्टर प्रमेय <math>c < \log_b a</math> मामला लागू करें जहाँ <math>a = 2, b = 2, c = 0</math><ref name="dartmouth" /> | ||
|- | |- | ||
| | | इष्टतम क्रमबद्ध मैट्रिक्स खोज | ||
| <math>T(n) = 2 T\left(\frac{n}{2}\right) + O(\log n)</math> | | <math>T(n) = 2 T\left(\frac{n}{2}\right) + O(\log n)</math> | ||
| <math>O(n)</math> | | <math>O(n)</math> | ||
| | | <math>p=1</math> and <math>g(u)=\log(u)</math> से पाने के <math>\Theta(2n - \log n)</math> के लिए [[Akra–Bazzi theorem|एकरा-बाज़ी प्रमेय]] लागू करें | ||
|- | |- | ||
| [[Merge sort]] | | [[Merge sort|मर्ज़ सॉर्ट]] | ||
| <math>T(n) = 2 T\left(\frac{n}{2}\right) + O(n)</math> | | <math>T(n) = 2 T\left(\frac{n}{2}\right) + O(n)</math> | ||
| <math>O(n \log n)</math> | | <math>O(n \log n)</math> | ||
| | | मास्टर प्रमेय case <math>c = \log_b a</math> मामला लागू करे, जहाँ <math>a = 2, b = 2, c = 1, k = 0</math> | ||
|} | |} | ||
Revision as of 05:53, 15 February 2023
एल्गोरिदम के विश्लेषण में, विभाजन और जीत पुनरावृत्ति के लिए मास्टर प्रमेय कई विभाजन और जीत एल्गोरिदम के विश्लेषण में होने वाले प्रकार के पुनरावृत्ति संबंधों के लिए स्पर्शोन्मुख विश्लेषण (बिग ओ नोटेशन का उपयोग करके) प्रदान करता है। यह दृष्टिकोण पहली बार 1980 में जॉन बेंटले (कंप्यूटर वैज्ञानिक), डोरोथिया ब्लोस्टीन (नी हेकेन) और जेम्स बी सक्से द्वारा प्रस्तुत किया गया था, जहां इसे इस तरह की पुनरावृत्ति का समाधान करने के लिए एकीकृत विधि के रूप में वर्णित किया गया था।[1] मास्टर प्रमेय का नाम व्यापक रूप से उपयोग किए जाने वाले एल्गोरिदम पाठ्यपुस्तक एल्गोरिदम का परिचय (एल्गोरिदम टेक्स्टबुक इंट्रोडक्शन टू एल्गोरिदम) द्वारा थॉमस एच. कॉर्मेन, चार्ल्स ई. लीसरसन, रॉन रिवेस्ट और क्लिफर्ड स्टीन द्वारा लोकप्रिय किया गया था।
इस प्रमेय के उपयोग से सभी पुनरावृत्ति संबंधों को हल नहीं किया जा सकता है; इसके सामान्यीकरण में अकरा-बाज़ी पद्धति शामिल है।
परिचय
समस्या पर विचार करें जिसे पुनरावर्ती एल्गोरिथम का उपयोग करके हल किया जा सकता है जैसे कि निम्नलिखित:
procedure p(input x of size n):
if n < some constant k:
Solve x directly without recursion
else:
Create a subproblems of x, each having size n/b
Call procedure p recursively on each subproblem
Combine the results from the subproblems
उपरोक्त कलन विधि समस्या को पुनरावर्ती रूप से कई उप-समस्याओं में विभाजित करता है, प्रत्येक उप-समस्या आकार n/b की होती है. इसके समाधान के पेड़ में प्रत्येक पुनरावर्ती कॉल के लिए एक नोड होता है, उस नोड के बच्चे उस कॉल से किए गए अन्य कॉल होते हैं। पेड़ की पत्तियां पुनरावर्तन के आधार मामले हैं, उप-समस्याएं (के से कम आकार की) जो पुनरावर्तन नहीं करती हैं। उपरोक्त उदाहरण होगा a प्रत्येक गैर-पत्ती नोड पर चाइल्ड नोड। प्रत्येक नोड काम की मात्रा करता है जो उप-समस्या n के आकार के अनुरूप होता है पुनरावर्ती कॉल के उस उदाहरण को पास किया गया और इसके द्वारा दिया गया . संपूर्ण एल्गोरिथम द्वारा किए गए कार्य की कुल राशि ट्री में सभी नोड्स द्वारा किए गए कार्य का योग है।
एल्गोरिथम का रनटाइम जैसे आकार 'n' के इनपुट पर ऊपर 'p', आमतौर पर द्वारा निरूपित किया जाता है, पुनरावृत्ति संबंध द्वारा व्यक्त किया जा सकता है
जहाँ उपरोक्त प्रक्रिया में उप-समस्याओं को बनाने और उनके परिणामों को संयोजित करने का समय है। किए गए कार्य की कुल राशि के लिए व्यंजक प्राप्त करने के लिए इस समीकरण को क्रमिक रूप से स्वयं में प्रतिस्थापित किया जा सकता है और विस्तारित किया जा सकता है।[2] मास्टर प्रमेय इस रूप के कई पुनरावृत्ति संबंधों को पुनरावर्ती संबंध का विस्तार किए बिना सीधे बिग Θ-संकेतन में परिवर्तित करने की अनुमति देता है।
सामान्य रूप
मास्टर प्रमेय हमेशा विभाजित और जीत एल्गोरिदम से पुनरावृत्ति के लिए असम्बद्ध रूप से तंग सीमा उत्पन्न करता है जो इनपुट को समान आकार के छोटे उप-समस्याओं में विभाजित करता है, उप-समस्याओं को पुनरावर्ती रूप से हल करता है, और फिर मूल समस्या का समाधान देने के लिए उप-समस्या समाधानों को जोड़ता है। इस तरह के कलन विधि के लिए समय उस कार्य को जोड़कर व्यक्त किया जा सकता है जो वे अपने पुनरावर्तन के शीर्ष स्तर पर (समस्याओं को उप-समस्याओं में विभाजित करने के लिए और फिर उप-समस्याओं के समाधानों को संयोजित करने के लिए) एक साथ कलन विधि के पुनरावर्ती कॉल में किए गए समय के साथ करते हैं। अगर आकार के इनपुट पर कलन विधि के लिए कुल समय को दर्शाता है, और पुनरावृत्ति के शीर्ष स्तर पर लगने वाले समय की मात्रा को दर्शाता है तो समय को पुनरावृत्ति संबंध द्वारा व्यक्त किया जा सकता है जो रूप लेता है:
यहाँ एक इनपुट समस्या का आकार है, पुनरावर्तन में उपसमस्याओं की संख्या है, और वह कारक है जिसके द्वारा प्रत्येक पुनरावर्ती कॉल (b> 1) में उप-समस्या का आकार कम हो जाता है। महत्वपूर्ण रूप से, और पर निर्भर नहीं होना चाहिए. नीचे दिया गया प्रमेय यह भी मानता है कि, पुनरावृत्ति के आधार मामले के रूप में, तब किसी सीमा से कम है, सबसे छोटा इनपुट आकार जो पुनरावर्ती कॉल की ओर ले जाएगा।
समस्या को विभाजित/पुन: संयोजित करने के कार्य के आधार पर, इस फ़ॉर्म की पुनरावृत्ति अक्सर निम्नलिखित तीन शासनों में से एक को संतुष्ट करती है महत्वपूर्ण घातांक . (नीचे दी गई तालिका मानक बिग ओ नोटेशन का उपयोग करती है) से संबंधित है।
स्थिति | विवरण | के संबंध में, यानी, पर स्थिति | मास्टर प्रमेय बाध्य | सांकेतिक उदाहरण |
---|---|---|---|---|
1 | किसी समस्या को विभाजित/पुन: संयोजित करने का कार्य उप-समस्याओं से बौना हो जाता है।
यानी पुनरावर्तन वृक्ष पत्ती-भारी है |
जब जहाँ
(कम एक्सपोनेंट बहुपद द्वारा ऊपरी-सीमित) |
... तब
(विभाजन शब्द प्रकट नहीं होता है; पुनरावर्ती वृक्ष संरचना हावी है।) |
यदि and , तब . |
2 | किसी समस्या को विभाजित/पुन: संयोजित करने का कार्य उप-समस्याओं के बराबर है। | जब के लिये a
(महत्वपूर्ण-प्रतिपादक बहुपद द्वारा सीमाबद्ध, शून्य या अधिक वैकल्पिक s) |
... तब
(बाध्य बंटवारे की अवधि है, जहां लॉग को एक शक्ति द्वारा संवर्धित किया जाता है।) |
यदि and , फिर .
यदि और , तब . |
3 | किसी समस्या को विभाजित/पुन: संयोजित करने का कार्य उप-समस्याओं पर हावी हो जाता है।
यानी रिकर्सन ट्री रूट-हैवी है। |
जब जहाँ
(अधिक-प्रतिपादक बहुपद द्वारा निम्न-परिबद्ध) |
... यह आवश्यक रूप से कुछ भी नहीं देता है। इसके अलावा, अगर
तो कुल बंटवारे की अवधि का प्रभुत्व है : |
यदि और और फिर नियमितता की स्थिति बनी रहती है. |
स्थिति 2 का एक उपयोगी विस्तार सभी मानो को संभालता है:[3]
स्थिति | के संबंध में, यानी, पर स्थिति | मास्टर प्रमेय बाध्य | सांकेतिक उदाहरण |
---|---|---|---|
2a | जब कोई के लिये | ...तब
(बाध्य बंटवारे की अवधि है, जहां लॉग को एक शक्ति द्वारा संवर्धित किया जाता है।) |
यदि और , तब . |
2b | जब के लिये | ... जब
(बाध्य बंटवारे की अवधि है, जहां लॉग व्युत्क्रम को पुनरावृत्त log द्वारा प्रतिस्थापित किया जाता है।) |
यदि और , तब . |
2c | जब कोई के लिये | ... जब
(बाध्य बंटवारे की अवधि है, जहां log गायब हो जाता है।) |
यदि और , तब . |
उदाहरण
पहला उदाहरण
जैसा कि उपरोक्त सूत्र से देखा जा सकता है:
- , इसलिए
- , जहाँ
अगला, हम देखते हैं कि क्या हम स्थिति 1 शर्त को पूरा करते हैं:
- .
यह मास्टर प्रमेय के पहले मामले से अनुसरण करता है
(इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो , मानते हुए ) है.
स्थिति 2 उदाहरण
जैसा कि हम उपरोक्त सूत्र में देख सकते हैं कि चरों को निम्नलिखित मान मिलते हैं:
- जहाँ
अगला, हम देखते हैं कि क्या हम स्थिति 2 शर्त को पूरा करते हैं:
- , और इसलिए, c और बराबर हैं
तो यह मास्टर प्रमेय के दूसरे मामले से आता है:
- इस प्रकार दिया गया पुनरावृत्ति संबंध में था.
(इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो , मानते हुए ) है.
स्थिति 3 उदाहरण
जैसा कि हम उपरोक्त सूत्र में देख सकते हैं कि चरों को निम्नलिखित मान मिलते हैं:
- , जहाँ
अगला, हम देखते हैं कि क्या हम स्थिति 3 शर्त को पूरा करते हैं:
- , और इसलिए, हाँ,
नियमितता की स्थिति भी रखती है:
- , चुनना
तो यह मास्टर प्रमेय के तीसरे मामले से आता है:
इस प्रकार दिया गया पुनरावृत्ति संबंध में था , जो इसका मूल सूत्र का अनुपालन करता है।
(इस परिणाम की पुष्टि पुनरावृत्ति संबंध के सटीक समाधान से होती है, जो , मानते हुए .) है.
अस्वीकार्य समीकरण
मास्टर प्रमेय का उपयोग करके निम्नलिखित समीकरणों को हल नहीं किया जा सकता है:[4]
-
- a स्थिरांक नहीं है; उप-समस्याओं की संख्या निश्चित की जानी चाहिए
-
- के बीच गैर-बहुपद अंतर और (नीचे देखें; विस्तारित संस्करण लागू होता है)
-
- एक से कम उप समस्या नहीं हो सकती
-
- , जो संयोजन समय सकारात्मक नहीं है
-
- स्थिति 3 लेकिन नियमितता का उल्लंघन।
उपरोक्त दूसरे अस्वीकार्य उदाहरण में, के बीच का अंतर और अनुपात में व्यक्त किया जा सकता है . यह स्पष्ट है कि किसी स्थिरांक के लिए . इसलिए, अंतर बहुपद नहीं है और मास्टर प्रमेय का मूल रूप लागू नहीं होता है। विस्तारित रूप (स्थिति 2बी) समाधान देते हुए लागू होता है.
सामान्य एल्गोरिदम के लिए आवेदन
कलन विधि | पुनरावर्ती संबंध | कार्यावधि | टिप्पणी |
---|---|---|---|
बाइनरी खोज | मास्टर प्रमेय मामला लागू करें, जहाँ [5] | ||
बाइनरी ट्री ट्रैवर्सल | मास्टर प्रमेय मामला लागू करें जहाँ [5] | ||
इष्टतम क्रमबद्ध मैट्रिक्स खोज | and से पाने के के लिए एकरा-बाज़ी प्रमेय लागू करें | ||
मर्ज़ सॉर्ट | मास्टर प्रमेय case मामला लागू करे, जहाँ |
यह भी देखें
- एकरा–बाजी विधि
- स्पर्शोन्मुख जटिलता
टिप्पणियाँ
- ↑ Bentley, Jon Louis; Haken, Dorothea; Saxe, James B. (September 1980), "A general method for solving divide-and-conquer recurrences", ACM SIGACT News, 12 (3): 36–44, doi:10.1145/1008861.1008865, S2CID 40642274, archived from the original on September 22, 2017
- ↑ Duke University, "Big-Oh for Recursive Functions: Recurrence Relations", http://www.cs.duke.edu/~ola/ap/recurrence.html
- ↑ Chee Yap, A real elementary approach to the master recurrence and generalizations, Proceedings of the 8th annual conference on Theory and applications of models of computation (TAMC'11), pages 14–26, 2011. Online copy.
- ↑ Massachusetts Institute of Technology (MIT), "Master Theorem: Practice Problems and Solutions", https://people.csail.mit.edu/thies/6.046-web/master.pdf
- ↑ 5.0 5.1 Dartmouth College, http://www.math.dartmouth.edu/archive/m19w03/public_html/Section5-2.pdf
संदर्भ
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw–Hill, 2001. ISBN 0-262-03293-7. Sections 4.3 (The master method) and 4.4 (Proof of the master theorem), pp. 73–90.
- Michael T. Goodrich and Roberto Tamassia. Algorithm Design: Foundation, Analysis, and Internet Examples. Wiley, 2002. ISBN 0-471-38365-1. The master theorem (including the version of Case 2 included here, which is stronger than the one from CLRS) is on pp. 268–270.