अज्ञात रुकने की स्थिति के साथ बहुत कम कार्यक्रम क्या हैं?


32

बाइनरी लैम्ब्डा कैलकुलस के इस 579-बिट प्रोग्राम में अज्ञात रुकने की स्थिति है:

01001001000100010001000101100111101111001110010101000001110011101000000111001110
10010000011100111010000001110011101000000111001110100000000111000011100111110100
00101011000000000010111011100101011111000000111001011111101101011010000000100000
10000001011100000000001110010101010101010111100000011100101010110000000001110000
00000111100000000011110000000001100001010101100000001110000000110000000100000001
00000000010010111110111100000010101111110000001100000011100111110000101101101110
00110000101100010111001011111011110000001110010111111000011110011110011110101000
0010110101000011010

यही है, यह ज्ञात नहीं है कि यह कार्यक्रम समाप्त होता है या नहीं। इसे निर्धारित करने के लिए, आपको Collatz अनुमान को हल करना होगा - या, कम से कम, 2 ^ 256 तक की सभी संख्याओं के लिए। इस भंडार पर इस कार्यक्रम को कैसे प्राप्त किया गया, इसकी पूरी व्याख्या है।

क्या वहाँ (बीएलसी) छोटे बीएलसी कार्यक्रम हैं जिन्हें अज्ञात रुकने की स्थिति भी है?


6
बहुत संबंधित प्रश्न । सामुदायिक वोट, कृपया: डुप्लिकेट?
राफेल

9
इस तरह के कार्यक्रम को कम से कम बिट्स में व्यक्त करने का कार्य कोड गोल्फ का मुद्दा लगता है , कम कंप्यूटर विज्ञान
राफेल

2
मुझे लगता है कि 5-राज्य टीएम के बारे में रिकी का जवाब मूल प्रश्न पर एक से बेहतर है। यदि यह एक ठग के रूप में बंद है, तो क्या उत्तर को स्थानांतरित किया जा सकता है?
डेविड रिचरबी


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

जवाबों:


30

हाँ। यह पृष्ठ 98 5-राज्य देखते हैं कहते हैं ट्यूरिंग मशीन जिसका हॉल्टिंग स्थितियों अज्ञात हैं। अनायास, यह इस तरह की मशीनों का कोई उदाहरण नहीं देता है, लेकिन यह 26 वर्षीय पृष्ठ 2 5-स्टेट ट्यूरिंग मशीनें देता है, जिनकी हॉल्टिंग की स्थिति उस समय स्पष्ट रूप से अज्ञात थी। ("सरल काउंटर" के लिए खोज करना आपको उन 2 के बीच सही ले जाएगा।) मैंने उन्हें इस मामले में कॉपी किया है कि लिंक नीचे जाता है:

Input Bit   Transition on State     Steps            Comment
             A   B   C   D   E

    0       B1L C1R D0R A1L H1L   > 2*(10^9)       ``chaotic''
    1       B1R E0L A0L D0R C0L

    0       B1L A0R C0R E1L B0L       ?        complex ``counter''
    1       A1R C0L D1L A0R H1L

पृष्ठ का निचला भाग कहता है: $ दिनांक: 2007/11/03, फिर यह 26 साल पुराना कैसे है?
फाल्कन

1
@ फाल्के पेज के शीर्ष पर लिखा है, "यह पृष्ठ लेखक का HTML फिर से लिखना है ... फरवरी 1990"। पाठ 26 साल पुराना है, HTML में प्रतिपादन 2007 से (या अंतिम अद्यतन) है।
IMSoP

5

Collatz अनुमान:

निम्नलिखित कार्यक्रम हमेशा रुकता है:

void function( ArbitraryInteger input){
     while( input > 1){
            if(input % 2 == 0)
                input /= 2;
            else
                input = (input*3) + 1;
     }

     // Halt here
}

थोड़ा बदलाव (अभी भी एक अनुमान है, क्योंकि यह Collatz के एक परिणाम पर आधारित है):

कुछ इनपुट के लिए निम्न प्रोग्राम कभी भी एक ही राज्य में दो बार प्रवेश नहीं करेगा (जहां राज्य "इनपुट" द्वारा रखे गए मूल्य से निर्धारित होता है):

void function( ArbitraryInteger input){
     while( input >= 1){ // notice the "="
            if(input % 2 == 0)
                input /= 2;
            else
                input = (input*3) + 1;
     }
}

ध्यान दें कि दूसरा कार्यक्रम कभी भी रुकता नहीं है, भले ही पहला कार्यक्रम कुछ भी हो या नहीं।

