有没有简单的方法来解决"构建图灵机..​​."问题吗?

时间:2012-08-25 22:27:43

标签: turing-machines formal-languages

我理解图灵机的逻辑。当给图灵机时, 我可以理解它是如何工作的以及它是如何停止的。但是当它被要求时 构建图灵机,更难。

有没有简单的方法可以找到问题的答案,例如:

Construct a Turing machine a*b* 
Construct a Turing machine a*b*a* 
etc.

我想绘制这些图灵机吗?有没有方法,比如桌子 填写然后绘制图表等等?

我在网上搜索了很多关于这个主题的内容。只有答案 (仅图表)。没有解释如何解决它是如何被图解的。

提前致谢

1 个答案:

答案 0 :(得分:0)

您提供的两个示例是正则表达式,并且确实有简单的算法将正则表达式转换为自动机 - 即NFA。一旦你有了NFA,就可以使用简单的结构将它们变成TM。

将正则表达式转换为NFA的算法如下:

规则1:如果某个字母符号为r = a,则r的NFA为:

       a
--->q0--->(q1)

规则2:如果正则表达式r = st s, tM1M2分别是st的NFA,那么r的NFA是:

       e
--->M1--->M2

也就是说,初始状态是M1的状态,接受状态是M2的状态,并且M1的所有(以前)接受状态都有新的空转换到(以前)初始状态M2

规则3:如果r = s + t,正则表达式s, tM1M2分别是st的NFA ,然后r的NFA是:

       e
--->q0--->M1
     | e
     +--->M2

也就是说,初始状态是新状态q0,最终状态是M1M2的状态,并且从新的初始状态开始添加两个空转换到M1M2的(以前)初始状态。

规则4:如果r = s*为正则表达式sMs的NFA,则r的NFA为:

     +------+
     |  e   |
     V      |
--->(q0)--->M

也就是说,添加了一个新的初始状态q0,接受状态是Mq0的状态,并且从{{0}的接受状态添加了新的空转换。 1}}到M

在您的示例中,我们按以下方式推导出NFA:

q0

有了NFA,可以按如下方式构建TM:

  1. 与NFA相同的状态
  2. 消耗输入的转换会使磁带头向右移动。
  3. 空的过渡根本不会移动磁带头。
  4. TM永远不会覆盖其输入。
  5. 当TM移动到足够远的位置后遇到空白时,如果它处于DFA的接受状态,则进入暂停接受,否则停止拒绝。