📘 CodingMarble Learn

संगणनीयता (Computability): ट्यूरिंग मशीन और कंप्यूटर की सीमाएँ

ट्यूरिंग मशीन किसी भी कंप्यूटर का सरल मॉडल है: खानों वाला अनंत टेप, एक हेड जो एक बार में एक खाना पढ़ता-लिखता है, कुछ अवस्थाएँ (states) और संक्रमण नियमों की तालिका। जो कुछ एल्गोरिद्म गणना कर सकता है, ट्यूरिंग मशीन भी कर सकती है (चर्च-ट्यूरिंग थीसिस)। सार्वभौमिक ट्यूरिंग मशीन दूसरी मशीन के नियम टेप से पढ़कर उसे चलाती है। कुछ समस्याएँ, जैसे हॉल्टिंग समस्या, कोई भी एल्गोरिद्म कभी हल नहीं कर सकता: वे असंगणनीय (अनिर्णेय) हैं।

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

  1. ट्यूरिंग मशीन बहुत सरल है। इसमें खानों वाला लंबा टेप और एक हेड है। हेड एक बार में एक खाना पढ़ता है, एक चिह्न लिख सकता है और एक खाना बाएँ या दाएँ जाता है।
  2. मशीन हमेशा किसी एक अवस्था में होती है। नियम कहता है: इस अवस्था में यह चिह्न पढ़ो, तो यह लिखो, इधर चलो, और उस अवस्था में जाओ।
  3. देखो यह 1011 यानी ग्यारह में 1 जोड़ती है। हर 1, 0 बनता है और हासिल बाएँ जाता है। एक 0, 1 बनता है। जवाब 1100 यानी बारह। फिर मशीन रुक जाती है।
  4. सार्वभौमिक ट्यूरिंग मशीन दूसरी मशीन के नियम टेप से पढ़ती है, इनपुट के साथ। तो एक मशीन कोई भी मशीन चला सकती है। आज के कंप्यूटर ऐसे ही काम करते हैं।
  5. यह मशीन हमेशा आगे-पीछे चलती रहती है। ट्यूरिंग ने साबित किया कि कोई प्रोग्राम हर प्रोग्राम को जाँचकर हमेशा नहीं बता सकता कि वह रुकेगा या नहीं। यही हॉल्टिंग समस्या है।
  6. अब तुम: मशीन चुनो, बाइनरी संख्या लिखो, फिर "एक क़दम" या "चलाओ" दबाओ। क्या यह रुकती है?

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

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

इतनी सरल मशीन इतनी अहम क्यों है?

क्योंकि समय और टेप हो तो यह वह सब कर सकती है जो कोई भी कंप्यूटर करता है। इसकी सीमाएँ ही सब कंप्यूटरों की सीमाएँ हैं।

मशीन को कैसे पता चलता है क्या करना है?

सिर्फ़ अपनी अभी की अवस्था और पढ़े हुए एक चिह्न से। बाक़ी नियम-तालिका तय करती है।

हासिल बाएँ कैसे जाता है?

carry अवस्था में 1 पढ़ने का नियम 0 लिखता है और carry में रहते हुए बाएँ जाता है, तो यह 0 मिलने तक चलता रहता है।

क्या सच में एक मशीन बाक़ी हर मशीन चला सकती है?

हाँ। सार्वभौमिक मशीन दूसरी मशीन के नियम टेप से प्रोग्राम की तरह पढ़ती है और उन्हें मानती है।

क्या हम प्रोग्राम चलाकर बस इंतज़ार नहीं कर सकते कि रुकता है या नहीं?

रुक गया तो पता चल जाएगा। पर अगर अभी तक नहीं रुका, तो नहीं कह सकते कि कभी नहीं रुकेगा। इंतज़ार से जवाब नहीं मिलता।

संगणनीयता क्या है?

संगणनीयता (computability) पूछती है: असीमित समय और मेमोरी हो, तो कौन-सी समस्याएँ किसी एल्गोरिद्म से हल हो सकती हैं? यह जटिलता (complexity) से अलग है, जो पूछती है कि हल होने वाली समस्या कितनी जल्दी हल होती है।

जवाब के लिए एलन ट्यूरिंग (1936) ने एक बहुत सरल काल्पनिक मशीन सोची। अगर यह सरल मशीन वह सब कर सकती है जो कोई भी कंप्यूटर करता है, तो इसकी सीमाएँ सभी कंप्यूटरों की सीमाएँ हैं।

ट्यूरिंग मशीन के भाग: टेप, अवस्थाएँ, संक्रमण नियम

नियमों को अवस्था संक्रमण आरेख (अवस्थाओं के गोले, तीरों पर पढ़ा / लिखा, चाल) या तालिका में लिखते हैं। मेमोरी असीमित है, इसीलिए ट्यूरिंग मशीन फ़ाइनाइट स्टेट मशीन से ज़्यादा ताक़तवर है।

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

मशीन "बाइनरी संख्या में 1 जोड़ो"। हेड सबसे दाएँ अंक पर, अवस्था carry में शुरू।

1011 का ट्रेस: 1011 → 1010 → 1000 → 1100, HALT। 11 + 1 = 12 ✓। परीक्षा में हर क़दम के बाद टेप और अवस्था लिखते हैं।

सार्वभौमिक ट्यूरिंग मशीन और चर्च-ट्यूरिंग थीसिस

