उन कार्यक्रमों के सबसे सरल उदाहरण हैं जिन्हें हम नहीं जानते कि क्या वे समाप्त होते हैं?


27

रुकने की समस्या बताती है कि कोई एल्गोरिथ्म नहीं है जो यह निर्धारित करेगा कि किसी दिए गए कार्यक्रम में बाधा आती है या नहीं। परिणामस्वरूप, ऐसे कार्यक्रम होने चाहिए जिनके बारे में हम यह नहीं बता सकते कि वे समाप्त होते हैं या नहीं। ऐसे कार्यक्रमों के सबसे सरल (सबसे छोटे) ज्ञात उदाहरण क्या हैं?


आप अपनी प्रतिक्रियाओं में विरोधाभास कर रहे हैं ..... धन्यवाद! लेकिन पड़ाव कार्यक्रम स्रोत के ज्ञान को मानता है। ... यदि यह सच है तो आपने अपने प्रश्न का उत्तर दिया है। पड़ाव कार्यक्रम पहले से ही पता होगा। एक चिह्न को नियंत्रित करने वाली प्रणाली की कल्पना करें, यह हमेशा रोशन और चमकती है, यह कब बंद होता है? बिजली की विफलता, बिजली स्विच, या फ्लैश अनुक्रम के दौरान। या एक बैटरी बैक-अप और जनरेटर दिया, कभी नहीं।
htm11h


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

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

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

जवाबों:


41

एक बहुत ही सरल उदाहरण Collatz अनुमान का परीक्षण करने वाला एक कार्यक्रम हो सकता है :

(n)={पड़ाव,अगर n 1 है(n/2),अगर n सम है(3n+1),अगर n अजीब है

यह है जाना जाता है के लिए रोकने के लिए कम से कम करने के लिए , लेकिन सामान्य रूप में यह एक खुला समस्या है।n5×2605.764×1018


9
प्रश्न के नीचे टिप्पणी से मेरी बात पर जोर देने के लिए: समस्या " सभी लिए रुका है ?" कम्प्यूटेशनल हैएन(n)n
राफेल

6
@KyleStrand यहाँ देखें ।
राफेल

10
@ केलीस्ट्रैंड, राफेल 100% सही है। यह एक आम धारणा है। आपको यह पता लगाना होगा कि परिभाषा बहुत सावधानी से क्या कहती है, और तब आपको पता चलता है कि आपका अंतर्ज्ञान परिभाषा से काफी मेल नहीं खाता है। कम्प्यूटेबिलिटी की परिभाषा के अनुसार, यह पर्याप्त है कि इसकी गणना करने के लिए एक ट्यूरिंग मशीन मौजूद है - इससे कोई फर्क नहीं पड़ता कि क्या हम जानते हैं कि ट्यूरिंग मशीन क्या है। यह देखकर बहुत से छात्रों को लगता है कि यह धोखा है, लेकिन ऐसा नहीं है - यह केवल परिभाषा का परिणाम है।
DW

2
@KyleStrand आपको इस विचार से छुटकारा पाना है कि कार्यक्रम को समस्या को हल करना है । ऐसा नहीं होता। इसे बस उत्तर का उत्पादन करना है, जो एक तुच्छ कार्य है। एल्गोरिथम, उदाहरणों के परिमित सेट के साथ समस्याएँ सभी उबाऊ हैं क्योंकि हम उत्तरों को हार्डकोड कर सकते हैं। (और अगर हम जवाब नहीं जानते हैं, तब भी हम जानते हैं कि एक सही एल्गोरिथ्म है।) सामान्य तौर पर, जब यह दिखाया जाता है कि किसी चीज़ के लिए कोई एल्गोरिथ्म नहीं है, तो आपको इस बात पर कोई अनुमान लगाने की ज़रूरत नहीं है कि यह कैसे हो रहा है। काम। हमारी कल्पना की कमी एक प्रमाण प्रदान नहीं करती है।
राफेल

2
@ केलीस्ट्रैंड अफाक, मैं कम्प्यूटेशनलता की मानक परिभाषा का उपयोग करता हूं क्योंकि यह आज पढ़ाया जाता है (और, afaik, दशकों से है)। मैं आपको उत्तर और लिंक की गई सामग्री को अवशोषित करने की सलाह देता हूं और गलत तरीके से काम करता हूं। यह मेरे और दूसरों के लिए समान चीजों को बार-बार दोहराने के लिए समझ में नहीं आता है। एक और कोशिश: कम्प्यूटेबिलिटी की परिभाषा स्वाभाविक रूप से अस्तित्वगत है, रचनात्मक नहीं। जब तक आप शास्त्रीय तर्क के दायरे में सोचते हैं, तब तक "समाधान" एल्गोरिथ्म को सौंपने में सक्षम होने की कोई आवश्यकता नहीं है - हमें केवल यह दिखाना होगा कि कोई एक है जो सही उत्तर देता है।
राफेल

31

रुकने की समस्या बताती है कि कोई एल्गोरिथ्म नहीं है जो यह निर्धारित करेगा कि किसी दिए गए कार्यक्रम में बाधा आती है या नहीं। परिणामस्वरूप, ऐसे कार्यक्रम होने चाहिए जिनके बारे में हम यह नहीं बता सकते कि वे समाप्त होते हैं या नहीं।

"हम" एक एल्गोरिथ्म नहीं हैं =) कोई सामान्य एल्गोरिथ्म नहीं है जो यह निर्धारित कर सके कि किसी दिए गए प्रोग्राम को हर प्रोग्राम के लिए रोका जाए ।

