如何将CFG转换为图灵机

时间:2017-05-02 06:07:35

标签: theory context-free-grammar turing-machines

如何将CFG转换为TM?我对如何将DFA转换为TM有一个基本的想法,但我想不出有办法正确地做到这一点。

我可以对此进行一些常规实施步骤吗?

2 个答案:

答案 0 :(得分:2)

  1. 使用标准算法构建下推自动机(PDA)。我不会详细介绍任何特定的构造(一个单独的问题将是一个更好的地方来覆盖它),但你可以搜索"将cfg转换为pda"并得到结果。一个例子是here

  2. 如下从PDA构建双磁带图灵机:

    • 图灵机从左到右读取输入磁带(磁带#1)
    • 图灵机使用第二个磁带作为堆叠,在推动时向右移动,在弹出时向左移动。
  3. 使用标准结构从双磁带机构建香草单带图灵机。单磁带和双磁带TM相同的证据是一种建设性的证明,您可以按照隐含的算法来显示构造CFG语言的单磁带TM。

答案 1 :(得分:1)

CFG的每个产生的单词都可以写成一个解析树。如果你得到CFG生成的字符串,那么这些是你的解析树的叶子。要确定字符串是否由CFG生成,您只需从叶子到内部节点直到根节点。所以一般的想法是扭转生产规则。如果你可以到达root,那么字符串就是语法的一部分。如果您处于某个点,没有生产规则适合,那么这个词就不会由CFG生成。请注意,如果有多种可能性,则需要尝试所有可能性,如果有可能,则字符串由CFG生成。如果没有,那就不是。