क्या प्रत्येक स्व-संशोधित एल्गोरिदम को एक गैर-सेल्मोडिफ़िंग एल्गोरिदम द्वारा मॉडलिंग की जा सकती है?


12

यदि हमारे पास कोई मनमाना कंप्यूटर प्रोग्राम है जो उसके निर्देशों को संशोधित कर सकता है, तो क्या उस प्रोग्राम को किसी प्रोग्राम के साथ अनुकरण करना संभव है जो उसके निर्देशों को संशोधित नहीं कर सकता है?


संपादित करें:

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

जवाबों:


29

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

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


11
आपको काल्पनिक दुभाषिया की भी आवश्यकता नहीं है। एक CPU जो आपके स्व-संशोधित एल्गोरिदम को निष्पादित करता है, वह स्वयं एक मशीन है जो एक निश्चित एल्गोरिदम को निष्पादित करता है (जो यह निर्देश कैसे निष्पादित करता है)
अलेक्जेंडर - मोनिका

1
@AlexanderMomchliov में मौजूद सीपीयू हैं जो मक्खी पर अपने निर्देश सेट के कुछ हिस्सों को संशोधित कर सकते हैं (लेकिन हां, विचार एक ही है - प्रोग्राम करने योग्य हिस्सा डेटा है, इसे चलाने वाला माइक्रोकंट्रोलर इंटरप्रेटर है - हालांकि एक FPGA सेल के अंदर एक माइक्रोकंट्रोलर के लिए जाना जाता है मुश्किल हो सकता है)
जॉन ड्वोरक

इसका जवाब देने के लिए: "आप पूरी तरह से एक सार्वभौमिक ट्यूरिंग मशीन रख सकते हैं, जो टीएम को अपने स्वयं के विवरण को संशोधित करने की अनुमति दे रहा है।" मैं सोच रहा हूँ: यह सवाल भीख नहीं है? क्योंकि अब आपको यह साबित करने की आवश्यकता है कि जिस TM का अनुकरण किया जा रहा है वह वास्तव में स्व-संशोधित एल्गोरिदम को मॉडल कर सकता है, है ना? यह अभी भी ऐसा हो सकता है कि एक स्व-संशोधित कार्यक्रम है जो स्वयं एक ट्यूरिंग मशीन नहीं है, इसलिए हम ट्यूरिंग पूर्णता का उपयोग यह दिखाने के लिए नहीं कर सकते हैं कि यह सिम्युलेटेड हो सकता है, क्योंकि ट्यूरिंग पूर्णता टीएम के सिमुलेशन और स्व-संशोधन से संबंधित है algo एक TM नहीं है।
user56834

@ Programmer2134 यह बिल्कुल भीख नहीं माँगता। जो भी CPU आपको लगता है कि आप अपने सेल्फ-मॉडिफाइंग प्रोग्राम को चला रहे हैं, मैं उस CPU को ट्यूरिंग मशीन पर अनुकरण कर सकता हूं। इसे अलग तरीके से समझाने के लिए, प्रारंभिक कार्यक्रम निर्देशों का एक सीमित अनुक्रम है, जिनमें से कुछ कार्यक्रम को स्वयं संशोधित करते हैं। प्रत्येक निर्देश को UTM द्वारा सिम्युलेटेड किया जा सकता है, प्रत्येक संशोधनों को सिम्युलेटेड किया जा सकता है, और प्रत्येक संशोधित निर्देशों को सिम्युलेटेड किया जा सकता है। इस प्रक्रिया के किसी भी स्तर पर कुछ भी नहीं है, जो ट्यूरिंग मशीनों की शक्ति से परे हो जाता है।
डेविड रिचेर्बी

10

कोई भी ट्यूरिंग-पूर्ण कम्प्यूटेशनल मॉडल जिसमें संशोधित कोड (या "कोड") नहीं है, उस कथन के प्रमाण के रूप में कार्य करता है। मैं नहीं जानता कि कि मानक मॉडल के किसी भी (टीएम, रैम, ...) है , कोड को संशोधित करने के लिए है तो हम बहुत दूर देखने के लिए नहीं है।