ऐसे कार्यक्रमों के सबसे सरल (सबसे छोटे) ज्ञात उदाहरण क्या हैं?

निम्नलिखित कार्यक्रम पर विचार करें:

n = 3
while true:
    if is_perfect(n):
            halt()
    n = n + 2

फ़ंक्शन is_perfect जाँचता है कि क्या n एक सही संख्या है । यह अज्ञात है कि क्या कोई विषम संख्या है, इसलिए हमें नहीं पता कि यह कार्यक्रम रुकता है या नहीं।


7
हम एक एल्गोरिथ्म हैं।
PyRulez

3
@PyRulez इस बात का कोई प्रमाण नहीं है कि मानव मन की कम्प्यूटेशनल शक्ति ट्यूरिंग मशीन के बराबर है। सबूत काम नहीं करता है, उदाहरण के लिए यह अज्ञात है कि एक मन को दूसरे में कैसे अनुकरण किया जाए।
avsmal

1
@avsmal ठीक है, लेकिन यह बहुत कम संभावना है कि हम हाइपरकंप्यूटेशन के लिए सक्षम हैं।
PyRulez

2
@PyRulez जॉन लुकास और रोजर पेनरोज़ ने सुझाव दिया है कि मानव मन किसी तरह की क्वांटम-यंत्रवत् वृद्धि, "गैर-एल्गोरिदमिक" गणना का परिणाम हो सकता है। यह कुछ मजबूत धारणा है। लेकिन कम से कम हमारे दिमाग में अनिश्चितता का कोई स्रोत हो सकता है। और यह सबूत को तोड़ने के लिए पर्याप्त है: "यादृच्छिक" (कुछ यादृच्छिक परिभाषा के कुछ उपयुक्त परिभाषा के लिए) को नकारना असंभव है, ट्यूरिंग मशीन अगर यह अज्ञात है कि क्या यह रुकता है।
avsmal

5
क्या क्वांटम कंप्यूटिंग को हाइपरकंप्यूटेशन माना जाता है? मैंने मान लिया कि क्वांटम कंप्यूटर को पूरी तरह से मशीनों के ज़रिए ठीक किया जा सकता है - बस थोड़ा धीमा।
MaiaVictor

10

तुम लिखो:

