यदि आप दो एल्गोरिदम किसी भी इनपुट के लिए एक ही परिणाम लौटाते हैं, तो आप कैसे जांच करेंगे?


18

यदि आप दो एल्गोरिदम (कहते हैं, मर्ज सॉर्ट और नाओवे सॉर्ट) किसी इनपुट के लिए एक ही परिणाम लौटाते हैं, तो सभी इनपुटों का सेट अनंत होने पर कैसे जांचें?

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


5
जैसा कि युवल ने कहा, ऐसी कोई प्रक्रिया नहीं है जो यह निर्धारित कर सके कि किसी भी दो कार्यक्रमों के लिए। लेकिन आपके उदाहरण की तरह एक विशेष मामले में आप इसे साबित कर सकते हैं: उदाहरण के लिए यदि आप यह साबित करते हैं कि आपके दोनों एल्गोरिदम एक क्रमबद्ध क्रम को वापस करते हैं और स्थिर हैं, तो आपको किया जाएगा।
साशो निकोलेव

1
क्या आप एक स्वचालित तकनीक / एल्गोरिथ्म या मैन्युअल तकनीकों का एक सेट चाहते हैं?
डेव क्लार्क

@SashoNikolov, अगर प्रदर्शन को आउटपुट का एक हिस्सा माना जाता है, तो आपको यह भी दिखाना होगा कि वे दोनों एक ही समय / अंतरिक्ष एकता में काम करते हैं।
edA-qa मोर्ट-ओर-वाई

1
क्या आपका मतलब है "जांच" या साबित? "किसी भी इनपुट" या सभी इनपुट का मतलब है? प्रश्न के लिए प्रेरणा और संदर्भ क्या है?
केव

2
@AndresRiorio: प्रूफ तकनीक एल्गोरिदम से अलग हैं जो सामान्य समस्या को हल करती हैं। उदाहरण के लिए, हॉल्टिंग समस्या अनिर्वाय है, लेकिन कई कार्यक्रमों (हाथ या स्वचालित रूप से या स्वचालित) द्वारा समाप्ति को साबित करना संभव है।
राफेल

जवाबों:


16

इसके विपरीत नाय-कहने वाले, ऐसा करने के लिए कई प्रभावी तकनीकें हैं।

  • Bisimulation एक दृष्टिकोण है। उदाहरण के लिए, कोइंडक्शन एंड फंक्शनल प्रोग्रामिंग पर गॉर्डन का पेपर ।

  • एक अन्य दृष्टिकोण कार्यक्रम तुल्यता के संचालन सिद्धांतों का उपयोग करना है, जैसे पिट्स का काम ।

  • एक तीसरा दृष्टिकोण यह सत्यापित करना है कि दोनों कार्यक्रम समान कार्यात्मक विनिर्देश को संतुष्ट करते हैं। इस दृष्टिकोण पर हजारों कागज हैं।

  • चौथा दृष्टिकोण यह दिखाना है कि ध्वनि कार्यक्रम परिवर्तनों का उपयोग करके एक कार्यक्रम को दूसरे में फिर से लिखा जा सकता है ।

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


हे · रिस · टिक । [जीआर। εὑρ discover "डिस्कवर"] एन। 1. एक ऐसी तकनीक जिसे किसी समस्या को हल करने के लिए डिज़ाइन किया गया है, जो इस बात की अनदेखी करती है कि क्या समाधान सही साबित हो सकता है, लेकिन जो आमतौर पर एक अच्छा समाधान पैदा करता है या एक सरल समस्या को हल करता है जिसमें अधिक जटिल समस्या के समाधान के साथ या अंतर होते हैं। 2. ( थोर। ) एक एल्गोरिथ्म जो काम नहीं करता है।
जेफ

1
बार्ट सिम्पसन: "जीत नहीं सकते। कोशिश मत करो।"
डेव क्लार्क

9
@ जेफ: यदि आप जांचना चाहते हैं कि क्या दो एल्गोरिदम एक ही परिणाम देते हैं, तो आप एक प्रमाण देते हैं। ऐसा करने के लिए बहुत सारी अच्छी तकनीकें हैं। ज़रूर, सभी तरीके अधूरे हैं, लेकिन कौन परवाह करता है? गोएडेल का अधूरापन प्रमेय गणित को छोड़ने का कारण नहीं है!
नील कृष्णस्वामी

3
@JeffE सिर्फ इसलिए कि यह निर्धारित करने के लिए कोई गणना योग्य कार्य नहीं है कि क्या दो मनमाने एल्गोरिदम एक ही परिणाम लौटाते हैं, इसका मतलब यह नहीं है कि आप किसी भी दो विशेष एल्गोरिदम के लिए सवाल का जवाब नहीं दे सकते हैं , विशेष रूप से एक प्रमाण के लिए खोज की प्रक्रिया एक कम्प्यूटेशनल नहीं है कार्य । इसी तरह ऐसे कागजात हैं जो विशेष एल्गोरिदम के लिए गारंटीकृत समाप्ति साबित करते हैं, इस तथ्य के बावजूद कि यह यंत्रवत् रूप से निर्धारित करना संभव नहीं है कि क्या एक मनमाना एल्गोरिदम हमेशा समाप्त होगा।
बेन

