कॉलेज में हम सामान्य रूप से कम्प्यूटिंग और ट्यूरिंग मशीनों के सिद्धांत के बारे में सीख रहे हैं। महान सैद्धांतिक परिणामों में से एक यह है कि संभावित रूप से बड़े वर्णमाला (प्रतीकों) की कीमत पर, आप राज्यों की संख्या केवल 2 तक कम कर सकते हैं।
मैं अलग-अलग ट्यूरिंग मशीनों के उदाहरणों की तलाश में था और प्रस्तुत एक सामान्य उदाहरण पेरेंटेसिस माचिस / चेकर है। अनिवार्य रूप से यह जांचता है कि क्या कोष्ठक की एक स्ट्रिंग, उदाहरण के (()()()))()()()
लिए संतुलित है (पिछले उदाहरण असंतुलित होने के लिए 0 लौटा देगा)।
कोशिश करें कि मैं केवल तीन राज्य मशीन होने के लिए यह प्राप्त कर सकता हूं। मुझे यह जानकर अच्छा लगेगा कि कोई भी इसे कम से कम 2 के सैद्धांतिक रूप से कम कर सकता है और उनका दृष्टिकोण / राज्य / प्रतीक क्या था!
बस स्पष्ट करने के लिए, कोष्ठक को खाली टेप के बीच "सैंडविच" किया जाता है, इसलिए उपरोक्त उदाहरण
- - - - - - - (()()()))()()() - - - - - - -
में टेप पर इनपुट होगा। वर्णमाला को शामिल किया जाएगा (
, )
, 1
, 0
, -
, और *halt*
राज्य एक राज्य के रूप में नहीं गिना जाता।
संदर्भ के लिए मेरे पास तीन राज्य दृष्टिकोण इस प्रकार हैं: राज्यों का विवरण:
State s1: Looks for Closing parenthesis
State s2: Looks for Open parenthesis
State s3: Checks the tape to ensure everything is matched
Symbols: ),(,X
के रूप में सूचीबद्ध संक्रमण:
Action: State Symbol NewState WriteSymbol Motion
// Termination behavior
Action: s2 - *halt* 0 -
Action: s1 - s3 - r
//Transitions of TM
Action: s1 ( s1 ( l
Action: s1 ) s2 X r
Action: s1 X s1 X l
Action: s2 ( s1 X l
Action: s2 X s2 X r
Action: s3 ( *halt* 0 -
Action: s3 X s3 X r
Action: s3 - *halt* 1 -
यह सब लिखने का अनौपचारिक तरीका क्षमा करें। मैं अभी भी इसके पीछे सैद्धांतिक निर्माण सीख रहा हूं।