이 Wikipedia 기사 에 따르면 무제한 문법은 튜링 머신과 동일합니다. 이 기사에서는 Turing 기계를 무제한 문법으로 변환 할 수 있지만 문법을 Turing 기계로 변환하는 방법 만 보여줍니다.
실제로 어떻게 언어 을 인식하는 Turing 기계를 무제한 문법으로 변환합니까? 전환 규칙을 문법 규칙으로 바꾸려고했지만 튜링 머신은 다양한 상태 구성을 가질 수 있습니다.
이 Wikipedia 기사 에 따르면 무제한 문법은 튜링 머신과 동일합니다. 이 기사에서는 Turing 기계를 무제한 문법으로 변환 할 수 있지만 문법을 Turing 기계로 변환하는 방법 만 보여줍니다.
실제로 어떻게 언어 을 인식하는 Turing 기계를 무제한 문법으로 변환합니까? 전환 규칙을 문법 규칙으로 바꾸려고했지만 튜링 머신은 다양한 상태 구성을 가질 수 있습니다.
답변:
튜링 머신의 테이프 내용을 문장 형식으로 인코딩합니다. 비 터미널의 특수 세트는 현재 상태를 인코딩합니다. TM이 현재 가리키고있는 심볼의 오른쪽에 배치 된 어느 시점에서든 문장 형태로 그들 중 하나만있을 수 있습니다.
두 번째 중요한 아이디어는 프로세스 를 되돌려 야 한다는 것입니다. TM은 단어를 입력으로 받아 또는 변환 하거나 종료하지 않습니다. 그러나 문법은 단어를 생성해야합니다. 운 좋게도, 문법은 본질적으로 비결정론 적이므로, 우리는 수용 이 유래 한 곳을 "추측"할 수 있습니다 . 그러면 TM을 받아들이게하는 모든 단어가 생성 될 수 있습니다.
하자 상태 비끝 세트; wlog는 시작-상태-비 터미널로하고 를 수락-상태-비 터미널 세트로 설정하십시오. 먼저 가능한 모든 구성을 생성하는 시작 규칙이 필요합니다.
모든 .
마찬가지로, 올바른 위치, 즉 첫 번째 심볼에서 시작 상태에 도달하면 종료됩니다.
모든 대해 .
실제 상태 전환을 변환하는 것은 간단합니다.
다림질하는 기술적 인 문제가 있습니다. 예를 들어, 끝에 경계 마커 를 제거해야합니다 . 종료하지 않고 두 개의 특수 비 터미널을 생성하고 끝으로 바꾸고 을 제거하여 수행 할 수 있습니다. 또한 필요에 따라 더 많은 을 만들어야합니다. 규칙을 해킹해야합니다 .
또한 TM이 비 입력 심볼을 사용하면 구성이 조금 더 복잡해집니다. 이 경우 종료 규칙이 잘못되었을 수 있습니다. 테이프 어딘가에 입력되지 않은 기호가 있으면 올바른 단어가 생성되지 않은 것입니다. 이것은 제거 유사하게 고정 할 수있다 :의 특별 비 터미널 산란 오른쪽으로 교체하고 모든 기호에서 경우에만 제거되는 .