क्या सभी ट्यूरिंग पूर्ण भाषाएं परस्पर विनिमय योग्य हैं


26

ध्यान दें, जबकि मुझे पता है कि कैसे प्रोग्राम करना है, मैं सीएस सिद्धांत पर काफी शुरुआत कर रहा हूं।

इस उत्तर के अनुसार

ट्यूरिंग पूर्णता कम्प्यूटेबिलिटी की एक अमूर्त अवधारणा है। यदि कोई भाषा ट्यूरिंग पूर्ण है, तो वह किसी भी गणना को करने में सक्षम है जो कि कोई अन्य ट्यूरिंग पूर्ण भाषा कर सकती है।

और किसी भी ट्यूरिंग पूरी भाषा में लिखे गए किसी भी कार्यक्रम को दूसरे में फिर से लिखा जा सकता है

ठीक है। यह समझ में आता है। मैं सी में असेंबली (और मैं इसे रोज करता हूं!) का अनुवाद (संकलन) कर सकता हूं, और असेंबली को सी में अनुवाद कर सकता हूं (आप सी में वर्चुअल मशीन लिख सकते हैं)। और यही बात किसी भी अन्य भाषा पर लागू होती है - आप किसी भी भाषा को असेंबली में संकलित कर सकते हैं, और फिर उसे दूसरी भाषा में लिखे गए VM में चला सकते हैं।

लेकिन क्या ट्यूरिंग पूरी भाषा में लिखे गए किसी प्रोग्राम को दूसरे में दोबारा लिखा जा सकता है?

यदि मेरी विधानसभा में एक LIGHTBUTTON ओपकोड हो तो क्या होगा? मैं शारीरिक रूप से उस भाषा को सिस्टम पर (भाषा) बिना लाइटबुल के अनुकरण नहीं कर सकता।

ठीक है। तो आप कहेंगे कि चूंकि हम कंप्यूटर सिद्धांत के साथ काम कर रहे हैं , हम भौतिक उपकरण सीमाओं पर चर्चा नहीं कर रहे हैं।

लेकिन उस डिवाइस के बारे में क्या जिसमें गुणा नहीं है? विभाजन? मेरे ज्ञान का सबसे अच्छा करने के लिए (हालांकि यह math.SE के लिए एक प्रश्न का अधिक है), कोई जोड़ और घटाव के साथ गुणा (और निश्चित रूप से विभाजन नहीं) का अनुकरण नहीं कर सकता है [1]।

तो एक "ट्यूरिंग कम्प्लीट लैंग्वेज" (जो जोड़, घटाना और कूदना) हो, किसी दूसरी भाषा का अनुकरण कर सकते हैं जो जोड़, घटा, गुणा और कूद सके?

संपादित करें

[1]। मनमानी वास्तविक संख्या पर।


33
रियल नंबर हाइपर-ट्यूरिंग-कम्प्यूटेशन के दायरे से संबंधित हैं। ट्यूरिंग मशीन वास्तविक संख्याओं से निपट नहीं सकती, एर्गो, वे ट्यूरिंग-पूर्णता के लिए अप्रासंगिक हैं।
जोर्ग डब्ल्यू मित्तग

3
संबंधित: केवल एक निर्देश के साथ एक असेंबली-भाषा निर्देश-सेट अभी भी एक सार्वभौमिक कंप्यूटर बनाने के लिए पर्याप्त शक्तिशाली है: en.wikipedia.org/wiki/One_instruction_set_computer । उदाहरण के लिए, मेमोरी ऑपरेंड के साथ "घटाना और शाखा यदि शून्य से कम या बराबर"। यह एक आधुनिक x86 की तुलना में धीमा होगा , लेकिन प्रदर्शन अनुपात किसी भी कार्यक्रम के लिए परिमित है।
पीटर कॉर्डेस

1
कोई भी भौतिक (वास्तव में विद्यमान) मशीन पूरी तरह से ट्यूरिंग नहीं हो सकती है, क्योंकि ट्यूरिंग पूर्णता के लिए अनंत भंडारण की आवश्यकता होती है और ब्रह्मांड अनंत नहीं है। यह इस प्रकार है कि दो अमूर्त मशीनों के बराबर होने का पुष्टिकारक उत्तर आपको इस प्रश्न का उत्तर देने में मदद नहीं करता है कि क्या उन मशीनों के दो भौतिक सन्निकटन समान हैं।
बेन

