当前位置: 首页 > news >正文

由正规表达式构造DFA,以及DFA的相关化简

目录

1.由正规式到DFA

首先讲如何从正规式到NFA

如何从NFA到DFA

2.DFA的化简

3.DFA和NFA的区别 


1.由正规式到DFA

正规式--->NFA---->DFA

首先讲如何从正规式到NFA

转换规则:

例题1:这里圆圈里面的命名是随意的,只要能区别开就可以了

如何从NFA到DFA

NFA---->状态转换表---->状态转换矩阵---->DFA

如下例题:

以上NFA的转换表如下图所示:

这里的"I"是从x出发的状态,"Ia"表示I集合中的字符经过a的状态的集合

规则:若经过的是\varepsilon(空串),那么就经过空串后到达的字符加入到集合中,如果没有经过\varepsilon空串,就不到达。

这里的每一列就是列举上一行中出现的集合,例如第二列,列举的就是上一行中出现的红框的集合

就拿I={1,2,3}具体说:

由图,1经过a的状态有:1,2经过a的状态有3,3经过a的状态有5,6,Y(因为5后面接的就是\varepsilon串),所以I_{a}={1,2,3,5,6,Y}

以此类推就能得到转换表,再将相同的集合表示出来

就可以进一步得到转换矩阵

再根据状态转换矩阵可得图DFA

注:这个图怎么判断这个状态是不是一个终态(一个圈还是两个圈),那么我们只需要看状态转换表

表中含有Y的集合,就是终态,需要画两个圈

2.DFA的化简

这里终态和非终态的状态分别为终态={3,4,5,6},非终态={0,1,2}

对于非终态{0,1,2}:

将{0,1,2}分别输入a,即{0,1,2}a,通过状态转换矩阵可知,{0,1,2}a={1,3},{1,3}对于{0,1,2}而言,不是包含关系,所以

将得到1的状态和得到3的状态分开:

{0,2}-->{1},{1}--->{3}

再对{0,2}输入b的状态:

{0,2}b--->{2,4},{2,4}不包含在{0,2}中,所以{0}--->{2},{2}---->{4}

 对于终态{3,4,5,6}:

{3,4,5,6}a={3,6},包含关系

{3,4,5,6}b={4,5},包含关系

对于非终态有{0}{1}{2}状态,对于终态有{3,4,5,6}状态,将他视为状态{3},那么

这里还是根据状态转换矩阵画,只是看到{3,4,5,6}都指向状态{3}

3.DFA和NFA的区别 

NFA是不确定的有穷自动机,DFA是确定的有穷自动机

DFA与NFA的区别在于,NFA的状态转换过程中可以有空串,如下图即为NFA:

这就导致了一个问题:开始之后,在给出字符a或b之前,我们能够确定当前是处于1状态还是2状态吗?很显然,我们是无法确定的,因此才被称为不确定的有穷自动机,因为空串的存在,我们无法确定当前的具体状态是什么。

所以NFA的不确定表现我们可以概括为:1.多值映射        2.带空转移

所以我们要将NFA转换为DFA

相关文章:

由正规表达式构造DFA,以及DFA的相关化简

目录 1.由正规式到DFA 首先讲如何从正规式到NFA 如何从NFA到DFA 2.DFA的化简 3.DFA和NFA的区别 1.由正规式到DFA 正规式--->NFA---->DFA 首先讲如何从正规式到NFA 转换规则: 例题1:这里圆圈里面的命名是随意的,只要能区别开就可以了 如何…...

模式识别与机器学习(九):Adaboost

1.原理 AdaBoost是Adaptive Boosting(自适应增强)的缩写,它的自适应在于:被前一个基本分类器误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在…...

【JAVA】分布式链路追踪技术概论

目录 1.概述 2.基于日志的实现 2.1.实现思想 2.2.sleuth 2.2.可视化 3.基于agent的实现 4.联系作者 1.概述 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题:…...

ZooKeeper 使用介绍和原理详解

目录 1. 介绍 重要性 应用场景 2. ZooKeeper 架构 服务角色 数据模型 工作原理 3. 安装和配置 下载 ZooKeeper 安装和配置 启动 ZooKeeper 验证和管理 停止和关闭 4. ZooKeeper 数据模型 数据结构和层次命名空间: 节点类型和 Watcher 机制&#xff…...

模式识别与机器学习(八):决策树

