📘 CodingMarble Learn

संगणनात्मक जटिलता: आसान, कठिन और असंभव समस्याएँ

जटिलता बताती है कि इनपुट का आकार n बढ़ने पर कदम कितनी तेज़ी से बढ़ते हैं। बहुपद (n, n², n³) एल्गोरिदम संभालने लायक (ट्रैक्टेबल) हैं; घातीय (2ⁿ) और क्रमगुणित (n!) बहुत जल्दी बेकाबू हो जाते हैं। कुछ समस्याएँ जाँचने में आसान पर हल करने में कठिन (NP) हैं। हॉल्टिंग समस्या जैसी कुछ समस्याएँ किसी एल्गोरिदम से हल ही नहीं हो सकतीं।

🎬 कदम-दर-कदम कहानी

  1. चार तरह के एल्गोरिदम n = 10 चीज़ों पर चल रहे हैं। बार की ऊँचाई = कदमों की गिनती (हर खाना ऊपर = 10 गुना)।
  2. अब n = 20। n² सिर्फ़ 400 है। पर 2ⁿ दस लाख से ऊपर और n! बहुत बड़ा। घातीय वृद्धि बेकाबू है।
  3. 6 शहर: सबसे छोटा पूरा चक्कर ढूँढो। हर रास्ता आज़माओ तो 60 चक्कर। 20 शहरों पर 6 × 10¹⁶ चक्कर।
  4. अगर कोई रास्ता दे दे, तो उसकी लंबाई जाँचना आसान: बस 6 दूरियाँ जोड़ो। हल करना कठिन, जाँचना आसान।
  5. हॉल्टिंग समस्या: कोई मशीन हर प्रोग्राम को देखकर हमेशा नहीं बता सकती कि वह रुकेगा या हमेशा चलता रहेगा।
  6. तुम्हारी बारी: n खिसकाओ और देखो तेज़ कंप्यूटर हर एल्गोरिदम पर कितना समय लेगा।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

तेज़ कंप्यूटर क्यों नहीं ख़रीद लेते?

2ⁿ के लिए 1000 गुना तेज़ कंप्यूटर बस लगभग 10 चीज़ें और जोड़ने देता है। बार फिर भी फट पड़ते हैं।

सेकंड की जगह कदम क्यों गिनते हैं?

कदम कंप्यूटर पर निर्भर नहीं होते। बार की ऊँचाई वृद्धि की तुलना ईमानदारी से करती है।

रास्ते वाली समस्या इतनी कठिन क्यों है?

हर नया शहर रास्तों को गुणा कर देता है। 6 शहर = 60 चक्कर, 20 शहर = 6 × 10¹⁶।

हल कठिन है तो जाँच आसान कैसे?

जाँचने में बस दिए रास्ते की n दूरियाँ जोड़नी हैं। हल करने में बहुत सारे रास्तों की तुलना करनी है।

क्या हॉल्टिंग समस्या बस बहुत धीमी है?

नहीं, असंभव है: हर मशीन H को उलटा करने वाला प्रोग्राम धोखा दे सकता है।

2ⁿ किस n पर बेकार हो जाता है?

स्लाइडर खिसकाओ: लगभग n = 50 के बाद 10⁹ कदम/सेकंड पर भी दिन या साल लगते हैं।

Big-O से जटिलता मापना

हम एल्गोरिदम को सेकंड में नहीं नापते, क्योंकि कंप्यूटर अलग-अलग होते हैं। हम कदम गिनते हैं और देखते हैं कि इनपुट आकार n के साथ गिनती कैसे बढ़ती है। Big-O सिर्फ़ सबसे तेज़ बढ़ने वाला हिस्सा रखता है: 3n² + 5n + 7 = O(n²)।

Big-Oनामउदाहरण
O(1)स्थिरसूची की पहली चीज़ पढ़ना
O(log n)लघुगणकीयबाइनरी सर्च
O(n)रैखिकलीनियर सर्च
O(n log n)—मर्ज सॉर्ट
O(n²)द्विघातीबबल सॉर्ट
O(2ⁿ)घातीयहर उपसमुच्चय आज़माना
O(n!)क्रमगुणितहर क्रम (रास्ता) आज़माना

स्पेस जटिलता बताती है कि n के साथ मेमोरी कितनी बढ़ती है।

बहुपद बनाम घातीय: ट्रैक्टेबल और इंट्रैक्टेबल

अगर किसी समस्या का एल्गोरिदम बहुपद समय O(nᵏ) में चलता है, तो वह ट्रैक्टेबल है। अगर हर ज्ञात एल्गोरिदम इससे ज़्यादा समय लेता है, जैसे O(2ⁿ) या O(n!), तो वह इंट्रैक्टेबल है।

फ़र्क़ क्यों? n दोगुना करने पर n² चार गुना होता है। पर n में सिर्फ़ 1 जोड़ने से 2ⁿ दोगुना हो जाता है। 10⁹ कदम प्रति सेकंड पर n = 60 के 2ⁿ कदमों में लगभग 36 साल लगेंगे।

