确定有限状态自动机(deterministic finite automaton --> DFA)
总结
创建一个程序,该程序将输入确定性有限状态自动机(DFA)的定义,并处理一些字符串,以确定这些字符串是否是DFA所识别的语言的一部分。
细节
- 编写一个Java命令行程序,首先提示用户输入文件名。
- 这个文件将被程序读入。
- 该文件将包含对 DFA 的描述和一些要由 DFA 计算的未知数量的字符串。
- 对于每个字符串,程序将模拟该字符串上的 DFA 。
- 在下面一行打印带有"ACCEPT"或"REJECT"的字符串,并在后面加一个空行以使输出可读。
文件格式
- 第 1 行一整数, N ,作为DFA中的状态数(编号为 0 一 N 一 l ) ; 启动状态将始终为 0
- 第 2 行一表示DFA字母表中单个符号的字符串(单个字符)
- 第 3 行一至少一个整数 【 0 , N 一 l ]将是最终状态(s) ; 多个最终态将被空格分开
- 第 4 行: M 一 DFA 的转换函数,定义为一个三元组:整数字符integer ,其中第一个整数是当前状态,字符是要转换的输入符号,第二个整数是要转换的状态。每行上不超过 10 个三元组,其中一 1 #一 1 作为最后的三元组,表示转换函数定义的结束。行 M + 1 : EOF一要输入到DFA进行计算的字符串,每行一个,直到文件结束。
Example input file:
4
ba
3
0 b 0 1 b 0 2 b 0 3 b 3
0 a 1 1 a 2 2 a 3 3 a 3
-1 # -1
baabaaaab
babbabbab
Examle output:
baabaaaab
ACCEPTbabbabbab
REJECT
使用python实现
final_state = input