एक एल्गोरिथ्म का उदाहरण जिसमें शुद्धता का प्रमाण नहीं है


18

हमारे पास होरे तर्क है। यह अभी भी क्यों संभव है कि एक एल्गोरिथ्म सही है लेकिन कोई सबूत नहीं है कि यह सही है? मान लीजिए कि एल्गोरिथ्म सी में व्यक्त किया गया है। तो हम कदम से कदम बहस कर सकते हैं कि यह वही कर रहा है जो यह करना चाहिए था।

तो मेरा सवाल है:

मुझे एक एल्गोरिथ्म का एक उदाहरण दें जो सही है लेकिन शुद्धता का प्रमाण नहीं है।

संपादित करें: मुझे लगता है कि थोड़ी पृष्ठभूमि स्पष्ट करने में मदद कर सकती है कि मैं कहाँ जा रहा हूँ। मुझे स्कॉट आरोनसन उद्धृत करें:

1970 के दशक से, ऐसी अटकलें लगाई जा रही थीं कि गणित के लिए मानक स्वयंसिद्ध प्रणाली, जैसे कि Zermelo-Fraenkel सेट थ्योरी से P NP स्वतंत्र हो सकता है (यानी न तो साबित हो सकता है और न ही नापसंद)। स्पष्ट होने के लिए, इसका मतलब यह होगा कि या तो

  1. एनपी-पूर्ण समस्याओं के लिए एक बहुपद-समय एल्गोरिथ्म मौजूद नहीं है, लेकिन हम इसे कभी भी साबित नहीं कर सकते (कम से कम हमारे सामान्य औपचारिक सिस्टम में नहीं), या फिर

  2. एन पी-सम्पूर्ण समस्याओं के लिए एक बहुपद समय एल्गोरिथ्म करता है मौजूद हैं, लेकिन या तो हम साबित नहीं कर सकते हैं कि यह काम करता है, या हम कभी साबित कर सकते हैं कि यह बहुपद समय में रुक जाता है।

मैं दूसरी संभावना की बात कर रहा हूं। चूंकि आरोनसन आत्मविश्वास से इसे एक संभावना के रूप में सूचीबद्ध कर सकते हैं, मुझे लगता है कि टाइप 2 का एक मौजूदा उदाहरण होना चाहिए। यही कारण है कि मैं यह सवाल पूछ रहा हूं। लेकिन ऐसा लगता है कि एक त्वरित और स्पष्ट जवाब देखने में नहीं है।


17
अगर हमारे पास शुद्धता का प्रमाण नहीं है, तो यह कहने का क्या मतलब है कि एक एल्गोरिथ्म सही है?
डेविड रिचेर्बी

14
क्या आपका मतलब है "शुद्धता का प्रमाण असंभव है" या "किसी ने भी इसे सही साबित नहीं किया"?
gnasher729

12
एल्गोरिदम को सही नहीं होना चाहिए ... मान लीजिए कि आपके पास यह है: (1) सुबह खिड़की पर एक खाली बाल्टी रखें। (२) शाम को नीचे ले जाना। (3) बाल्टी में पानी की मात्रा को मापें। (4) अगली सुबह दोहराएं। यह एक एल्गोरिथ्म का वर्णन है, लेकिन यह किसी भी चीज का वर्णन नहीं करता है, जो बिना किसी खिंचाव के हो सकता है, जिसे "सही" कहा जाता है। दिलचस्प बात यह है कि दुनिया में अधिकांश प्रोग्रामिंग कोड इस विशेष तरीके से लिखे गए हैं: यह सिर्फ इस बात की शुद्धता से चिंतित नहीं है कि यह क्या करता है।
wvxvw

@wvxvw मैं उलझन में हूँ, फिर एल्गोरिथ्म का "सही" होने का क्या मतलब है? यदि यह वही करता है जो इसे करने का इरादा था, इसका मतलब यह नहीं है कि यह सही है? यदि आपके परिदृश्य का लक्ष्य हर दिन के लिए, बारिश के दौरान बाल्टी में एकत्रित पानी की औसत मात्रा का पता लगाना था, तो क्या उस स्थिति में एल्गोरिथ्म सही नहीं होगा?
अब्दुल

