क्यों, वास्तव में, हॉल्ट समस्या इतनी महत्वपूर्ण है?


149

मुझे समझ में नहीं आता है कि हॉल्टिंग प्रॉब्लम को इतनी बार इस्तेमाल करने की संभावना को खारिज करने के लिए इस्तेमाल किया जाता है कि क्या प्रोग्राम रुकता है। विकिपीडिया [लेख] [1] सही ढंग से बताता है कि परिमित मेमोरी के साथ एक नियतात्मक मशीन या तो पिछली स्थिति को रोक देगी या दोहराएगी। आप एल्गोरिथ्म का उपयोग कर सकते हैं जो यह पता लगाता है कि क्या लिंक की गई सूची हे (1) की अंतरिक्ष जटिलता के साथ हॉल्टिंग फंक्शन को लागू करने के लिए लूप करती है।

मुझे ऐसा लगता है कि हाल्टिंग प्रॉब्लम प्रूफ तथाकथित "विरोधाभास" से ज्यादा कुछ नहीं है, लियर के विरोधाभास की ही तरह एक सेल्फ रेफ़रिंग (बहुत कम साइक्लिकल) विरोधाभास है। एकमात्र निष्कर्ष यह है कि हॉल्टिंग फंक्शन ऐसे विकृत प्रश्नों के लिए अतिसंवेदनशील है।

इसलिए, विरोधाभासी कार्यक्रमों को छोड़कर, हॉल्टिंग फंक्शन निर्णायक है। तो हम इसके विपरीत होने का सबूत क्यों देते हैं?

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


16
"परिमित मेमोरी के साथ एक नियतात्मक मशीन" "उबाऊ" है क्योंकि यह परिमित ऑटोमोटन से अधिक कुछ नहीं है; ये सामान्य रूप से मॉडलिंग गणना के लिए उपयोगी नहीं हैं। रुकने की समस्या के रूप में: यह एक फ़ंक्शन के लिए एक विशिष्ट उदाहरण है जो (ट्यूरिंग) कम्प्यूटेबल नहीं है। यदि आप एक गैर-रचनात्मक प्रमाण से संतुष्ट हैं, तो आपको इसकी आवश्यकता नहीं है। यह अभी भी ऐतिहासिक प्रासंगिकता है, हालांकि।
राफेल

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

12
"आप एल्गोरिथ्म का उपयोग कर सकते हैं जो यह पता लगाता है कि क्या एक लिंक की गई सूची हे (1) की अंतरिक्ष जटिलता के साथ हाल्टिंग फ़ंक्शन को लागू करने के लिए लूप करती है" - लेकिन अगर आप 2 जीबी स्टोरेज वाले कंप्यूटर के लिए समस्या को हल करना चाहते हैं, तो आपको आवश्यकता होगी 2 ^ 2000000000 कदम और एक बड़ा कंप्यूटर।
232 बजे user2357112

11
बहुत समय पहले मैं एक दोस्त से हाल्टिंग की समस्या के बारे में बात कर रहा था और पास में बैठे किसी व्यक्ति ने पूछा "रुकने की समस्या क्या है, क्या यह महत्वपूर्ण है?" और मेरे दोस्त ने उसकी ओर रुख किया और कहा "अगर हम रुकने की समस्या को हल कर सकते हैं, तो हम बादलों पर शहरों का निर्माण कर सकते हैं"। यह सच है।
फ्रांसिस डेवी

8
@emory यह दावा बिल्कुल सही है: P => Qकिसी भी Q के लिए सत्य है, अगर हम जानते हैं कि Pयह गलत है (और हम जानते हैं कि Halting समस्या हल नहीं है)। फ्रांसिस बस इतना कह सकते हैं "यदि हम रुकने की समस्या को हल कर सकते हैं, तो हम खुद ही मौत का इलाज ढूंढ सकते हैं"। यह जिस तरह से तार्किक निहितार्थ परिभाषित किया गया है।
अमलॉय

जवाबों:


217

क्योंकि वास्तव में बहुत सारी व्यावहारिक समस्याएं भेस में पड़ने वाली समस्या हैं। इनका हल हल करने की समस्या को हल करता है।

आप एक संकलक चाहते हैं जो किसी दिए गए प्रोग्राम के लिए सबसे तेज़ संभव मशीन कोड पाता है? दरअसल रुकने की समस्या।

