我对自动机实现语言感到困惑。如果存在ɛ转换,自动机是否会直接进入下一个状态?假设我有一个由三个状态组成的自动机a
,b
和c
(其中a
是初始状态,c
是接受状态),带有字母{ 0,1}。以下是如何工作的?
a----ɛ--->(b----0---->a)
(b----1---->c)
字符串“1”是否被接受?如果我们有什么
a---1--->b----ɛ--->c
?字符串“1”会被接受吗?
答案 0 :(得分:3)
如果存在ɛ转换,自动机是否会直接进入下一个状态?
粗略地说,是的。 ɛ转换(简称non-deterministic finite automaton或简称NFA)是与任何符号(0
或1
的消耗无关的转换)。一旦你理解了这一点,就很容易(在这种情况下)推导出与你的NFA相当的deterministic finite automata(或简称DFA)并识别后者所描述的语言。
假设我有一个自动机[...]接受字符串“1”?
是。这是你的第一个NFA的更好的图表(简洁的LaTeX和tikz
):
等效的DFA将是:
一旦你有了这个,就很容易看出那个NFA接受的语言就是字符串的集合
0
开始,1
。字符串“1”,因为它以零0
开头,以1
结尾,确实被接受了。
如果我们有[...]怎么办?字符串“1”会被接受吗?
是。这是你的第二个NFA的更好的图表:
等效的DFA将是:
事实上,很容易看出“1”是唯一被接受的字符串,在这里。