मैं यह बताना चाहता हूं कि यह प्रश्न समान है, लेकिन मेरे प्रश्न में यादृच्छिकता शामिल नहीं है, बस सूक्ष्मता निर्धारकवाद है, इसलिए "ज्ञात बीज का उपयोग करें" का उत्तर वास्तव में लागू नहीं होता है। इसी तरह, यह प्रश्न समान है, लेकिन फिर से, मैं एल्गोरिदम को कभी भी विफल होने की उम्मीद नहीं कर रहा हूं - मुझे अभी नहीं पता है कि यह किस तरह से सही होगा।
ग्राफ एल्गोरिदम का परीक्षण करते समय यह प्रश्न आया था। लेकिन किसी भी तरह से उनके लिए सीमित नहीं है। कुछ एल्गोरिदम जैसे A * में कई सही उत्तर हो सकते हैं। आपके सटीक कार्यान्वयन के आधार पर आपको कई उत्तर मिल सकते हैं, जिनमें से प्रत्येक समान रूप से सही हैं। इससे उन्हें परीक्षण करना मुश्किल हो सकता है, हालांकि, क्योंकि आप नहीं जानते कि वह कौन सा है जो समय से पहले थूकने जा रहा है, और हाथ से उत्तरों की गणना करने में बहुत समय लगता है।
अपने विशिष्ट मामले में, मैंने फ्लोयड-वॉर्सहॉल को संशोधित करके हर संभव सबसे छोटे रास्ते से बाहर निकलने के लिए इसके चारों ओर पाया , और उस समय के परीक्षण का समय बिताया। यह अपने आप में एक अच्छी विशेषता होने का लाभ था। तब मैं एफडब्ल्यू से ज्ञात सही रास्तों के संदर्भ में अन्य कार्यों का परीक्षण कर सकता था (यदि लौटा हुआ पथ, उस प्रारंभ / अंत जोड़ी के लिए एफडब्ल्यू द्वारा लौटाए गए रास्तों में से कोई एक है, तो यह सही है)। बेशक, यह केवल एफडब्ल्यू काम करने के कारण घने रेखांकन के लिए काम करता है, लेकिन यह अभी भी अच्छा है।
हालाँकि, यह हमेशा इस विशेषता वाले सभी एल्गोरिदम के लिए व्यवहार्य नहीं हो सकता है। अब तक, सबसे अच्छा जवाब जो मैं आया हूं, वह सही उत्तर की विशेषताओं के लिए परीक्षण करना है, बजाय सही उत्तर के। कम से कम पथ एल्गोरिदम पर वापस जाने के लिए, आप ज्ञात सही लागत के विरुद्ध दिए गए पथ की लागत की जांच कर सकते हैं और सुनिश्चित कर सकते हैं कि मार्ग वैध है।
यह काम करता है, लेकिन यह सब कुछ सही ढंग से सत्यापित न करने के जोखिम को चला सकता है, जिसमें शुद्धता के लिए अधिक मानदंड हैं, खासकर यदि सत्यापन स्वयं जटिल है (जैसे कि सही एल्गोरिदम मौजूद है , न्यूनतम फैले हुए पेड़ की पुष्टि करना एक ज्ञात कठिन समस्या है; शायद इससे भी कठिन; स्वयं एमएसटी का निर्माण), जिस स्थिति में अब आपको अपने परीक्षण कोड का व्यापक परीक्षण करना है। इससे भी बदतर: संभवतः आपको एक एमएसटी सत्यापन एल्गोरिथ्म का परीक्षण करने के लिए एक एमएसटी का निर्माण करना होगा ताकि आपके पास अब एक शानदार परिदृश्य हो जहां आपका एमएसटी परीक्षण आपके एमएसटी सत्यापन एल्गोरिदम पर निर्भर करता है, और आपका एमएसटी सत्यापन एल्गोरिथ्म परीक्षण आपके एमएसटी सत्यापन कार्य प्रणाली पर निर्भर करता है।
अंत में, "सस्ता तरीका" है, जिसमें आउटपुट का अवलोकन करना, उसे हाथ से सत्यापित करना शामिल है, फिर आपके द्वारा सत्यापित किए गए आउटपुट का परीक्षण करने के लिए कठिन कोडिंग करना, लेकिन यह एक बढ़िया विचार नहीं है क्योंकि आपको हर बार परीक्षण को संशोधित करना पड़ सकता है। कार्यान्वयन को थोड़ा बदलें (जो स्वचालित परीक्षण से बचने के लिए माना जाता है)।
स्पष्ट रूप से इसका उत्तर उस सटीक एल्गोरिथम पर निर्भर करता है जिसे आप एक डिग्री पर परीक्षण कर रहे हैं, लेकिन मैं सोच रहा था कि क्या एल्गोरिदम को सत्यापित करने के लिए कोई "सर्वोत्तम प्रथाएं" थीं जो कई निश्चित, नियतात्मक "सही" आउटपुट हैं, लेकिन उन सटीक सही आउटपुट मुश्किल हैं समय से पहले पता है, और संभवतः तथ्य के बाद भी सत्यापित करना कठिन है।