शक्तिशाली एल्गोरिदम जो लागू करने के लिए बहुत कठिन हैं - यह कैसे सुनिश्चित किया जाए कि वे सही हैं?


9

मैं यहां प्रश्न का उल्लेख कर रहा हूं: शक्तिशाली एल्गोरिदम लागू करने के लिए बहुत जटिल है

यदि एक एल्गोरिदम शक्तिशाली है, लेकिन लागू करने के लिए बहुत जटिल है, तो आप कैसे सुनिश्चित कर सकते हैं कि एल्गोरिथ्म सही है? कार्यान्वयन के बिना आप एक वास्तविक दुनिया के परिदृश्य में एल्गोरिथ्म का परीक्षण करने में सक्षम नहीं होंगे, और इस तरह के एक जटिल एल्गोरिथ्म में कीड़े हो सकते हैं, जो एल्गोरिथ्म को अमान्य कर सकते हैं।

यह वही है जो मुझे समझ में नहीं आता है; यदि आपके पास एक एल्गोरिथ्म की शुद्धता साबित करने की तकनीक है, तो आपके पास इसे पहले से ही लागू करने के लिए एल्गोरिथम होगा, है ना? या फिर हम कैसे सुनिश्चित कर सकते हैं कि साबित करने वाली तकनीक सही है?

मुझे माफ करना अगर मैं प्राथमिक ध्वनि करता हूं!

Kaveh से अपडेट करें (यहां पुन: प्रस्तुत किया गया क्योंकि तर्क बेहतर है!):

यदि आप औपचारिक रूप से Coq जैसी औपचारिक प्रणाली में एक एल्गोरिथ्म की शुद्धता को साबित कर सकते हैं तो आप एल्गोरिथ्म भी निकाल सकते हैं (क्योंकि अनिवार्य रूप से आपने एल्गोरिथ्म को लागू किया है), लेकिन महत्वपूर्ण तथ्य यह है कि अधिकांश एल्गोरिदम के लिए हम औपचारिक प्रमाण नहीं देते हैं एल्गोरिथ्म के लिए शुद्धता, हम शुद्धता के अनौपचारिक सबूत का उपयोग करते हैं। सबूत झूठे हो सकते हैं, जो समय-समय पर होता है, और यहां तक ​​कि शुद्धता का एक औपचारिक प्रमाण हमें बिल्कुल सुनिश्चित नहीं करेगा कि एल्गोरिथ्म सही है।


6
यही कारण है कि हमारे पास एल्गोरिदम की शुद्धता साबित करने की तकनीक है , भले ही (सही) कार्यान्वयन एक वास्तविक मशीन पर कठिन हो।
राफेल

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

8
शुद्धता के जटिल प्रमाण के साथ सरल एल्गोरिदम - आप कैसे जानते हैं कि वे सही हैं? सिर्फ इसलिए कि एल्गोरिथ्म परीक्षण उदाहरणों पर काम करता है इसका मतलब यह नहीं है कि यह सभी इनपुट पर काम करता है।
पीटर शोर

2
मैं अधिकांश टिप्पणियों से सहमत हूं, लेकिन मुझे लगता है कि वे एक महत्वपूर्ण बिंदु को याद कर रहे हैं। यदि आप औपचारिक रूप से Coq जैसी औपचारिक प्रणाली में एक एल्गोरिथ्म की शुद्धता को साबित कर सकते हैं तो आप एल्गोरिथ्म भी निकाल सकते हैं (क्योंकि अनिवार्य रूप से आपने एल्गोरिथ्म को लागू किया है), लेकिन महत्वपूर्ण तथ्य यह है कि अधिकांश एल्गोरिदम के लिए हम औपचारिक प्रमाण नहीं देते हैं एल्गोरिथ्म के लिए शुद्धता , हम शुद्धता के अनौपचारिक सबूत का उपयोग करते हैं । प्रमाण झूठे हो सकते हैं, जो समय-समय पर होता है, और यहां तक ​​कि शुद्धता का एक औपचारिक प्रमाण हमें बिल्कुल सुनिश्चित नहीं करेगा कि एल्गोरिथ्म सही है।
केवह

5
"उपरोक्त कोड में बग से सावधान रहें; मैंने केवल इसे सही साबित किया है, इसे आजमाया नहीं है।" ~ डोनाल्ड नुथ
लेव Reyzin

जवाबों:


11

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

प्रमेय / एल्गोरिदम को सही साबित करने के लिए हमारे (गणितीय) उपकरण सही हैं, लेकिन जब वे बहुत जटिल हो गए तो हम फिसल सकते हैं और गलत चीजों को सही साबित कर सकते हैं। पी ≠ एनपी पर हाल ही में 100 या तो पेज के सबूत एक उत्कृष्ट उदाहरण है। हालांकि, यह सबूतों की प्रकृति को खारिज नहीं करता है: उनके साथ कुछ भी गलत नहीं है।

एक अंतिम बिंदु: मुझे लगता है कि विज्ञान के दर्शन का अध्ययन हमें इस पर अधिक जानकारी देगा। (दिए गए लिंक के तहत, बुलेट देखें " हमें कैसे पता चलेगा कि गणितीय प्रमाण सही है? ")

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