यह माना जाता है कि पहला कार्यक्रम हमेशा किसी भी इनपुट के लिए समाप्त होता है, हालांकि, हमारे पास इसका प्रमाण नहीं है, और अभी भी कुछ पूर्णांक मौजूद हो सकते हैं, जिसके लिए कार्यक्रम रुकना नहीं है (इसे साबित करने के लिए $ 100 का पुरस्कार भी है) ।

दूसरा कार्यक्रम भी दिलचस्प है: यह बताता है कि कार्यक्रम कुछ इनपुट के लिए दो बार एक ही राज्य में प्रवेश नहीं करेगा, जिसे मूल रूप से दोहराए बिना अनुक्रमित करने के लिए ज्ञात अनुक्रम के लिए पहले कार्यक्रम की आवश्यकता होती है। यह केवल Collatz अनुमान को गलत होने की आवश्यकता नहीं है, लेकिन यह स्पष्ट 1,4,2,1 लूप के अलावा, इसे झूठे और बिना छोरों के होने की आवश्यकता है।

  • यदि Collatz में केवल लूपिंग काउंटर-उदाहरण हैं, तो अनुमान पर भिन्नता झूठी है

  • यदि Collatz छोरों के बिना गलत है, तो अनुमान पर भिन्नता सत्य है

  • यदि Collatz सच है, तो भिन्नता झूठी है

  • यदि Collatz दोनों झूठे हैं क्योंकि इसमें लूप हैं और क्योंकि इसके पास एक संख्या है जिसके लिए यह डायवर्ज करता है, अनुमान पर भिन्नता सत्य है (इसके लिए केवल एक नंबर की आवश्यकता होती है जिसके लिए यह एक लूप में प्रवेश किए बिना डायवर्ज करता है)

मुझे लगता है कि भिन्नता अधिक दिलचस्प है (सिर्फ इसलिए नहीं कि मैंने इसे दुर्घटना से पाया और इसे @LieuweVinkhuijzen के लिए धन्यवाद दिया), लेकिन क्योंकि यह वास्तव में एक वास्तविक प्रमाण की आवश्यकता होती है। जानवर मजबूर करके, हम एक दिन या किसी अन्य को पा सकते हैं (और वह 70 से अधिक संख्या में लूप होगा: कला की वर्तमान स्थिति यह है कि 68 या तो कम से कम अनंत लूप नहीं हो सकते हैं), और जानवर मजबूर होना दिलचस्प नहीं है: यह सिर्फ नंबर क्रंचिंग है। हालाँकि, हम एक अनंत विचलन अनुक्रम को बाध्य नहीं कर सकते हैं, हम नहीं जानते कि क्या यह वास्तव में वास्तविक प्रमाण के बिना समाप्त होगा।

संपादित करें: मैं Collatz अनुमान के बारे में खेद है, मैं वास्तव में कुछ साल पहले के बारे में पढ़ा एल्गोरिथ्म के साथ दिल से उत्तर दिया, मैं उम्मीद नहीं की थी कि मैं पहले से ही उल्लेख किया गया था के बारे में भाग छोड़ दिया।

EDIT2: एक टिप्पणी ने मुझे सूचित किया कि मैंने एल्गोरिथ्म को एक गलती के साथ लिखा था, हालांकि, वह गलती वास्तव में मेरे जवाब को Collatz अनुमान से अलग बनाती है (लेकिन इसका प्रत्यक्ष रूपांतर)।


1
मुझे लगता है कि आप के input > 1बजाय लिखने का मतलब है input >= 1? जैसा कि यह अब खड़ा है, यह कार्यक्रम लूप करेगा1421

आप सही कह रहे हैं, मैं तब तक इसे लगाना चाहता था >, हालांकि जब तक हमारे पास पड़ाव के लिए कोई प्रमाण >नहीं है, तब तक हम यह सुनिश्चित नहीं कर सकते हैं कि हम 1 -> 4 -> 2 -> 1लूप तक पहुंच जाएंगे (उदाहरण के लिए अगर यह इसे समाप्त नहीं करता है तो >' t पहुंच >=)
GameDeveloper

1
> =14211421> =>

2
n<1n=1n4n>1n11

1
यह सच है :) आप सही हैं, मुझे अपनी पहली टिप्पणी में 'iff the Collatz अनुमान सच है' जोड़ना चाहिए था। मैं आपका संपादन देख रहा हूं, बहुत अच्छा। आपको दूसरे कार्यक्रम की आवश्यकता नहीं है, क्योंकि अनुमान 'यह कार्यक्रम कभी भी एक ही राज्य में दो बार प्रवेश नहीं करता है' भी पहले कार्यक्रम का अनसुलझा है: यह संभव है कि एक संख्या है जो अनंत में विचलन नहीं करती है, लेकिन इसके बजाय एक में फंस जाती है बड़े लूप कहीं बहुत अधिक संख्या में।
लेउवे विन्खुइजेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.