इंट्रैक्टेबल समस्याओं के लिए ह्यूरिस्टिक (अनुभव-आधारित नियम) अपनाते हैं, जैसे 'हमेशा सबसे पास वाले शहर जाओ'।

मशहूर कठिन समस्याएँ, P और NP

P = वे समस्याएँ जो बहुपद समय में हल होती हैं। NP = वे जिनके उत्तर बहुपद समय में जाँचे जा सकते हैं। क्या P = NP? यह कंप्यूटर विज्ञान का सबसे बड़ा खुला सवाल है।

संगणनीय और असंगणनीय: हॉल्टिंग समस्या

अगर कोई एल्गोरिदम सीमित कदमों में हमेशा सही उत्तर दे, तो समस्या संगणनीय है। कुछ समस्याएँ असंगणनीय हैं: कोई एल्गोरिदम हर इनपुट पर उन्हें हल नहीं कर सकता।

हॉल्टिंग समस्या: कोई भी प्रोग्राम और इनपुट दिया हो, वह रुकेगा या हमेशा चलेगा? एलन ट्यूरिंग ने 1936 में दिखाया कि कोई सामान्य मशीन H यह नहीं बता सकती। सबूत का विचार: मान लो H है। एक प्रोग्राम X बनाओ जो H से अपने बारे में पूछे और उलटा करे (H कहे 'रुकेगा' तो लूप में चला जाए, H कहे 'नहीं रुकेगा' तो रुक जाए)। तब H, X के बारे में ग़लत होगी। इसलिए H बन ही नहीं सकती।

सीख: कुछ सीमाएँ गति की नहीं हैं। अनंत तेज़ कंप्यूटर भी असंगणनीय समस्या हल नहीं कर सकता।

करके देखो: विस्फोट महसूस करो

A, B, C लिखो। हर क्रम लिखो (ABC, ACB, …): 6 क्रम। D जोड़ो: 24। E जोड़ो: 120। हर नया अक्षर काम को गुणा कर देता है। यही n! वृद्धि है, जिससे रास्ता ढूँढना कठिन होता है।

मुख्य सूत्र और परिभाषाएँ

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

1. 5n³ + 2n² + 100 का Big-O?

सबसे तेज़ पद रखो, स्थिरांक हटाओ: O(n³)।

2. O(n²) एल्गोरिदम n = 1000 पर 1 s लेता है। n = 3000 पर?

n तीन गुना, समय 3² = 9 गुना: लगभग 9 s।

3. O(2ⁿ) एल्गोरिदम n = 30 पर 1 s लेता है। n = 40 पर?

10 चीज़ें ज़्यादा → 2¹⁰ = 1024 गुना: लगभग 17 मिनट।

4. 5 शहरों के कितने चक्कर?

(5 − 1)!/2 = 24/2 = 12।

5. 10⁹ कदम/सेकंड पर 2⁵⁰ कदम कितने समय में?

2⁵⁰ ≈ 1.13 × 10¹⁵; समय ≈ 1.13 × 10⁶ s ≈ 13 दिन।

6. 'सूची सॉर्ट करना' ट्रैक्टेबल है? '500 छात्रों का सबसे अच्छा परीक्षा टाइमटेबल'?

सॉर्टिंग O(n log n), बहुपद, इसलिए ट्रैक्टेबल। सबसे अच्छे टाइमटेबल का कोई ज्ञात बहुपद एल्गोरिदम नहीं, इसलिए इंट्रैक्टेबल माना जाता है; स्कूल ह्यूरिस्टिक अपनाते हैं।

आम गलतियाँ

अभ्यास क्विज़

1. बड़े n पर सबसे तेज़ कौन बढ़ता है?
2. बहुपद-समय एल्गोरिदम वाली समस्या है:
3. हॉल्टिंग समस्या है:
4. 4 शहरों के कितने चक्कर?
5. NP समस्याओं के उत्तर:

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

संगणनात्मक जटिलता क्या है?

यह अध्ययन कि इनपुट बढ़ने पर एल्गोरिदम का समय या मेमोरी कैसे बढ़ती है, आमतौर पर Big-O में लिखा जाता है।

ट्रैक्टेबल और इंट्रैक्टेबल में क्या फ़र्क़ है?

ट्रैक्टेबल का बहुपद-समय एल्गोरिदम है; इंट्रैक्टेबल का कोई ज्ञात बहुपद एल्गोरिदम नहीं, इसलिए बड़े इनपुट पर बहुत धीमा।

हॉल्टिंग समस्या आसान शब्दों में?

क्या कोई ऐसा प्रोग्राम हो सकता है जो किसी भी प्रोग्राम के बारे में बता दे कि वह ख़त्म होगा या नहीं? ट्यूरिंग ने सिद्ध किया: नहीं।

यह कहाँ पढ़ाया जाता है

नीदरलैंडHAVO 5 (eindexamenjaar)Elective theme: Algorithms, computability and logic
नीदरलैंडVWO 6 (eindexamenjaar)Elective theme: Algorithms, computability and logic
इंग्लैंडYear 134.4 Theory of computation (A-level)
जर्मनीJahrgangsstufe 13Algorithms, complexity and computability

पहले यह पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