आपके पास उच्च सुरक्षा स्तरों पर कुछ चर के साथ जावास्क्रिप्ट है, और कुछ कम सुरक्षा स्तर पर हैं। आप यह सुनिश्चित करना चाहते हैं कि एक हमलावर को उच्च सुरक्षा जानकारी नहीं मिल सकती है। यह भी सिर्फ पड़ाव की समस्या है।

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

आपके पास एक एंटी-वायरस प्रोग्राम है, और आप यह देखना चाहते हैं कि क्या यह कभी दुर्भावनापूर्ण निर्देश पर अमल करता है। असल में सिर्फ पड़ाव की समस्या।

विकिपीडिया उदाहरण के लिए, हां, आप एक आधुनिक कंप्यूटर को परिमित-राज्य मशीन के रूप में मॉडल कर सकते हैं। लेकिन इसके साथ दो समस्याएं हैं।

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

  2. यदि आपके पास RAM के n बिट्स हैं, तो आपको राज्यों की आवश्यकता होगी । तो आपके आधुनिक 8GB कंप्यूटर के लिए, यह 2 32000000000 है । यह एक संख्या इतनी बड़ी है कि वुल्फराम अल्फा को यह भी नहीं पता कि इसकी व्याख्या कैसे की जाए। जब मैं 2 10 9 करता हूं तो यह कहता है कि इसमें 300000000 दशमलव अंक हैं। सामान्य कंप्यूटर में स्टोर करने के लिए यह स्पष्ट रूप से बहुत बड़ा है।2n2320000000002109300000000

हॉल्टिंग समस्या हमें एल्गोरिदम की सापेक्ष कठिनाई के बारे में कारण देती है। यह हमें बताता है कि, कुछ एल्गोरिदम मौजूद नहीं हैं, कभी-कभी, हम सभी कर सकते हैं एक समस्या पर अनुमान लगाते हैं, और कभी नहीं जानते कि क्या हमने इसे हल किया है।

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

अद्यतन: टिप्पणियों में उठाए गए मुद्दों के एक जोड़े को संबोधित करने के लिए।

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

किसी समस्या की कठिनाई उस मात्रा के संबंध में हो सकती है जो उसके पास है। यह दिखाने की कोशिश की जा रही है कि ( ) एक मनमानी संपत्ति के साथ एक वस्तु मौजूद है , आपको तब तक खोजना होगा जब तक आप एक को नहीं ढूंढ लेते। यदि कोई भी मौजूद नहीं है, तो यह जानने का कोई तरीका नहीं है (सामान्य रूप से)। साबित होता है कि सभी वस्तुओं ( ) एक संपत्ति कठिन है है, लेकिन आप संपत्ति यह खंडन करने के लिए बिना एक वस्तु के लिए खोज सकते हैं। फ़ोरल और अस्तित्व के बीच जितने अधिक विकल्प हैं, उतनी ही कठिन समस्या है।

इस पर अधिक जानकारी के लिए, अंकगणित पदानुक्रम देखें । ऊपर कुछ भी , अनिर्णनीय है, हालांकि स्तर 1 अर्द्ध डिसाइडेबल है।Σ00=Π00

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

@Brent: हाँ, यह मानता है कि यह आधुनिक कंप्यूटर के लिए निर्णायक है। लेकिन यह एक विशिष्ट मशीन के लिए निर्णायक है। यदि आप डिस्क स्थान के साथ एक यूएसबी ड्राइव, या नेटवर्क पर स्टोर करने की क्षमता, या कुछ और जोड़ते हैं, तो मशीन बदल गई है और परिणाम अभी भी पकड़ में नहीं है।

यह भी कहा जाना है कि कई बार होने जा रहे हैं जहां एल्गोरिथम कहता है "यह कोड रुक जाएगा" क्योंकि यह कोड विफल हो जाएगा और मेमोरी से बाहर चला जाएगा, और यह कि एक अतिरिक्त बिट मेमोरी को जोड़ने से कोड को देखने का कारण होगा सफल होते हैं और एक अलग परिणाम देते हैं।

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


4
@ मेहरदाद "किसी दिए गए कार्यक्रम के लिए सबसे तेज संभव मशीन कोड" की किसी भी उचित परिभाषा के लिए, सवाल समझ में आता है और जवाब है "ऐसा कोई संकलक नहीं हो सकता है।"
डेविड रिचरबी

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

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

