如何将CFG转换为TM?我对如何将DFA转换为TM有一个基本的想法,但我想不出有办法正确地做到这一点。
我可以对此进行一些常规实施步骤吗?
答案 0 :(得分:2)
使用标准算法构建下推自动机(PDA)。我不会详细介绍任何特定的构造(一个单独的问题将是一个更好的地方来覆盖它),但你可以搜索"将cfg转换为pda"并得到结果。一个例子是here。
如下从PDA构建双磁带图灵机:
使用标准结构从双磁带机构建香草单带图灵机。单磁带和双磁带TM相同的证据是一种建设性的证明,您可以按照隐含的算法来显示构造CFG语言的单磁带TM。
答案 1 :(得分:1)
CFG的每个产生的单词都可以写成一个解析树。如果你得到CFG生成的字符串,那么这些是你的解析树的叶子。要确定字符串是否由CFG生成,您只需从叶子到内部节点直到根节点。所以一般的想法是扭转生产规则。如果你可以到达root,那么字符串就是语法的一部分。如果您处于某个点,没有生产规则适合,那么这个词就不会由CFG生成。请注意,如果有多种可能性,则需要尝试所有可能性,如果有可能,则字符串由CFG生成。如果没有,那就不是。