उच्च क्रम के कार्यक्रमों के लिए प्रोग्राम उलटा एल्गोरिदम


10

अवधि कार्यक्रम उलट अर्थ के कई रंगों है, लेकिन शायद के साथ जे मैकार्थी के 1956 काम शुरू कर दिया गया ट्यूरिंग मशीन द्वारा परिभाषित कार्य द उलट ऐ के संदर्भ में। अब तक प्रोग्राम उलटा और अन्य क्षेत्रों के बीच कई कनेक्शन खोजे जा चुके हैं, जैसे प्रतिवर्ती प्रोग्रामिंग (भौतिक और तार्किक), आंशिक मूल्यांकन, सत्यापन, द्विदिश प्रोग्रामिंग, लॉजिक प्रोग्रामिंग और मशीन लर्निंग।

प्रोग्राम उलटा क्या है? पहले सन्निकटन में यह कुछ इस तरह है: एक कार्यक्रम टाइप ए के तर्क ले रहा है और बी के परिणाम वापस कर रहा है , एक प्रोग्राम पी - 1 का उत्पादन करें जो कि पी के उलटा "किसी तरह" है । मैं जानबूझकर यहां अस्पष्ट हो रहा हूं, क्योंकि अवधारणा विभिन्न तरीकों से (और है) स्पष्ट की जा सकती है: उदाहरण के लिए पी को इंजेक्शन लगाने की आवश्यकता है? चाहिए पी - 1 ( ) सभी या वापसी सिर्फ कुछ एक ऐसी है कि पी ( एक ) = P:ABABP1PPP1(b)aP(a)=b?

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

संदर्भ अनुरोध। -calculi (उच्चतर क्रम पर कोई प्रतिबंध नहीं है) के कार्यक्रम व्युत्क्रम के लिए स्पष्ट एल्गोरिदम में अत्याधुनिक क्या है ?λ

जवाबों:


5

इस अंतरिक्ष में बहुत बड़ी मात्रा में काम नहीं हुआ है, लेकिन वहाँ क्या काम है, बहुत दिलचस्प है।

  1. टॉर्बन मोगेनसेन ने इस समस्या पर काम किया है। यहां उनके दो पेपर हैं।

    पहला पेपर पहले-क्रम के कार्यात्मक कार्यक्रमों के लिए एक एल्गोरिथ्म देता है, और दूसरा इसे उच्च-क्रम तक बढ़ाता है। यह एल्गोरिथ्म कब सफल होगा इसका सटीक लक्षण वर्णन भविष्य के काम पर छोड़ दिया गया है।

  2. टेटसु योकोयामा, होल्गर बोक एक्सलसेन, और रॉबर्ट ग्लुक।

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

  3. स्टीफन बोहेन और बाल्टासर ट्रैंकोन विडेमैन।

    यह एक बहुत साफ कागज है! यह देखता है कि (ए) आप एक ऐसी श्रेणी का निर्माण कर सकते हैं, जहाँ आकारिकी को उनके व्युत्क्रम के साथ जोड़ा जाता है । इसका मतलब है कि आप थोड़ा फंकी रैखिक प्रकार के अनुशासन के साथ एक कार्यक्रम लिख सकते हैं, और फिर शब्दार्थ से आगे और पीछे की व्याख्याओं को पढ़ सकते हैं।

    वे एक काफी जंगली वाक्यविन्यास के साथ एक कार्यात्मक भाषा देते हैं: nigh-मनमाने ढंग से अभिव्यक्तियों को पैटर्न के रूप में इस्तेमाल किया जा सकता है, और प्रतिवर्तीता इसे समझदार बनाती है।

  4. फ्रांसेस्को टाईजिया, नोबुको योशिदा

    मैंने इसे नहीं पढ़ा है, लेकिन केवल इसे खोजा है जब अन्य कागजात के लिए Googling। लेखकों और विषय को देखते हुए, मुझे संदेह है कि यह आपकी गली तक सही है!


धन्यवाद। (2, 3, 4) प्रोग्राम इनवर्जन नहीं करते हैं, लेकिन प्रोग्रामिंग प्रोग्रामिंग डिज़ाइन जहाँ प्रोग्राम परिभाषा के विपरीत / उलटे होते हैं। यह एक निकट संबंधी, लेकिन अलग समस्या है। वास्तव में मैं पूरी तरह से स्पष्ट नहीं हूं कि ये समस्याएं कैसे संबंधित हैं। मैंने अर्ध-उलटा नहीं देखा था इससे पहले कि यह समस्या को हल करता है क्योंकि उलटा अर्ध-उलटा का एक किनारा मामला लगता है? BTW मोगेनसेन का दूसरा पेपर केवल 2nd-ऑर्डर तक जाता है।
मार्टिन बर्गर

@MartinBerger: मुझे लगता है कि रिश्ता इस बात पर निर्भर करता है कि आप प्रोग्राम के लिए क्या उपयोग करना चाहते हैं! मुझे इस समस्या में दिलचस्पी हुई क्योंकि मैं टाइप इंफ़ेक्शन देख रहा था (यदि आपके पास टाइप-स्तरीय फ़ंक्शंस हैं, तो क्वांटिफायर इंस्टेंटिएशन का पता लगाने के लिए उन कार्यों को पलटना उपयोगी है), और इसलिए भाषा को प्रतिबंधित करना शोस्टॉपर के लिए नहीं था। मुझे। तुम क्या करने की कोशिश कर रहे हो?
नील कृष्णास्वामी

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