2
@PeterCordes: मेरा मानना ​​है कि जब आप कहते हैं कि अनुपात परिमित है, तो आपका मतलब है कि कोई भी कार्य जो या तो परिमित समय में पूरा होता है, दोनों में ऐसा परिमित समय में करेगा - ऐसा नहीं कि किसी विशेष मशीन के लिए (इनपुट सहित नहीं)। किसी इनपुट के लिए अनुपात कितना ऊंचा हो सकता है इसकी कोई सीमित सीमा। मुझे लगता है कि कोई ट्यूरिंग-पूर्ण मशीनों का निर्माण कर सकता है जिसके लिए कोई भी इनपुट चुन सकता है जो अनुपात को मनमाने ढंग से उच्च बना देगा - संभवतः इनपुट आकार का एक कम्प्यूटेशनल फ़ंक्शन भी नहीं।
सुपरकैट

6
मुझे नहीं पता कि आपको यह विचार कहां से आया कि "एक जोड़ और घटाव के साथ गुणा (और निश्चित रूप से विभाजन नहीं) का अनुकरण नहीं कर सकता"। यह प्राथमिक विद्यालय से सिखाया गया था जब हम सीखते हैं कि कैसे गुणा करें
phuclv

जवाबों:


55

ट्यूरिंग-पूर्णता एक बात और केवल एक ही बात कहती है: कम्प्यूटिंग का एक मॉडल ट्यूरिंग-पूर्ण है, अगर किसी भी गणना को ट्यूरिंग मशीन द्वारा मॉडल किया जा सकता है, तो उस मॉडल द्वारा भी मॉडल बनाया जा सकता है।

तो, एक ट्यूरिंग मशीन मॉडल क्या गणना कर सकते हैं? खैर, सबसे पहले और सबसे महत्वपूर्ण, एलन ट्यूरिंग और उनके सभी सहयोगी केवल प्राकृतिक संख्याओं के कार्यों में ही रुचि रखते थे। तो, ट्यूरिंग मशीन (और λ-पथरी, एसके कॉम्बिनेटर पथरी, μ-पुनरावर्ती कार्य, ...) केवल प्राकृतिक संख्याओं पर कार्यों की संगणना के बारे में बात करते हैं। यदि आप प्राकृतिक संख्याओं पर एक फ़ंक्शन के बारे में बात नहीं कर रहे हैं, तो ट्यूरिंग-पूर्णता की अवधारणा भी समझ में नहीं आती है, यह बस लागू नहीं है।

ध्यान दें, हालांकि, हम प्राकृतिक संख्याओं के रूप में बहुत सी दिलचस्प चीजों को सांकेतिक शब्दों में बदल सकते हैं। हम स्ट्रिंग्स को प्राकृतिक संख्याओं के रूप में एन्कोड कर सकते हैं, हम ग्राफों को प्राकृतिक संख्याओं के रूप में एन्कोड कर सकते हैं, हम बूलियनों को प्राकृतिक नंबरों के रूप में एन्कोड कर सकते हैं। हम ट्यूरिंग मशीनों को प्राकृतिक संख्या के रूप में एन्कोड कर सकते हैं , जो हमें ट्यूरिंग मशीनें बनाने की अनुमति देती है जो ट्यूरिंग मशीनों के बारे में बात करते हैं!

और, ज़ाहिर है, प्राकृतिक संख्याओं पर सभी कार्य कम्प्यूटेशनल नहीं हैं। ट्यूरिंग मशीन केवल प्राकृतिक संख्याओं पर कुछ कार्यों की गणना कर सकती है , λ-पथरी केवल प्राकृतिक संख्याओं पर कुछ कार्यों की गणना कर सकती है , एसके कॉम्बिनेटर कलन केवल प्राकृतिक संख्याओं पर कुछ कार्यों की गणना कर सकती है ,…। हैरानी की बात है (या नहीं), यह पता चला है कि गणना का प्रत्येक मॉडल (जो वास्तव में हमारे भौतिक ब्रह्मांड में साकार होता है) समान संख्याओं को प्राकृतिक संख्याओं पर कम से कम गणना कर सकता है (कम से कम अब तक हमने पाया सभी मॉडलों के लिए)। [नोट: जाहिर है, गणना के कमजोर मॉडल हैं, लेकिन हम अभी तक एक ऐसा नहीं मिला है जो मजबूत हो, कुछ ऐसे जो स्पष्ट रूप से हमारे भौतिक ब्रह्मांड के साथ असंगत हैं, जैसे कि वास्तविक संख्या या समय यात्रा का उपयोग करने वाले मॉडल।]

