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

正则表达式 – 将有限状态机转换为正则表达式

发布时间:2020-12-13 22:53:44 所属栏目:百科 来源:网络整理
导读:是否有工具(或算法)将有限状态机转换为正则表达式? (不是相反,那很容易). 有几种算法可以执行这项任务:Brzozowski和Mc Cluskey的“状态消除方法”,线性方程组的解析,McNaughton和Yamada的方法等.他们在 Automata and rational expressions由Jacques Sakaro
是否有工具(或算法)将有限状态机转换为正则表达式?

(不是相反,那很容易).

有几种算法可以执行这项任务:Brzozowski和Mc Cluskey的“状态消除方法”,线性方程组的解析,McNaughton和Yamada的方法等.他们在 Automata and rational expressions由Jacques Sakarovitch很好地描述.

特别是状态消除方法很容易理解.关键的想法是你要构建一个由理性(也就是常规)表达而不是字母标记的自动机.首先,确保您有一个初始状态和一个最终状态(如果需要,您可以添加新状态和自发转换).然后选择要消除的状态s,如下图所示的状态1.

然后考虑所有的对(p,q),其中p是前趋(转换到s的状态,图中的0)和q后继(状态2).对于每个这样的对(p,添加从p到q的转变,其由E(p,q)标记E(p,s)E(s,s)* E(s,q)其中E(p,s)表示“标记从p到s的转换的表达式.一旦你处理了所有的对(p,删除状态s.在前面的例子中:

这样做直到你消除所有内部状态(即保持初始状态和最终状态),然后只读取从初始状态到最终状态(这里是d ab * c)的转换结果.

你可以使用Vcsn来玩这个算法,这是一个理性表达和自动机的工具.以下是您可以在Vcsn Sandbox重现的完整示例.

(编辑:李大同)

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

    推荐文章
      热点阅读