3
यह उन जगहों पर भी बदल जाता है जहां आप उम्मीद नहीं करते हैं। एक C ++ कंपाइलर लिखना चाहते हैं जो सभी वैध लोगों को संकलित करते हुए सभी अमान्य कार्यक्रमों को अस्वीकार करता है? हल करने की समस्या को पहले हल करें - C ++ टेम्पलेट मेटाप्रोग्रामिंग ट्यूरिंग-पूर्ण है, इसलिए यह बताना कि आपके टेम्पलेट मान्य हैं या नहीं सामान्य मामले में इसे हल करने की आवश्यकता है।
मार्क

7
@ मेहरदाद: "संपूर्ण कंप्यूटर प्रोग्राम का अनुकरण" का आपका उदाहरण इस बात का एक उत्कृष्ट उदाहरण है कि रुकने की समस्या इतनी महत्वपूर्ण क्यों है। कुछ कार्यक्रमों के लिए, प्रोग्राम का अनुकरण उतना सरल नहीं है जितना कि लगता है (उदाहरण के लिए, रुकने पर विकिपीडिया पृष्ठ देखें)। यदि समस्या इस रूप में धोखा दे सकती है, तो आप कल्पना कर सकते हैं कि किसी को अधिक छिपे हुए रूप में समझाने के लिए कितना कठिन है (जैसे कि एंटी-वायरस समस्या)
Cort Ammon

49

व्यावहारिक रूप से, यह महत्वपूर्ण है क्योंकि यह आपको अपने अज्ञानी मालिकों को यह बताने की अनुमति देता है "आप जो पूछ रहे हैं वह गणितीय रूप से असंभव है"।

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

ध्यान दें कि यह एक भाषा है कि डिजाइन करने के लिए संभव है नहीं ट्यूरिंग-पूर्ण है, तो, विश्लेषण किया जा सकता असीम प्रत्यावर्तन और यात्रा मना द्वारा।




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

8
@FranciscoPresencia: उन्होंने एक शोध दल का उपयोग किया, इसलिए सामान्य बिंदु अभी भी है।
रेमकोगर्लिच

4
@MooDDuck: फ़्लिकर चीज़ पार्क और पक्षियों के बीच चयन नहीं करता है, यह (प्रयास) दोनों या दोनों की पुष्टि करता है। या, XOR नहीं।
रिक्स्टर

45

आप एल्गोरिथ्म का उपयोग कर सकते हैं जो यह पता लगाता है कि क्या लिंक की गई सूची हे (1) की अंतरिक्ष जटिलता के साथ हॉल्टिंग फंक्शन को लागू करने के लिए लूप करती है।

ऐसा करने के लिए, आपको मेमोरी में प्रोग्राम की आंशिक स्थिति की कम से कम दो प्रतियां संग्रहीत करने की आवश्यकता है, साथ ही चेकिंग प्रोग्राम के ओवरहेड। इसलिए किसी दिए गए कंप्यूटर पर, आप उन सभी प्रोग्रामों का परीक्षण नहीं कर सकते हैं जो उस कंप्यूटर पर निष्पादित कर सकते हैं, केवल उन प्रोग्रामों पर जो छोटे कंप्यूटर पर आधे से कम मेमोरी के साथ निष्पादित होते हैं।

किसी दिए गए परिमित आकार के कंप्यूटर के लिए रुकने की समस्या को उस परिमित आकार के कंप्यूटर पर हल नहीं किया जा सकता है । इसे केवल बड़े कंप्यूटर पर ही हल किया जा सकता है। (यह किसी भी विधि के लिए सही है, न कि केवल एक जिसे आप प्रस्तावित करते हैं। मैं एक औपचारिक प्रमाण नहीं देने जा रहा हूं, लेकिन यहां जिस्ट है। यदि कोई कंप्यूटर C N के विभिन्न प्रोग्राम चला सकता है, जिसमें कम से कम एक P समाप्त नहीं होता है। , तो एक कंप्यूटर V जो यह जांच कर सकता है कि क्या ये N प्रोग्राम हाल्ट N के अलग-अलग वेरिफायर प्रोग्राम को चलाने में सक्षम होना चाहिए। यदि C और V एक ही कंप्यूटर हैं, तो P, N के अलग-अलग प्रोग्रामों में से एक नहीं है, जो V रन करता है, इसलिए कंप्यूटर को कम से कम N + 1 अलग-अलग प्रोग्राम चलाने चाहिए, जो इस धारणा का खंडन करता है कि C, N अलग-अलग प्रोग्राम चलाता है।)