यह तथ्य, कि बहुत सारे विभिन्न मॉडलों की खोज के लंबे समय के बाद, हम पाते हैं, हर एक समय, कि वे बिल्कुल समान कार्यों की गणना कर सकते हैं , चर्च-ट्यूरिंग-थीसिस के लिए आधार है, जो कहता है (लगभग) गणना के मॉडल समान रूप से शक्तिशाली हैं, और उन सभी ने "आदर्श" की धारणा पर कब्जा कर लिया है जिसका अर्थ है "कम्प्यूटेबल" होना। (CTT का एक दूसरा, अधिक दार्शनिक पहलू भी है, जिसका अर्थ यह है कि एक एल्गोरिथ्म का पालन करने वाला मनुष्य भी ठीक उसी तरह की गणना कर सकता है, जैसा कि एक TM गणना कर सकता है और इससे अधिक नहीं।)

हालाँकि , इस बारे में कोई भी कुछ नहीं कहता है

  • विभिन्न मॉडल कितने कुशल हैं
  • उपयोग करने के लिए वे कितने सुविधाजनक हैं
  • वे प्राकृतिक संख्याओं पर गणना कार्यों के अलावा और क्या कर सकते हैं

और है कि ठीक है, जहां (और प्रोग्रामिंग भाषाओं) अभिकलन के विभिन्न मॉडल के बीच मतभेद भूमिका निभाते हैं।

O(sizearray)O(sizearray2)sizearraysizearray

विभिन्न सुविधा के लिए एक उदाहरण के रूप में, आप बस एक बहुत ही उच्च-स्तरीय भाषा में लिखे गए कोड, असेंबली में लिखे गए कोड और उसी समस्या को हल करने के लिए एक TM के विवरण की तुलना कर सकते हैं।

और आपका प्रकाश स्विच तीसरे प्रकार के अंतर का एक उदाहरण है, चीजें जो कुछ मॉडल कर सकते हैं जो प्राकृतिक संख्याओं पर कार्य नहीं करते हैं और इस प्रकार ट्यूरिंग-पूर्णता के साथ कुछ भी नहीं है।

अपने विशिष्ट प्रश्नों के उत्तर देने के लिए:

लेकिन क्या ट्यूरिंग पूरी भाषा में लिखे गए किसी प्रोग्राम को दूसरे में दोबारा लिखा जा सकता है?

केवल तभी यदि प्रोग्राम प्राकृतिक संख्याओं पर ट्यूरिंग-कम्प्यूटेबल फ़ंक्शन की गणना करता है। और फिर भी, इसे एक जटिल एन्कोडिंग की आवश्यकता हो सकती है। उदाहरण के लिए, λ-पथरी में प्राकृतिक संख्याएं भी नहीं होती हैं, उन्हें फ़ंक्शन का उपयोग करके एन्कोडेड करने की आवश्यकता होती है (क्योंकि फ़ंक्शन केवल एक चीज है λ-पथरी में)।

एल्गोरिथ्म को व्यक्त करने के रूप में इनपुट और आउटपुट का यह एन्कोडिंग बहुत जटिल हो सकता है। इसलिए, जबकि यह सच है कि किसी भी कार्यक्रम को फिर से लिखा जा सकता है, फिर से लिखा गया कार्यक्रम बहुत अधिक जटिल हो सकता है, बहुत बड़ा हो सकता है, बहुत अधिक स्मृति का उपयोग कर सकता है, और बहुत धीमा हो सकता है।

यदि मेरी विधानसभा में एक LIGHTBUTTON ओपकोड हो तो क्या होगा? मैं शारीरिक रूप से उस भाषा को सिस्टम पर (भाषा) बिना लाइटबुल के अनुकरण नहीं कर सकता।

