गणना योग्य कार्यों को पुनरावर्ती कार्य क्यों कहा जाता है?


23

संगणनीयता सिद्धांत में, संगणनीय कार्यों को पुनरावर्ती कार्य भी कहा जाता है। कम से कम पहली नजर में, उनके पास सामान्य रूप से कुछ भी नहीं है जिसे आप दिन-प्रतिदिन की प्रोग्रामिंग में "पुनरावर्ती" कहते हैं (यानी, कार्य जो स्वयं को कॉल करते हैं)।

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

इसे दूसरे शब्दों में कहें: "पुनरावृत्ति" के दो अर्थों के बीच क्या संबंध है?



3
वे धोखा देते हैं, क्योंकि वे μ ऑपरेटर को शामिल करते हैं । यह एक न्यूनकरण ऑपरेटर है, लेकिन निश्चित रूप से पुनरावर्तन के साथ कम से कम करना है। तो ऐसा लगता है कि किसी ने (क्लेन) सोचा था कि "पुनरावर्ती" अच्छा लगेगा, इसलिए उसने उस नाम का उपयोग करने के लिए एक बहाना का आविष्कार किया। बहुत बाद में, रॉबर्ट सोरे ने समझाया कि "कम्प्यूटेबल" बहुत बेहतर लगेगा, और यह कि "पुनरावर्ती" शुरुआती दिनों की एक विपणन चाल थी, और हर कोई सहमत था।
थॉमस क्लिम्पेल

