美文网首页
乔姆斯基规范形式(翻译)

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

作者: dannyvi | 来源:发表于2018-11-07 09:52 被阅读0次

    链接: 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

    相关文章

      网友评论

          本文标题:乔姆斯基规范形式(翻译)

          本文链接:https://www.haomeiwen.com/subject/aujmxqtx.html