एक लाइटबल्ब प्राकृतिक संख्याओं पर ट्यूरिंग-कम्प्यूटेबल फ़ंक्शन नहीं है। वास्तव में, एक लाइटबल्ब न तो एक फ़ंक्शन है और न ही एक संगणना। लाइटबल्ब को चालू और बंद करना एक I / O साइड-इफेक्ट है। ट्यूरिंग मशीनें I / O साइड-इफेक्ट्स का मॉडल नहीं बनाती हैं, और ट्यूरिंग-पूर्णता उनके लिए प्रासंगिक नहीं है।

मनमानी वास्तविक संख्या पर।

ट्यूरिंग-पूर्णता केवल प्राकृतिक नंबरों पर कम्प्यूटेशनल कार्यों से संबंधित है, यह वास्तविक संख्याओं के साथ ही चिंता नहीं करता है।

ट्यूरिंग-पूर्णता बहुत ही रोचक नहीं है जब यह दो कारणों से आपके जैसे प्रश्नों के लिए आता है:

  1. यह बहुत ऊंची बाधा नहीं है। आप सभी की जरूरत है IF, GOTO, WHILE, और एक एकल पूर्णांक चर (चर संभालने मनमाने ढंग से बड़े पूर्णांकों हो सकते हैं)। या, पुनरावृत्ति। बहुत सारे और बहुत सारे सामान ट्यूरिंग-पूर्ण है। कार्ड गेम मैजिक: द गैदरिंग ट्यूरिंग-पूर्ण है। CSS3 ट्यूरिंग-पूर्ण है। sendmailविन्यास फाइल ट्यूरिंग-पूर्ण है। Intel x86 MMU ट्यूरिंग-पूर्ण है। Intel x86 MOVनिर्देश ट्यूरिंग-पूर्ण है। PowerPoint एनिमेशन ट्यूरिंग-पूर्ण हैं। एक्सेल (स्क्रिप्टिंग के बिना, केवल सूत्रों का उपयोग करके) ट्यूरिंग-पूर्ण है। बीजीपी रूटिंग प्रोटोकॉल ट्यूरिंग-पूर्ण है। sedट्यूरिंग-पूर्ण है। अपाचे mod_rewriteनियम ट्यूरिंग-पूर्ण हैं। Google के लिए " (गलती से या आश्चर्यजनक रूप से) पूरी तरह से ट्यूरिंग"कुछ अन्य दिलचस्प उदाहरण खोजने के लिए। यदि लगभग सब कुछ ट्यूरिंग-पूर्ण है, तो ट्यूरिंग-पूर्ण होना एक दिलचस्प संपत्ति है।
  2. वास्तव में उपयोगी होना आवश्यक नहीं है। उपयोगी सामग्री के बहुत सारे नहीं है ट्यूरिंग-पूर्ण। 3 संस्करण से पहले सीएसएस ट्यूरिंग-पूर्ण (और तथ्य यह है कि CSS3 नहीं है है वास्तव में किसी के द्वारा नहीं किया जाता है)। 1999 से पहले एसक्यूएल ट्यूरिंग-पूर्ण नहीं था, फिर भी, यह तब भी काफी उपयोगी था। अतिरिक्त पुस्तकालयों के बिना C प्रोग्रामिंग भाषा ट्यूरिंग-पूर्ण प्रतीत नहीं होती है । आश्रित-टाइप की गई भाषाएं परिभाषा से अधिक या कम होती हैं, ट्यूरिंग-पूर्ण नहीं, फिर भी, आप ऑपरेटिंग सिस्टम, वेब सर्वर और उन में गेम लिख सकते हैं।

