括弧マッチングのための2状態チューリングマシン
大学では、一般的な計算理論とチューリングマシンについてより具体的に学びました。優れた理論上の結果の1つは、潜在的に大きなアルファベット(記号)を犠牲にして、状態の数を2つまで減らすことができるということです。 私はさまざまなチューリングマシンの例を探していましたが、提示された一般的な例は括弧カッチャー/チェッカーです。基本的に、括弧などの文字列(()()()))()()()がバランスしているかどうかをチェックします(前の例では、バランスが取れていない場合は0を返します)。 私がこれを3つの状態のマシンにしかできない場合があるので、試してください。私は誰かがこれを理論上の最小値の2に減らすことができるかどうか、そして彼らのアプローチ/状態/シンボルが何であったかを知りたいです! 明確にするために、括弧は空白のテープの間に「挟まれている」ため、上記の例 - - - - - - - (()()()))()()() - - - - - - -ではテープ上の入力になります。アルファベットが含まれるであろう(、)、1、0、-、および*halt*状態が状態としてカウントされません。 参考までに、私が持っている3つの状態のアプローチは次のとおりです。状態の説明: 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 …