대학에서 우리는 일반적인 계산 이론과 튜링 머신에 대해 더 구체적으로 배우고 있습니다. 큰 이론적 결과 중 하나는 잠재적으로 큰 알파벳 (기호)을 희생시키면서 상태 수를 2로 줄일 수 있다는 것입니다.
다른 Turing Machines의 예를 찾고 있었고 일반적인 예는 괄호 매처 / 체커입니다. 기본적으로 괄호 문자열 (()()()))()()()
이 균형을 이루는 지 확인합니다 ( 예 : 균형이 맞지 않으면 이전 예제에서는 0을 반환 함).
이 상태를 3 가지 상태 머신으로 만 만들 수 있습니다. 누구든지 이것을 이론상의 최소값 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 -
이 모든 것을 비공식적으로 작성하는 방법을 용서하십시오. 나는 여전히 이것 뒤에 이론적 인 구성을 배우고 있습니다.