इसके अलावा, आप नहीं कर सकते हैं बस एक लिंक्ड सूची में एक पाश का पता लगाने के एल्गोरिथ्म का उपयोग करें। आपको यह जानना होगा कि कब रुकना है। जब आप कंप्यूटर में राज्य होते हैं, तो आप कई चरणों के रूप में निष्पादित कर सकते हैं। यदि कोई प्रोग्राम बिट्स मेमोरी का उपयोग करता है , तो इसमें 2 M विभिन्न अवस्थाएँ हो सकती हैं। यह बहुत जल्दी असंभव हो जाता है। उदाहरण के लिए, एक सामान्य कंप्यूटर एक बिलियन निर्देश प्रति सेकंड के क्रम पर निष्पादित होता है; एक अरब सेकंड 30 साल से थोड़ा अधिक है। इसलिए यदि आप 8 साल के लिए कंप्यूटर चलाते हैं, तो आप परीक्षण कर सकते हैं कि क्या एक कार्यक्रम लगभग 250 मिलियन बिलियन संभावित राज्यों को रोक देता है। लेकिन यह केवल 2 56 राज्य है, यानी आप केवल एक प्रोग्राम का परीक्षण कर सकते हैं जो 7 बाइट्स मेमोरी में काम करता है।2256

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

अतः विरोधाभासी कार्यक्रमों को छोड़कर, हॉल्टिंग समस्या निर्णायक है

विरोधाभास समस्या से नहीं, बल्कि एक समाधान पर प्रयास से आता है। किसी भी दिए गए प्रोग्राम के लिए, एक एल्गोरिथ्म है जो कहता है "हाँ" यदि प्रोग्राम समाप्त हो जाता है, और "नहीं" यदि प्रोग्राम समाप्त नहीं होता है। यह तुच्छ है: या तो करेंगे print "yes"या print "no"करेंगे। समस्या यह निर्धारित करने के लिए है कि किसे कॉल करना है। हॉल्टिंग समस्या को हल करने की असंभवता का अर्थ है कि यह निर्धारण करने के लिए कोई एल्गोरिथ्म नहीं है। कारण एक विकर्ण तर्क का उपयोग करता है इसका कारण यह है कि यह दिखाने की आवश्यकता है कि नहींसमाधान कार्य करता है; ऐसा करने के लिए, यह एक मनमाने ढंग से कथित समाधान से शुरू होता है, और यह दर्शाता है कि इसे कुछ कार्यक्रमों को याद करके एक कार्यक्रम बनाना होगा। विकर्णीकरण (जिसे आप अनुचित रूप से "विरोधाभास" कहते हैं) निर्माण में है, परिणामस्वरूप कार्यक्रम में नहीं। परिणामी कार्यक्रम स्व-संदर्भ नहीं है।

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


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

@ सुपरकैट हां, यह संपत्ति निर्णायक है। यह एक प्रोग्राम के सामान्य मामले के लिए निर्णायक नहीं है जो इनपुट लेता है।
गाइल्स

1
मैं इस धारणा के तहत था कि हॉल्टिंग समस्या आम तौर पर मानती है कि प्रोग्राम के सभी इनपुट को इसके निष्पादन के दौरान प्राप्त होगा जो प्रोग्राम के साथ बंडल है। यदि किसी के पास एक मशीन होती है जो किसी भी प्रोग्राम को इनपुट के किसी विशेष अनुक्रम को देने के लिए जादुई समस्या को हल कर सकती है, तो क्या ऐसी मशीन यह निर्धारित कर सकती है कि क्या प्रोग्राम सभी बंधे-बंधे इनपुट के लिए रुका होगा?
सुपरकाट

3
@supercat नहीं है, हाल्ट के लिए सभी इनपुट ओरेकल एक कदम होगा आगे हाल्ट के लिए एक से मिली-इनपुट ओरेकल से। इस साइट के लिए यह एक अच्छा प्रश्न होगा ... वास्तव में हमारे पास यह है । वैसे, मेरा डिफ़ॉल्ट मानसिक मॉडल पुनरावर्ती कार्य है, जहां "इनपुट" का अर्थ है "तर्क" और प्रोग्राम चलाने का अर्थ है इसे तर्क पर लागू करना; आप सही हैं कि मेरा कथन ट्यूरिंग मशीनों के संदर्भ में गलत है, मैं इसे अपडेट करूंगा।
गिल्स