2
व्यवहार में दो एल्गोरिदम जो समान फ़ंक्शन की गणना करने वाले हैं, शायद ही कभी बिसिमुलेशन-आधारित प्रमाण के लिए अनुमति देते हैं। (उपर्युक्त सॉर्टिंग एल्गोरिदम के मामले में, छोरों / पुनरावृत्ति के मध्यवर्ती चरण अलग-अलग हैं।) मैं यह बताने के लिए पुराने पुराने होरे-तर्क का उपयोग कर रहा हूं कि वे दोनों I / O व्यवहार के समान विनिर्देश को लागू करने का तरीका है। जाना।
काई

10

"यह असंभव है" कथनों पर थोड़ा विस्तार करने के लिए, यहां एक सरल प्रमाण स्केच दिया गया है।

हम ट्यूरिंग मशीनों द्वारा आउटपुट के साथ एल्गोरिदम को मॉडल कर सकते हैं जो उनके टेप पर उनके आउटपुट के साथ रुकते हैं। यदि आप ऐसी मशीनें रखना चाहते हैं जो या तो उनके टेप पर आउटपुट के साथ स्वीकार करने या अस्वीकार करने की स्थिति में हो सकती हैं (जिस स्थिति में कोई आउटपुट नहीं है) तो आप आसानी से एक एन्कोडिंग के साथ आ सकते हैं जो आपको इन मशीनों को "पड़ाव या पड़ाव नहीं" के साथ मॉडल करने की अनुमति देता है, कोई अस्वीकार नहीं है "मशीनें।

अब, मान लें कि मेरे पास यह निर्धारित करने के लिए एक एल्गोरिथ्म पी है कि क्या प्रत्येक इनपुट के लिए दो ऐसे टीएम का आउटपुट समान है। फिर, एक टीएम और एक इनपुट एक्स को देखते हुए , मैं एक नया टीएम बी बना सकता हूं जो निम्नानुसार संचालित होता है:

  1. जांचें कि क्या इनपुट बिल्कुल एक्स है
  2. यदि हाँ, तो एक अनंत लूप दर्ज करें
  3. यदि नहीं, तो इनपुट पर चलाएं

अब मैं P को A और B पर चला सकता हूँ । B , X पर रुकता नहीं है , लेकिन अन्य सभी इनपुट के लिए A के समान आउटपुट है , इसलिए यदि केवल और केवल A ही X पर रुकता नहीं है, तो इन दोनों एल्गोरिदम का प्रत्येक इनपुट के लिए समान आउटपुट है। लेकिन पी को यह बताने में सक्षम माना गया कि क्या दो एल्गोरिदम में प्रत्येक इनपुट के लिए एक ही आउटपुट है, इसलिए यदि हमारे पास पी था तो हम बता सकते हैं कि क्या एक मनमाना मशीन एक अनियंत्रित इनपुट पर रुकती है, जो हैल्टिंग समस्या है। चूंकि Halting Problem को undecidable के रूप में जाना जाता है, P मौजूद नहीं हो सकता है।

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


P

@ राफेल हां, मैंने जो तर्क दिया है वह इस तरह के प्रतिबंधित पी के बारे में कुछ नहीं कहता है , केवल यह कि पूरी तरह से सामान्य कोई भी मौजूद नहीं हो सकता है। मेरी वृत्ति यह है कि जब आप इसे सामान्य एल्गोरिदम के बजाय "सॉर्टिंग एल्गोरिदम" तक सीमित रखते हैं, तब भी हॉल्टिंग की समस्या अभी भी अकल्पनीय है, इस मामले में असंभवता का प्रमाण अभी भी मौजूद है, हालांकि मैंने ऐसा दावा कभी नहीं सुना है।
बेन

2
आम तौर पर, राइस के प्रमेय में कहा गया है कि एल्गोरिथ्म के बारे में कुछ साबित करने के लिए कोई कम्प्यूटेशनल तरीका नहीं है, जैसे ही कम से कम एक एल्गोरिथ्म है जिसमें वह संपत्ति है जिसे आप साबित करने की कोशिश कर रहे हैं और कम से कम एक ऐसा नहीं है। उदाहरण के लिए, एक एल्गोरिथ्म ए दिया जाता है, कोई कम्प्यूटेशनल फ़ंक्शन नहीं होता है जो एल्गोरिथ्म बी को इनपुट के रूप में लेता है और परीक्षण करता है कि क्या बी ए के बराबर है
गिल्स एसओ- बुराई को रोकें '25

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

2

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


1

एक एल्गोरिथ्म को तैयार करना असंभव है जो सामान्य रूप से इस समानता को साबित करता है। संकेत: हॉल्टिंग समस्या से कमी।


कई तकनीकें मौजूद हैं, हालांकि कोई भी पूरी तरह से स्वचालित नहीं है।
डेव क्लार्क

मुझे नहीं पता कि यह संभव है या नहीं, आपके उत्तर से यह केवल एक टिप्पणी है। उत्तर नहीं।

@ सईदअमीरि: मैं जवाब के संदर्भ में थोड़ा बाहर हूं; मुझे लगता है कि यह पर्याप्त है, यदि विशेष रूप से अच्छा नहीं है।
राफेल

@ राफेल, युवल दिमाग में जो कमी है वह स्पष्ट है, और मुझे नहीं लगता कि ओपी को इसकी जानकारी नहीं है, लेकिन IMO की कठिन समस्या विशेष मामलों के लिए कोई रास्ता तलाश रही है, इसलिए यह स्पष्ट कमी सिर्फ ओपी को याद दिलाने के लिए एक टिप्पणी हो सकती है सामान्य मामले के लिए।

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