Halting Problem की undecidability का प्रमाण


25

मुझे हॉल्टिंग समस्या की अनिर्वायता के प्रमाण को समझने में परेशानी हो रही है।

http://computing.guide/wp-content/uploads/2014/12/HaltingProblem1.jpg

यदि या नहीं, कार्यक्रम रिटर्न एक इनपुट पर हाल्ट , हम क्यों की कोड पारित करने के लिए है पी दोनों के लिए एक और ?H(a,b)abPab

हम P और कुछ मनमाने इनपुट के साथ को क्यों नहीं खिला सकते , कहते हैं, x ?H()Px


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

2
आप सकता है फ़ीड जो इनपुट आप चाहते हैं। इस प्रमाण की संरचना में एक विशेष इनपुट पर विचार करने की आवश्यकता होती है। H
डेविड रिचरबी

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

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

संबंधित, संभवतः डुप्लिकेट: cs.stackexchange.com/questions/42819/…
इल्मरी करोनन

जवाबों:


27

प्रमाण एक विरोधाभास खोजने के लिए करना है। आपको यह समझना होगा कि विरोधाभास क्या है, यह समझने के लिए कि का उपयोग इनपुट के रूप में क्यों किया जाता है। विरोधाभास है, अनौपचारिक रूप से: यदि हमारे पास एक मशीन एच (ए, बी) है जो "एक स्वीकार बी" का फैसला करता है, तो हम एक ऐसी मशीन का निर्माण कर सकते हैं जो उन मशीनों को स्वीकार करता है जो खुद को स्वीकार नहीं करते हैं। (कि पढ़ें आप जब तक कई बार यह मिलता है।) मशीन चित्र में दिखाया गया है - चलो इसे कहते एम - एम ( पी ) = करता पी स्वीकार नहीं पी ?PMM(P)=PP

विरोधाभास होता है जब आप से पूछना: है स्वीकार एम ? विरोधाभास कैसे है, यह देखने के लिए दो विकल्पों पर काम करने की कोशिश करें।MM

स्वीकार करताएम यदि और केवल यदि एम स्वीकार नहीं करता हैएम ; यह स्पष्ट रूप से एक विरोधाभास है।MMMM

यही कारण है कि यह सबूत के लिए आवश्यक है कि खुद पर चल रहा है कुछ मनमाना इनपुट नहीं। यह विकृति प्रमाणों में एक सामान्य विषय है जिसे विकर्ण तर्कों के रूप में जाना जाता है।P


38

एक पल के लिए तस्वीर को अनदेखा करें; हम इसे जल्द ही प्राप्त करेंगे। कार्यक्रम एक पड़ाव परीक्षक माना जाता है: जब हम दे एच एक कार्यक्रम का एक इनपुट एक (के बारे में सोच एक के लिए सभी में एक कार्यक्रम के लिस्टिंग के रूप में) और कुछ भी , एच ( एक , ) इस प्रकार कार्य करता हैH(a,b)HaabH(a,b)

  1. यदि प्रोग्राम को इनपुट के रूप में बी दिए जाने पर स्टॉप द्वारा दर्शाया गया है , तो एच ( , बी ) "हां" का जवाब देगा। दूसरी ओर, अगर इस कार्यक्रम के द्वारा वर्णित एक रन हमेशा के लिए जब इनपुट दिया तो एच ( एक , ) "नहीं" जवाब देंगे।abH(a,b)abH(a,b)
  2. महत्वपूर्ण रूप से, प्रोग्राम हमेशा रुक जाएगा और किसी भी जोड़े ( , बी ) के लिए सही उत्तर देगा ।H(a,b)

जो तर्क का निर्माण करना असंभव है, वह एक विशेष "विकृत" कार्यक्रम की कार्रवाई पर निर्भर करता है, पी , जो कि एक सबरूटीन के रूप में एच का उपयोग करता है । P अपने इनपुट को किसी भी प्रोग्राम, x की सूची के रूप में लेता है , और निम्न कार्य करता है:HPHPx

P(x) =
  run H(x, x)
  if H(x, x) answers "yes"
      loop forever
  else
      halt

यह देखना मुश्किल नहीं है

तभी रुकेगा जब केवलइनपुट के रूप में अपना विवरण देने परप्रोग्राम x हमेशा के लिए चलेगा।P(x)x

अब तक बहुत अच्छा: निश्चित रूप से एक कार्यक्रम होगा जब तक कि उसका सबरूटीन एच एक कार्यक्रम है।PH

PpP

P(p)P(p)

H(p,p)HH


मुझे यह उत्तर पसंद है। हालांकि अब जब मुझे प्रमाण समझ में आया है, तो यह साबित होता है कि एच एक पुनरावृत्ति सीमा अपवाद फेंक सकता है।
फैक्स

2
@Fax Hको एक से अधिक बार नहीं बुलाया जा रहा है, Pजो भी हो उसमें कोई पुनरावृत्ति नहीं है। H(P, P)निष्पादित नहीं करता है P, यह सिर्फ "जादुई रूप से" निर्धारित करता है कि Pजब खुद को पारित किया गया था या नहीं ।
अजादि32