8
@ आप समझ नहीं रहे हैं ... ऐसा नहीं है कि प्रोग्रामर अपने कोड की शुद्धता की परवाह नहीं करते हैं, यह है कि कुछ एल्गोरिदम के लिए "शुद्धता" की अवधारणा लागू नहीं है। कुछ .NET WindowsForms एप्लिकेशन लें, जो प्रभाव के लिए कुछ कहता है: "इस बटन को इस स्थिति में इस लेबल के साथ रखें, फिर इस अन्य बटन को इस अन्य स्थान पर और इसी तरह रखें ..." - इस की कुछ व्याख्या हो सकती है प्रोग्राम करता है, जिसके तहत इसे (इन) सही (उदाहरण के लिए ग्राफिक डिजाइनर का कहना है कि इसे "बदसूरत दिखता है") के रूप में आंका जा सकता है, लेकिन यह जहां तक ​​जाता है।
wvxvw

जवाबों:


50

यहाँ पहचान समारोह के लिए एक एल्गोरिथ्म है:

  • इनपुट: n
  • जांचें कि क्या वें बाइनरी स्ट्रिंग ZFC में 0 > 1 का प्रमाण संलग्न करता है, और यदि ऐसा है, तो आउटपुट n + 1n0>1n+1
  • अन्यथा, आउटपुट n

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


2
क्या आप सुनिश्चित हैं कि यदि वें बाइनरी स्ट्रिंग ZFC में 0 > 1 का प्रमाणn0>1 है, एक एल्गोरिथ्म है?
दिमित्री ग्रिगोरीव

23
नहीं, लेकिन चेक निश्चित रूप से एल्गोरिदम (यानी, ट्यूरिंग मशीन द्वारा) लागू किया जा सकता है। वास्तव में यह हमारे पास प्रूफ सिस्टम के लिए आवश्यक आवश्यकताओं में से एक है - यह कि प्रूफ वैलिडिटी चेक करने योग्य एल्गोरिथम है।
युवल फिल्मस

6
@Puppy ZFC साबित होता है । लेकिन यह भी साबित हो सकता है 0 > 1 अगर (च) यह असंगत है। लगभग सभी का मानना ​​है कि ZFC सुसंगत है, लेकिन निश्चित रूप से अपूर्णता प्रमेयों की वजह से हम यह सुनिश्चित नहीं कर सकते हैं। ¬(0>1)0>1
ची

1
@ नथानियल बिल्कुल नहीं। आप आसानी से प्रत्येक पाठ्यपुस्तक एल्गोरिथ्म की शुद्धता को साबित कर सकते हैं, उदाहरण के लिए। यह एल्गोरिथ्म इस मायने में अलग है कि यह ZFC की स्थिरता पर निर्भर करता है , जो कुछ ऐसा है जो ZFC खुद को साबित नहीं कर सकता है।
युवल फिल्मस

1
@ नथानियल: यदि आप चाहें, तो हमें इस चर्चा को चैट में जारी रखना चाहिए
user21820

9

अधिकांश एल्गोरिदम को होरे तर्क में सही साबित नहीं किया गया है। मुख्य कारण यह है कि इस तरह के शुद्धता प्रमाण जनवरी 2017 की तुलना में बहुत महंगे हैं, शायद 'मात्र' प्रोग्रामिंग की तुलना में परिमाण के कई आदेशों द्वारा। स्वचालन द्वारा इस लागत को कम करने के लिए बहुत सारे काम चल रहे हैं, लेकिन यह एक कठिन संघर्ष है।

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

  • ग्राहकों को नहीं पता कि वे क्या चाहते हैं। यह सॉफ्टवेयर इंजीनियरिंग में एक प्रसिद्ध समस्या है, और सॉफ्टवेयर इंजीनियरों ने इससे निपटने के लिए कई दृष्टिकोण विकसित किए हैं।

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


AES क्रिप्टोग्राफिक सुरक्षा की परिभाषाओं के दायरे में है। (आपको स्पर्शोन्मुख परिभाषाओं के बजाय ठोस सुरक्षा परिभाषाओं का उपयोग करने की आवश्यकता है, लेकिन आपको ऐसा करना चाहिए कि वैसे भी यदि आप अभ्यास में सुरक्षा करते हैं।)
DW

@DW दिलचस्प। मुझे इस बारे में नहीं पता था। सैद्धांतिक क्रिप्टोग्राफी की स्पर्शोन्मुख प्रकृति को कैसे दरकिनार किया जाता है? क्या आप मुझे इस पर एक कागज की ओर इशारा कर सकते हैं? कंक्रीट क्रिप्टोग्राफ़िक हैश फ़ंक्शंस के बारे में क्या?
मार्टिन बर्गर

