找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 20|回复: 0

ACSL--FSA和正则表达式

[复制链接]

13

主题

35

回帖

930

积分

超级版主

积分
930
发表于 昨天 16:46 | 显示全部楼层 |阅读模式
不多废话啊全明星赛模考18-19题就是这个FSA和正则表达式


什么是FSA -- Finite State Automation, 即有限状态自动机
可以理解为一个游戏
你是一个主角,你读字符,如果有相对应的字符,就按箭头移动,如果存在一种情况使得最后字符读完你刚好站在终点,那么这个字符串就是可以被接受的。
因此所谓FSA重要的只有:state, start state, final state, transition(我的状态,我最开始和最后的状态,以及字符往哪走)
基本上做这种FSA的题,如果没有联动正则,就手动遍历完事,类似布尔代数,这种逻辑类的题目他最多给你3-4个变量你手动遍历最简单最直接最高效最不绕弯子自然是好的。因此所有ACSL这种时间并没有那么紧迫的考试,如果你对这个知识点并不熟练,遍历是第一选择

那么如果要求你用正则表达式来表达FSA呢?(模考P18)
那也很简单,环就是*(因为一次性能转无穷多次),分叉就是两个的交集,正常的箭头就正常写就行

参考P18就可以简洁地理解本篇的意思

然后再难一点就是回头箭头
就是这个环路不止一个,而是很多个,那么就要整合起来循环,如类似(ab)*就是两个点之间A到B是a,B到A是b
比如起点是A那么这一小段可以代表成(ab)*a,因为*指的是可有可无
再者就是比如一个指向自身的环路,但是有两个环路a和b,那就要表示成(a U b)*

总而言之一定要模拟整条逻辑链,这样是最踏实的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 8-14-2026 01:43 , Processed in 0.069445 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表