एल्गोरिदम और जटिलता: व्याख्या सहित अभ्यास प्रश्न

संकेतों और व्याख्याओं के साथ मुफ़्त एल्गोरिदम और जटिलता बहुविकल्पीय अभ्यास प्रश्न, तीन स्तरों पर: मुख्य शब्द और तथ्य, अवधारणाओं का अनुप्रयोग, केस और विश्लेषण।

मुफ़्त अभ्यास प्रश्नआसान

बड़े n के लिए कौन-सा कॉम्प्लेक्सिटी क्लास सबसे तेज़ी से बढ़ता है?

अगला प्रश्न →

आप क्या अभ्यास करेंगे

  1. आसानमुख्य शब्द और तथ्य
  2. मध्यमअवधारणाओं का अनुप्रयोग
  3. कठिनकेस और विश्लेषण

एल्गोरिदम और जटिलता शुरू से सीखें

1जटिलता क्या मापती है

एल्गोरिदम सटीक चरणों की एक परिमित सूची है जो किसी समस्या को हल करती है, जैसे किसी सूची को क्रमबद्ध करना या फ़ोन बुक में कोई नाम ढूँढना।

दो एल्गोरिदम एक ही समस्या हल कर सकते हैं पर बहुत अलग समय ले सकते हैं। जटिलता बताती है कि इनपुट बड़ा होने पर काम कैसे बढ़ता है।

इनपुट के आकार को n कहते हैं: क्रमबद्ध करने वाली वस्तुओं की संख्या, सूची की लंबाई, ग्राफ़ में नोडों की संख्या।

1000 पृष्ठों की फ़ोन बुक में कोई नाम ढूँढने की सोचें। हर पृष्ठ पढ़ने में 1000 चरण तक लगते हैं। बीच में खोलकर हर बार आधा करने में लगभग 10 चरण लगते हैं।

समय जटिलता चरण गिनती है। स्थान जटिलता अतिरिक्त मेमोरी गिनती है। दोनों n के फलन के रूप में लिखी जाती हैं।

आमतौर पर आप सबसे खराब स्थिति देखते हैं: आकार n के सभी इनपुटों में सबसे अधिक काम। कभी-कभी इसके बजाय औसत या सबसे अच्छी स्थिति पूछी जाती है।

स्व-जाँच जिस एल्गोरिदम का काम n² की तरह बढ़ता है वह n = 1000 के लिए 1 सेकंड लेता है। n = 2000 के लिए लगभग कितना समय लगेगा?
  1. 1 सेकंड
  2. 2 सेकंड
  3. 4 सेकंड
  4. 8 सेकंड

उत्तर: 4 सेकंड. n को दोगुना करने से n², 2² = 4 से गुणा होता है, इसलिए समय लगभग 1 से लगभग 4 सेकंड हो जाता है। 2 सेकंड रैखिक वृद्धि का उत्तर होता, और 8, n³ का।

2बिग O और वृद्धि वर्ग

बिग O संकेतन केवल वही रखता है जो बड़े n के लिए मायने रखता है। आप अचर गुणक हटाते हैं और केवल सबसे तेज़ बढ़ने वाला पद रखते हैं।

3n² + 5n + 2 ⇒ O(n²)

n = 1000 के लिए n² पद 3 000 000 है, जबकि 5n केवल 5000 है। छोटे पद कुल को मुश्किल से बदलते हैं।

ये वर्ग बार-बार आते हैं, सबसे धीमी से सबसे तेज़ वृद्धि तक:

  • O(1), अचर: सूचकांक से ऐरे का कोई तत्व पढ़ना।
  • O(log n), लघुगणकीय: बाइनरी सर्च, जो हर चरण में समस्या को आधा करता है।
  • O(n), रैखिक: सभी वस्तुओं पर एक बार गुज़रना, जैसे सबसे बड़ा मान ढूँढना।
  • O(n log n): मर्ज सॉर्ट जैसे अच्छे क्रमबद्धन एल्गोरिदम।
  • O(n²), द्विघाती: वस्तुओं पर दो नेस्टेड लूप, जैसे बबल सॉर्ट।
  • O(2ⁿ), चरघातांकी: हर उपसमुच्चय आज़माना। यह जल्दी ही अनुपयोगी हो जाता है।
ntlog nnn log nn²2ⁿ

बिग O एक ऊपरी सीमा है: काम अधिकतम इतनी तेज़ी से बढ़ता है। Ω (बिग ओमेगा) निचली सीमा है, और Θ (थीटा) कसी हुई सीमा है, ऊपरी और निचली दोनों।

