【问题标题】:How to convert a DFA to a Turing machine?如何将 DFA 转换为图灵机?
【发布时间】:2013-12-28 19:12:37
【问题描述】:

拥有 DFA 的图表,如何将其转换为图灵机?我是否必须找到 DFA 接受的语言,然后创建图灵机?或者有没有直接的方法?

谢谢。

【问题讨论】:

    标签: theory dfa turing-machines


    【解决方案1】:

    DFA 中的每个转换都读取输入的一个字符,跟随转换,然后移动到输入的下一个字符。读取所有输入后,如果 DFA 处于接受状态,则接受,否则拒绝。

    您可以使用图灵机直接模拟。通过为 DFA 中的每个状态创建一个状态来构建图灵机的有限状态控制。对于字符 c 上 DFA 中的每个转换,将 TM 中的转换替换为在读取字符 c 时将一些任意字符写回磁带(无关紧要)然后向右移动磁带头(到磁带上的下一个位置)。然后,对于每个状态,在空白符号上引入从该状态到 TM 的接受状态或 TM 的拒绝状态的转换(基于该状态是接受还是拒绝)。该 TM 通过手动遍历输入字符串并最终在运行结束时决定是接受还是拒绝来有效地运行 DFA。

    希望这会有所帮助!

    【讨论】:

    • 读取字符 c 时会发生什么情况,但不会导致状态转换?是否写入了任意字符并且磁带头仍然向右移动?
    • @Paradox 在 DFA 的大多数定义下,DFA 必须为每个字符和每个状态定义一个转换。同样,大多数 TM 的定义方式允许您限制可以作为输入输入的符号类型,因此您永远不必担心这一点:任何可能遇到的 TM 符号都是 DFA 将有过渡定义为。或者,如果您没有该限制,则直接拒绝 - DFA 的语言仅限使用其字母表中的字符,因此如果您看到一个外来字符,您就知道该字符串不是该语言。
    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 2011-12-07
    • 2020-06-03
    • 2011-08-16
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多