3
आदिम पुनरावर्ती कार्यों के बारे में क्या? विकिपीडिया से कॉपी किए गए वे और h ( S ( y ) , x 1 , , x k ) = g ( y ) के रूप में परिभाषित किए गए हैं , एच ( y , x 1 , h(0,x1,,xk)=f(x1,,xk) । यह एक ऐसा फंक्शन है जो खुद कॉल करता है। h(S(y),x1,,xk)=g(y,h(y,x1,,xk),x1,,xk)
जनवरी को हेंड्रिक जनवरी

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

1
क्योंकि वे पुनरावर्ती रूप से परिभाषित होते हैं, अर्थात " पहले से परिभाषित, सरल कार्यों के संदर्भ में अधिक जटिल कार्य परिभाषित होते हैं "
निकोस एम।

जवाबों:


13

कुछ बुनियादी कार्यों को परिभाषित करें:

  • शून्य कार्य

    zero:NN:x0
  • उत्तराधिकारी समारोह

    succ:NN:xx+1
  • प्रक्षेपण समारोह

pin:NnN:(x1,x2,,xn)xi

अब से मैं का उपयोग करेगा निरूपित करने के लिए ( एक्स 1 , एक्स 2 , ... , एक्स एन )xn¯(x1,x2,,xn)

एक संरचना को परिभाषित करें:

दिए गए कार्य

  • हस्ताक्षर के साथ प्रत्येक एन कश्मीरएनg1,g2,,gmNkN
  • f:NmN

निम्नलिखित फ़ंक्शन का निर्माण करें:

h:NkN:xk¯h(xk¯)=f(g1(xk¯),g2(xk¯),,gm(xk¯))

आदिम पुनरावृत्ति को परिभाषित करें:

दिए गए कार्य

  • f:NkN
  • g:Nk+2N

निम्नलिखित (टुकड़ा) समारोह का निर्माण:

h:Nk+1N:(xk¯,y+1){f(xk¯),y+1=0g(xk¯,y,h(xk¯,y)),y+1>0

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

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

(अन) सौभाग्य से, एकरमैन नामक व्यक्ति साथ आया और निम्नलिखित कार्य को परिभाषित किया:

  • Ack:N2N
  • Ack(0,y)=y+1
  • Ack(x+1,0)=Ack(x,1)
  • Ack(x+1,y+1)=Ack(x,Ack(x+1,y))

यह फ़ंक्शन कम्प्यूटेबल है, लेकिन इसके ऊपर केवल कंस्ट्रक्शन का उपयोग करने का कोई तरीका नहीं है! (अर्थात , आदिम पुनरावर्ती नहीं है) इसका मतलब है कि गोडेल और उनकी पोज़ उनके निर्माण में सभी कम्प्यूटेशनल कार्यों को पकड़ने में विफल रहे!Ack

गोडेल को अपने कार्यों के वर्ग का विस्तार करना था इसलिए का निर्माण किया जा सकता था। उन्होंने निम्नलिखित को परिभाषित करके ऐसा किया:Ack

अनिर्धारित न्यूनतम

  • g:NkN
  • यदि फिर जी ( ¯ एक्स कश्मीर ) = y और के जी ( ¯ एक्स कश्मीर ) परिभाषित नहीं है।[f(xk¯,y)=0 AND f(xk¯,z) is defined z<y AND f(xk¯,z)0]

    g(xk¯)=y

    g(xk¯)

यह पिछले एक को पकड़ना मुश्किल हो सकता है, लेकिन मूल रूप से इसका मतलब है कि एफ की सबसे छोटी जड़ है (यदि एक जड़ मौजूद है)।g((x1,x2,,xk))f


उपरोक्त सभी निर्माणों के साथ निर्माण किए जा सकने वाले सभी कार्यों को पुनरावर्ती कहा जाता है । फिर से, नाम पुनरावर्ती केवल परिभाषा के आधार पर है, और यह जरूरी नहीं कि स्वयं को कॉल करने वाले कार्यों के साथ सहसंबंध हो। सचमुच, इसे एक घर का नाम मानें।

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

अब गोडेल अपने कार्यों के विस्तारित वर्ग के साथ समारोह का निर्माण करने में सक्षम थे । तथ्य की बात के रूप में, हर फ़ंक्शन जिसे ट्यूरिंग मशीन द्वारा गणना की जा सकती है, ऊपर दिए गए निर्माणों का उपयोग करके और इसके विपरीत, प्रत्येक निर्माण का प्रतिनिधित्व एक ट्यूरिंग मशीन द्वारा किया जा सकता है।Ack

यदि आप अंतर्ग्रही हैं, तो आप गोडेल की कक्षा को बड़ा बनाने की कोशिश कर सकते हैं। आप निर्बाध न्यूनता के 'विपरीत' को परिभाषित करने का प्रयास कर सकते हैं। यही है, अबाधित अधिकतमकरण यानी वह फ़ंक्शन जो सबसे बड़ी जड़ पाता है। हालाँकि, आप पा सकते हैं कि उस फ़ंक्शन की गणना कठिन (असंभव) है। आप व्यस्त बीवर समस्या में पढ़ सकते हैं , जो अनबिके अधिकतमकरण को लागू करने की कोशिश करता है।


4
मुझे पता है कि दी गई परिभाषाएँ वास्तव में प्रश्न का उत्तर नहीं देती हैं, लेकिन मेरा उत्तर पुनरावृत्ति / कम्प्यूटेबिलिटी सिद्धांत के विकास का वर्णन करता है। पढ़ने लायक हो सकता है।
ऑबेरॉन

मुझे यह पसंद है, आपके प्रयासों के लिए धन्यवाद :-)
गोलो रोडेन

h((x1,x2,...,xk),0)=f((x1,x2,...,xk))h((x1,x2,...,xk,0))। इसके अलावा, अगले बुलेट पॉइंट के दूसरे क्लॉज से पहले क्लॉज नहीं है।
एरिक टॉवर्स

2
μ

1
आपके उत्तर में कुछ गलत कथन हैं। आपको उत्तर के लिए इतिहास नहीं बनाना चाहिए।
केवह

17

कम्प्यूटेबिलिटी सिद्धांत के संस्थापक गणितज्ञ थे। उन्होंने यह स्थापित किया कि अब कोई भी संगणक सिद्धांत कहा जाता है, इससे पहले कि कोई कंप्यूटर था। जिस तरह से गणितज्ञों ने उन कार्यों को परिभाषित किया, जिनकी गणना की जा सकती थी? पुनरावर्ती परिभाषाओं द्वारा!

अतः ट्यूरिंग मशीन या लैम्ब्डा कैलकुलस या रजिस्टर मशीनों जैसी गणना का कोई अन्य मॉडल होने से पहले पुनरावर्ती कार्य थे। इसलिए लोगों ने इन कार्यों को पुनरावर्ती कार्यों के रूप में संदर्भित किया। यह तथ्य कि वे ट्यूरिंग मशीनों और अन्य मॉडलों की गणना कर सकते हैं, बाद में होने वाली एक घटना है (ज्यादातर क्लेन द्वारा सिद्ध)।

μ

क्षेत्र का नाम पुनरावृत्ति सिद्धांत का उपयोग करता था। हालाँकि हाल के दशकों में नाम बदलने के लिए कुछ और अपील की गई है ताकि पुनरावर्तन सिद्धांत से कुछ और कंप्यूटर दक्षता (बनाम मैथी) को बदल दिया जाए। परिणामस्वरूप क्षेत्र को अब कम्प्यूटेबिलिटी सिद्धांत कहा जाता है। हालाँकि यदि आप शुरुआती दशकों में पुस्तकों, पत्रों, सम्मेलनों आदि को देखते हैं, तो उन्हें पुनरावर्तन सिद्धांत कहा जाता है, न कि कम्प्यूटेबिलिटी सिद्धांत। यहां तक ​​कि सारे की अपनी 1987 की पुस्तक का शीर्षक (जो कि कम्प्यूटेबिलिटी सिद्धांत में नाम बदलने के लिए धक्का देने के पीछे मुख्य व्यक्ति था) "रिकर्सिवली एनुमेरेबल सेट्स एंड डिग्री" है।

यदि आप इतिहास के बारे में अधिक जानना चाहते हैं तो इसके बारे में पढ़ने के लिए एक मजेदार और अच्छी जगह है। यह ओडीफ्रेड्डी द्वारा क्लासिकल रिकर्सन थ्योरी का पहला अध्याय है।


7

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

अधिक जानकारी के लिए, मैं सारे के निबंध की सलाह देता हूं।


0

एक लंबी टिप्पणी डालने के बजाय एक उत्तर जोड़ने का फैसला किया:

क्योंकि उन्हें पुनरावर्ती रूप से परिभाषित किया गया है , अर्थात " अधिक जटिल कार्य पहले परिभाषित, सरल कार्यों के संदर्भ में परिभाषित किए गए हैं "

इस तरह की पुनरावृत्ति या वृद्धिशील प्रक्रिया अच्छी तरह से परिभाषित कार्य (गणितीय अर्थ में) बनाती है

गणितीय अर्थ में यह पुनरावृत्ति का अर्थ है । नीचे देखें कि यह कैसे प्रोग्रामिंग पार्लरों में पुनरावृत्ति से संबंधित है।

इस प्रक्रिया की तुलना तकनीकों और विधियों जैसे (गणितीय) इंडक्शन के साथ करें जो गणित में पुनरावृत्ति का उदाहरण है।

प्रोग्रामिंग में एक गणितीय नस के साथ-साथ एक इंजीनियरिंग भी है।

इस (सामान्य रूप से रचनात्मक) प्रक्रिया को " बूटस्ट्रैपिंग " के रूप में भी संदर्भित किया जाता है ऑपरेटिंग सिस्टम parlance में ।

हालांकि एक क्रम प्रत्यावर्तन एक ही समारोह की (यानी caling ही अपने रनटाइम के दौरान ), क्योंकि यह चाहिए (हम्म, चाहिए) पहले से ही गणना की मानों (या तर्क) पर हो, या दूसरे शब्दों में, में परिणाम सेट का हिस्सा पहले से ही गणना की , उपरोक्त अर्थों में भी पुनरावर्ती है, " पूर्व निर्धारित परिभाषित कार्य (और उनके मूल्य) "

एल्स अच्छी तरह से परिभाषित नहीं है, और स्टैक ओवरफ्लो :)) जैसी चीजों की ओर जाता है )))

ऑपरेटिंग सिस्टम से एक और उदाहरण देने के लिए, एक रनटाइम रिकर्सन (खुद को कॉल करना) को एक निश्चित अपडेट (जैसे कोर अपडेट) के बाद रिबूट करने वाले ऑपरेटिंग सिस्टम के एनालॉग के रूप में लिया जा सकता है । कई OS निम्न प्रक्रिया करते हैं:

  1. निम्न-स्तरीय दिनचर्या (जैसे I / O) लोड करने के लिए एक प्रारंभिक बूट
  2. आवश्यक अद्यतन करें (निम्न-स्तरीय दिनचर्या का उपयोग करके)
  3. फिर से बूट (प्रभावी रूप से, खुद को फिर से बुलाना), लेकिन इस बार अधिक जटिल दिनचर्या (या पूरे सिस्टम) को लोड करना

ऑबेरॉन का सुंदर जवाब इस तरह की एक प्रक्रिया को और अधिक विस्तार से दर्शाता है।

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