28

मुझे ऐसा लगता है कि हाल्टिंग प्रॉब्लम एक तथाकथित "विरोधाभास" से ज्यादा कुछ नहीं है, लियर के विरोधाभास के समान ही एक आत्म संदर्भित (बहुत कम चक्रीय पर) विरोधाभास है। एकमात्र निष्कर्ष यह है कि हॉल्टिंग फंक्शन ऐसे विकृत प्रश्नों के लिए अतिसंवेदनशील है

नहीं, यह है नहीं क्या हॉल्टिंग समस्या के बारे में है। झूठ के विरोधाभास की तरह विरोधाभास सही या गलत नहीं हैं, वे बस समझ में नहीं आते हैं। दूसरी ओर एक नियतात्मक एल्गोरिथ्म या तो किसी दिए गए इनपुट के लिए रुक जाएगा या यह हमेशा के लिए चलेगा। फ़ंक्शन halts(program, input)में प्रत्येक प्रोग्राम के लिए हर इनपुट के लिए एक अच्छी तरह से परिभाषित, नियतात्मक मूल्य है। हम इसे किसी भी कार्यक्रम के लिए तय नहीं कर सकते । या, अधिक सटीक: हम एक प्रोग्राम नहीं लिख सकते हैं जो इसे हर प्रोग्राम / इनपुट जोड़ी के लिए तय कर सके।

Σ(n): =nnnnΣ(n)


2
यह ध्यान देने योग्य है कि सामान्य रूप में लिआर्स विरोधाभास अपने आप में स्पष्ट संदर्भ बनाता है, लेकिन एक ही समस्या उत्पन्न हो सकती है, भले ही वह न हो। क्या पाठ लेने के द्वारा दिए गए कथन का उत्तर दिया जाता है, "क्या कथन का उत्तर पाठ लेने से बनता है, और पहले अल्पविराम के बाद सम्मिलित करने पर एक उद्धरण उद्धरण में संलग्न होता है, नहीं?" और पहले उद्धरण के बाद सम्मिलित करते हुए एकल उद्धरणों में संलग्न एक प्रति, नहीं? ऐसा बयान स्पष्ट रूप से आत्म-संदर्भ नहीं है, लेकिन एक बयान की सत्यता को संदर्भित करता है जो चरित्र-समान चरित्र है।
सुपरकैट

2
@ सुपरकैट: हं, मुझे नहीं लगता कि मैंने पहले अंग्रेजी में एक क्वीन देखी है ...
सैमबी

@SBB: मैंने कुछ देखा है, लेकिन एक मूल सूत्रीकरण में अपना हाथ आज़माने का फैसला किया है, जबकि कुछ की तुलना में अधिक क्रियात्मक रूप से (शायद) अधिक स्वाभाविक रूप से पढ़ता है।
सुपरकाट

24

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

सबसे पहले, हां, सैद्धांतिक रूप से यह एक वास्तविक कंप्यूटर को देखने के लिए समझ में आता है, जिसमें एक परिमित मेमोरी है, एक परिमित राज्य मशीन के रूप में। लेकिन व्यवहार में एक वास्तविक कंप्यूटर के राज्यों की संख्या इतनी बड़ी है, कि असली कंप्यूटर ट्यूरिंग मशीनों या कम्प्यूटेशन के अन्य अनंत राज्य मॉडल द्वारा बेहतर तरीके से बनाए गए हैं।

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

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

एचपीएक्सएचपीएक्स

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


1
+1 वास्तविक कंप्यूटरों, परिमित राज्य मशीनों और ट्यूरिंग मशीनों के बीच संबंधों को समझाने के लिए, जो प्रश्न के लिए सेटअप का एक महत्वपूर्ण हिस्सा है।
डेविड रिचेर्बी

1
आपने मेरी रुचि को बढ़ा दिया है। एक स्पष्ट विरोधाभास और एक वास्तविक विरोधाभास के बीच अंतर क्या है?
ब्रेंट

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

3
@Brent। कई विरोधाभास बिल्कुल विरोधाभासी नहीं हैं, लेकिन केवल पहली नजर में। जब हम करीब से देखते हैं, तो तर्क में कोई त्रुटि हो जाती है, या कोई ऐसा शब्द, जिसका अर्थ किसी भिन्न संदर्भ में, या कुछ इसी तरह का उपयोग करके बदल गया हो। कभी-कभी, हालांकि, एक विरोधाभास एक वास्तविक विरोधाभास को प्रकाश में लाता है।
होपजे

