문맥없는 문법에 '죽은 상태'가있을 수 있습니까?


18

문맥없는 문법에 다음과 같은 오토 마톤의 "죽은 상태"가 포함될 수 있습니다

G=({a,b,c},{A,B,C},{A→aB,B→b,B→C,C→cC},A)?

생산 규칙 및 는 영원히 반복되며 단어를 생성하지 않습니다. 이것이 허용되거나 생산 규칙이 어느 시점에서 터미널로 끝나야합니까?C → c CB→CC→c씨

답변:


24

문맥이없는 문법에는 비생산적인 규칙 이 포함될 수 있습니다 . 모든 CFG는 비생산적인 규칙, 빈 문자열 생성 및주기가없는 적절한 CFG 와 동일한 언어를 생성하기 때문에 허용 됩니다. 따라서 CFG가 일반성을 잃지 않고 적절하다고 가정하는 것이 안전합니다.


확실하지 않음 : 적절한 CFG는 두 가지 요구 사항을 더 충족해야합니다. 그래서 저는 이것을 재구성 할 것입니다.
— reinierpost

@ reinierpost : 비생산적 규칙을 금지하지만 여전히 부적절한 CFG를 포함하는 CFG 클래스가 있다는 것을 의미한다고 생각합니다. 나는 재구성은 단순하게 할 수있을 것 같아요 : "하지 않는 예를 들어, 그들이"
— mhelvens

비생산적인 규칙이없는 모든 CFG가 올바른 것은 아니며 이는 귀하의 진술과 모순됩니다. 그러나 비생산적인 규칙을 명시 적으로 배제함으로써 적절한 CFG의 정의는 이것이 임의의 CFG에서 가능하다는 것을 명확하게합니다.
— reinierpost

개선해 주셔서 감사합니다. CFG에는 이러한 규칙을 포함 할 수없는 하위 클래스가 있다고 말하고 싶었습니다.
— ilke444

비생산적인 규칙, 빈 문자열 생성 및 ({a}, {A}, {A-> epsilon}, A)와 동일한 언어를 생성하는주기가없는 올바른 CFG가 있습니까? 나는 첫 문장을 좋아한다. 어쩌면 두 번째 문장은 "CFG의 정의는 생산의 왼쪽으로 유한 한 터미널 및 비 터미널 문자열을 허용하기 때문입니다."
— Theodore Norvell

3

네 물론 이죠 모든 NFA는 CFG로 작성 될 수 있습니다. '죽은 상태'(내가 가르친 용어는 '싱크')로 DFA를 구축하는 것은 쉽지 않습니다.

지=({ㅏ},{ㅏ},{ㅏ→ㅏ},ㅏ)
{ㅏ}

ϵ

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