乔姆斯基规范形式(翻译)

链接: https://www.tutorialspoint.com/automata_theory/chomsky_normal_form.htm

CFG(Chomsky Normal Form),乔姆斯基规范形式, 具有以下形式:

A -> a
A -> BC
S -> ε

小写字母表示终结符号,大写表示非终结符。
产生式的体要么由单个终结符号或者ε构成,要么由两个非终结符构成。

规范形式变换算法

Step 1 - 如果开始符 S 出现在产生式的右侧 创建一个新符号
S' -> S
Step 2 - 去除掉空产生式。
Step 3 - 去除掉单产生式。
Step 4 - 替换每个产生式 A -> B1...Bnn > 2 变换成 A -> B1C C -> B2...Bn 。重复此过程,直到最后。
Step 5 - 产生式右侧的终结符号 A -> aB , 替换为 A -> XBX -> a , 重复此过程,直到替换掉全部终结符号。

问题

转换以下文法到规范形式:

S → ASA | aB
A → B | S
B → b | ε

解决

(1) 因为 S 出现在右侧 S -> ASA ,所以我们添加 S0S0 -> S

S0 → S, S→ ASA | aB, A → B | S, B → b | ε

(2) 现在去除空产生式

B → ε , A → ε

去掉 B → ε 后,

S0 → S, S → ASA | aB | a, A → B | S | ε, B → b

去掉 A → ε 后,

S0 →S, S→ ASA | aB | a | AS | SA | S, A → B | S, B → b

(3) 现在我们去除单产生式:

去掉 S → S:

S0 → S
S → ASA | aB | a | AS | SA
A → B | S
B → b

去掉 S0→ S

S0 → ASA | aB | a | AS | SA
S → ASA | aB | a | AS | SA
A → B | S
B → b

去掉 A→ B:

S0 → ASA | aB | a | AS | SA
S → ASA | aB | a | AS | SA
A → S | b
B → b

去掉 A→ S

S0 → ASA | aB | a | AS | SA
S → ASA | aB | a | AS | SA
A → b |ASA | aB | a | AS | SA
B → b

(4) 现在变换多于两个变量的右侧

这里 S0→ ASA, S → ASA, A→ ASA 都是

变换后:

S0 → AX | aB | a | AS | SA
S → AX | aB | a | AS | SA
A → b |AX | aB | a | AS | SA
B → b
X → SA

(5) 我们最后将终结符组合产生式S0→ aB, S→ aB, A→ aB替换:

S0 → AX | YB | a | AS | SA
S → AX | YB | a | AS | SA
A → b A → b |AX | YB | a | AS | SA
B → b
X → SA
Y → a

你可能感兴趣的:(乔姆斯基规范形式(翻译))