📘 CodingMarble Learn

ट्यूरिंग मशीन और एल्गोरिदम का सिद्धांत

ट्यूरिंग मशीन एक बहुत सरल काल्पनिक कंप्यूटर है: एक लंबा फीता, एक सिर (head) जो एक खाना पढ़ता-लिखता है और नियमों की एक छोटी सूची। चर्च–ट्यूरिंग थीसिस कहती है कि जो काम किसी साफ़ क्रमवार विधि से हो सकता है, वह ऐसी मशीन भी कर सकती है। जटिलता विश्लेषण गिनता है कि इनपुट बढ़ने पर चरण कितनी तेज़ी से बढ़ते हैं।

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

  1. यह एक फीता है जिसमें खाने बने हैं। इस पर 01011 लिखा है, यानी संख्या 11। लाल सिर पहले अंक पर है।
  2. सिर सिर्फ़ तीन काम कर सकता है: एक खाना पढ़ना, एक खाना लिखना, एक खाना चलना। अभी वह एक खाना दाईं ओर चला।
  3. नियम 1: जब तक खाली खाना न मिले, दाईं ओर चलते रहो। देखो, सिर संख्या के अंत तक दौड़ता है।
  4. नियम 2: अब बाईं ओर लौटो। हर 1 को 0 बनाओ। पहला 0 मिले तो उसे 1 बना दो और रुक जाओ। 01011 से 01100 बना, यानी 12। हमने 1 जोड़ा!
  5. अब चरण गिनो। n अंक की संख्या में लगभग 2n + 1 चरण लगते हैं। लाल पट्टियाँ उस विधि की हैं जिसमें 2ⁿ चरण लगते हैं। वह बहुत तेज़ बढ़ती है।
  6. अपनी मर्ज़ी से खेलो। कोई भी संख्या चुनो और "चलाओ" दबाओ। चरण गिनो और जवाब जाँचो।

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

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

फीता अनंत क्यों माना जाता है?

ताकि मशीन की मेमोरी कभी खत्म न हो। असली कंप्यूटर में मेमोरी सीमित है, पर हम अनंत फीता मानकर देखते हैं कि सैद्धांतिक रूप से क्या संभव है।

क्या सिर सीधे दूर के खाने पर कूद सकता है?

नहीं। वह एक बार में एक ही खाना चलता है। इसीलिए चरण गिने जाते हैं और अंत तक जाने में हर अंक पर एक चरण लगता है।

मशीन पहले दाईं ओर क्यों जाती है?

उसे संख्या का अंत ढूँढना है, क्योंकि जोड़ना आख़िरी अंक से शुरू होता है।

बाएँ जाते हुए 1 से 0 क्यों बनता है?

1 में 1 जोड़ने पर 10 बनता है: 0 लिखो और 1 हासिल बाएँ अगले अंक पर ले जाओ, ठीक दशमलव के जोड़ की तरह।

2ⁿ चरण वाली विधि को बेकार क्यों कहते हैं?

हर अतिरिक्त इनपुट पर काम दुगुना हो जाता है। लाल पट्टियाँ जल्दी ऊपर निकल जाती हैं, इसलिए छोटे n पर भी सालों लग जाते हैं।

क्या ज़्यादा अंक का मतलब हमेशा ज़्यादा चरण है?

इस मशीन के लिए हाँ: लगभग हर अंक पर 2 चरण। स्लाइडर से बड़ी संख्याएँ चुनकर चरण गिनती की तुलना करो।

ट्यूरिंग मशीन क्या है?

सन 1936 में एलन ट्यूरिंग ने सबसे सरल कंप्यूटर की कल्पना की। इसके चार हिस्से हैं।

मशीन नियमों को एक-एक करके मानती है और रुकने वाली (halt) अवस्था में रुक जाती है। तब फीते पर जो लिखा है, वही उत्तर है।

उदाहरण: द्विआधारी संख्या में 1 जोड़ना

फीते पर 01011 है। हमें 01100 चाहिए।

अवस्थापढ़ालिखाचालअगली अवस्था
go (दाएँ)0 या 1वहीदाएँgo
goखालीखालीबाएँcarry
carry (हासिल)10बाएँcarry
carry0 या खाली1रुकोhalt

"carry में 1 पढ़ा तो 0 लिखो" वही है जो हम हाथ से जोड़ने में करते हैं: 1 + 1 = 10, 0 लिखो और 1 हासिल बाईं ओर ले जाओ।

चर्च–ट्यूरिंग थीसिस

लोगों ने कंप्यूटिंग के और भी मॉडल बनाए। अलोंज़ो चर्च ने फलनों (lambda calculus) से एक मॉडल बनाया, और बाद में असली प्रोग्रामिंग भाषाएँ आईं। हर बार पता चला कि ये सब ट्यूरिंग मशीन के बराबर शक्तिशाली हैं।

चर्च–ट्यूरिंग थीसिस कहती है: अगर कोई समस्या साफ़ क्रमवार विधि (एल्गोरिदम) से हल हो सकती है, तो उसे ट्यूरिंग मशीन भी हल कर सकती है।

इसे थीसिस कहते हैं, प्रमेय नहीं, क्योंकि "साफ़ क्रमवार विधि" एक विचार है, गणित की सटीक परिभाषा नहीं। इसलिए इसे सिद्ध नहीं किया जा सकता। पर लगभग 90 साल में कोई विपरीत उदाहरण नहीं मिला।