मैं अपने ओपी के बाद से इस समस्या का अध्ययन कर रहा हूं। क्या गोडेल की अपूर्णता प्रमेय का अर्थ है कि उपयोग में तर्क की प्रणाली की परवाह किए बिना कुछ विरोधाभास के साथ आना हमेशा संभव है?
ब्रेंट

17

जेमाइट ने इस सवाल का जवाब बहुत अच्छे से दिया है। मुझे "लिआर्स विरोधाभास" के साथ कथित समानता के बारे में एक छोटा सा साइड-नोट जोड़ना चाहिए जो मुझे लगता है कि यह एक स्व-संदर्भ तंत्र के उपयोग के कारण होता है।

स्व-संदर्भ विरोधाभासी नहीं है!

संगणना में आत्म-संदर्भ वास्तव में उपयोगी उपकरण है (कि एक एल्गोरिथ्म अपने कोड, प्रतिबिंब को संदर्भित कर सकता है ) और मानव भाषा (जिसे हम स्वयं को संदर्भित कर सकते हैं, आत्म-चेतना )।

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


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

यकीन है, अगर आप कंप्यूटर को परिमित ऑटोमेटा के रूप में सोचना चाहते हैं, और यह आपके उद्देश्य के लिए समझ में आता है, तो परिमित ऑटोमेटा के लिए समस्या हल करने योग्य है (और निर्णायक रूप से हमारा मतलब ट्यूरिंग मशीन द्वारा नहीं, बल्कि परिमित ऑटोमेटा द्वारा होता है)। हालांकि यह नहीं है कि लोग आमतौर पर जब वे हॉल्टिंग समस्या का उपयोग करते हैं, तो उनका मतलब ट्यूरिंग मशीनों के लिए हॉल्टिंग समस्या है।

रों2रों कदम और पड़ाव। लेकिन 1. यह आपको एल्गोरिथ्म की उपयोग की जा रही मेमोरी की मात्रा पर एक ऊपरी हिस्से को जानने की आवश्यकता है, 2. फिर भी यह निर्णय कि क्या एल्गोरिथ्म रुकता है या नहीं समय की एक घातीय राशि लेता है जो आमतौर पर एक बहुत उपयोगी एल्गोरिथ्म नहीं है।


14

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

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


14

आप क्लासिक "सेल्फ रेफ़रेंशियल" आधारित प्रमाण को भ्रमित करने वाले प्रतीत होते हैं कि हाल्टिंग समस्या को हलिंग समस्या (उर्फ हाल्ट) के साथ हल नहीं किया जा सकता है।

वह स्वयं-संदर्भ कार्यक्रम - वह कार्यक्रम जो रुकता है अगर और केवल अगर यह नहीं रुकता है - तो यह आसान बनाने के लिए निर्माण किया जाता है ताकि यह साबित हो सके कि आप हॉल्ट को हल नहीं कर सकते हैं। तथ्य यह है कि हम X साबित करते हैं कि तकनीक के माध्यम से असंभव है Y का मतलब यह नहीं है कि Y एकमात्र कारण है जिससे हम X को हल नहीं कर सकते हैं।

इसे दूसरे तरीके से रखने के लिए, न केवल हम हॉल्ट को हल नहीं कर सकते हैं, हम यह पता नहीं लगा सकते हैं कि एक प्रोग्राम किस तरह का प्रोग्राम है जो हम निर्धारित नहीं कर सकते हैं कि क्या यह हॉल्ट, क्रूड माप के अलावा "अगर इसे चलाने में 1 मिनट से अधिक समय लगता है, तो नाटक करें।" यह रुकता नहीं है ”।

यदि आप हॉल्टिंग समस्या से शुरू करते हैं, और इसके लिए अन्य समस्याओं को कम करते हैं, तो आप अंततः इस बिंदु पर पहुंचते हैं कि आपने इसके बारे में कार्यक्रमों के बारे में लगभग हर प्रश्न को कम कर दिया है। हम चावल के प्रमेय को समाप्त करते हैं:

बता दें कि S 1 की कुछ गैर-तुच्छ संपत्ति है जिसे ट्यूरिंग मशीन स्वीकार करती है। इसका मतलब है कि कम से कम एक ट्यूरिंग मशीन है जो संपत्ति एस के साथ इनपुट स्वीकार करती है, और एक ऐसा नहीं है।

