实验目的
设计程序实现如下自动机,并且输入三个不同的字符串,对字符串进行合法性检测(即判断字符串中的字符是否在输入符号集中),之后由有限自动机判断字符串是否被接受。
状态集: {q0q1q2q3}
输入符号集: {0,1}
初始状态: q0
终止状态: q0
状态转移函数(状态转换图):
实验内容
- 实现有限状态自动机(DFA),对于给定的状态可以知道它的状态转移矩阵。
- 实现字符合法性检验。
实验过程
首先通过正则表达式实现对字符串的合法性检验,由于输入符号集只有{0,1}
,那么用正则表达式([01])*
即可表达成所有0和1组成的串。然后是对每一步状态和输入符号集的组合所导致的状态转移,很容易想到用一个二维数组表示一个状态转移矩阵,行代表状态,列代表输入符号集,值代表该行状态遇到该列输入字符要转移到的状态,例如本题给定的状态转移函数对应的转移矩阵为:
那么就很容易通过这个二维矩阵检查给定的输入是否可以被自动机接受,例如(Q0,0)就代表当前状态是Q0,当前输入是0,那么就要转移到状态Q2,其它的以此类推。最后判断最后一个状态是否是接收状态即可。