इडरिस के लेखक एडविन ब्रैडी ने इनमें से कुछ पहलुओं के बारे में बात करने के लिए "टेट्रिस-पूर्ण" शब्द का उपयोग किया है। टेट्रिस-पूर्ण होने को कड़ाई से परिभाषित नहीं किया गया है (स्पष्ट "के अलावा अन्य को टेट्रिस को लागू करने के लिए इस्तेमाल किया जा सकता है"), लेकिन इसमें उच्च-स्तरीय होने और पर्याप्त रूप से अभिव्यंजक जैसे सामान को शामिल किया गया है जिसे आप पागल होने के बिना गेम लिख सकते हैं, सक्षम होने के नाते बाहरी दुनिया के साथ बातचीत (इनपुट और आउटपुट), साइड-इफेक्ट्स को व्यक्त करने में सक्षम होना, एक ईवेंट लूप को लिखने में सक्षम होना, प्रतिक्रियाशील, अतुल्यकालिक और समवर्ती प्रोग्रामिंग को व्यक्त करने में सक्षम होना, ऑपरेटिंग सिस्टम के साथ बातचीत करने में सक्षम होना, सक्षम होना। विदेशी पुस्तकालयों के साथ बातचीत करने के लिए (दूसरे शब्दों में: कॉल करने में सक्षम होने और सी कोड द्वारा बुलाया जा सकता है) और इसी तरह। ट्यूरिंग-पूर्णता की तुलना में सामान्य प्रयोजन प्रोग्रामिंग भाषा की बहुत अधिक रोचक विशेषताएं हैं।


आपको दिलचस्प से जुड़े सवाल का जवाब मिल सकता है , जो कुछ अलग बिंदुओं पर छूता है, भले ही यह एक अलग सवाल का जवाब देता हो।


7
मुझे वास्तव में यह उत्तर पसंद है, लेकिन मुझे लगता है कि यह ध्यान देने योग्य है कि हम प्राकृतिक संख्याओं द्वारा सभी प्रकार की दिलचस्प चीजों का प्रतिनिधित्व कर सकते हैं। उदाहरण के लिए हम प्राकृतिक संख्याओं द्वारा तारों का प्रतिनिधित्व कर सकते हैं, हम प्राकृतिक संख्याओं द्वारा ग्राफ का प्रतिनिधित्व कर सकते हैं, हम एक प्राकृतिक संख्या द्वारा कंप्यूटर की मेमोरी की संपूर्ण स्थिति का प्रतिनिधित्व कर सकते हैं। वास्तविक संख्याओं को प्राकृतिक संख्याओं पर कार्यों के रूप में कोडित किया जा सकता है और (प्राकृतिक) संख्याओं पर कई कार्यों को प्राकृतिक संख्याओं द्वारा कोडित किया जा सकता है। इसलिए प्राकृतिक संख्याओं से लेकर प्राकृतिक संख्याओं तक के कार्यों को सीमित करना एक बड़ी सीमा नहीं है - जब तक कि यह अंधेरा न हो और आप चाहते हैं कि आपका कंप्यूटर प्रकाश चालू करे।
थियोडोर नॉरवेल

3
अच्छा जवाब, लेकिन यह: "ट्यूरिंग-पूर्ण स्टॉप एक दिलचस्प संपत्ति होने के नाते" सिर्फ सादा गलत है। यदि कोई ट्यूरिंग-पूर्ण है, तो इसकी टालने की समस्या की तुलना में ट्यूरिंग मशीनों के लिए हॉल्टिंग समस्या के लिए कम्प्यूटेशनल कमी से ट्यूरिंग-पूर्ण है। उदाहरण के लिए, कार्ड गेम मैजिक: द गैदरिंग ट्यूरिंग-पूर्ण है। इसका मतलब यह है कि इसके नियम अनिर्दिष्ट हैं , अर्थात सामान्य मामले में यह गणना करना असंभव है कि निम्नलिखित खेल राज्य क्या होगा, जो एक बहुत ही दिलचस्प संपत्ति है। अधिक गंभीरता से, हम समस्याओं को अनुचित साबित करने के लिए ट्यूरिंग-पूर्णता और कटौती का उपयोग करते हैं।
Quicksort

ट्यूरिंग और उनके सहयोगियों को प्राकृतिक नंबरों पर काम करने में रुचि थी, लेकिन ट्यूरिंग मशीनें वास्तव में नंबरों के साथ सौदा नहीं करती हैं, वे प्रतीकों के तारों से निपटते हैं। जाहिर है कि आप प्राकृतिक रूप से एक ज्ञात परिमित वर्णमाला में प्रतीकों की बारीकियों की तुच्छ व्याख्या कर सकते हैं, लेकिन टीएम सीधे अपने इनपुट के साथ "नंबरदार" चीजें नहीं करते हैं, वे सिर्फ "अंकों" में हेरफेर करते हैं। यह वास्तव में टीएम के मानक विवरण से "प्राकृतिक संख्या पर कार्य" के लिए जाने के लिए थोड़ा तर्क की आवश्यकता है; जब आप TM के साथ काम करते हैं तो आप प्राकृतिक संख्याओं को स्ट्रिंग्स के रूप में एन्कोड करते हैं, न कि स्ट्रिंग्स को संख्याओं के रूप में।
बेन

