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