• 有穷自动机 DFA(确定)和NFA(不确定)


    有穷自动机分为DFA和NFA两种。分别为确定的和不确定的两种形式。

    DFA部分:

    一个确定的有穷自动机是一个五元组  M=(K,Σ,f,S,Z)各自的意义分别为:

    K 状态集合,有限集合
    Σ 有穷字母表,它的每个元素称为一个输入符号
    f 状态转换函数, f K × Σ→K 的映射,且为单射。例 f (k i ,a)=k j 表示当前状态为 k i ,输入符号 a ,经状态转 换函数转向状态 k j
    S 唯一的一个初始状态, S K
    Z 终止状态集, ZS , 终态也称为可接受状态
    DFA的状态转换图 : DFA M 含有 m 个状态, n 个输入字符,则状态转换 图有 m 个结点,每个结点至多有 n 条箭弧射出,每条箭弧用 Σ 中一 个不同的输入字符做标记。
    如: DFA M=( K, Σ, f , S, Z ) = ( {S, U, V, Q}, {a,b}, f , S, {Q})
    f (S,a) = U   f (S,b) = V   f (U,a) = Q   f (U,b) = V   f (V,a) = U   f (V,b) = Q   f (Q,a) = Q   f (Q,b) = Q

     在状态转换图中开始的状态是需要有一个箭头指向的,终止的状态是一个双圈的。

    DFA的特点:
    (1) 初态唯一
    (2) 输入字符不包括ε(空串)
    (3) 有向边上只有一个字符
    (4) 一个状态对于某个字符,最多只有一条出边
    可被 DFA 识别癿单词符号
    * 中任意符号串 t ,若存在从初态到某一终态的 通路,且通路上所有弧标记符连接成的字等于 t
    则称 t 可为 DFA 所识别 ( 读出或接受 ) 即对于任意字符串 t Σ, f (S t)=P, P Z
    可识别空串
    M的 初态结点同时也是终态结点,则空字 ε 可为 M 所识别。
    f (k i ε)= k i
    NFA部分:
    不确定有限自动机NFA定义:
    NFA是一个五元组, M=(K, Σ, f , S, Z)  标红的部分是和DFA不同的地方
    K 状态集合,有限集合
    Σ 有穷字母表,它的每个元素称为一个输入符号
    f : 状态转换函数, f K × Σ * →K 的全体子集映射
    S : 非空初始状态集, SK
    Z 终止状态集, ZK , 可为空集
    3. NFA的特点:
    (1) 初态不 唯一
    (2)输入字符包括ε(空串)
    (3)有向边上可以为 字符串
    (4)一个状态对于某个字符,可能有 多条输出 ,即状态的后继不唯一。
    DFA是NFA的特例
    有穷自动机的等价性
    对于每个NFA M,存在一个DFA M’使得 L(M)=L(M’)
    对于任何两个有穷自动机,如果L(M)=L(M’), 则称M与M‘是等价的
  • 相关阅读:
    SpringBoot下Gradle-多环境打包配置详解
    Skill Check: Fundamentals of Large Language Models
    使用idea搭建SpringCloud项目(及所遇到的坑)
    递归的总结和案例
    java计算机毕业设计在线教育系统源程序+mysql+系统+lw文档+远程调试
    windows11 生产力工具配置
    Java反射机制详解--Java
    B-000 硬件工程师手册
    java集合类史上最细讲解 - HashMap篇
    判断测试结束的标准有哪些?
  • 原文地址:https://blog.csdn.net/m0_53345417/article/details/126806124