언어 을 인식하는 Turing 기계를 무제한 문법으로 변환하는 방법은 무엇입니까?


19

이 Wikipedia 기사 에 따르면 무제한 문법은 튜링 머신과 동일합니다. 이 기사에서는 Turing 기계를 무제한 문법으로 변환 할 수 있지만 문법을 Turing 기계로 변환하는 방법 만 보여줍니다.

실제로 어떻게 언어 을 인식하는 Turing 기계를 무제한 문법으로 변환합니까? 전환 규칙을 문법 규칙으로 바꾸려고했지만 튜링 머신은 다양한 상태 구성을 가질 수 있습니다.L

답변:


9

튜링 머신의 테이프 내용을 문장 형식으로 인코딩합니다. 비 터미널의 특수 세트는 현재 상태를 인코딩합니다. TM이 현재 가리키고있는 심볼의 오른쪽에 배치 된 어느 시점에서든 문장 형태로 그들 중 하나만있을 수 있습니다.

두 번째 중요한 아이디어는 프로세스 를 되돌려 야 한다는 것입니다. TM은 단어를 입력으로 받아 또는 변환 하거나 종료하지 않습니다. 그러나 문법은 단어를 생성해야합니다. 운 좋게도, 문법은 본질적으로 비결정론 적이므로, 우리는 수용 이 유래 한 곳을 "추측"할 수 있습니다 . 그러면 TM을 받아들이게하는 모든 단어가 생성 될 수 있습니다.101

하자 상태 비끝 세트; wlog는 시작-상태-비 터미널로하고 를 수락-상태-비 터미널 세트로 설정하십시오. 먼저 가능한 모든 구성을 생성하는 시작 규칙이 필요합니다.Q={Q0,,Qk}Q0QFQ

S#1Qf# 모든 .QfQF

마찬가지로, 올바른 위치, 즉 첫 번째 심볼에서 시작 상태에 도달하면 종료됩니다.

#aQ0#a모든 대해 .aΣ

실제 상태 전환을 변환하는 것은 간단합니다.

aQcQ  for a,cΣ(a,Q,N)δ(c,Q)aQbacQ for a,b,cΣ(b,Q,L)δ(c,Q)abQcQb for a,b,cΣ(a,Q,R)δ(c,Q)

다림질하는 기술적 인 문제가 있습니다. 예를 들어, 끝에 경계 마커 를 제거해야합니다 . 종료하지 않고 두 개의 특수 비 터미널을 생성하고 끝으로 바꾸고 을 제거하여 수행 할 수 있습니다. 또한 필요에 따라 더 많은 을 만들어야합니다. 규칙을 해킹해야합니다 .###d=#

또한 TM이 비 입력 심볼을 사용하면 구성이 조금 더 복잡해집니다. 이 경우 종료 규칙이 잘못되었을 수 있습니다. 테이프 어딘가에 입력되지 않은 기호가 있으면 올바른 단어가 생성되지 않은 것입니다. 이것은 제거 유사하게 고정 할 수있다 :의 특별 비 터미널 산란 오른쪽으로 교체하고 모든 기호에서 경우에만 제거되는 .#Q0Σ

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.