특정 클래스의 무제한 문법에 대한 회원 문제


9

알파벳 대한 임의의 문맥이없는 문법 를 고려하십시오 . 이 문법의 제작에 두 개의 고정 된 문맥에 맞지 않는 제작 : 및 . 결과 문법 를 " 제작 보완 된 "를 나타냅니다.G{0,1,0¯,1¯}P0¯0ϵ1¯1ϵGPGP

이것은 문법 얻어 알고리즘 수득 가능 , 문자열은 위에 및 결정 여부 ?GPs{0,1,0¯,1¯}sL(GP)


흥미롭게도 대답이 "아니오"인 것처럼 보이지만 L(G) 규칙적입니다. L(GP). 기본적으로L(G) 하나에 변환 될 수 있습니다 L(GP) 반복적으로 추가하여 ϵ전환 (s,ϵ,t) 경로가있을 때마다 (s,0¯,p,0,t),(s,0¯,p,ϵ,q,0,t),(s,1¯,p,1,t),(s,1¯,p,ϵ,q,1,t) 또는 (s,ϵ,p,ϵ,t)마지막으로 수행 ϵ-제거.
Klaus Draeger 12

응 그것은 사실이야. 실제로, 문제는 프로그램 분석 (생명 기반 가비지 수집)의 문제에서 발생했습니다. 우리는 CFG를 매우 규칙적인 문법 (Mohri-Nederhoff 변환)으로 근사한 다음Klaus Draeger가 언급 한 방식으로 결과 NFA를 단순화합니다.
Amit.

답변:


5

이 문법 클래스는 결정할 수 없습니다. 튜링 머신을 에뮬레이트하는 데 사용하는 방법에 대한 대략적인 아이디어가 있습니다.

각 시점에서 현재 부분적으로 확장 된 단어는 다음과 같습니다.

[tape to the left][head][tape to the right]

여기:

  • [tape to the left]신청 후 P문자 만 포함 0¯1¯.
  • [tape to the right]신청 후 P문자 만 포함 01.
  • [head] 단일 비 터미널이며 헤드 상태와 헤드 위치의 문자를 모두 인코딩합니다.

머리가 상태라고 가정 S머리 아래 문자는 i{0,1}. 그런 다음 머리는 비 터미널로 표현됩니다.Si. 상태로 전환해야하는 경우T현재 문자를 j왼쪽으로 이동하면 두 가지 전환이 있습니다. Si0T0jSi1T1j. 대신 오른쪽으로 이동해야하는 경우 두 가지 전환이 있습니다.Sij¯T00¯Sij¯T11¯. 어떤 의미에서, 머리는 일치하는 캐릭터를 생성함으로써 캐릭터가 움직이는 방향으로 캐릭터를 "추측"해야한다. 추측이 틀리면[tape to the left] 또는 [tape to the right] 위반 될 것이며 결코 회복되지 않을 것입니다.

기계가 정지하면 헤드는 "추측"하여 일치하는 문자를 생성하여 테이프를 양쪽에서 "소비"해야합니다. 그 후, 그것은 빈 단어를 생산해야합니다. 결과적으로 빈 단어는 해당 Turing 기계가 정지 한 경우에만 해당 문법의 구성원이됩니다.


귀하의 축소를 이해하고 있는지 잘 모르겠습니다. 내 의심은 여기에 주어진 Turing 기계가N 상태는 튜링 기계를 에뮬레이트하는 데 필요한 무제한 생산의 수가 아닙니다. N? 그러나 내 문제는 두 가지 고정 무제한 제작을 허용합니다.
Amit.

@ Amit.SI는 답변의 전환에 대한 추가 설명을 제공했습니다.
abacabadabacaba
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.