जवाबों:
यहाँ संक्षिप्त विवरण है:
ट्यूरिंग कम्प्लीट सिस्टम का मतलब एक ऐसी प्रणाली है जिसमें एक प्रोग्राम लिखा जा सकता है जो एक उत्तर देगा (हालांकि रनटाइम या मेमोरी के बारे में कोई गारंटी नहीं है)।
इसलिए, अगर कोई कहता है कि "मेरी नई चीज़ ट्यूरिंग कम्प्लीट है" जिसका अर्थ सिद्धांत में है (हालांकि अक्सर व्यवहार में नहीं है) इसका उपयोग किसी भी संगणना समस्या को हल करने के लिए किया जा सकता है।
शायद ही कभी यह एक मजाक है ... एक आदमी ने vi में एक ट्यूरिंग मशीन सिम्युलेटर लिखा था, इसलिए यह कहना संभव है कि vi दुनिया में कभी भी आवश्यक एकमात्र कम्प्यूटेशनल इंजन है।
यहाँ सबसे सरल व्याख्या है
एलन ट्यूरिंग ने एक मशीन बनाई जो एक कार्यक्रम ले सकती है, उस कार्यक्रम को चला सकती है, और कुछ परिणाम दिखा सकती है। लेकिन तब उन्हें अलग-अलग कार्यक्रमों के लिए अलग-अलग मशीनें बनानी पड़ीं। इसलिए उन्होंने "यूनिवर्सल ट्यूरिंग मशीन" बनाई जो किसी भी कार्यक्रम को ले सकती है और उसे चला सकती है।
प्रोग्रामिंग भाषाएँ उन मशीनों के समान हैं (हालांकि आभासी)। वे कार्यक्रम लेते हैं और उन्हें चलाते हैं। अब, एक प्रोग्रामिंग भाषा को "ट्यूरिंग कम्प्लीट" कहा जाता है, यदि वह किसी भी प्रोग्राम (भाषा के बावजूद) को चला सकती है, ताकि ट्यूरिंग मशीन पर्याप्त समय और मेमोरी दे सके।
उदाहरण के लिए: मान लीजिए कि एक प्रोग्राम है जो 10 नंबर लेता है और उन्हें जोड़ता है। ट्यूरिंग मशीन इस प्रोग्राम को आसानी से चला सकती है। लेकिन अब कल्पना करें कि किसी कारण से आपकी प्रोग्रामिंग भाषा समान जोड़ नहीं दे सकती है। यह इसे "ट्यूरिंग अपूर्ण" (बोलने के लिए) बना देगा। दूसरी ओर, अगर यह किसी भी प्रोग्राम को चला सकता है जो यूनिवर्सल ट्यूरिंग मशीन चला सकता है, तो यह ट्यूरिंग पूरा हो गया है।
अधिकांश आधुनिक प्रोग्रामिंग लैंग्वेज (जैसे जावा, जावास्क्रिप्ट, पर्ल, आदि) पूरी तरह से ट्यूरिंग हैं क्योंकि वे प्रत्येक प्रोग्राम को चलाने के लिए आवश्यक सभी सुविधाओं को लागू करते हैं जैसे कि जोड़, गुणा, अगर-और शर्त, रिटर्न स्टेटमेंट, स्टोर करने / पुनः प्राप्त करने / मिटाने के तरीके डेटा और इतने पर।
अपडेट: आप मेरे ब्लॉग पोस्ट पर अधिक जान सकते हैं: "जावास्क्रिप्ट इज ट्यूरिंग कम्प्लीट" - समझाया गया
से विकिपीडिया :
ट्यूरिंग पूर्णता, एलन ट्यूरिंग के नाम पर, यह महत्वपूर्ण है कि कंप्यूटिंग डिवाइस के लिए अब तक के प्रत्येक प्रशंसनीय डिज़ाइन को सार्वभौमिक ट्यूरिंग मशीन द्वारा अनुकरण किया जा सकता है - एक अवलोकन जिसे चर्च-ट्यूरिंग थीसिस के रूप में जाना जाता है। इस प्रकार, एक मशीन जो एक सार्वभौमिक ट्यूरिंग मशीन के रूप में कार्य कर सकती है, सिद्धांत रूप में, किसी भी गणना को निष्पादित कर सकती है जो किसी भी अन्य प्रोग्राम योग्य कंप्यूटर में सक्षम है। हालांकि, मशीन के लिए एक कार्यक्रम लिखने के लिए आवश्यक प्रयास से इसका कोई लेना-देना नहीं है, मशीन को गणना करने में लगने वाला समय, या मशीन के पास कोई भी क्षमता हो सकती है जो कि गणना के लिए असंबंधित हो।
हालांकि सही मायने में ट्यूरिंग-पूर्ण मशीनें भौतिक रूप से असंभव हैं, क्योंकि उन्हें असीमित भंडारण की आवश्यकता होती है, ट्यूरिंग पूर्णता को अक्सर उन भौतिक मशीनों या प्रोग्रामिंग भाषाओं के लिए जिम्मेदार ठहराया जाता है जो असीमित भंडारण होने पर सार्वभौमिक होंगी। सभी आधुनिक कंप्यूटर इस अर्थ में ट्यूरिंग-पूर्ण हैं।
मुझे नहीं पता कि आप इससे ज्यादा गैर-तकनीकी कैसे हो सकते हैं, सिवाय इसके कि "ट्यूरिंग का मतलब पूरा करने में सक्षम 'पर्याप्त समय और स्थान दिए गए कम्प्यूटेशनल समस्या का जवाब देने में सक्षम है"।
ट्यूरिंग पूरी भाषा वह है जो किसी भी संगणना का प्रदर्शन कर सकती है। चर्च-ट्यूरिंग थीसिस कहा गया है कि किसी भी performable गणना एक ट्यूरिंग मशीन द्वारा किया जा सकता। एक ट्यूरिंग मशीन अनंत रैंडम एक्सेस मेमोरी और एक परिमित 'कार्यक्रम' के साथ एक मशीन है कि तय कर जब यह पढ़ना चाहिए, लिखने, और कहा कि स्मृति के पार कदम, जब यह एक निश्चित परिणाम के साथ समाप्त करना चाहिए, और क्या यह आगे क्या करना चाहिए। ट्यूरिंग मशीन का इनपुट शुरू होने से पहले उसकी मेमोरी में डाल दिया जाता है।
एक ट्यूरिंग मशीन क्या यह स्मृति में देखता है के आधार पर निर्णय कर सकते हैं - 'भाषा' है कि केवल समर्थन करता है +
, -
, *
, और /
पूर्णांकों पर ट्यूरिंग पूरा नहीं कर रहा है क्योंकि यह अपनी इनपुट के आधार पर एक विकल्प नहीं कर सकता है, लेकिन एक ट्यूरिंग मशीन कर सकते हैं।
ट्यूरिंग मशीन हमेशा के लिए चल सकती है - अगर हमने जावा, जावास्क्रिप्ट, या पायथन लिया और किसी भी प्रकार के लूप, गोटो या फंक्शन कॉल को करने की क्षमता को हटा दिया, तो यह ट्यूरिंग पूर्ण नहीं होगा क्योंकि यह एक मनमाना संगणना नहीं कर सकता है कभी खत्म नहीं होता। Coq एक प्रमेय कहावत है कि ऐसे कार्यक्रमों को व्यक्त नहीं किया जा सकता है जो समाप्त नहीं करते हैं, इसलिए यह ट्यूरिंग पूर्ण नहीं है।
ट्यूरिंग मशीन अनंत मेमोरी का उपयोग कर सकती है - एक भाषा जो बिल्कुल जावा की तरह थी, लेकिन एक बार समाप्त हो जाने पर यह 4 गीगाबाइट्स से अधिक मेमोरी का उपयोग करती है, ट्यूरिंग पूर्ण नहीं होगी, क्योंकि ट्यूरिंग मशीन अनंत मेमोरी का उपयोग कर सकती है। यही कारण है कि हम वास्तव में एक ट्यूरिंग मशीन का निर्माण नहीं कर सकते हैं , लेकिन जावा अभी भी एक ट्यूरिंग पूरी भाषा है क्योंकि जावा भाषा में इसे अनंत स्मृति का उपयोग करने से रोकने वाला कोई प्रतिबंध नहीं है। यह एक कारण है कि नियमित अभिव्यक्तियाँ ट्यूरिंग पूर्ण नहीं हैं।
ट्यूरिंग मशीन में रैंडम एक्सेस मेमोरी होती है - एक ऐसी भाषा जो आपको मेमोरी के साथ काम करने देती है push
और pop
एक स्टैक के संचालन के साथ ट्यूरिंग पूर्ण नहीं होगी। अगर मेरे पास एक 'भाषा' है, जो एक बार एक स्ट्रिंग पढ़ती है और केवल स्टैक से पुश और पॉपिंग करके मेमोरी का उपयोग कर सकती है, तो यह मुझे बता सकता है कि क्या (
स्ट्रिंग में प्रत्येक का )
बाद में धक्का होता है जब यह देखता है (
और जब यह देखता है तो पॉपिंग करता है )
। हालाँकि, यह मुझे नहीं बता सकता है कि प्रत्येक (
का अपना )
बाद में है और प्रत्येक [
का अपना ]
बाद में है (ध्यान दें कि ([)]
यह मानदंड पूरा ([]]
करता है, लेकिन नहीं)। एक ट्यूरिंग मशीन ट्रैक करने के लिए रैंडम एक्सेस मेमोरी का उपयोग कर सकते ()
है और[]
अलग से है, लेकिन केवल एक ढेर के साथ इस भाषा नहीं कर सकते।
ट्यूरिंग मशीन किसी अन्य ट्यूरिंग मशीन का अनुकरण कर सकती है - एक ट्यूरिंग मशीन, जब एक उपयुक्त 'प्रोग्राम' दिया जाता है, तो ट्यूरिंग मशीन के 'प्रोग्राम' को ले सकता है और मनमाने इनपुट पर अनुकरण कर सकता है। यदि आपके पास एक ऐसी भाषा है जिसे पायथन इंटरप्रेटर लागू करने से मना किया गया था, तो यह ट्यूरिंग पूरा नहीं होगा।
यदि आपकी भाषा में अनंत रैंडम एक्सेस मेमोरी, सशर्त निष्पादन और बार-बार निष्पादन के कुछ रूप हैं, तो यह संभवतः ट्यूरिंग पूर्ण है। वहाँ अधिक विदेशी प्रणाली है कि अभी भी सब कुछ एक ट्यूरिंग मशीन प्राप्त कर सकते हैं, जो उन्हें ट्यूरिंग भी पूरा करता है:
cyclic tag system
और नहीं universal cyclic tag system
। इसलिए - लेख एसक्यूएल ट्यूरिंग पूर्णता साबित नहीं करता है। (या मुझे कुछ गलत समझा)
मौलिक रूप से, ट्यूरिंग-पूर्णता एक संक्षिप्त आवश्यकता है, अबाधित पुनरावृत्ति।
स्मृति से भी बंधे नहीं।
मैंने इसके बारे में स्वतंत्र रूप से सोचा था, लेकिन यहाँ मुखरता की कुछ चर्चा है। एलएसपी की मेरी परिभाषा अधिक संदर्भ प्रदान करती है।
यहाँ अन्य उत्तर ट्यूरिंग-पूर्णता के मूल सार को सीधे परिभाषित नहीं करते हैं।
while (p) { /* ... */ }
। "मैं सामान्यीकृत पुनरावृत्ति और किसी भी संभावित संगणना को निष्पादित करने की क्षमता के बीच समानता का उल्लेख कर रहा हूं।" चर्च की थीसिस एक बहुत अलग मामला है और वास्तव में अलग से चर्चा की जानी चाहिए ।
ट्यूरिंग कम्प्लीट का मतलब है कि यह ट्यूरिंग मशीन की तरह कम से कम शक्तिशाली है । इसका मतलब यह है कि ट्यूरिंग मशीन द्वारा गणना की जा सकने वाली किसी चीज की गणना ट्यूरिंग कंप्लीट सिस्टम द्वारा की जा सकती है।
किसी को अभी तक ट्यूरिंग मशीन की तुलना में अधिक शक्तिशाली प्रणाली नहीं मिली है। इसलिए, कुछ समय के लिए, सिस्टम को ट्यूरिंग कम्प्लीट कहना एक ही है क्योंकि सिस्टम उतना ही शक्तिशाली है जितना कि किसी भी ज्ञात कंप्यूटिंग सिस्टम ( चर्च-ट्यूरिंग थीसिस देखें )।
सरलतम शब्दों में, ट्यूरिंग-पूर्ण प्रणाली किसी भी संभावित कम्प्यूटेशनल समस्या को हल कर सकती है।
प्रमुख आवश्यकताओं में से एक यह है कि स्क्रैडपैड का आकार अनबाउंड हो और स्क्रैडपैड से पूर्व लिखता हुआ एक्सेस करने के लिए रिवाइंड करना संभव है।
इस प्रकार व्यवहार में कोई भी प्रणाली ट्यूरिंग-पूर्ण नहीं है।
बल्कि कुछ सिस्टम ट्यूरिंग-कम्प्लीटनेस को अनबाउंड मेमोरी मॉडलिंग करके और किसी भी संभावित संगणना को अंजाम देते हैं जो सिस्टम की मेमोरी के भीतर फिट हो सकते हैं।
मुझे लगता है कि अवधारणा का महत्व "ट्यूरिंग कम्प्लीट" एक कंप्यूटिंग मशीन की पहचान करने की क्षमता में है (जरूरी नहीं कि एक मैकेनिकल / इलेक्ट्रिकल "कंप्यूटर") जो इसकी प्रक्रियाओं को "सरल" निर्देशों में समाहित कर सकता है, जो सरल और सरल से बना है। निर्देश, कि एक सार्वभौमिक मशीन व्याख्या कर सकती है और फिर निष्पादित कर सकती है।
मैं एनोटेट ट्यूरिंग की अत्यधिक अनुशंसा करता हूं
@ मर्क मुझे लगता है कि आप जो समझा रहे हैं वह यूनिवर्सल ट्यूरिंग मशीन और ट्यूरिंग कम्प्लीट के वर्णन के बीच का मिश्रण है।
कुछ ऐसा जो ट्यूरिंग कम्प्लीट है, एक व्यावहारिक अर्थ में, एक मशीन / प्रक्रिया / संगणना होगी जिसे एक प्रोग्राम के रूप में लिखा और प्रस्तुत किया जा सकता है, जिसे एक यूनिवर्सल मशीन (एक डेस्कटॉप कंप्यूटर) द्वारा निष्पादित किया जा सकता है। हालांकि यह समय या भंडारण के लिए विचार नहीं करता है, जैसा कि दूसरों द्वारा उल्लेख किया गया है।
मैं सरल शब्दों में क्या समझता हूँ:
ट्यूरिंग कम्प्लीट: एक प्रोग्रामिंग लैंग्वेज / प्रोग्राम जो कंपटीशन कर सकता है, ट्यूरिंग कम्प्लीट।
उदाहरण के लिए :
क्या आप जस्ट HTML का उपयोग करके दो नंबर जोड़ सकते हैं । (उत्तर av नहीं ’है, आपको इसके अलावा प्रदर्शन करने के लिए जावास्क्रिप्ट का उपयोग करना होगा।), इसलिए HTML ट्यूरिंग कम्प्लीट नहीं है।
Java, C ++, Python, Javascript, Solidity for Ethereum आदि जैसी भाषाएँ ट्यूरिंग कम्प्लीट हैं क्योंकि आप इस भाषा का उपयोग करके दो संख्याओं को जोड़ना जैसे कम्प्यूटेशन कर सकते हैं।
उम्मीद है की यह मदद करेगा।
इसका पूरा अगर यह परीक्षण और शाखा कर सकता है (एक 'अगर' है)
ट्यूरिंग मशीन के लिए आवश्यक है कि कोई भी कार्यक्रम हालत परीक्षण कर सके। वह मौलिक है।
एक खिलाड़ी पियानो रोल पर विचार करें। खिलाड़ी पियानो संगीत का एक अत्यधिक जटिल टुकड़ा खेल सकता है, लेकिन संगीत में कोई भी सशर्त तर्क नहीं है। यह ट्यूरिंग कम्प्लीट है।
सशर्त तर्क शक्ति और मशीन का खतरा है जो ट्यूरिंग कम्प्लीट है।
पियानो रोल हर बार रुकने की गारंटी है। टीएम के लिए ऐसी कोई गारंटी नहीं है। इसे "रुकने की समस्या" कहा जाता है।
जैसा कि वायलॉन फ्लिन ने कहा :
ट्यूरिंग कम्प्लीट का मतलब है कि यह ट्यूरिंग मशीन की तरह कम से कम शक्तिशाली है।
मेरा मानना है कि यह गलत है, एक प्रणाली ट्यूरिंग पूर्ण है यदि यह बिल्कुल ट्यूरिंग मशीन के समान शक्तिशाली है, अर्थात मशीन द्वारा किया जाने वाला प्रत्येक गणना सिस्टम द्वारा किया जा सकता है, लेकिन सिस्टम द्वारा किया गया प्रत्येक गणना ट्यूरिंग मशीन द्वारा भी किया जा सकता है। ।
अधिकांश प्रोग्रामर से परिचित व्यावहारिक भाषा के शब्दों में, ट्यूरिंग पूर्णता का पता लगाने का सामान्य तरीका यह है कि यदि भाषा बयान करते समय (या ऊपरी ऊपरी सीमा के साथ, बयानों के लिए पास्कल-शैली के विपरीत) नेस्टेड अनबाउंड के अनुकरण की अनुमति देती है।
एक संबंधपरक डेटाबेस इनपुट अक्षांश और स्थानों और सड़कों के अनुदैर्ध्य, और उनके बीच सबसे छोटे मार्ग की गणना कर सकते हैं - नहीं। यह एक समस्या है जो दिखाता है कि SQL ट्यूरिंग पूरा नहीं है।
लेकिन C ++ इसे कर सकता है, और कोई भी समस्या कर सकता है। इस प्रकार यह है।