Chapter 2 Finite Automata
:material-circle-edit-outline: 约 482 个字 :material-clock-time-two-outline: 预计阅读时间 2 分钟
Deterministic Finite Automata(DFA)
确定性有限状态机,确定性是指每一步的状态转移是确定的,有限是指状态是有限的
有一个输入带,只能读,读取头只能向右移,每次只读一格,读到一个字符就改变状态
转移方程在图里就是一条边
没星号是一步,有星号是有限步
e是空字符,一个字符串能被DFA接受/判定,当且仅当该DFA存在末状态能让该字符串被完全消耗掉
具体而言,就是带入一串字符串,通过传递函数后结果状态是末状态
用图来表示状态转移
死去的数逻开始攻击我
这个例题再看看
这种方法只适用于DFA,这就是P和NP的区别
什么是确定性
下面这个是NFA答案
这个问题NFA更容易设计,我们是可以先设计NFA再转化为DFA的
很明显,一个状态读到一个字符可以没有动作,可以有多个动作
Nondeterministic Finite Automata(NFA)
不确定性有限状态机,在DFA基础上希望改进性能而出现的
把传递函数从确定的改成不确定的,原本是一对一,改成一对多,可选择的
NFA把DFA的转移函数改成转移关系了
对应一个字符串,只要存在至少一条路径能够消耗掉那就能接受
\(L(M)\) 即一个状态机能接受的所有字符串的集合
所以NFA需要深度遍历整棵树,而DFA类似BFS找一个叶子
下面有些例子可能会觉得莫名其妙,需要记住,这些状态机的作用是表征特定的字符串,即只消耗特定的字符串,所以莫名其妙的部分是用来过滤的