सार्वभौमिक पुनरावर्ती कार्य [बंद] लिखना


9

क्या एक सार्वभौमिक पुनरावर्ती कार्य का एक छोटा स्पष्ट निर्माण है ? सभी परिभाषाओं में मैंने किसी तरह ट्यूरिंग मशीनों की संख्या को शामिल करते हुए देखा है, जो अभी तक उच्च स्तरीय प्रोग्रामिंग भाषा (जैसे पायथन, हास्केल आदि) में लिखना कठिन और असहनीय लगता है।


मूल रूप से एसओ पर सवाल पूछा गया था , यहां अधिक आशंका है।
sdcvvc

1
मेरी समझ यह है कि एक सार्वभौमिक पुनरावर्ती कार्य जो करता है वह पुनरावर्ती कार्यों (या समतुल्य रूप से ट्यूरिंग मशीनों) की कुछ संख्या देने के लिए है, ताकि परिणाम को एक पुनरावर्ती कार्य और इनपुट के सूचकांक से गणना की जा सके। इसलिए "ट्यूरिंग मशीनों की संख्या के बिना एक सार्वभौमिक पुनरावर्ती कार्य" मेरे लिए प्रशंसनीय नहीं है।
त्सुकोशी इतो

3
अनुसंधान स्तर नहीं। ट्यूरिंग-पूर्ण भाषा के लिए कोई भी दुभाषिया एक सार्वभौमिक पुनरावर्ती कार्य है।
वारेन शूडी

जवाबों:


1

मैककार्थी के मूल लिस्प इंटरप्रेटर (मूल रूप से यहां ) के बारे में कैसे ? यह सार्वभौमिक है, एक प्राकृतिक एन्कोडिंग (एक लिस्प एएसटी) पर काम करता है, एक बाहरी दुभाषिया पर भरोसा नहीं करता है, और लगभग 20 लाइनें हैं।


13

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

नकारात्मक पक्ष यह है कि आपके सार्वभौमिक कार्यक्रम के किसी भी इनपुट को उन सरल कार्यों के संदर्भ में फंसाया जाना चाहिए। बेशक, यह है कि क्या संकलक के लिए कर रहे हैं।


10

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

गोडेल नंबरिंग मौजूद है, लेकिन निहित है। उदाहरण के लिए, C ++ कोड एक पुनरावर्ती कार्य की गणना करता हैg के लिए एक सूचकांक है g


ट्यूरिंग मशीन (या रजिस्टर मशीनें, या पुनरावर्ती कार्य) के लिए एक व्याख्याकार भी एक सार्वभौमिक पुनरावर्ती कार्य है, और उन्हें लागू करना मुश्किल नहीं है। मैंने कुछ साल पहले उन्हें C ++ में लागू किया है, और मुझे पूरा यकीन है कि यह पायथन में और भी सरल होगा। Google का उपयोग करें, इंटरनेट पर कई मुफ्त सिमुलेटर हैं, और उनमें से कुछ भी खुले-स्रोत हैं।
केवह

8

एक सार्वभौमिक कार्य uएक हास्केल जैसी भाषा में आसानी से लिखा जा सकता है (कोई दुष्प्रभाव, उच्च-क्रम के कार्य), अर्थात्:

u f x = f x

समारोह uसार्वभौमिक है क्योंकि यह स्वीकार करता है (का वर्णन) एक कार्यक्रम है fऔर एक इनपुट टेप x, और आप चलाने का परिणाम बताता है fपर x

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


हालाँकि, uएक फ़ंक्शन लेता है - मैं इसे उच्च-क्रम फ़ंक्शन कहूंगा। मैं uएक पूर्णांक, या एक नियमित बीजीय डेटाटाइप लेना चाहता हूं । मैं गणना के किसी भी विशिष्ट मॉडल को बाध्य नहीं करता हूं, जब तक कि तर्क uमूर्त है - उदाहरण के लिए, इसे / से स्ट्रिंग में क्रमबद्ध किया जा सकता है।
sdcvvc

एक वास्तविक मशीन पर (कोड संकलित होने के बाद) uएक क्लोजर लेता है, जो बाइट्स का एक परिमित अनुक्रम होता है। यहां तक ​​कि सामान्य utm प्रमेय में पूर्णांक जो uएक फ़ंक्शन का प्रतिनिधित्व करता है।
लेडी बाउर

5

जुम्मन लॉजिक का उपयोग करते हुए जॉन ट्रम्प द्वारा इस पेपर को भी देखें । पहले का राइटअप, जाहिर तौर पर उपलब्ध नहीं था, यहां तक ​​कि नॉटी भी था।

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