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


18

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

G=({a,b,c},{A,B,C},{AaB,Bb,BC,CcC},A)?

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

답변:


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.