बिग O में लघुगणक का आधार मायने नहीं रखता, क्योंकि अलग-अलग आधारों वाले लघुगणक केवल एक अचर गुणक से भिन्न होते हैं।

स्व-जाँच 4n + 2n² + 100 का बिग O क्या है?
  1. O(100)
  2. O(2n²)
  3. O(n)
  4. O(n²)

उत्तर: O(n²). बड़े n के लिए n² पद प्रभावी है, और अचर गुणक 2 हटा दिया जाता है। O(n) गलत पद रखता है, और O(2n²) अचर हटाना भूल जाता है।

3खोज, क्रमबद्धन और पुनरावर्तन

कुछ एल्गोरिदम लगभग हर पाठ्यक्रम में आते हैं। उनकी जटिलताएँ तथ्यों की तरह सीखें।

  • रैखिक खोज वस्तुओं को एक-एक करके जाँचती है: O(n)। बाइनरी सर्च को क्रमबद्ध ऐरे चाहिए और यह हर चरण में परास को आधा करती है: O(log n)।
  • बबल, इंसर्शन और सिलेक्शन सॉर्ट नेस्टेड लूपों में वस्तुओं की तुलना और अदला-बदली करते हैं: O(n²)। पहले से क्रमबद्ध ऐरे पर इंसर्शन सॉर्ट O(n) है।
  • मर्ज सॉर्ट ऐरे को आधों में बाँटता है, उन्हें क्रमबद्ध करता है और मिलाता है: हर स्थिति में O(n log n), O(n) अतिरिक्त मेमोरी के साथ।
  • क्विकसॉर्ट एक पिवट के चारों ओर बाँटता है: औसतन O(n log n), पर सबसे खराब स्थिति में O(n²), उदाहरण के लिए पहले तत्व को पिवट लेकर क्रमबद्ध ऐरे।
  • केवल तुलना करने वाला कोई भी सॉर्ट सबसे खराब स्थिति में Ω(n log n) से बेहतर नहीं हो सकता। काउंटिंग सॉर्ट तेज़ है क्योंकि वह तुलना नहीं करता।

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

  • T(n) = T(n/2) + O(1) से O(log n) मिलता है, बाइनरी सर्च की तरह।
  • T(n) = 2T(n/2) + O(n) से O(n log n) मिलता है, मर्ज सॉर्ट की तरह।
  • T(n) = T(n − 1) + O(n) से O(n²) मिलता है।
  • T(n) = 2T(n − 1) + O(1) से O(2ⁿ) मिलता है।

तीन डिज़ाइन विचार जानने योग्य हैं। विभाजन और विजय बाँटता, हल करता और मिलाता है। लालची (ग्रीडी) हर चरण में स्थानीय रूप से सबसे अच्छा विकल्प लेता है। गतिशील प्रोग्रामिंग अतिव्यापी उपसमस्याओं के उत्तर संग्रहीत करती है ताकि वे एक ही बार निकाले जाएँ।

स्व-जाँच क्विकसॉर्ट की सबसे खराब स्थिति वाली समय जटिलता क्या है?
  1. O(log n)
  2. O(n log n)
  3. O(n)
  4. O(n²)

उत्तर: O(n²). खराब पिवटों के साथ हर विभाजन एक ओर n − 1 वस्तुएँ छोड़ता है, जिससे O(n²) मिलता है। O(n log n) इसकी औसत स्थिति है, और मर्ज सॉर्ट की सबसे खराब स्थिति।

4विधि चरण-दर-चरण

किसी कोड खंड की समय जटिलता ज्ञात करने के लिए:

  1. तय करें कि n क्या है: इनपुट का आकार।
  2. गिनें कि हर लूप कितनी बार चलता है। हर बार 1 जोड़ने वाला लूप लगभग n बार चलता है। दोगुना या आधा करने वाला लूप लगभग log₂ n बार चलता है।
  3. एक-दूसरे के अंदर के लूप गुणा होते हैं। एक के बाद एक आने वाले लूप जुड़ते हैं।
  4. पुनरावर्ती फलन के लिए पुनरावृत्ति संबंध लिखें: कितनी कॉल, किस आकार पर, जमा प्रति कॉल काम।
  5. सबसे तेज़ बढ़ने वाला पद रखें और अचर हटाएँ।
  6. किसी छोटी संख्या से जाँचें, उदाहरण के लिए n = 8 या n = 1024।

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

