我确实需要你的帮助。 我有这些作品:
1) A--> aAb
2) A--> bAa
3) A--> ε
我应该使用乔姆斯基范式(CNF)。
为了应用上述规则,我应该:
我立即陷入困境。原因是A是一个可以为空的符号(ε是其身体的一部分)
当然我无法移除A符号。
任何人都可以帮助我获得最终解决方案吗?
答案 0 :(得分:2)
正如Wikipedia所述,乔姆斯基范式有两种定义,它们在ε产生的处理上有所不同。你将不得不选择允许这些语法的那个,否则你永远不会得到一个等价的语法:你的语法产生空字符串,而遵循另一个定义的CNF语法不具备这个能力。
答案 1 :(得分:2)
要开始转换为Chomsky普通形式(使用维基百科页面提供的定义(1)),您需要找到一个基本上非等同的语法。带有起始符号G
的语法S
基本上是非约束iff
1. S is not a recursive variable
2. G has no ε-rules other than S -> ε if ε ∈ L(G)
使用非递归起始符号调用语法G
,等效语法G'
:
G' : S -> A
A -> aAb | bAa | ε
显然,G'
的可空变量集合为{S,A}
,因为A -> ε
是G'
中的产生,S -> A
是链规则。我假设您已经获得了一种从语法中删除ε规则的算法。该算法应该产生类似于:
G'' : S -> A | ε
A -> aAb | bAa | ab | ba
语法G''
基本上是非合同的;您现在可以将剩余的算法应用于语法,以找到Chomsky普通形式的等效语法。