यह स्पष्ट रूप से एक शानदार जवाब है लेकिन मुझे डर है कि यह ओपी की समझ से परे है। ओपी पहले से ही वास्तविक संख्याओं पर गुणा (परिमित सबसेट) लागू करने के बारे में उलझन में है। इसे देखते हुए, आपका जवाब यह लगता है कि ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषाएं वास्तव में शुद्ध संगणना के उद्देश्य से विनिमेय नहीं हैं, जब वे वास्तव में हैं (क्योंकि सब कुछ आधुनिक सीपीयू करते हैं - न केवल कुछ चीजें - स्वाभाविक रूप से एन्कोड किया जा सकता है संख्या)।
कोनराड रुडोल्फ

9
@ TheodoreNorvell प्राकृतिक संख्याओं के साथ वास्तविक संख्याओं को कूटने के विषय में। वास्तव में, लगभग सभी वास्तविक संख्याओं को प्राकृतिक संख्याओं द्वारा एनकोड नहीं किया जा सकता है। वास्तविक संख्याओं का समूह, जो प्राकृतिक संख्याओं द्वारा कूटबद्ध किया जा सकता है, प्राकृतिक संख्याओं द्वारा कूटबद्ध किए जाने के कारण, सबसे अधिक अनंत रूप से है। और क्योंकि यह केवल अनंत रूप से अनंत है, इसलिए सेट में शून्य है। यह कहना थोड़ा असंगत है कि हम प्राकृतिक संख्या के साथ सामान्य रूप से वास्तविक संख्याओं का प्रतिनिधित्व कर सकते हैं क्योंकि हम केवल उनमें से एक असीम अंश का प्रतिनिधित्व कर सकते हैं, या अधिक सटीक हो सकते हैं: 0%।
शफ़लपैंट्स 15

9

बेशक आप जोड़ और घटाव के साथ गुणा लागू कर सकते हैं:

/* Assume b is positive for simplicity */
int multiply(int a, int b) {
  int res = 0;
  while (b > 0) { res += a; b -= 1; }
  return res;
}

इस तथ्य की संभावना है कि आप ऐसा नहीं करेंगे जो इसे कम संभव नहीं बनाता है।

विभाजन शायद ही अधिक कठिन है:

/* Assume a and b are positive for simplicity */
int divide(int a, int b) {
  int res = 0;
  while (a >= b) { res += 1; a -= b; }
  return res;
}

और आपको क्या लगता है कि वास्तव में सीपीयू की सर्किट्री द्वारा गुणा और भाग कैसे किया जाता है? संकेत: यह एक विशाल लुकअप तालिका नहीं है। यह ऊपर की तुलना में अधिक कुशल है, क्योंकि बिट शिफ्टिंग का भी उपयोग किया जाता है, लेकिन यह मूल रूप से जोड़ और घटाव के मामले में लागू होता है।


4
2precision

7
@ टर्निंग: आप जानते हैं, फ़्लोटिंग पॉइंट अंकगणित उपलब्ध था इससे पहले कि फ़्लोटिंग पॉइंट कोप्रोसेसर थे।
रिसी

6

कोई भी भौतिक (वास्तव में विद्यमान) मशीन पूरी तरह से ट्यूरिंग नहीं हो सकती है, क्योंकि ट्यूरिंग पूर्णता के लिए अनंत भंडारण की आवश्यकता होती है और ब्रह्मांड अनंत नहीं है।

यह इस प्रकार है कि दो अमूर्त मशीनों के बराबर होने का पुष्टिकारक उत्तर आपको इस प्रश्न का उत्तर देने में मदद नहीं करता है कि क्या उन मशीनों के दो भौतिक सन्निकटन समान हैं।