1.原理 决策树(Decision Tree),它是一种以树形数据结构来展示决策规则和分类结果的模型,作为一种归纳学习算法,其重点是将看似无序、杂乱的已知数据,通过某种技术手段将它们转化成可以预测未知数据的树状模…...

Pinely Round 3 (Div. 1 + Div. 2)(A~D)(有意思的题)

A - Distinct Buttons 题意: 思路:模拟从(0,0)到每个位置需要哪些操作,如果总共需要4种操作就输出NO。 // Problem: A. Distinct Buttons // Contest: Codeforces - Pinely Round 3 (Div. 1 Div. 2) // URL: https…...

在Linux下探索MinIO存储服务如何远程上传文件

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 创建Buckets和Access Keys二. Linux 安装Cpolar三. 创建连接MinIO服务公网地…...

持续集成交付CICD:Linux 部署 Jira 9.12.1

目录 一、实验 1.环境 2.K8S master节点部署Jira 3.Jira 初始化设置 4.Jira 使用 一、实验 1.环境 (1)主机 表1 主机 主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 jenkins slave (从节点) jira9.12.1…...

Linux命令-查看内存、GC情况及jmap 用法

查看进程占用内存、CPU使用情况 1、查看进程 #jps 查看所有java进程 #top 查看cpu占用高进程 输入m :根据内存排序 topMem: 16333644k total, 9472968k used, 6860676k free, 165616k buffers Swap: 0k total, 0k used, 0k free, 6…...

nginx安装letsencrypt证书

1.安装推荐安装letsencrypt证书的客户端工具 官方推荐通过cerbot客户端安装letsencrypt 官方推荐使用snap客户端安装cerbot客户端 apt install snapd snap install --classic certbot 建立certbot软链接:ln -s /snap/bin/certbot /usr/bin/certbot 2.开始安装letse…...

docker笔记1-安装与基础命令

docker的用途: 可以把应用程序代码及运行依赖环境打包成镜像,作为交付介质,在各种环境部署。可以将镜像(image)启动成容器(container),并提供多容器的生命周期进行管理(…...

VSCode软件与SCL编程

原创 NingChao NCLib 博途工控人平时在哪里技术交流博途工控人社群 VSCode简称VSC,是Visual studio code的缩写,是由微软开发的跨平台的轻量级编辑器,支持几乎所有主流的开发语言的语法高亮、代码智能补全、插件扩展、代码对比等&#xff0c…...

Opencv中的滤波器

一副图像通过滤波器得到另一张图像,其中滤波器又称为卷积核,滤波的过程称之为卷积。 这就是一个卷积的过程,通过一个卷积核得到另一张图片,明显发现新的到的图片边缘部分更加清晰了(锐化)。 上图就是一个卷…...

<JavaEE> 基于 TCP 的 Socket 通信模型

目录 一、认识相关API 1)ServerSocket 2)Socket 二、TCP字节流套接字通信模型概述 三、回显客户端-服务器 1)服务器代码 2)客户端代码 一、认识相关API 1)ServerSocket ServerSocket 常用构造方法ServerSocke…...

[THUPC 2024 初赛] 二进制 (树状数组单点删除+单点查询)(双堆模拟set)

题解 题目本身不难想 首先注意到所有查询的序列长度都是小于logn级别的 我们可以枚举序列长度len,然后用类似滑动窗口的方法,一次性预处理出每种字串的所有出现位置,也就是开N个set去维护所有的位置。预处理会进行O(logn)轮,每…...

机器学习算法(11)——集成技术(Boosting——梯度提升)

一、说明 在在这篇文章中,我们学习了另一种称为梯度增强的集成技术。这是我在机器学习算法集成技术文章系列中与bagging一起介绍的一种增强技术。我还讨论了随机森林和 AdaBoost 算法。但在这里我们讨论的是梯度提升,在我们深入研究梯度提升之前&#xf…...

使用GBASE南大通用负载均衡连接池

若要使用负载均衡连接池功能,需要在连接串中配置相关的关键字。有关更详细的关键字信息在 GBASE南大通用 连接参数表‛中介绍。假设存在如下场景:  现有集群中存在 4 个节点: 192.168.9.173, 192.168.9.174, 192.168.9.175, 192.168.9.17…...

Flink 数据序列化