रुकने की समस्या बताती है कि कोई एल्गोरिथ्म नहीं है जो यह निर्धारित करेगा कि किसी दिए गए कार्यक्रम में बाधा आती है या नहीं। परिणामस्वरूप, ऐसे कार्यक्रम होने चाहिए जिनके बारे में हम यह नहीं बता सकते कि वे समाप्त होते हैं या नहीं।

यह दोनों दिशाओं में एक गैर-अनुक्रमिक है। आप एक सामान्य गिरावट का सामना करते हैं जो संबोधित करने के लायक है।

किसी भी निश्चित कार्यक्रम को देखते हुए , इसकी रुकने की समस्या (" P P हमेशा रुकता है?") हमेशा निर्णायक होता है, क्योंकि इसका उत्तर "हाँ" या "नहीं" है। यहां तक ​​कि अगर आप यह नहीं बता सकते हैं कि यह कौन है, तो आप जानते हैं कि दो तुच्छ एल्गोरिदम में से एक जो हमेशा "हां" जवाब देता है। "नहीं" पी- फाल्टिंग समस्या को हल करता है।पीपीपी

केवल अगर आपको आवश्यकता है कि एल्गोरिथ्म को All can कार्यक्रमों के लिए Halting समस्या को हल करना चाहिए, तो आप दिखा सकते हैं कि ऐसा कोई एल्गोरिथ्म मौजूद नहीं हो सकता है।

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

कुछ और संबंधित पढ़ने:


तो आप देखते हैं कि आपके वास्तविक प्रश्न (जैसा कि नीचे दोहराया गया है) का इससे कोई लेना-देना नहीं है कि पड़ाव की समस्या कम्प्यूटेबल है या नहीं। बिलकुल।

[कार्यक्रमों के सबसे सरल (सबसे छोटे) ज्ञात उदाहरण जिन्हें हम रोकना नहीं जानते या लूप करते हैं]?

यह अपने आप में एक वैध प्रश्न है; अन्य लोगों ने अच्छे उत्तर दिए हैं। असल में, आप हर बयान बदल सकता है एक उदाहरण में अज्ञात सच मान के साथ है, बशर्ते वह करता है एक सच मान है:एस