5एक हल किया गया उदाहरण

हर चरण का अनुसरण करें। अगला चरण खोलने से पहले उसका अनुमान लगाने का प्रयास करें।

हल किया गया उदाहरण

इस कोड की समय जटिलता क्या है? for i = 1 to n: (j = 1; while j < n: j = j × 2)

1

इनपुट आकार बताएँ

n वह संख्या है जहाँ तक लूप चलते हैं।

2

बाहरी लूप गिनें

i, 1 से n तक 1 के चरणों में जाता है, इसलिए बाहरी लूप n बार चलता है।

3

भीतरी लूप गिनें

j के मान 1, 2, 4, 8, … होते हैं और n तक पहुँचने पर रुकता है। k चक्रों के बाद j = 2k, इसलिए लूप लगभग log₂ n चक्रों के बाद रुकता है।

4

लूपों को मिलाएँ

भीतरी लूप बाहरी लूप के अंदर है, इसलिए गिनतियाँ गुणा होती हैं।

n · log₂ n ⇒ O(n log n)
5

किसी संख्या से जाँचें

n = 1024 के लिए भीतरी लूप log₂ 1024 = 10 बार चलता है, इसलिए मुख्य भाग 1024 · 10 = 10 240 बार चलता है। यह n² = 1 048 576 से बहुत कम है।

उत्तर

O(n log n)

6सामान्य गलतियाँ

  • एक के बाद एक चलने वाले लूपों को गुणा करना। n + n = 2n अभी भी O(n) है।
  • अचर रखना, जैसे O(2n) या O(n/2)। दोनों O(n) हैं।
  • दोगुना करने वाले लूप को n चक्र गिनना। यह लगभग log₂ n बार चलता है।
  • अक्रमबद्ध आँकड़ों पर, या ऐसी लिंक्ड लिस्ट पर बाइनरी सर्च का उपयोग करना जहाँ बीच तक एक चरण में नहीं पहुँचा जा सकता।
  • सबसे खराब स्थिति पूछे जाने पर क्विकसॉर्ट की औसत स्थिति बताना।
  • यह सोचना कि बिग O का अर्थ “ठीक-ठीक” है। O(n²) एक ऊपरी सीमा है; Θ(n²) सटीक वृद्धि है।
स्व-जाँच एक फलन n पुनरावृत्तियों का एक लूप चलाता है और फिर, अलग से, n पुनरावृत्तियों का एक और लूप। इसकी समय जटिलता क्या है?
  1. O(2n)
  2. O(log n)
  3. O(n)
  4. O(n²)

उत्तर: O(n). एक के बाद एक चलने वाले लूप जुड़ते हैं: n + n = 2n, और अचर हटा दिया जाता है, इसलिए O(n)। O(n²) तभी सही होता जब एक लूप दूसरे के अंदर होता।

7परीक्षा प्रश्न कैसे दिखते हैं

  • आसान: मुख्य शब्द और तथ्य। बाइनरी सर्च, मर्ज सॉर्ट या ऐरे पहुँच की जटिलता, O, Ω और Θ का अर्थ, पुनरावर्तन क्या है।
  • मध्यम: अवधारणाओं का अनुप्रयोग। किसी कोड खंड की जटिलता, हल करने के लिए एक पुनरावृत्ति संबंध, n दोगुना होने पर समय कैसे बदलता है, कौन-सा एल्गोरिदम किसी काम के लिए उपयुक्त है।
  • कठिन: मामले और विश्लेषण। मास्टर प्रमेय, क्विकसॉर्ट की सबसे खराब स्थितियाँ, लालची बनाम गतिशील प्रोग्रामिंग, और वर्ग P, NP और NP-पूर्ण।

P में वे समस्याएँ हैं जो बहुपद समय में हल की जा सकती हैं। NP में वे समस्याएँ हैं जिनके हल बहुपद समय में जाँचे जा सकते हैं। P की हर समस्या NP में है; P = NP है या नहीं, यह अभी अज्ञात है।

ऐप में इसे चरण-दर-चरण सीखेंऐप में इसे चरण-दर-चरण सीखें

उदाहरण प्रश्न

उदाहरण 1आसान

कौन-सा नोटेशन वृद्धि की ऊपरी सीमा (upper bound) को दर्शाता है?

  1. ABig Omega
  2. BLittle omega
  3. CBig O
  4. DBig Theta