@ Ajedi32 H(P,P)को निष्पादित नहीं करना पड़ता है P, लेकिन H(x ↦ H(x,x), P)यदि ठहराव है, तो इसे निर्धारित करने के भाग के रूप में निष्पादित करना होगा P। जो H(x ↦ H(y ↦ H(y,y), x), P)इतने पर फैलता है ।
फैक्स

@Fax का कार्यान्वयन Hइस प्रमाण में निर्दिष्ट नहीं है। तो नहीं, यह नहीं है है कि हो सकता है कि क्या कुछ भी निष्पादित करने के लिए, Pया अपने आप। प्रमाण इस धारणा के साथ शुरू होता है कि किसी प्रकार का कार्यक्रम Hमौजूद है, जो जादुई रूप से रुकने की समस्या को तय करता है, फिर यह साबित करने के लिए जाता है कि इस तरह के कार्यक्रम का बहुत अस्तित्व एक विरोधाभास होगा, और इस प्रकार ऐसा कोई कार्यक्रम मौजूद नहीं है।
Ajedi32

1
@ फ़ैक्स आप एक अच्छा बिंदु उठाते हैं, हालांकि इस बारे में कि क्या कोई ऐसा कार्यक्रम मौजूद हो सकता है जो स्वयं को बुलाए जाने के अलावा रुकने की समस्या को तय करता है। देखें कि क्या कोई ऐसा प्रमाण है जो स्वयं को संदर्भित या तिरछेपन पर निर्भर न करने वाली समस्या को रोकने की अनिर्णायकता है? उस बारे में एक दिलचस्प सवाल के लिए।
Ajedi32

9

एनिमेशन के साथ प्रिटियर प्रूफ की कोशिश करें । और चूंकि arsrs में किसी साइट के लिंक से अधिक होना चाहिए, यहां आपके प्रश्न का उत्तर है।

सबसे पहले, हमें याद दिलाएं कि हाल्टिंग ऑर्कल के गैर-अस्तित्व के प्रमाण कैसे काम करते हैं। हम साबित करते हैं कि किसी भी उम्मीदवार Hको हाल्टिंग ऑरेकल के लिए दिया गया , एक कार्यक्रम Pऔर एक इनपुट aहै जिसके Hलिए सही भविष्यवाणी करने में विफल रहता है कि क्या P(a)करता है।

प्रमेय: Let Hकिसी भी प्रोग्राम है जो लेता हो दो आदानों और हमेशा रिटर्न या तो haltया loop। उसके बाद एक प्रोग्राम Qऔर एक इनपुट मौजूद होता है , aजो कि Q(a)रुकता है, और केवल अगर, H(Q,a)वापस आता है loop

प्रमाण। कार्यक्रम पर विचार करें

program P(y):
  if H(y,y) = halt then
    loop forever
  else:
    return

चलो Q = Pऔर a = P। या तो H(Q,a) = haltया H(Q,a) = loop:

  • अगर H(Q,a) = haltतब Q(a)(जो सिर्फ है P(P)) की परिभाषा से हमेशा के लिए चलता है P
  • अगर H(Q,a) = loopतब के Q(a)पड़ाव से रुका है P

QED

आपने पूछा कि हमने कुछ अन्य के H(P,P)बजाय क्यों माना । स्पष्ट उत्तर है "क्योंकि वही जो प्रमाण का काम करता है"! अगर आप कुछ मनमाना इस्तेमाल करते तो आप फंस जाते। वास्तव में, प्रमाण तब इस तरह दिखेगा:H(P,X)XH(P,P)H(P,X)X

टूटा हुआ प्रमाण। कार्यक्रम पर विचार करें

program P(y):
  if H(y,y) = halt then
    loop forever
  else:
    return

चलो Q = Pऔर a = Xकुछ मनमानी के लिए X। या तो H(Q,X) = haltया H(Q,X) = loop:

  • मान लीजिए कि H(Q,X) = haltहम यह नहीं बता सकते हैं कि क्या P(X)होता है, क्योंकि P(X)रुकाव क्या H(X,X)रिटर्न पर निर्भर करता है। हम फंसे हुए हैं। हालांकि, अगर हमें पता था कि P(X)और X(X)समान हैं, तो हम प्रगति कर सकते हैं। (इसलिए, हमें वास्तव में लेना चाहिए X = P)।
  • यदि H(Q,a) = loopतब हम फिर से फंस जाते हैं, और यदि हम अस्थिर होंगे X = P

कोई QED नहीं।

मुझे उम्मीद है कि यह दिखाता है कि हमें H(P,P)अपने विचार को काम करने के लिए विचार करना चाहिए ।


Haha। बहुत बढ़िया! :)
एनिलगिंडी

2

प्रमाण का उपमा यह उपमा है:

P(P)P(P)P(P)(P)(P)

(P)(P)

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