इसलिए (उदाहरण के लिए) दो भाषाओं के सार मॉडल के ट्यूरिंग तुल्यता का मतलब यह नहीं है कि प्रत्येक व्यवहार में एक दूसरे की गणना कर सकता है। एक दूसरे से पहले शारीरिक सीमाओं के खिलाफ चल सकता है।


लेकिन भाषाओं के बारे में पूछा गया प्रश्न। इसमें विशेष मशीनों का उल्लेख है, लेकिन केवल इसलिए कि वह महसूस नहीं करती है कि वास्तव में कोई भी वास्तविक मशीन वास्तविक संख्याओं पर काम नहीं करती है।
शफलेपेंट

3

nm=n+n(m1)m/n=1+(mn)/n

तथ्य की बात के रूप में, संचालन "ऐड 1", "घटाना 1" और "सशर्त कूद अगर एक निर्दिष्ट रजिस्टर शून्य है" एक कम्प्यूटेशनल मॉडल ट्यूरिंग-पूरा करने के लिए पर्याप्त है (2-काउंटर मशीन को एक संदर्भ के रूप में देखें) बहुत न्यूनतम ट्यूरिंग-पूर्ण कम्प्यूटेशनल मॉडल)।

22n=n+n2m×2n=2m×nm×(2n+1)=m+2m×n


3

tl; dr - ट्यूरिंग मशीन एक सामान्य लॉजिकल सिस्टम के संचालन के लिए सिर्फ एक बुनियादी तार्किक विवरण है। वे हमारे द्वारा वर्णित किए गए अधिकांश सामानों को कर सकते हैं, जिसमें विशेष ऑपकोड कॉल करना और गणितीय संचालन का निर्माण करना शामिल है।


यदि मेरी विधानसभा में एक LIGHTBUTTON ओपकोड हो तो क्या होगा? मैं शारीरिक रूप से उस भाषा को सिस्टम पर (भाषा) बिना लाइटबुल के अनुकरण नहीं कर सकता।

ट्यूरिंग मॉडल में, एक LIGHTBUTTONओपोड की तरह प्रतीक ट्यूरिंग कंप्यूटर जो भी वर्णमाला का उपयोग करता है उसमें केवल तार होते हैं।

तो, ट्यूरिंग मशीन स्ट्रिंग के उत्पादन के लिए जिम्मेदार होगी "LIGHTBUTTON", या कुछ पूर्णांक मूल्य जो उस ओपकोड से मेल खाती है; बाहरी इकाई कार्य करती है या नहीं, यह ट्यूरिंग कंप्यूटर का व्यवसाय नहीं है।

सी कार्यक्रमों में एक ही सीमा होती है। यह है, एक सी प्रोग्राम केवल के लिए ओपकोड को कॉल कर सकता है LIGHTBUTTON, हालांकि सीपीयू वास्तव में ऑपेरशन से जुड़ा एक ऑपरेशन करता है या नहीं यह सीपीयू के पास है।


लेकिन उस डिवाइस के बारे में क्या जिसमें गुणा नहीं है? विभाजन? मेरे ज्ञान का सबसे अच्छा करने के लिए (हालांकि यह गणित के लिए एक प्रश्न का अधिक है। ईएस), कोई भी गुणा (और निश्चित रूप से विभाजन नहीं) को जोड़ और घटाव [मनमाने वास्तविक संख्याओं पर] नहीं कर सकता है।

यूप, एक ट्यूरिंग मशीन उन चीजों को कर सकती थी, यहां तक ​​कि वास्तविक संख्याओं पर भी, इस हद तक कि कोई भी मानव-वर्णन करने योग्य तर्क। ट्यूरिंग मशीन नियम 110 सेलुलर स्वचालन के रूप में सरल हो सकती है ।

स्वाभाविक रूप से मशीन में जो भी भौतिकी है, उससे एक तर्क प्रणाली का निर्माण करने की चाल। उदाहरण के लिए, मुख्यधारा सीपीयू गुणा और भाग कर सकता है क्योंकि उनके पास अंकगणितीय तर्क इकाई (ALU) है । लेकिन ALU जादू नहीं है; वे सिर्फ साधारण तर्क खुद गेट्स हैं। और उन लॉजिक गेट्स को ट्रांजिस्टर बना दिया जाता है । और उन ट्रांजिस्टर को डोप-अप रेत से बनाया गया है ।

