zoukankan      html  css  js  c++  java
  • DFA最小化实例

    原始DFA如下图所示

    最小化的定义:
    1.没有多余的状态(死状态);
    2.没有两个状态是相互等价的;

    两个状态等价的含义:
    1.兼容性(一致性)——同是终态或同是非终态;
    2.传播性(蔓延性)——从s出发读入某个a和从t出发经过某个a并且经过某个b到达的状态等价。

    令M为DFA中所有状态的集合。
    1.开始做粗略划分,将状态集M的状态划分为,
    k1 = {C, D, E, F}
    k2 = {S, A, B}
    2.考察k1是否可分,由下面的转换关系k2可以分为{S, B}和{A}。
    A -> a -> k1
    S -> a -> k2
    B -> a -> k2

    3.对于{S, B}有下面的转换关系,可以划分为{S}和{B}
    B -> b -> k1
    S -> b -> k2

    4.考察k1,对于经由a和b,到达的状态都是属于k1,所以不可再分。

    对于是否可以再分,有一个形式化的定义,
      任意的c属于字符集合Σ,si经由c到达sx,以及sj经由c到达sy,那么sx和sy均属于的状态集合pt。如果有任何状态sk属于pt,dk经由c到达dz,dz不属于pt,那么dk不能再继续留在pt中。

    5.状态集k1采用状态C来替代,当然可以使用k1中其他状态来替代,得到如下的最小DFA,

    参考:

    http://leaver.me/archives/369.html

  • 相关阅读:
    webbrowser在vb中叫
    linux小记之安装bin或deb程序
    9011,9012,9013,9014,8050,8550三极管的区别
    中兴v880刷机全过程。原创亲测
    Slackware的启动(init)过程
    sysvinit
    rc.S 分析【转自CSDN 】
    linux 解压rar zip
    slackware启动脚本详解
    工作
  • 原文地址:https://www.cnblogs.com/wendellyi/p/3695489.html
Copyright © 2011-2022 走看看