सार्वभौमिक ट्यूरिंग मशीन (UTM) अपने टेप पर किसी दूसरी ट्यूरिंग मशीन M का कोड किया हुआ विवरण और M का इनपुट लेती है। फिर ठीक M की तरह काम करती है। यानी एक तय मशीन कोई भी प्रोग्राम चला सकती है जो उसे डेटा की तरह दिया जाए।

यही संग्रहित-प्रोग्राम (वॉन न्यूमैन) कंप्यूटर का विचार है: प्रोग्राम और डेटा एक ही मेमोरी में, और एक प्रोसेसर कोई भी प्रोग्राम चलाता है। इंटरप्रेटर और एमुलेटर भी इसी से समझ आते हैं।

चर्च-ट्यूरिंग थीसिस: जो कुछ भी किसी चरण-दर-चरण तरीक़े से गणना हो सकता है, वह ट्यूरिंग मशीन से हो सकता है। यह थीसिस है (व्यापक रूप से मान्य), प्रमाण नहीं।

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

हॉल्टिंग समस्या: कोई भी प्रोग्राम और उसका इनपुट दिया हो, तो बताओ वह कभी रुकेगा या हमेशा चलता रहेगा।

ट्यूरिंग ने साबित किया कि हर प्रोग्राम के लिए यह कोई एल्गोरिद्म नहीं बता सकता। प्रमाण का विचार: मान लो HALTS(P, x) हमेशा सही बताता है। TROUBLE(P) बनाओ: अगर HALTS(P, P) कहे "रुकेगा", तो हमेशा लूप करो; वरना रुक जाओ। अब TROUBLE(TROUBLE) का क्या? अगर रुका, तो उसे लूप करना था; अगर लूप किया, तो उसे रुकना था। विरोधाभास, इसलिए HALTS हो ही नहीं सकता।

हाँ/ना वाली जिस समस्या का कोई एल्गोरिद्म हमेशा जवाब न दे सके, वह अनिर्णेय (undecidable) है। एक और उदाहरण: क्या दो प्रोग्राम हमेशा एक जैसा आउटपुट देते हैं। यानी कुछ समस्याएँ असंगणनीय हैं, कंप्यूटर कितने भी तेज़ हो जाएँ।

निर्णेय, सुसाध्य और दुःसाध्य

करके देखो: ख़ुद मशीन बनो

काग़ज़ पर खानों में 0111 लिखो। आख़िरी अंक के नीचे एक सिक्का रखो: यही हेड है। "1 जोड़ो" के तीन नियम मानो, सिक्का खिसकाओ और अंक बदलो। आख़िर में 1000 आना चाहिए। फिर अपनी नियम-तालिका बनाओ जो दाएँ चलते हुए हर बिट उलट दे (0 ↔ 1), और 3D के आख़िरी चरण में जाँचो।

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

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

1. "1 जोड़ो" मशीन को 0111 पर ट्रेस करो (हेड आख़िरी अंक पर, अवस्था carry)।

011<u>1</u> → 01<u>1</u>0 → 0<u>1</u>00 → <u>0</u>000 → 1000, HALT। 7 + 1 = 8 ✓। चार क़दम।

2. ऐसी मशीन के नियम लिखो जो सबसे बाएँ अंक से शुरू होकर हर बिट उलटे और पहले ख़ाली खाने पर रुके।

δ(F, 0) = (F, 1, R); δ(F, 1) = (F, 0, R); δ(F, _) = (HALT, _, –)। 1011 पर टेप 0100 बन जाता है।

3. सार्वभौमिक ट्यूरिंग मशीन को आधुनिक कंप्यूटर का मॉडल क्यों माना जाता है?

क्योंकि यह दूसरी मशीन के निर्देश डेटा वाले टेप पर ही रखकर चलाती है: जैसे कंप्यूटर प्रोग्राम और डेटा मेमोरी में रखता है और CPU प्रोग्राम चलाता है।

आम गलतियाँ

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

1. ट्यूरिंग मशीन पढ़ती है:
2. ट्यूरिंग मशीन फ़ाइनाइट स्टेट मशीन से ज़्यादा ताक़तवर क्यों है?
3. सार्वभौमिक ट्यूरिंग मशीन:
4. हॉल्टिंग समस्या है:
5. चर्च-ट्यूरिंग थीसिस कहती है:

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

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

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

आसान शब्दों में ट्यूरिंग मशीन क्या है?

एक काल्पनिक मशीन जिसमें खानों वाला टेप, एक बार में एक खाना पढ़ने-लिखने वाला हेड, कुछ अवस्थाएँ और नियम होते हैं। यह किसी भी कंप्यूटर का मॉडल है।

हॉल्टिंग समस्या क्या है?

यह सवाल कि कोई प्रोग्राम दिए इनपुट पर रुकेगा या हमेशा चलेगा। ट्यूरिंग ने साबित किया कि हर प्रोग्राम के लिए कोई एल्गोरिद्म यह नहीं बता सकता।

संगणनीयता और जटिलता में क्या अंतर है?

संगणनीयता पूछती है कि समस्या एल्गोरिद्म से हल हो सकती है या नहीं; जटिलता पूछती है कि हल होने वाली समस्या कितना समय या मेमोरी लेती है।

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

नीदरलैंड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)

पहले यह पढ़ें

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

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