तो, गणित करने के लिए ट्यूरिंग-पूर्ण डिवाइस प्राप्त करने के लिए, बस इसे उसी तरह से प्रोग्राम करना होगा।

ππ=0ππππ=0


3

लेकिन क्या ट्यूरिंग पूरी भाषा में लिखे गए किसी प्रोग्राम को दूसरे में दोबारा लिखा जा सकता है?

यदि प्रोग्राम का इनपुट बिट्स का एक अनियंत्रित रूप से लंबा अनुक्रम है, और आउटपुट भी बिट्स का एक मनमाने ढंग से लंबा अनुक्रम है, तो YES। यह मानते हुए कि आपके पास इसे फिर से लिखने के लिए समय और ऊर्जा है, और यह कि आपको प्रदर्शन की परवाह नहीं है, और यह कि आपके पास दोनों कार्यान्वयनों के लिए पर्याप्त भौतिक स्मृति है।

व्यावहारिक विचारों का अर्थ है कि दो ट्यूरिंग-पूर्ण भाषाएं विनिमेय नहीं हैं:

  • वे विभिन्न प्रकार के इनपुट और आउटपुट का समर्थन करते हैं (उदाहरण के लिए SQL डेटाबेस एक्सेस)

  • उनके पास विभिन्न प्रकार के पुस्तकालय हैं (जैसे यूनिकोड स्ट्रिंग्स के लिए समर्थन)

  • वे विभिन्न कार्यों के लिए अनुकूलित विभिन्न प्रोग्रामिंग प्रतिमान प्रदान करते हैं (उदाहरण के लिए ऑब्जेक्ट्स, थ्रेड्स, कोराउटाइन, प्रथम श्रेणी के कार्य)

  • वे अलग-अलग फ़ंक्शन लाइब्रेरी (जैसे XML पार्सिंग और क्रमांकन) प्रदान करते हैं


1

ट्यूरिंग-पूर्णता का कार्यक्रमों से कोई लेना-देना नहीं है , यह गणितीय कार्यों (या एल्गोरिदम ) के बारे में है। किसी भी एल्गोरिथ्म - किसी भी गणना - आप सी में कर सकते हैं, आप किसी अन्य ट्यूरिंग-पूर्ण भाषा में कर सकते हैं (यह स्पष्ट होना चाहिए)। लेकिन ट्यूरिंग-पूर्णता वास्तव में यह नहीं कहती है कि आप I / O कर सकते हैं। यह हार्डवेयर के बारे में बात नहीं करता है। बस संगणनाएँ।

आप किसी भी हार्डवेयर ऑपरेशन के साथ ट्यूरिंग-पूर्ण भाषा का विस्तार कर सकते हैं जो आप चाहते हैं (तकनीकी रूप से, यह कैसे fputcऔर fgetcसी में काम करता है)। यदि आप दो ट्यूरिंग-पूर्ण भाषाएं लेते हैं और उन्हें समान हार्डवेयर-विशिष्ट संचालन के साथ विस्तारित करते हैं , तो वे विनिमेय रहते हैं। इसलिए LIGHTBULBऑपरेशन के साथ आपकी विधानसभा भाषा ट्यूरिंग-पूर्ण से अधिक शक्तिशाली है; आप कह सकते हैं कि यह ट्यूरिंग-पूर्ण हैLIGHTBULB । किसी भी अन्य भाषा को समान बनाने के लिए, उसे ट्यूरिंग-पूर्ण होना भी आवश्यक है LIGHTBULB; इसका सबसे आसान तरीका यह है कि इसमें एक LIGHTBULBआदिम / निर्देश / कार्य / आदि को जोड़ा जाए।

यही कारण है कि सी कार्यान्वयन आमतौर पर इनलाइन असेंबलर का समर्थन करते हैं, या कोडांतरक में लिखे गए कार्यों को कॉल करने के तरीके का दस्तावेजीकरण करते हैं, और अन्य भाषाओं के कार्यान्वयन आम तौर पर सी में लिखे गए कार्यों को कॉल करने का एक तरीका प्रदान करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.