तब यह निश्चित नहीं है कि यदि कोई ट्यूरिंग मशीन T संपत्ति S के साथ इनपुट स्वीकार करता है।

आप जानना चाहते हैं कि क्या ट्यूरिंग मशीन पूर्णांक भी स्वीकार करती है? अनिर्णनीय।

आप जानना चाहते हैं कि क्या ट्यूरिंग मशीन अंकगणितीय अनुक्रम स्वीकार करती है? अनिर्णनीय।

आप सामान्य रूप से ट्यूरिंग मशीन की हिम्मत के बारे में कारण कर सकते हैं। आप किसी विशेष ट्यूरिंग मशीन के बारे में तर्क कर सकते हैं, और साबित कर सकते हैं कि यह कुछ अनुक्रम / आदि को रोक देगा / स्वीकार करेगा। लेकिन आप यह नहीं जान सकते कि आपकी तकनीक अगली ट्यूरिंग मशीन पर काम करेगी या नहीं।


1 इसके द्वारा property ofइस तंत्र को शामिल नहीं किया जाता है कि इसे कैसे स्वीकार किया जाता है - बस जो स्वीकार किया जाता है। "यह 100 या उससे कम चरणों में स्वीकार करता है" एक संपत्ति है कि यह कैसे स्वीकार करता है, जो स्वीकार नहीं किया जाता है।


आप यह समझाना चाहते हैं कि एक "संपत्ति" क्या है, क्योंकि भोली व्याख्या जो कर सकती है वह संभवतः गलत होगी।
रिक डेकर

@ मुझे लगता है कि फुटनोट अब इसे कवर करता है?
Yakk

7

आप सही कह रहे हैं कि आमतौर पर पेश की गई और बताई गई हॉल्टिंग एक समस्या है। यह साबित नहीं होता कि तीन-मूल्यवान ('पड़ाव', 'छोरों', 'पता नहीं') हाल्ट-फंक्शन नहीं हो सकता है कि व्यवहार में हमेशा 'हाल्ट' या 'लूप्स' लौटते हैं और केवल 'डॉन' की वापसी होती है t 'उदाहरण के लिए विशेष रूप से निर्मित कोने-मामलों के लिए।

दो कारणों से समस्या हल हो रही है:

1) यह पहली अनौपचारिक समस्याओं में से एक है। यहां तक ​​कि अगर काल्पनिक रूप से केवल एक 'पता नहीं' था, तब भी यह बहुत बड़ा गणितीय हित होगा।

2) कुछ समस्याएं रुकने की समस्या को कम करती हैं जहां दुर्भावनापूर्ण हमलावर मामले का विश्लेषण करने के लिए आपूर्ति कर सकता है। यह हमें यह स्वीकार करने के लिए मजबूर करता है कि ऐसे वैध मामले हो सकते हैं जिन्हें हमें अभी भी अस्वीकार करना है।

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


5

एरिक हेनर द्वारा कागजों की एक श्रृंखला में एक विरोधाभासी तर्क सामने रखा गया है, जिसमें तर्क दिया गया है कि हाल्टिंग समस्या की अनिश्चितता को आमतौर पर गलत समझा जाता है। कागजात, "एपिमेनाइड्स, गोडेल, ट्यूरिंग: ए अनन्त गोल्डन टैंगल", "हॉल्टिंग प्रॉब्लम की समस्या", "रिकंस्ट्रक्टिंग द हैल्टिंग प्रॉब्लम", और "हॉल्टिंग प्रॉब्लम" यहां देखे जा सकते हैं । ताकि यह उत्तर "केवल लिंक" न हो, मैं उनके किसी निष्कर्ष को संक्षेप में बताने का प्रयास करूंगा, लेकिन तर्क का नहीं।

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


3
मैं अनुसरण नहीं करता। रुकने का कार्य पूरी तरह से परिभाषित और मान्य विधेय है - किसी भी ट्यूरिंग मशीन और किसी भी दिए गए इनपुट के लिए, मशीन हाल्ट या लूप है। (आप एक उचित संदर्भ अभाव होता है;? जो पपर आप का सारांश कर रहे हैं)
राफेल

@ राफेल कि फ़ंक्शन अच्छी तरह से परिभाषित है आमतौर पर एक तथ्य के रूप में स्वीकार किया जाता है। हेहनर का दृष्टिकोण अलग है और उनके पत्रों में बताया गया है। मैं कागजात के नाम प्रदान करने के लिए अपना जवाब संपादित करूँगा।
थियोडोर नॉरवेल

मान लीजिए कि जो भी हेहनर का तर्क है [मैंने कागजात नहीं पढ़े हैं] उन्होंने कम से कम अपने पहले पढ़ने / अनुमान में विवादास्पद निकला: ' cs.toronto.edu/~hehner/Shallitaffair.pdf और recursed.blogspot.com/ 2013/10 / eric-hehner-Reply.html
Fizz

और यह स्पष्ट नहीं है कि हेन्नर के कागजात (इस पर) की प्रकृति और उद्धरणों की संख्या को देखते हुए किसी भी अतिरिक्त रीडिंग (इस पर उसके काम) परेशानी के लायक हैं।
फिजा

उनके प्रमाण बहुत ठोस प्रतीत होते हैं और यह इंगित करते हैं कि यह केवल मूर्खतापूर्ण चीजों का पुनर्मुद्रण है जिसे आप दर्शन में कर सकते हैं जैसे कि इसकी सत्यता के लिए निम्नलिखित आत्म संदर्भ कथन का विश्लेषण करने की कोशिश करना: "यह वाक्य गलत है।" जो अगर सच का मतलब है तो वह झूठा है, जिसका मतलब है कि यह वास्तव में सच था, नहीं, जो इसे फिर से गलत बनाता है ... इसलिए यह एक ऐसा महत्वपूर्ण दार्शनिक नौसैनिक नहीं है। en.wikipedia.org/wiki/Liar_paradox रुकने का विरोधाभास वैज्ञानिकों द्वारा दार्शनिकों से बात नहीं करने का मामला हो सकता है।
जेम्स वेकफील्ड

3

मैं रुकने की समस्या के महत्व का एक अलग विवरण प्रस्तुत करना चाहूंगा जिसमें मशीनों के बजाय लोगों को शामिल किया गया है।

यह एमआईटी 1986 संरचना और व्याख्या पाठ्यक्रम का अंतिम व्याख्यान है ; प्रोफेसर पूछता है "क्या कोई सवाल है?" और व्याख्यान को समाप्त करने की तैयारी करता है, जब छात्रों में से एक पूछता है: "क्या यह अंतिम प्रश्न है?"

एक पल के लिए इसके बारे में सोचो। शिक्षक इसका उत्तर कैसे दे सकते हैं? यदि छात्र शिक्षक के विरोधाभासी निर्णय लेता है, तो कोई भी मान्य जवाब नहीं है जो शिक्षक दे सकता है - यह सिर्फ रोकने की समस्या की तरह है।

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

पुनश्च: यदि आप नहीं जानते कि मैं किस पाठ्यक्रम के बारे में बात कर रहा हूं, तो इसे देखें, यह बहुत बढ़िया है।


लेकिन अगर मैं निष्पादित करूंगा doesHalt(programCode, input);, तो प्रोग्राम को पता नहीं चल सकता है कि doesHaltफ़ंक्शन क्या देता है। doesHaltफ़ंक्शन के मूल्यांकन के बाद कार्यक्रम को अन-हाल्ट करना असंभव है।
Tvde1

0

मैं आसानी से एक प्रोग्राम लिख सकता हूं, जिसमें एक इनपुट n दिया गया है, या तो सबसे छोटे प्राइम p> n को आउटपुट करता है जैसे कि p + 2 भी एक प्राइम है, या ऐसा कोई भी पी मौजूद नहीं होने पर हमेशा के लिए चलता है। यदि आप यह अनुमान लगाने के लिए समस्या को हल कर सकते हैं कि क्या मेरा कार्यक्रम हर इनपुट के लिए रुका हुआ है, तो आपने सिर्फ ट्विन प्राइम कॉन्जेक्ट को हल किया है।

यह बहुत संभव है कि यह अनुमान अनिर्णायक साबित हो सकता है, जिस स्थिति में हमारे पास एक सीधा कार्यक्रम होगा जहां रुकने का कार्यक्रम विफल हो जाता है।


मुझे लगता है कि आप "ट्यूरिंग-अनडिक्डेबल" ​​को बहुत अलग धारणा के साथ मिला रहे हैं; वास्तव में, आप दुर्घटना से "उसी पुरानी" गिरावट में ठोकर खा सकते हैं। यहाँ और यहाँ भी देखें ।
राफेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.