हम कब कह सकते हैं कि दो कार्यक्रम अलग-अलग हैं?


15

Q1। हम कब कह सकते हैं कि दो प्रोग्राम (कुछ प्रोग्रामिंग भाषा में जैसे C ++ में लिखे गए) अलग हैं?

पहला चरम यह कहना है कि दो कार्यक्रम समान हैं यदि वे समान हैं। अन्य चरम यह कहना है कि दो कार्यक्रम समान हैं यदि वे समान फ़ंक्शन की गणना करते हैं (या समान वातावरण में एक ही देखने योग्य व्यवहार दिखाते हैं)। लेकिन ये अच्छे नहीं हैं: प्राइमलिटी चेक करने वाले सभी प्रोग्राम समान नहीं हैं। हम परिणाम पर बिना किसी प्रभाव के कोड की एक पंक्ति जोड़ सकते हैं और हम अभी भी उसी कार्यक्रम पर विचार करेंगे।

Q2। क्या प्रोग्राम और एल्गोरिदम एक ही तरह की वस्तु हैं? यदि नहीं, तो एल्गोरिथ्म की परिभाषा क्या है और यह किसी प्रोग्राम की परिभाषा से कैसे भिन्न है? हम कब कह सकते हैं कि दो एल्गोरिदम बराबर हैं?


कार्यक्रम isomorphism problem? क्या कोई यह नहीं पूछ सकता है कि "क्या यह कार्यक्रम उस कार्यक्रम के लिए आइसोमोर्फिक है जो हमेशा रुकता है?" और हॉल्टिंग समस्या को ठीक करना? अगर हम खुद को बाउंडेड हाल्टिंग प्रोग्राम प्रॉब्लम तक सीमित रखते हैं, तो क्या यह सिर्फ ग्राफ इस्मोर्फिज़्म नहीं है?
user834

5
दो एल्गोरिदम समान कब होते हैं? arxiv.org/abs/0811.0811
sdcvvc

1
क्या यह पूरी तरह से संदर्भ पर निर्भर नहीं करेगा? यहाँ थोड़ा दार्शनिक हो रहा है, लेकिन एक बोल्ट-डाउन चेयर और एक उल्टा-सीधा बोल्ट-डाउन चेयर शारीरिक रूप से समान हैं लेकिन एक कुर्सी के विचार के संदर्भ में समान नहीं हैं ।
री मियासका

थोड़ा ऑफ-टॉपिक, लेकिन, चूंकि प्रमाण कार्यक्रम हैं ... gowers.wordpress.com/2007/10/04/…
Radu GRIGore

1
निम्नलिखित लेख बहुत संबंधित है। मैंने केवल कुछ समय पहले इसके माध्यम से स्किम्ड किया है, लेकिन Blass और Gurevic आमतौर पर वास्तव में अच्छी तरह से लिखते हैं (मैं सिर्फ Dershowitz द्वारा कुछ और पढ़ना याद नहीं करता, यह कहते हुए कि यह आमतौर पर बहुत पठनीय नहीं है)। research.microsoft.com/en-us/um/people/gurevich/Opera/192.pdf जब दो लोग एक जैसे होते हैं? आंद्रे ब्लास, नेचुरम डोरशॉइट, और यूरी गुरिच
कस्तर्मा

जवाबों:


18

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

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


सामान्य रूप से आईओ और साइड इफेक्ट्स को शास्त्रीय एल्गोरिथम धारणाओं द्वारा कवर नहीं किया जाता है।
राफेल

15

अन्य चरम यह कहना है कि दो कार्यक्रम समान हैं यदि वे समान फ़ंक्शन की गणना करते हैं (या समान वातावरण में एक ही देखने योग्य व्यवहार दिखाते हैं)। लेकिन ये अच्छे नहीं हैं: प्राइमलिटी चेक करने वाले सभी प्रोग्राम समान नहीं हैं। हम परिणाम पर बिना किसी प्रभाव के कोड की एक पंक्ति जोड़ सकते हैं और हम अभी भी उसी कार्यक्रम पर विचार करेंगे।

यह एक चरम नहीं है: कार्यक्रम की समानता को अवलोकन की धारणा के सापेक्ष परिभाषित किया जाना चाहिए ।

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

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

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

मूल रूप से, कार्यक्रम की समानता की कोई एकल धारणा नहीं है; यह हमेशा आपके द्वारा उठाए गए अवलोकन की धारणा के सापेक्ष है, और यह आपके द्वारा ध्यान में रखे गए अनुप्रयोग पर निर्भर करता है।


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

α

1
αα

1
@ SamTobin-Höchstadt। ठीक है, हम "सामान्य" भूल जाते हैं। मुझे लग रहा है कि आप वही बात कह रहे हैं जो नील ने कही थी, जो मेरे विचार से काफी अच्छी थी। आपका विचार, जो अभी भी मेरे लिए अस्पष्ट है, को नील के ढांचे में सही प्रकार के अवलोकनों और सही प्रकार के कार्यक्रम संदर्भों को चुनकर औपचारिक रूप दिया जा सकता है।
उदय रेड्डी

1
λλx.xλy.y

2

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

मुझे खेद है अगर यह अनुभवहीन है। मैं पीएल अनुसंधान नहीं करते।


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