zoukankan      html  css  js  c++  java
  • 编译原理正规式和有限自动机

    正规式:

    正规式:正则表达式,表示正规集的工具。

    一个正规式对应一个正规文法(3型文法)

    之间能够进行准换

    三个基本规则:

    A->xB,B->y  则 A=xy。

    A->xA|y  则A=x*y  (x*代表x从1到无穷多个)

    A->x,A->y 则A=x|y


    正规式主要用到了递归的思想,无论遇到多复杂的正规式都可以拆分成上面这三种形式,然后进行解题。


    有限自动机(有穷自动机):

    DFA(Deterministic Finite Automation ):确定的有限自动机

    表达式:M=(S,∑,f,So,Z)

    1.S为一个有限状态集合

    2.∑是一个字母表,它所包含的的每个元素称为一个输入字符;

    3.f是一个从SX∑(笛卡尔乘积)至S的单值部分映射。f(S,a)=s'意味着当现在的状态为s,输入字符a时,将转换到下一状态s'.s'为s的一个后继状态。

    4.So∈S,是唯一的初态;

    5.Z⊆S,是一个终态集。

    NFA(Nondeterministic Finite Automata):不确定的有限自动机

    如果理解了有限自动机,则无限自动机和它的区别就是上面的第四项。

    So⊆S,它的初态不是唯一的,而是一个集合。


    NFA向DFA的转换:

    这个转换是一个比较简单的过程。

    1.如果有一个不确定的有限自动机,则可以转化为图的方式。此处不详述怎样转图的方式。

    2.先将初态确定,然后根据输入的每个元素可以得到哪些状态,依次列表。

    3.这些状态集合可以称为这个有限状态集合n个子集。按0,1,2……的顺序编号。

    4.因为这些子集之间的关系是输入一个确定值确定的,所以这些子集之间存在一些关系,即把这些子集的关系写出来完成NFA向DFA的转换。

    如果不懂可以从网上找一个例子进行理解。


    正规式与有限自动机之间的转换:


    任意的正规式都可以转换为上述三种的表现形式。

    在一个有限自动机转换为正规式时,就是考虑从初态到终态可以输入哪些数据到达。而这些数据可以用哪种正规式概括进来。

  • 相关阅读:
    HTB-靶机-Charon
    第一篇Active Directory疑难解答概述(1)
    Outlook Web App 客户端超时设置
    【Troubleshooting Case】Exchange Server 组件状态应用排错?
    【Troubleshooting Case】Unable to delete Exchange database?
    Exchange Server 2007的即将生命周期,您的计划是?
    "the hypervisor is not running" 故障
    Exchange 2016 体系结构
    USB PE
    10 months then free? 10个月,然后自由
  • 原文地址:https://www.cnblogs.com/shihao/p/2199359.html
Copyright © 2011-2022 走看看