我理解图灵机的逻辑。当给图灵机时, 我可以理解它是如何工作的以及它是如何停止的。但是当它被要求时 构建图灵机,更难。
有没有简单的方法可以找到问题的答案,例如:
Construct a Turing machine a*b*
Construct a Turing machine a*b*a*
etc.
我想绘制这些图灵机吗?有没有方法,比如桌子 填写然后绘制图表等等?
我在网上搜索了很多关于这个主题的内容。只有答案 (仅图表)。没有解释如何解决它是如何被图解的。
提前致谢
答案 0 :(得分:0)
您提供的两个示例是正则表达式,并且确实有简单的算法将正则表达式转换为自动机 - 即NFA。一旦你有了NFA,就可以使用简单的结构将它们变成TM。
将正则表达式转换为NFA的算法如下:
规则1:如果某个字母符号为r = a
,则r
的NFA为:
a
--->q0--->(q1)
规则2:如果正则表达式r = st
s, t
,M1
和M2
分别是s
和t
的NFA,那么r
的NFA是:
e
--->M1--->M2
也就是说,初始状态是M1
的状态,接受状态是M2
的状态,并且M1
的所有(以前)接受状态都有新的空转换到(以前)初始状态M2
。
规则3:如果r = s + t
,正则表达式s, t
,M1
和M2
分别是s
和t
的NFA ,然后r
的NFA是:
e
--->q0--->M1
| e
+--->M2
也就是说,初始状态是新状态q0
,最终状态是M1
和M2
的状态,并且从新的初始状态开始添加两个空转换到M1
和M2
的(以前)初始状态。
规则4:如果r = s*
为正则表达式s
,M
为s
的NFA,则r
的NFA为:
+------+
| e |
V |
--->(q0)--->M
也就是说,添加了一个新的初始状态q0
,接受状态是M
和q0
的状态,并且从{{0}的接受状态添加了新的空转换。 1}}到M
。
在您的示例中,我们按以下方式推导出NFA:
q0
有了NFA,可以按如下方式构建TM: