मैंने थोड़ी देर में सोचा कि क्या एक और उत्तर जोड़ना है। अन्य प्रश्न उसके प्रश्न ("ट्यूरिंग पूर्ण", "टॉटोलॉजी" और इसी तरह) के मध्य पर केंद्रित हैं। मुझे पहले और अंतिम भाग को पकड़ने दें, और इस प्रकार बड़ा और थोड़ा दार्शनिक चित्र:
लेकिन इसका मतलब क्या है?
ट्यूरिंग का पूरा मतलब क्या है?
क्या ट्यूरिंग मशीन की क्षमताओं को परिभाषित करने के लिए सिर्फ यह कहे बिना "एक और ट्यूरिंग मशीन का अनुकरण करने में सक्षम" होने का एक तरीका है?
अनौपचारिक रूप से कहा जाए, तो ट्यूरिंग पूरा होने का मतलब है कि आपका तंत्र किसी भी एल्गोरिथ्म को चला सकता है, जिसके बारे में आप सोच सकते हैं, चाहे वह कितना भी जटिल, गहरा, पुनरावर्ती, जटिल, लंबा (कोड के संदर्भ में) हो, और इससे कोई फर्क नहीं पड़ता कि कितना संग्रहण या समय होगा। इसका मूल्यांकन करने की आवश्यकता है। यह कह रही है कि यह केवल सफल होता है समस्या गणना कर सका है बिना चला जाता है, लेकिन अगर यह है गणनीय है, यह होगा सफल होने (पड़ाव)।
(एनबी: यह "अनौपचारिक" क्यों है, यह जानने के लिए, चर्च-ट्यूरिंग थीसिस की जांच करें जो उन पंक्तियों के साथ जाती है, अधिक विस्तृत शब्दों के साथ; एक थीसिस होने के नाते, यह सही नहीं हो सकता है, हालांकि @DididRicherby के लिए धन्यवाद। एक टिप्पणी में इस छोटी सी चूक की ओर इशारा करते हुए।)
"एल्गोरिथम" का अर्थ है जिसे हम आमतौर पर आज के कंप्यूटर एल्गोरिथ्म के रूप में समझते हैं; यानी, असतत चरणों की एक श्रृंखला भंडारण में हेरफेर करती है, जिसमें कुछ नियंत्रण तर्क मिश्रित होते हैं। हालांकि, यह ओरेकल मशीन की तरह नहीं है, अर्थात, यह "अनुमान" नहीं लगा सकता है।
एक व्यावहारिक गैर-टीसी भाषा के लिए उदाहरण
यदि आपने अपने आप को क्रमादेशित किया है, तो आप शायद नियमित रूप से अभिव्यक्ति जानते हैं, कुछ पैटर्न से तार मिलाते थे।
यह एक निर्माण का एक उदाहरण है जो ट्यूरिंग कम्प्लीट नहीं है । आप आसानी से अभ्यास पा सकते हैं जहां कुछ वाक्यांशों से मेल खाने वाली एक नियमित अभिव्यक्ति बनाने के लिए बस असंभव है।
उदाहरण के लिए (और इसने वास्तविक वास्तविक अनुप्रयोगों में कई प्रोग्रामर को निश्चित रूप से परेशान कर दिया है), यह एक प्रोग्रामिंग भाषा या एक्सएमएल दस्तावेज़ से मेल खाने वाली एक नियमित अभिव्यक्ति बनाने के लिए सैद्धांतिक और व्यावहारिक रूप से असंभव है: ब्लॉक संरचना को खोजने के लिए एक regexp के लिए यह असंभव है ( do ... end
या { ... }
XML दस्तावेज़ों में टैग खोलने, और बंद करने के लिए) यदि उन्हें मनमाने ढंग से गहरे होने की अनुमति है। यदि वहां कोई सीमा है, उदाहरण के लिए आपके पास "पुनरावृत्ति" के केवल 3 स्तर हो सकते हैं, तो आप एक नियमित अभिव्यक्ति पा सकते हैं; लेकिन अगर यह सीमित नहीं है, तो यह एक नहीं है।
जैसा कि स्पष्ट रूप से एक ट्यूरिंग-कम्प्लीट लैंग्वेज (जैसे C) में पार्स सोर्स कोड (कोई भी कंपाइलर करता है) में प्रोग्राम बनाना संभव है, रेगुलर एक्सप्रेशंस कभी भी उक्त प्रोग्राम का अनुकरण नहीं कर पाएंगे, इसलिए वे परिभाषा के अनुसार ट्यूरिंग-पूर्ण नहीं हैं।
प्रेरणा
अपने आप में ट्यूरिंग मशीन का विचार कुछ भी व्यावहारिक नहीं है; उदाहरण के लिए, चार्ल्स बबेज या वॉन न्यूमैन के विपरीत, ट्यूरिंग ने निश्चित रूप से एक वास्तविक कंप्यूटर या ऐसा कुछ बनाने के लिए इसका आविष्कार नहीं किया था। ट्यूरिंग मशीन की अवधारणा होने की बात यह है कि यह अत्यधिक सरल है। यह लगभग कुछ भी नहीं के होते हैं। यह संभव न्यूनतम करने के लिए (और वास्तविक) कंप्यूटरों को कम करता है।
इस सरलीकरण की बात, बदले में, यह सैद्धांतिक प्रश्नों के बारे में विचार करना आसान बनाता है (जैसे कि समस्याओं को हल करना, जटिलता कक्षाएं और जो सैद्धांतिक कंप्यूटर विज्ञान खुद को परेशान करता है)। विशेष रूप से एक विशेषता यह है कि आमतौर पर यह सत्यापित करना बहुत आसान होता है कि क्या किसी भाषा या कंप्यूटर में ट्यूरिंग मशीन को बस प्रोग्रामिंग करके कहा जा सकता है कि उस भाषा में ट्यूरिंग मशीन (जो इतना आसान है!)।
अनन्त तक
ध्यान दें कि आपको अनंत समय या भंडारण की आवश्यकता नहीं है ; लेकिन समय और भंडारण दोनों अबाधित हैं। उनके पास हर एक कम्प्यूटेशनल रन के लिए एक अधिकतम मूल्य होगा, लेकिन यह कोई सीमा नहीं है कि मूल्य कितना बड़ा हो सकता है। तथ्य यह है कि एक असली कंप्यूटर अंततः रैम से बाहर चलेगा, यहाँ पर चमक रहा है; यह निश्चित रूप से किसी भी भौतिक कंप्यूटर के लिए एक सीमा है, लेकिन यह भी स्पष्ट है और मशीन के सैद्धांतिक "कंप्यूटिंग शक्ति" के लिए कोई दिलचस्पी नहीं है। इसके अलावा, हमें इस बारे में कोई दिलचस्पी नहीं है कि यह वास्तव में कितना समय लेता है। तो हमारी छोटी मशीन समय और स्थान की मनमानी मात्रा का उपयोग कर सकती है, जो इसे बिल्कुल अव्यवहारिक बनाती है।
... और इसके बाद में
एक विस्मयकारी अंतिम बिंदु, तो, यह है कि इस तरह की एक सरल, सरल चीज वह सब कुछ कर सकती है जो कोई भी कल्पनीय वास्तविक कंप्यूटर कभी भी , पूरे ब्रह्मांड में कर सकता है, पूरा कर सकता है (बस बहुत धीमा) - कम से कम जहां तक हम आज जानते हैं।