• 有限状态自动机


    有限状态自动机 分为确定有限状态自动机(DFA)和不确定有限状态自动机(NFA)。

    假设有字符串 s="x1 x2 x3 x4 .... xn",在转移函数的驱动下,状态转移,如果当s中的所有字符被读完,最终落在接受状态上,则称状态机接收此字符串。

    1.确定有限状态自动机(DFA)

    M =(S,∑,f,So,Z)其中: 

    S是一个有限状态集合。
    ∑是一个字母表,输入字符的集合。
    f是从S x ∑*至S的子集映照。
    S0⊆S,是唯一的初态。 
    Z⊆S,是一个终态集
     
    初态为0,终态为2.
    当进行一系列的输入,使得状态机的状态不断变化,只要最后一个输入使得状态机处于接收节点,那么就表明当前输入可以被状态机接收。
    例如当有字符串“abab”,从初始状态开始,状态的的变化为{0,1,2,2},由于最后的状态为2,所以该字符串可以被此状态机接收。
    如果字符串为“bbab”,则状态的变化为{0,0,1,0},最后的状态为1,所以该字符串不可以被此状态机接收。
     
     
    2.不确定有限状态自动机(NFA)
     
    M =(S,∑,f,So,Z)其中:
       S是一个有限状态集合。
       ∑是一个字母表,输入字符的集合。
       f是从S x ∑*至S的子集映照。 
       S0⊆S,是一个非空初态集。
       Z⊆S,是一个终态集。
     
    在0号状态上,当读入一个字符a,既可以转到1状态,又可停留在状态0,因为状态是不确定的。两个状态都合法。
    在这个字符串上,不管如何走,只要能走到一个接受状态,则这个字符串能够被接受。
    如果一条路径失败了,不一定是不被接受,需要回溯尝试其他路径。
     
    可以写出转移函数:
    {(q0,a)->{q0,q1}, //在状态q0上如果读入一个字符a,则有可能停留在q0,也可以转到q1.
    (q0,b)->{q1},
    (q1,b)->{q0,q1}}
     
     
     
     
  • 相关阅读:
    Javascript事件处理进阶
    Restful API设计指南
    Git&GitHub
    Linux补充
    堡垒机
    Python发送邮件
    js获取当前页面url网址信息
    高并发的秒杀系统
    CMDB开发
    Tornado
  • 原文地址:https://www.cnblogs.com/blzm742624643/p/9724818.html
Copyright © 2020-2023  润新知