इसका एक नतीजा: कुछ काम किसी भी मशीन से कंप्यूट नहीं हो सकते। सबसे मशहूर है रुकने की समस्या (halting problem): कोई प्रोग्राम हर दूसरे प्रोग्राम के लिए हमेशा सही नहीं बता सकता कि वह रुकेगा या हमेशा चलता रहेगा।

जटिलता विश्लेषण: चरण गिनना

एल्गोरिदम सिर्फ़ सही होना काफ़ी नहीं, उसे काफ़ी तेज़ भी होना चाहिए। समय जटिलता पूछती है: इनपुट का आकार n हो, तो कितने चरण लगेंगे? हम छोटी बातें छोड़कर मुख्य बढ़त रखते हैं, Big O से।

चरणनामn दुगुना हो तो
nO(n) रैखिकलगभग 2 गुना
n²O(n²) द्विघातलगभग 4 गुना
2ⁿO(2ⁿ) घातांकीवर्ग हो जाता है! बेकार

हमारी 1 जोड़ने वाली मशीन में लगभग 2n + 1 चरण लगते हैं, इसलिए यह O(n) है। स्थान जटिलता इस्तेमाल हुई मेमोरी गिनती है, जैसे फीते के खाने।

वर्ग P उन समस्याओं का है जिनका बहुपद समय (n, n², n³ …) वाला एल्गोरिदम है। क्या हर वह समस्या जिसका उत्तर जाँचना आसान है, हल करना भी आसान है (P vs NP)? यह आज भी खुला प्रश्न है।

करके देखो: खुद ट्यूरिंग मशीन बनो

कागज़ की पट्टी लो और 7 डिब्बे बनाओ। बीच के पाँच डिब्बों में 0 1 1 0 1 लिखो। पहले अंक पर सिक्का रखो। सिर्फ़ ऊपर की नियम तालिका मानो। हर चाल पर अवस्था बोलो और चाल गिनो। फिर 3D में संख्या 13 चुनकर "चलाओ" दबाओ। पहले चरण का अंदाज़ा लगाओ, फिर जाँचो।

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

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

1. फीते पर 0 1 0 0 1 (9) है। 1 जोड़ने वाली मशीन चलाओ। अंत में फीता क्या होगा और कितने चरण लगेंगे?

सिर 5 अंकों पर दाईं ओर चलता है, हर अंक पर एक चरण (5 चरण), फिर खाली खाने पर (1 चरण), फिर बाएँ: अंतिम अंक 1 है, वह 0 बनता है और सिर बाएँ चलता है (1 चरण); अगला अंक 0 है, वह 1 बनता है और मशीन रुक जाती है (1 चरण)। अंतिम फीता 0 1 0 1 0 = 10। कुल 8 चरण।

2. एक एल्गोरिदम में 3n + 5 चरण लगते हैं। उसका Big O क्या है?

स्थिरांक 5 और गुणक 3 छोड़ दो। यह O(n) है।

3. एक एल्गोरिदम में n² चरण लगते हैं। n = 10 के लिए 100 चरण। n = 30 के लिए कितने?

30² = 900 चरण। n तीन गुना हुआ तो चरण 3² = 9 गुना हुए।

4. एक विधि में 2ⁿ चरण लगते हैं। कंप्यूटर 10⁹ चरण प्रति सेकंड करता है। क्या n = 60 संभव है?

2⁶⁰ लगभग 1.15 × 10¹⁸ चरण है। समय = 1.15 × 10¹⁸ / 10⁹ = 1.15 × 10⁹ सेकंड, यानी लगभग 36 साल। इसलिए n = 60 व्यावहारिक नहीं है।

5. ट्यूरिंग मशीन "go" अवस्था में खाली खाना पढ़ती है। तालिका के अनुसार वह क्या करेगी?

वह खाली लिखेगी, बाईं ओर चलेगी और "carry" अवस्था में जाएगी।

6. क्या एक साधारण लैपटॉप ऐसी समस्या हल कर सकता है जो कोई ट्यूरिंग मशीन नहीं कर सकती?

नहीं। चर्च–ट्यूरिंग थीसिस के अनुसार लैपटॉप जो भी एल्गोरिदम चलाता है, वह ट्यूरिंग मशीन पर भी चल सकता है। लैपटॉप बस तेज़ है।

आम गलतियाँ

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

1. ट्यूरिंग मशीन का कौन-सा हिस्सा चिह्न पढ़ता और लिखता है?
2. चर्च–ट्यूरिंग थीसिस के अनुसार एल्गोरिदम किससे हो सकता है?
3. एक एल्गोरिदम में 5n² + 2n चरण लगते हैं। उसका Big O है:
4. n बड़ा होने पर इनमें से सबसे तेज़ कौन बढ़ता है?
5. रुकने की समस्या (halting problem) क्या दिखाती है?

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

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

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

ट्यूरिंग ने ट्यूरिंग मशीन क्यों बनाई?

वे "क्या कंप्यूट हो सकता है" की साफ़ और सटीक परिभाषा चाहते थे। बहुत सरल मशीन से यह सिद्ध करना संभव हुआ कि कुछ समस्याओं का एल्गोरिदम होता ही नहीं।

क्या Big O चरणों की सटीक संख्या है?

नहीं। यह बड़े n के लिए सिर्फ़ बढ़त का क्रम बताता है। स्थिरांक और छोटे पद छोड़ दिए जाते हैं।

P vs NP क्या है?

प्रश्न है: अगर हल जल्दी जाँचा जा सकता है, तो क्या जल्दी ढूँढा भी जा सकता है? इसका उत्तर अभी किसी को नहीं पता।

पहले यह पढ़ें

आगे पढ़ें

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

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