加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 有限状态机程序

发布时间:2020-12-15 04:51:31 所属栏目:Java 来源:网络整理
导读:我的任务是创建一个小程序,它可以从输入中读取FSM的定义,从输入中读取一些字符串,并根据定义确定FSM是否接受这些字符串.我需要用C,C或 Java来编写它.我已经在网上搜索了如何入门的想法,但我能找到的最好的是 Automata-based programming上的维基百科文章.提
我的任务是创建一个小程序,它可以从输入中读取FSM的定义,从输入中读取一些字符串,并根据定义确定FSM是否接受这些字符串.我需要用C,C或 Java来编写它.我已经在网上搜索了如何入门的想法,但我能找到的最好的是 Automata-based programming上的维基百科文章.提供的C示例似乎使用枚举列表来定义状态,如果状态很难就没关系提前编码.同样,我需要能够实际读取状态的数量和每个状态应该做的定义.任何建议表示赞赏.

更新:
我可以使字母表变小(例如{a b})并采用其他约定
开始状态总是状态0.我被允许对数量施加合理的限制
国家,例如不超过10.

问题摘要:

>我如何实施FSA?

解决方法

首先,获取所有状态(N个)的列表,以及所有符号(M个)的列表.然后有两种方法,解释或代码生成:

>口译.创建一个NxM矩阵,其中矩阵的每个元素都填入相应的目标状态编号,如果没有则填充-1.然后只需要一个初始状态变量并开始处理输入.如果你达到-1状态,你就失败了.如果输入符号用完而没有进入成功状态,则会失败.否则你就成功了.
>代码生成.用C或您最喜欢的编译器语言打印出一个程序.它应该有一个初始化为start状态的整数状态变量.它应该在输入字符上有一个for循环,包含状态变量的开关.每个状态应该有一个案例,并且在每种情况下,在当前字符上都有一个switch语句,用于更改状态变量.

如果你想要比2更快的东西,这肯定会让你不及格(!),摆脱状态变量,而是使用goto :-)如果你不知所措,你可以安慰自己知道这是编译器做的.

附:如果您在状态图中识别出循环等并打印出相应的while和if语句,而不是使用goto,则可以将F更改为A.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读