ट्यूरिंग-पूर्णता एक बात और केवल एक ही बात कहती है: कम्प्यूटिंग का एक मॉडल ट्यूरिंग-पूर्ण है, अगर किसी भी गणना को ट्यूरिंग मशीन द्वारा मॉडल किया जा सकता है, तो उस मॉडल द्वारा भी मॉडल बनाया जा सकता है।
तो, एक ट्यूरिंग मशीन मॉडल क्या गणना कर सकते हैं? खैर, सबसे पहले और सबसे महत्वपूर्ण, एलन ट्यूरिंग और उनके सभी सहयोगी केवल प्राकृतिक संख्याओं के कार्यों में ही रुचि रखते थे। तो, ट्यूरिंग मशीन (और λ-पथरी, एसके कॉम्बिनेटर पथरी, μ-पुनरावर्ती कार्य, ...) केवल प्राकृतिक संख्याओं पर कार्यों की संगणना के बारे में बात करते हैं। यदि आप प्राकृतिक संख्याओं पर एक फ़ंक्शन के बारे में बात नहीं कर रहे हैं, तो ट्यूरिंग-पूर्णता की अवधारणा भी समझ में नहीं आती है, यह बस लागू नहीं है।
ध्यान दें, हालांकि, हम प्राकृतिक संख्याओं के रूप में बहुत सी दिलचस्प चीजों को सांकेतिक शब्दों में बदल सकते हैं। हम स्ट्रिंग्स को प्राकृतिक संख्याओं के रूप में एन्कोड कर सकते हैं, हम ग्राफों को प्राकृतिक संख्याओं के रूप में एन्कोड कर सकते हैं, हम बूलियनों को प्राकृतिक नंबरों के रूप में एन्कोड कर सकते हैं। हम ट्यूरिंग मशीनों को प्राकृतिक संख्या के रूप में एन्कोड कर सकते हैं , जो हमें ट्यूरिंग मशीनें बनाने की अनुमति देती है जो ट्यूरिंग मशीनों के बारे में बात करते हैं!
और, ज़ाहिर है, प्राकृतिक संख्याओं पर सभी कार्य कम्प्यूटेशनल नहीं हैं। ट्यूरिंग मशीन केवल प्राकृतिक संख्याओं पर कुछ कार्यों की गणना कर सकती है , λ-पथरी केवल प्राकृतिक संख्याओं पर कुछ कार्यों की गणना कर सकती है , एसके कॉम्बिनेटर कलन केवल प्राकृतिक संख्याओं पर कुछ कार्यों की गणना कर सकती है ,…। हैरानी की बात है (या नहीं), यह पता चला है कि गणना का प्रत्येक मॉडल (जो वास्तव में हमारे भौतिक ब्रह्मांड में साकार होता है) समान संख्याओं को प्राकृतिक संख्याओं पर कम से कम गणना कर सकता है (कम से कम अब तक हमने पाया सभी मॉडलों के लिए)। [नोट: जाहिर है, गणना के कमजोर मॉडल हैं, लेकिन हम अभी तक एक ऐसा नहीं मिला है जो मजबूत हो, कुछ ऐसे जो स्पष्ट रूप से हमारे भौतिक ब्रह्मांड के साथ असंगत हैं, जैसे कि वास्तविक संख्या या समय यात्रा का उपयोग करने वाले मॉडल।]
यह तथ्य, कि बहुत सारे विभिन्न मॉडलों की खोज के लंबे समय के बाद, हम पाते हैं, हर एक समय, कि वे बिल्कुल समान कार्यों की गणना कर सकते हैं , चर्च-ट्यूरिंग-थीसिस के लिए आधार है, जो कहता है (लगभग) गणना के मॉडल समान रूप से शक्तिशाली हैं, और उन सभी ने "आदर्श" की धारणा पर कब्जा कर लिया है जिसका अर्थ है "कम्प्यूटेबल" होना। (CTT का एक दूसरा, अधिक दार्शनिक पहलू भी है, जिसका अर्थ यह है कि एक एल्गोरिथ्म का पालन करने वाला मनुष्य भी ठीक उसी तरह की गणना कर सकता है, जैसा कि एक TM गणना कर सकता है और इससे अधिक नहीं।)
हालाँकि , इस बारे में कोई भी कुछ नहीं कहता है
- विभिन्न मॉडल कितने कुशल हैं
- उपयोग करने के लिए वे कितने सुविधाजनक हैं
- वे प्राकृतिक संख्याओं पर गणना कार्यों के अलावा और क्या कर सकते हैं
और है कि ठीक है, जहां (और प्रोग्रामिंग भाषाओं) अभिकलन के विभिन्न मॉडल के बीच मतभेद भूमिका निभाते हैं।
O(sizearray)O(size2array)sizearraysizearray
विभिन्न सुविधा के लिए एक उदाहरण के रूप में, आप बस एक बहुत ही उच्च-स्तरीय भाषा में लिखे गए कोड, असेंबली में लिखे गए कोड और उसी समस्या को हल करने के लिए एक TM के विवरण की तुलना कर सकते हैं।
और आपका प्रकाश स्विच तीसरे प्रकार के अंतर का एक उदाहरण है, चीजें जो कुछ मॉडल कर सकते हैं जो प्राकृतिक संख्याओं पर कार्य नहीं करते हैं और इस प्रकार ट्यूरिंग-पूर्णता के साथ कुछ भी नहीं है।
अपने विशिष्ट प्रश्नों के उत्तर देने के लिए:
लेकिन क्या ट्यूरिंग पूरी भाषा में लिखे गए किसी प्रोग्राम को दूसरे में दोबारा लिखा जा सकता है?
केवल तभी यदि प्रोग्राम प्राकृतिक संख्याओं पर ट्यूरिंग-कम्प्यूटेबल फ़ंक्शन की गणना करता है। और फिर भी, इसे एक जटिल एन्कोडिंग की आवश्यकता हो सकती है। उदाहरण के लिए, λ-पथरी में प्राकृतिक संख्याएं भी नहीं होती हैं, उन्हें फ़ंक्शन का उपयोग करके एन्कोडेड करने की आवश्यकता होती है (क्योंकि फ़ंक्शन केवल एक चीज है λ-पथरी में)।
एल्गोरिथ्म को व्यक्त करने के रूप में इनपुट और आउटपुट का यह एन्कोडिंग बहुत जटिल हो सकता है। इसलिए, जबकि यह सच है कि किसी भी कार्यक्रम को फिर से लिखा जा सकता है, फिर से लिखा गया कार्यक्रम बहुत अधिक जटिल हो सकता है, बहुत बड़ा हो सकता है, बहुत अधिक स्मृति का उपयोग कर सकता है, और बहुत धीमा हो सकता है।
यदि मेरी विधानसभा में एक LIGHTBUTTON ओपकोड हो तो क्या होगा? मैं शारीरिक रूप से उस भाषा को सिस्टम पर (भाषा) बिना लाइटबुल के अनुकरण नहीं कर सकता।
एक लाइटबल्ब प्राकृतिक संख्याओं पर ट्यूरिंग-कम्प्यूटेबल फ़ंक्शन नहीं है। वास्तव में, एक लाइटबल्ब न तो एक फ़ंक्शन है और न ही एक संगणना। लाइटबल्ब को चालू और बंद करना एक I / O साइड-इफेक्ट है। ट्यूरिंग मशीनें I / O साइड-इफेक्ट्स का मॉडल नहीं बनाती हैं, और ट्यूरिंग-पूर्णता उनके लिए प्रासंगिक नहीं है।
मनमानी वास्तविक संख्या पर।
ट्यूरिंग-पूर्णता केवल प्राकृतिक नंबरों पर कम्प्यूटेशनल कार्यों से संबंधित है, यह वास्तविक संख्याओं के साथ ही चिंता नहीं करता है।
ट्यूरिंग-पूर्णता बहुत ही रोचक नहीं है जब यह दो कारणों से आपके जैसे प्रश्नों के लिए आता है:
- यह बहुत ऊंची बाधा नहीं है। आप सभी की जरूरत है
IF
, GOTO
, WHILE
, और एक एकल पूर्णांक चर (चर संभालने मनमाने ढंग से बड़े पूर्णांकों हो सकते हैं)। या, पुनरावृत्ति। बहुत सारे और बहुत सारे सामान ट्यूरिंग-पूर्ण है। कार्ड गेम मैजिक: द गैदरिंग ट्यूरिंग-पूर्ण है। CSS3 ट्यूरिंग-पूर्ण है। sendmail
विन्यास फाइल ट्यूरिंग-पूर्ण है। Intel x86 MMU ट्यूरिंग-पूर्ण है। Intel x86 MOV
निर्देश ट्यूरिंग-पूर्ण है। PowerPoint एनिमेशन ट्यूरिंग-पूर्ण हैं। एक्सेल (स्क्रिप्टिंग के बिना, केवल सूत्रों का उपयोग करके) ट्यूरिंग-पूर्ण है। बीजीपी रूटिंग प्रोटोकॉल ट्यूरिंग-पूर्ण है। sed
ट्यूरिंग-पूर्ण है। अपाचे mod_rewrite
नियम ट्यूरिंग-पूर्ण हैं। Google के लिए " (गलती से या आश्चर्यजनक रूप से) पूरी तरह से ट्यूरिंग"कुछ अन्य दिलचस्प उदाहरण खोजने के लिए। यदि लगभग सब कुछ ट्यूरिंग-पूर्ण है, तो ट्यूरिंग-पूर्ण होना एक दिलचस्प संपत्ति है।
- वास्तव में उपयोगी होना आवश्यक नहीं है। उपयोगी सामग्री के बहुत सारे नहीं है ट्यूरिंग-पूर्ण। 3 संस्करण से पहले सीएसएस ट्यूरिंग-पूर्ण (और तथ्य यह है कि CSS3 नहीं है है वास्तव में किसी के द्वारा नहीं किया जाता है)। 1999 से पहले एसक्यूएल ट्यूरिंग-पूर्ण नहीं था, फिर भी, यह तब भी काफी उपयोगी था। अतिरिक्त पुस्तकालयों के बिना C प्रोग्रामिंग भाषा ट्यूरिंग-पूर्ण प्रतीत नहीं होती है । आश्रित-टाइप की गई भाषाएं परिभाषा से अधिक या कम होती हैं, ट्यूरिंग-पूर्ण नहीं, फिर भी, आप ऑपरेटिंग सिस्टम, वेब सर्वर और उन में गेम लिख सकते हैं।
इडरिस के लेखक एडविन ब्रैडी ने इनमें से कुछ पहलुओं के बारे में बात करने के लिए "टेट्रिस-पूर्ण" शब्द का उपयोग किया है। टेट्रिस-पूर्ण होने को कड़ाई से परिभाषित नहीं किया गया है (स्पष्ट "के अलावा अन्य को टेट्रिस को लागू करने के लिए इस्तेमाल किया जा सकता है"), लेकिन इसमें उच्च-स्तरीय होने और पर्याप्त रूप से अभिव्यंजक जैसे सामान को शामिल किया गया है जिसे आप पागल होने के बिना गेम लिख सकते हैं, सक्षम होने के नाते बाहरी दुनिया के साथ बातचीत (इनपुट और आउटपुट), साइड-इफेक्ट्स को व्यक्त करने में सक्षम होना, एक ईवेंट लूप को लिखने में सक्षम होना, प्रतिक्रियाशील, अतुल्यकालिक और समवर्ती प्रोग्रामिंग को व्यक्त करने में सक्षम होना, ऑपरेटिंग सिस्टम के साथ बातचीत करने में सक्षम होना, सक्षम होना। विदेशी पुस्तकालयों के साथ बातचीत करने के लिए (दूसरे शब्दों में: कॉल करने में सक्षम होने और सी कोड द्वारा बुलाया जा सकता है) और इसी तरह। ट्यूरिंग-पूर्णता की तुलना में सामान्य प्रयोजन प्रोग्रामिंग भाषा की बहुत अधिक रोचक विशेषताएं हैं।
आपको दिलचस्प से जुड़े सवाल का जवाब मिल सकता है , जो कुछ अलग बिंदुओं पर छूता है, भले ही यह एक अलग सवाल का जवाब देता हो।