आपके मन में जो भी भाषा है, उसमें एक कार्यक्रम प्राप्त करने के लिए, इस तरह के एक मॉडल से संकलन करें (और सुनिश्चित करें कि संकलक कोड मोड्यूल लागू नहीं करता है)।


यह है निश्चित रूप से, एक अस्तित्व तर्क: वहाँ है एक बराबर कार्यक्रम। लेकिन हम यह भी जानते हैं कि किसी भी दो ट्यूरिंग-पूर्ण भाषाओं के बीच पुनरावर्ती (यानी कम्प्यूटेबल) कंपाइलर हैं, इस तरह से आपको फॉर्म का एक प्रोग्राम मिलता है (पढ़ें: भाषा में) जो आप चाहते हैं।


4

डेविड रिचेर्बी के जवाब में जोड़ने के लिए :

यदि यह सच था कि किसी भी स्व-संशोधित एल्गोरिदम को गैर-स्व-संशोधित एल्गोरिदम द्वारा मॉडलिंग नहीं किया जा सकता है, तो उन एल्गोरिदम को किसी ऐसी चीज पर निष्पादित करना होगा जो स्वयं-संशोधित भी हो। यह सभी तरह से नीचे कछुए होना चाहिए।

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


1
मुझे लगता है कि एक दिलचस्प विभाजन रेखा हो सकती है। मुझे लगता है कि कोई यह तर्क दे सकता है कि "जीवन" एक आत्म-मॉडिफाइंग अल्गॉर्टिह्म है जिसे गैर-स्व-संशोधित एल्गोरिदम द्वारा मॉडलिंग नहीं किया जा सकता है, लेकिन फिर, "जीवन" को आमतौर पर एल्गोरिथ्म के रूप में नहीं सोचा जाता है।
कॉर्ट अमोन

2
@CortAmmon: यदि हम "जीवन" को एक एल्गोरिथ्म के रूप में देखते हैं, तो इसका इनपुट और इसका आउटपुट क्या है? कोई यह कैसे साबित कर सकता है कि कोई भी समतुल्य एल्गोरिदम (मतलब, कोई भी एल्गोरिथम जो उसी इनपुट को उत्पन्न करता है)
रुख

@ruakh अगर मैं तर्क देता कि जीवन एक स्वप्रेरित एल्गोरिथ्म था, तो इनपुट स्वयं होंगे, और इसके आउटपुट स्वयं होंगे। यह साबित करना कि इसे एक गैर स्व-संशोधित एल्गोरिथ्म में कम नहीं किया जा सकता है, लेकिन मुझे लगता है कि यह एक लोकप्रिय परिकल्पना है। आखिरकार, कितने लोग विश्वास करना चाहते हैं कि उन्हें एक एल्गोरिथ्म में कम किया जा सकता है जो कंप्यूटर पर चल सकता है?
कॉर्ट अमोन

1
@CortAmmon: मुझे एक एल्गोरिथ्म में कम नहीं किया जा सकता है जो कंप्यूटर पर चलता है क्योंकि वह एल्गोरिथ्म अब "मुझे" नहीं है; मैं अपने इनपुट और आउटपुट से अधिक हूं। लेकिन अगर हम इस धारणा से शुरू है कि मैं कर रहा हूँ बस एक एल्गोरिथ्म है, तो पर टैकिंग नहीं वास्तव में कुछ भी बदल जाती है "जो किसी कंप्यूटर पर चला सकते हैं"। पुन: "अगर मैं तर्क देता कि जीवन एक स्वप्रेरित एल्गोरिथ्म था, तो इनपुट स्वयं ही होंगे, और इसके आउटपुट स्वयं होंगे": उस स्थिति में मुझे लगता है कि आप सीएस के बाहर अच्छी तरह से वीरिंग करेंगे, और खतरनाक रूप से क्रैकपॉटरी के करीब होंगे।
21

1
@CortAmmon एक प्रोग्राम जो इनपुट के रूप में खुद को ही आउटपुट देता है cat। (कोई सज़ा का इरादा नहीं, भले ही बिल्लियाँ जीवित चीजें हों)
user253751
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.