यह निर्धारित करना कि ट्यूरिंग मशीन हाल्ट को अच्छी तरह से जाना जाता है या नहीं, लेकिन यह सरल मशीनों के लिए जरूरी नहीं है।
एक फू मशीन एक परिमित टेप, जहां टेप पर प्रत्येक कोशिका एक पूर्णांक या पड़ाव प्रतीक होता है के साथ एक मशीन है h
, जैसे
2 h 1 -1
पहली सेल की ओर इशारा करके निर्देश सूचक शुरू होता है:
2 h 1 -1
^
प्रत्येक चरण पर, निर्देश सूचक उस संख्या से आगे बढ़ता है जिस पर वह इंगित करता है, फिर उस संख्या को नकारता है। इसलिए, एक कदम के बाद, यह आगे की 2
कोशिकाओं को स्थानांतरित करेगा , और 2
एक में बदल जाएगा -2
:
-2 h 1 -1
^
फू मशीन तब तक ऐसा करती रहती है जब तक कि निर्देश सूचक हॉल्ट प्रतीक ( h
) की ओर इशारा नहीं करता है । तो, यहाँ इस कार्यक्रम का पूरा निष्पादन है:
2 h 1 -1
^
-2 h 1 -1
^
-2 h -1 -1
^
-2 h -1 1
^
-2 h 1 1
^
टेप भी गोलाकार है, इसलिए यदि निर्देश सूचक टेप के एक तरफ से हटता है, तो वह दूसरी तरफ जाता है, जैसे:
3 h 1 3
^
-3 h 1 3
^
-3 h 1 -3
^
-3 h -1 -3
^
-3 h -1 3
^
3 h -1 3
^
इन फू मशीनों के बारे में एक दिलचस्प बात यह है कि कुछ पड़ाव नहीं करते हैं, जैसे:
1 2 h 2
^
-1 2 h 2
^
-1 -2 h 2
^
-1 -2 h -2
^
-1 2 h -2
^
-1 2 h 2
^
यह कार्यक्रम उन अंतिम चार राज्यों में हमेशा के लिए बंद रहेगा।
तो, एक प्रोग्राम लिखें जो निर्धारित करता है कि कोई फू मशीन रुकती है या नहीं! आप फू मशीनों के लिए किसी भी (उचित) इनपुट प्रारूप का उपयोग कर सकते हैं, और आप 0
पड़ाव प्रतीक के रूप में उपयोग करना चुन सकते हैं । आप उस मामले के लिए किसी भी दो अलग-अलग आउटपुट का उपयोग कर सकते हैं जहां यह रुकता है और उस मामले में जहां यह नहीं होता है। निश्चित रूप से, आपके प्रोग्राम को सभी मान्य इनपुट के लिए समय की मात्रा में एक उत्तर देना होगा।
यह कोड-गोल्फ है , इसलिए अपने कार्यक्रम को यथासंभव छोटा बनाने की कोशिश करें!
परीक्षण के मामलों
2 h 1 -1
Halts
3 h 1 3
Halts
h
Halts
1 1 1 1 h
Halts
2 1 3 2 1 2 h
Halts
3 2 1 1 4 h
Halts
1 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 h -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36
Halts
2 h
Does not halt
1 2 h 2
Does not halt
8 1 2 3 3 4 8 4 3 2 h
Does not halt
1 2 4 3 h 2 4 5 3
Does not halt
3 1 h 3 1 1
Does not halt
1 2 h 42
Does not halt
1 2 h 42
(रोक नहीं करता है)
3 2 1 1 4 h
। यह एक बार रुक जाता है लेकिन तत्वों की संख्या के दोगुने से अधिक पुनरावृत्तियों की आवश्यकता होती है।
1 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 h -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36
जो 786430 चरणों के बाद रुकता है।