en.wikipedia.org/wiki/Concrete_security , और वहाँ सूचीबद्ध संदर्भ। हैश फ़ंक्शंस एक अधिक जटिल मामला है, क्योंकि यह इस बात पर निर्भर करता है कि आप उनके लिए क्या उपयोग करते हैं - लेकिन जटिलताएं काफी हद तक विषम सुरक्षा बनाम ठोस सुरक्षा के लिए रूढ़िवादी हैं।
DW

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

1
@ मुझे कुछ असहमत होना पड़ेगा। जबकि रोगवे और बेलारे के कागजात का अर्थ है कि वे किसी भी तरह से आदिम लोगों की सुरक्षा के सबूतों को गुमराह करने की अनुमति देते हैं। दोनों कागजात अनिवार्य रूप से प्रोटोकॉल के बारे में हैं (अर्थात वे एईएस, एसएचए, आरएसए आदि जैसे आदिम हैं) सुरक्षित हैं और फिर वहां से चीजों को साबित करते हैं। आदिम लोगों को खुद को सुरक्षित साबित करने की आवश्यक समस्या बनी हुई है। यदि आपके पास प्राथमिकताओं के सबूतों के सुरक्षित होने का कोई संदर्भ है तो मुझे दिलचस्पी होगी। उदाहरण के लिए दूसरा पेपर आरएसए कठिन है जो बहुत ही खुली समस्या है।
DRF

5

यह अंतर्निहित तर्क की अपूर्णता से बंधा है। दरअसल, होरे तर्क में आमतौर पर एक कमजोर या "पूर्व-पोस्ट" नियम जहां निहितार्थP

PP{P}c{Q}QQ{P}c{Q}
को एक अंतर्निहित तर्क में साबित करने की आवश्यकता है, आमतौर पर फर्स्ट-ऑर्डर लॉजिक (FOL) कुछ सेट-प्रमेय स्वयंसिद्धीकरण जैसे कि Zermelo-Fraenkel (ZF)।PP,QQ

मुश्किल हिस्सा यह है कि हम जानते हैं कि इस तरह के तर्क अधूरे हैं, जैसा कि गोडेल ने लगभग एक सदी पहले साबित किया था। अधिक संक्षेप में, प्राकृतिक संख्या पर एक विधेय है , जिसके लिए हम तर्क P ( 0 ) , P ( 1 ) , P ( 2 ) और किसी भी प्राकृतिक स्थिरांक के लिए सिद्ध कर सकते हैं , लेकिन कोई रास्ता नहीं है साबित करने के लिए n एनपी ( एन )P(n)P(0)P(1)P(2)nN. P(n)

कंप्यूटर विज्ञान की ओर से, कम्प्यूटेशनल सिद्धांत का उपयोग करके इस अजीब व्यवहार को अनुकरणीय बनाया जा सकता है। मान लीजिए कि ट्यूरिंग मशीन जब खाली टेप पर चलती है तो एन चरणों ( पी ( एन ) ) में नहीं रुकती है । फिर, ZF में हम प्रमाण में निष्पादन चरण-दर-चरण को अनिवार्य रूप से खोलकर इस तरह के तथ्य को साबित कर सकते हैं। हालांकि, जब एम diverges, हम जेडएफ में विचलन साबित करने के लिए सक्षम होने की आशा नहीं कर सकते हैं ( एन पी ( एन ) )। वास्तव में, यदि यह सभी दिए गए M के लिए संभव था , तो हम proof n के लिए सभी संभावित प्रमाणों की गणना करके अर्ध-विचलन का फैसला कर सकते थे पीMnP(n)Mn. P(n)M , और एक मिलने पर रुकना। चूंकि हम जानते हैं कि विचलन आरई नहीं है, यह असंभव है।n. P(n)


5

समस्या: "हां" प्रिंट करें यदि हर सम संख्या the 4 में दो प्राइम का योग है, और "नहीं" यदि कोई सम संख्या even 4 है जो कि दो प्राइम का योग नहीं है।

एल्गोरिथम: "हाँ" प्रिंट करें

ज्यादातर लोग सोचते हैं कि एल्गोरिथ्म सही है। वहाँ कोई ज्ञात सबूत है, और यह है कि वहाँ बहुत संभव है है कोई सबूत नहीं है।


3

कोई भी एल्गोरिथ्म जो सही है, लेकिन हम नहीं जानते हैं कि इसे चलाने में कितना समय लगता है, इसे एक एल्गोरिथम में बदल दिया जा सकता है, जो समय की गारंटी राशि में रुक जाता है, लेकिन हमें यकीन नहीं है कि यह सही है।

nn+10लॉग(n)20n

पी=एनपी

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