有限自动机与正则表达式的深入探索
1. 特殊语言自动机的构建
在处理语言识别时,我们常常遇到识别“有效电子邮件地址”或“包含子串 ABC 的字符串”等语言的需求。但如果需要识别除有效电子邮件地址之外的任何字符串组成的语言,或者不包含子串 ABC 的字符串组成的语言,能否构建这样的自动机呢?答案是肯定的。
若某种语言 L 可由自动机识别,那么其“逆”语言 Σ* \ L 也具有相同的可识别性。实际上,构建识别逆语言的自动机很简单。若已有语言 L 的完整自动机,只需将其所有的接受状态(favorable states)和非接受状态进行反转即可。不过,在修改之前要确保自动机是完整的,即定义所有语法允许的转换。
2. JFLAP 项目与有限自动机
在研究有限自动机的过程中,JFLAP 是一个非常有用的工具。它是免费分发的开源软件,可从 http://www.jflap.org 下载。由于 JFLAP 是用 Java 编写的,所以还需要安装 Java 运行时环境(JRE),可从 http://www.java.sun.com 获取。
2.1 JFLAP 的使用
- 启动程序 :正确安装 Java 环境后,双击 JFLAP.jar 文件即可启动程序,会看到一个虽不美观但功能强大的菜单,可在其中选择感兴趣的模型类型。
- 创建有限自动机 :进入有限自动机模式后,屏幕会出现工作区,可轻松创建任何类型的有限自动机(允许非确定性和 ε - 转换)。具体操作如下:
- 创建状态 :点
有限自动机与正则表达式转换探析
超级会员免费看
订阅专栏 解锁全文
21

被折叠的 条评论
为什么被折叠?