जी(n)={1,एस सच,जी(n+1),अन्य

दी, ये बहुत "प्राकृतिक" नहीं हैं।


  1. जरूरी नहीं कि सभी , लेकिन "कई" कुछ अर्थों में। बहुत से, कम से कम।

टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
राफेल

अपनी स्वयं की समझ के लिए इसे पुनःप्रकाशित करने का प्रयास करने के लिए, क्या यह कहना सही है कि जब कोई अद्वितीय एल्गोरिथ्म निर्धारित नहीं कर सकता है कि क्या कोई भी मनमाने ढंग से दिया गया कार्यक्रम रुकता है, तो हर संभावित कार्यक्रम की रुकने की समस्या को हल करने के लिए कुछ प्रोग्राम-विशिष्ट एल्गोरिदम हो सकता है?
असद सईदुद्दीन

@AsadSaeeduddin यह "बदतर" है: कार्यक्रमों के प्रत्येक दिए गए परिमित सेट के लिए, हॉल्टिंग समस्या तुच्छ हैहर परिमित सेट निर्णायक है।
राफेल

7

किसी विशेष गुण के साथ संख्या के अस्तित्व के बारे में कोई भी खुली समस्या ऐसे कार्यक्रम को जन्म देती है (जो ऐसी संख्या की खोज करता है)। उदाहरण के लिए, Collatz अनुमान लें; चूँकि हम नहीं जानते कि क्या यह सच है, हम यह भी नहीं जानते हैं कि क्या निम्नलिखित कार्यक्रम समाप्त होता है:

    n:=1;
    found:=false;
    while not found do
      s:={};
      i:=n;
      while i not in s do
        add i to s;
        if i even then i:=i/2 else i:=3i+1
      if 1 not in s then found:=true;
      n:=n+1  

6

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


0

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

इनपुट: एन । आउटपुट: Y / N में कम से कम n ट्विन प्राइम मौजूद हैं ।

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

एक और उदाहरण, रीमान की परिकल्पना को लें और इस भाषा पर विचार करें:

इनपुट: एन । आउटपुट: वाई / एन वहाँ रीमैन ज़ेटा फ़ंक्शन के कम से कम n nontrivial शून्य मौजूद हैं ।

एल्गोरिथ्म nontrivial शून्य के लिए खोज करता है (कोड विशेष रूप से जटिल नहीं है, मूल खोज के समान है, और अन्य समकक्ष सूत्र हैं जो अपेक्षाकृत सरल हैं, जो मूल रूप से एक्स आदि से कम सभी अपराधों की "समता" की गणना करते हैं ) और पड़ाव अगर यह पाता n उनमें से और फिर, अपनी यदि इस भाषा डिसाइडेबल है और संकल्प Riemann अनुमान हल करने के लिए "लगभग" बराबर है ज्ञात नहीं।

अब, कैसे एक और भी शानदार उदाहरण के बारे में? ( चेतावनी, संभवतः अधिक विवादास्पद भी)

इनपुट: c: आउटपुट: Y / N में SAT के लिए O (n c ) एल्गोरिदम मौजूद है ।

इसी तरह, इस भाषा की पतनशीलता का समाधान पी बनाम एनपी समस्या के लगभग बराबर है । हालाँकि इस मामले में समस्या के लिए "सरल" कोड के लिए कम स्पष्ट मामला है।


1
क्या डाउनवॉटर समझाएगा कि इस उत्तर में क्या गलत है?
MaiaVictor

2
एनnएनएन,,सीn+n=सीnnएन=2
वॉनब्रांड

3
मैं नीच नहीं हूं, लेकिन इस जवाब में सभी दावे गलत हैं। उन सभी समस्याओं के तीन उल्लेखनीय रूप से निर्णायक हैं (किसी भी अप्रमाणित धारणा बनाने की आवश्यकता के बिना)। क्यों, राफेल के जवाब का बारीकी से अध्ययन करें।
DW

ठीक है कि इनपुट को टीएम निर्दिष्ट करने की आवश्यकता है और यदि टीएम समस्या की गणना करता है तो एल्गोरिथ्म तय करता है। इसके बारे में अधिक सोचना होगा ... सोचें कि इन प्रकार की समस्याओं के लिए कुछ सरल नुस्खा है जो मूल रूप से खुली समस्याओं को अवांछनीय भाषाओं से जोड़ रहे हैं ... लेकिन इस बात पर सहमति व्यक्त की कि शायद ही कभी सीएस रेफरी में दस्तावेज / प्रारूपित किया गया हो ... केवल कुछ बिखरे हुए पाए गए हैं Refs ... या शायद इनपुट एक प्रमाण है और भाषा सत्यापित करती है कि क्या प्रमाण सही है ... अन्य उच्च मतदान वाले उत्तर विषम संख्याओं, कोलाजेट समस्या आदि का उल्लेख करते हैं ... प्रोग्राम अज्ञात हैं या विशिष्ट स्थिरांक के लिए नहीं। ।
vzn

गलतफहमी के लिए खेद है! कुछ और सोचा गया कि इस रूप में दावे सही हैं कि वे सरल कार्यक्रमों का वर्णन करते हैं जिन्हें समाप्त करने के लिए नहीं जाना जाता है (सभी निविष्टियों के लिए) (यानी मूल प्रश्न) और समग्र विचार की विफलता DW द्वारा इंगित / बाहर निकाली गई प्रत्येक को परिवर्तित करने का प्रयास कर रही है असंदिग्ध भाषा। उत्तरार्द्ध निर्माण विचार को जारी रखने के लिए विचार करना सफल होता है। यह देखने का एक और तरीका है कि समस्याओं व्यक्तिगत उदाहरणों / के रूप में देखा जा सकता है आदानों एक हॉल्टिंग समस्या solver के लिए, लेकिन वास्तव में नहीं हॉल्टिंग समस्या खुद के बराबर (होने के लिए जाना जाता है)।
vzn

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