संकेत दिखाएँ
  1. "अधिकतम"।
  2. दो गलत उत्तर अब काट दिए गए हैं। बचे हुए दो में से एक सही है।
उत्तर और व्याख्या दिखाएँ

यह उत्तर क्यों है

O ऊपरी सीमा, Ω निचली सीमा और Θ सटीक (tight) सीमा देता है।

उत्तर

C · Big O
उदाहरण 2मध्यम

एक सॉर्टेड ऐरे में आप दोनों सिरों से एक-एक पॉइंटर को भीतर की ओर खिसकाते हुए ऐसे दो तत्व खोजते हैं जिनका योग लक्ष्य के बराबर हो। टाइम कॉम्प्लेक्सिटी क्या है?

  1. AO(n)
  2. BO(n log n)
  3. CO(n²)
  4. DO(log n)
संकेत दिखाएँ
  1. हर चरण एक पॉइंटर को एक स्थान खिसकाता है।
  2. दो गलत उत्तर अब काट दिए गए हैं। बचे हुए दो में से एक सही है।
उत्तर और व्याख्या दिखाएँ

यह उत्तर क्यों है

यदि योग बहुत छोटा हो तो बायाँ पॉइंटर दाएँ खिसकता है, बहुत बड़ा हो तो दायाँ पॉइंटर बाएँ, इसलिए अधिकतम n चरण होते हैं।

उत्तर

A · O(n)
उदाहरण 3कठिन

स्ट्रासेन का एल्गोरिदम आधे आकार के ब्लॉकों के 8 के बजाय 7 रिकर्सिव गुणनों से मैट्रिक्स गुणा करता है। इसका रनिंग टाइम क्या है?

  1. AΘ(n² log n)
  2. BΘ(n2)
  3. CΘ(n³)
  4. DΘ(nlog₂ 7), लगभग n2.81
संकेत दिखाएँ
  1. रिकरेंस T(n) = 7T(n/2) + O(n²) है।
  2. दो गलत उत्तर अब काट दिए गए हैं। बचे हुए दो में से एक सही है।
उत्तर और व्याख्या दिखाएँ

यह उत्तर क्यों है

a = 7 और b = 2 के साथ nlog₂ 7, O(n²) जोड़ कार्य पर प्रभावी होता है, जिससे लगभग n2.81 मिलता है।

उत्तर

D · Θ(nlog₂ 7), लगभग n2.81

प्रश्न और उत्तर

एल्गोरिदम और जटिलता क्या है?

दो एल्गोरिदम एक ही समस्या हल कर सकते हैं पर बहुत अलग समय ले सकते हैं। जटिलता बताती है कि इनपुट बड़ा होने पर काम कैसे बढ़ता है।

इनपुट के आकार को n कहते हैं: क्रमबद्ध करने वाली वस्तुओं की संख्या, सूची की लंबाई, ग्राफ़ में नोडों की संख्या।

एल्गोरिदम और जटिलता को चरण-दर-चरण कैसे सीखें?
  1. जटिलता क्या मापती है
  2. बिग O और वृद्धि वर्ग
  3. खोज, क्रमबद्धन और पुनरावर्तन
  4. विधि चरण-दर-चरण
  5. एक हल किया गया उदाहरण
  6. सामान्य गलतियाँ
  7. परीक्षा प्रश्न कैसे दिखते हैं
एल्गोरिदम और जटिलता के अभ्यास में क्या शामिल है?
  • आसान: मुख्य शब्द और तथ्य
  • मध्यम: अवधारणाओं का अनुप्रयोग
  • कठिन: केस और विश्लेषण

हर प्रश्न में चार विकल्प होते हैं, और केवल एक सही होता है। अटक गए? पहले एक छोटा संकेत खोलें, और पूरी व्याख्या तभी जब ज़रूरत हो।

अभ्यास कैसे काम करता है

  • हर प्रश्न में चार विकल्प होते हैं, और केवल एक सही होता है।
  • अटक गए? पहले एक छोटा संकेत खोलें, और पूरी व्याख्या तभी जब ज़रूरत हो।
  • आपकी प्रगति, गलतियाँ और सहेजे गए प्रश्न रखे जाते हैं, ताकि आप परीक्षा से पहले दोहरा सकें।

इससे पहले और बाद के विषय

इसके बाद

इस विषय वाले कोर्स

कंप्यूटर विज्ञान में और विषय

प्रिंट करने योग्य वर्कशीट