为 Flink 量身定制的序列化框架 大家都知道现在大数据生态非常火,大多数技术组件都是运行在JVM上的,Flink也是运行在JVM上,基于JVM的数据分析引擎都需要将大量的数据存储在内存中,这就不得不面临JVM的一些问题,比如Ja…...

【并发设计模式】聊聊两阶段终止模式如何优雅终止线程

在软件设计中,抽象出了23种设计模式,用以解决对象的创建、组合、使用三种场景。在并发编程中,针对线程的操作,也抽象出对应的并发设计模式。 两阶段终止模式- 优雅停止线程避免共享的设计模式- 只读、Copy-on-write、Thread-Spec…...

Java实现非对称加密【详解】

Java实现非对称加密 1. 简介2. 非对称加密算法--DH(密钥交换)3. 非对称加密算法--RSA非对称加密算法--EIGamal5. 总结6 案例6.1 案例16.2 案例2 1. 简介 公开密钥密码学(英语:Public-key cryptography)也称非对称式密…...

大语言模型记忆增强框架:LightMem原理、实现与工程实践

1. 项目概述:当大模型遇上“记忆”瓶颈最近在折腾大语言模型(LLM)应用开发的朋友,估计都遇到过同一个头疼的问题:模型记不住事儿。你精心设计了一个对话系统,希望它能记住用户的历史偏好,比如“…...

ElevenLabs老年语音情感衰减难题破解(附可复用的Prosody增强JSON Schema与实测MOS提升2.1分)

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs老年男性语音情感衰减现象的本质剖析 ElevenLabs 的老年男性语音模型(如 “Antoni” 或 “Josh”)在高语速、长句或情绪密集场景下,常出现语调扁平化、微停…...

知识竞赛代表队分组方法详解

🎲 知识竞赛代表队分组方法详解公平 均衡 策略 让每一支队伍都在合适的起点🎯 引言知识竞赛中,代表队的合理分组是赛事公平与精彩的基础。无论是学校比赛、企业活动还是大型公开赛,组织者都需要根据队伍数量和赛制选择合适的分…...

别再只用EC11调音量了!用STM32做个旋转编码器计数器(OLED显示,附防抖代码)

解锁EC11旋转编码器的计数潜能:STM32实战指南与防抖优化 旋转编码器在电子项目中常被简化为音量调节工具,但其真正的价值远不止于此。EC11作为一款经济高效的旋转编码器,能够提供精确的数字脉冲信号,非常适合需要精准位置控制或速…...

使用 Taotoken CLI 工具一键配置多开发环境与团队协作密钥

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用 Taotoken CLI 工具一键配置多开发环境与团队协作密钥 在团队协作开发中,统一大模型 API 的接入配置是一项基础但繁…...

数据结构第6章树和二叉树:课后习题全解析(选择题+填空题+综合题+算法设计题)

第6章 树和二叉树 课后习题一、单项选择题1. 一棵有 n 个结点,采用链式存储的二叉树中,共有( A )个指针域为空。A. n1 B. n C. n−1 D. n−2解析: 链式存储二叉树中,每个结点有 2 个指针域(左孩…...

AD21编译报错“contains floating input pins”?别慌,可能是你的元件库电气类型没设对

AD21编译报错“contains floating input pins”深度解析与实战解决方案 当你满怀信心地在AD21中完成PCB设计,点击编译按钮时,突然跳出的"contains floating input pins"报错就像一盆冷水浇下来。这个看似简单的错误提示背后,隐藏着…...

如何用AEUX免费实现设计到动画的无缝转换:完整指南

如何用AEUX免费实现设计到动画的无缝转换:完整指南 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX AEUX是一款免费开源的动效设计工具,它能让你从Figma或Sketch直…...

FreeRTOS和RT-Thread的内存管理怎么选?从pvPortMalloc到rt_malloc的配置详解

FreeRTOS与RT-Thread内存管理实战:从算法原理到工程配置 在嵌入式开发中,内存管理往往是决定系统稳定性的关键因素。当项目从裸机迁移到RTOS环境时,开发者会面临一个现实选择:继续使用标准C库的malloc/free,还是转向RT…...

自动驾驶系统商业化策略:硬件与软件协同设计解析

1. 自动驾驶系统的商业策略框架解析自动驾驶系统(Autonomous Driving System, ADS)作为智能交通领域的核心技术,其商业化落地需要硬件(SSH)与软件策略的协同设计。从技术架构来看,ADS由感知层、决策层和执行…...