正规文法、正规表达式、有限自动机及其之间的转换(笔记)

news2024/11/27 23:57:15

The Equivalent Transforming among RG, RE and FA

正规文法

A Grammar G is a quadruple (四元组):G = (VN, VT, S, P )

Where,

  • VN is a finite set of nonterminals.
  • VT is a finite set of terminals.
  • S is the start symbol, S ∈ \in VN.
  • P is a finite set of productions (产生式).

Regular Grammar (RG) (正规文法):

α∈VN and β ∈VT∪VTVN

正规表达式

Regular Expression:

Regular expressions over ∑ are defined as :

  1. ε and ϕ \phi ϕ are RE’s, denoting the sets {ε} and Φ , respectively ;
  2. Any a ∈ \in ∑ , a is an RE, denoting the set { a };
  3. If a and b are RE’s, denoting the sets A and B respectively, then a b , a | b, and a* are RE’s, denoting the sets AB, AUB and A* respectively;
  4. Nothing is an RE unless it follows from 1 to 3 finite times.

有限自动机

确定的有限自动机

Deterministic Finite Automata:

A Deterministic Finite Automaton (DFA) is a quintuple (五元组)

M = (S, ∑ , f, s0 , Z),

where

  • S is a finite set of states;
  • ∑ is the set of input symbols;
  • f : S×∑ →S, the transition function;
  • s0 ∈ \in S, the initial state;
  • Z ⊆ \subseteq S, the set of final states.

非确定有限自动机

Nondeterministic Finite Automata:

An Nondeterministic Finite Automata (NFA) is also a quintuple

M = ( S, ∑ , f, s0 , Z),

where:

  • S is a finite set of states;
  • ∑ is the set of input symbols;
  • f : S×∑* →ρ(S), the transition function;
  • s0 ∈ \in S, the initial state;
  • Z ⊆ \subseteq S, the set of final states.

Difference between DFA & NFA

The definitions of transition functions of DFA and NFA are different:

​ DFA f: S×∑ →S

​ NFA f: S×∑* →ρ(S)

That means: a state of DFA has a unique next state and can not transit without input, but a state of NFA may have more than one next states and can transit without input.

正规表达式转换为正规文法

Transforming RE to RG

Let r be an RE on∑. Construct G = (VN, VT, S, P):

  1. Initialization: VT=∑; P = {S → r}; VN ={S};

  2. For any production in P, rewrite it as follows:

    ⑴ A → x*y => A → xA |y.

    ⑵ A→x | y => A → x | y;

    ⑶A → xy => A → xB B → y; VN = VN ∪{B};

    ⑷A→(x | y)B =>A → xB | yB; VN = VN ∪{B};

    where x and y be RE’s, B be a new nonterminal.

  3. Repeat step 2 until each rule has one termianal.

样例

Transform a(a | d)* to RG

VT={a, b}; P = {S → a(a | d)* }; VN ={S};

S → a(a | d)* => S → aA A → (a | d)*

A → (a | d)* => A → (a | d)A |ε

A → (a | d)A => A → aA | dA

Finally we get the regular grammar G is

({S, A}, {a, b}, S, {S→ aA A→ aA|dA|ε})

正规文法转换为正规表达式

Transforming RG to RE

  1. Transform RG to a group of equations by replacing → and | as = and +, respectively.
  2. For equations X = aY + a and Y = b, we replace Y by b, and get X = ab + a.
  3. If there is an equation X=rX + t, we have the solution X = r*t;
  4. Repeat step 2 and 3, until the solution S=r is got. Then r is the corresponding RE.

样例

Consider the grammar G:S → aS | aA A → bB B → aB | a

  • Transform the rules into a group of equations:

    S = aS + aA (1)

    A = bB (2)

    B = aB + a (3)

  • For equation 3 we have: B = a*a;

  • For equation 2 we have: A = ba*a;

  • For equation 1 we have: S = aS + aba*a;

  • Finally we have: S = a*aba*a;

正规文法转换为有限自动机

Transforming RG to FA

G = (VN, VT, S, P) is a right linear grammar, there is an FA M such that L(M) = L(G).

Let M = (Q, ∑, f, s0 , {Z}), where

∑= VT; Q = VN∪{Z}; Z ∉ \notin / VN; s0= S;

For ∀ \forall A→tB∈P, t∈VT∪{e}, A, B∈VN, then f(A, t) = B;

For ∀ \forall A→t∈P, A∈VN, t∈VT∪{ε}, then f(A, t) = Z.

样例

Given G=({A,B,C,D},{0,1},f,A,P),

P = {A → 0 | 0B | 1D B → 0D | 1C

​ C → 0 | 0B| 1D D → 0D | 1D }

  • Construct M = (Q,∑,f,A,{Z}):
  • Q={A,B,C,D,Z}, ∑ = {0, 1},
  • f(A, 0)=B, f(A, 0)=Z, f(A, 1)=D,
  • f(B, 0)=D, f(B, 1)=C,
  • f(C, 0)=B, f(C, 0)=Z, f(C, 1)=D,
  • f(D, 0)=D, f(D, 1)=D.

在这里插入图片描述

有限自动机转换为正规文法

Transforming FA to RG

M=(Q, ∑, f, s0 , F) is a DFA, there is a right linear grammar G such that L(M) = L(G).

Let G = (VN, VT, S, P), where

VT = ∑; VN = Q; S = s0;

For ∀ \forall t∈VT, ∀ \forall A, B∈VN, if f(A, t) = B

then If B ∈F then A →tB | t∈P

​ else A→tB∈P;

样例

Given M=({0,1},{A,B,C,D},f,A,{B})

  • Construc G = (VN,VT, A, P),

  • VN = {A, B, C, D},

  • VT = {0, 1},

  • P = { A → 0B | 0 | 1D

    ​ B → 0D | 1C

    ​ C → 0B | 0 | 1D D → 0D | 1D }

正规表达式转换为有限自动机

Transforming RE to FA

Given an RE r, there is an FA M, such that L(M) = L®.

  • Basis: |r| = 1.
  • We prove it by induction on the length of r.

在这里插入图片描述

Assume that for any RE r1 and r2, if |r1| < k and |r2| < k, they have their NFA M1 and M2.

  • For any RE r, |r| = k, we have:

在这里插入图片描述

Initialization: set up two state X and Y, such as:

在这里插入图片描述

Repeat dividing the RE r on the arcs according to the following rules (1) to (3):

在这里插入图片描述

Until each arc labeled by a symbol.

样例

在这里插入图片描述

有限自动机转换为正规表达式

Transforming FA to RE

Initialization: Add two state : X , Y. X is the unique initial state and Y is the unique final state

在这里插入图片描述

Repeat linking the RE r on the arcs according to the following rules (1) to (3):

在这里插入图片描述

在这里插入图片描述

样例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.Net 使用OpenAI开源语音识别模型Whisper

.Net 使用OpenAI开源语音识别模型 Whisper 前言 Open AI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的 Whisper 神经网络&#xff0c;且它亦支持其它98种语言的自动语音辨识。 Whisper系统所提供的自动语音辨识&#xff08;Automatic Speech Recognition&…

python基础知识(四):input语句、if语句和pass语句

目录 1. input语句2. 强制转换3. if语句4. pass语句 1. input语句 input语句是程序获取从键盘输入的内容&#xff0c;会把输入的内容自动转换成字符串。 使用方法: 变量名 input(“提示语”) 例如 language input("你最爱什么语言?") print(language)这两行代码…

RK3588平台开发系列讲解(项目篇)常见模型结构

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、DNN二、CNN三、RNN沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)…

Vue中组件的几个重要点

1 单词命名组件名称 vue推荐的命名组件名称有以下几种&#xff1a; 首先看下组件有几个单词构成 单个单词 如果只有一个单词&#xff0c;那么建议全部小写&#xff0c;用的时候也是全部小写的&#xff0c;或者首字母大写 有人喜欢哪怕只有一个单词也首字母大写&#xff0c;…

读论文-GPRAR

论文&#xff1a;GPRAR: Graph Convolutional Network based Pose Reconstruction and Action Recognition for Human Trajectory Prediction&#xff08;2016&#xff09; 摘要 高精度的预测对于自动驾驶等各种应用至关重要。现有的预测模型在现实世界中很容易出错&#xff0…

linux【网络编程】之HTTP协议

一文了解应用层协议&#xff1a;HTTP协议 一、HTTP协议二、URL2.1 urlencode和urldecode 三、HTTP协议格式3.1 HTTP请求方法3.2 HTTP状态码3.3 HTTP响应报头 四、结合代码理解HTTP通信流程五、长连接六、http会话保持七、postman和fiddler 一、HTTP协议 在上篇文章中我们模拟了…

YOLOV5 + PYQT5双目测距

YOLOV5 PYQT5双目测距 1. 测距源码2. 测距原理3. PYQT环境配置4. 实验结果 1. 测距源码 详见文章 YOLOV5 双目测距&#xff08;python&#xff09; 2. 测距原理 如果想了解双目测距原理&#xff0c;请移步该文章 双目三维测距&#xff08;python&#xff09; 3. PYQT环境…

大数据需要学习哪些内容

Python 已成利器 在大数据领域中大放异彩 Python&#xff0c;成为职场人追求效率的利器&#xff0c;因为不管什么工作&#xff0c;数据都会是工作的一部分&#xff0c;有数据的地方&#xff0c;就有Python&#xff01; 我们知道&#xff0c;随着互联网的发展&#xff0c;线上…

数睿通2.0数据血缘、标准、质量功能更新发布

文章目录 引言数据血缘数据标准数据质量结语 引言 这段时间工作繁忙&#xff0c;琐事较多&#xff0c;加上二阳的冲击&#xff0c;导致数睿通 2.0 的更新进度缓慢&#xff0c;深表歉意&#xff0c;还望大家可以理解。本次更新主要包含数据治理模块的血缘&#xff0c;标准&…

阿里云的云安全审计可以用于哪些安全事件与合规审核?

阿里云的云安全审计可以用于哪些安全事件与合规审核&#xff1f; [本文由阿里云代理商[聚搜云www.4526.cn]撰写] 随着互联网的高速发展&#xff0c;各种互联网应用和服务也在不断涌现。但在运营过程中&#xff0c;安全事件和合规审核问题也不断出现。如何及时、准确地识别并解决…

[Nacos] Nacos Server之间的操作 (十一)

文章目录 1.ServiceManager#init()1.1 定时发送任务1.2 定时更新状态任务1.3 定时清除空service任务 1.ServiceManager#init() PostConstructpublic void init() {// 启动了一个定时任务&#xff1a;每60s当前Server会向其它Nacos Server发送一次本机注册表// 本机注册表是以各…

水声声波频率如何划分?水声功率放大器可将频率放大到20MHz吗?

水声声波频率如何划分&#xff1f;水声功率放大器可将频率放大到20MHz吗&#xff1f; 现如今我们可以在地球任意地区实现通信&#xff0c;是因为电磁波的作用。但是我们都知道海洋占了全球十分之七面积&#xff0c;电磁波在水下衰减速度太快&#xff0c;无法做到远距离传输&am…

linux内核内存管理slab

一、概述 linux内存管理核心是伙伴系统&#xff0c;slab&#xff0c;slub&#xff0c;slob是基于伙伴系统之上提供api&#xff0c;用于内核内存分配释放管理&#xff0c;适用于小内存&#xff08;小于&#xff11;页&#xff09;分配与释放&#xff0c;当然大于&#xff11;页…

Ext JS嵌套分组表格的实现

这里的嵌套分组表格指的是这样一种表格 表格的每一行可以展开下一层的Grid展开的嵌套表格是一个分组的表格显示的效果如下图: 这种显示的方式可以显示 3个层级的数据,比如这里的国家 、 将军等级、将军信息。 如果最外层再使用分组的表格, 则可以显示 4个层级的信息, 这种…

Ethercat学习-从站FOE固件更新(QT上位机)

文章目录 简介1、源码简介1、ec_FOEread2、ec_FOEwrite3、ec_FOEdefinehook 2、程序思路3、修改实现1、ecx_FOEwrite_gxf2、ecx_FOEread_gxf 4、其他5、结果6、源码连接 简介 FOE协议与下位机程序实现过程之前文章有提到&#xff0c;这里不做介绍了。这里主要介绍1、QT上位机通…

Java开发 - 让你少走弯路的Redis的主从复制

前言 大家举举手&#xff0c;让我看看还有多少人不会配置Redis的主从&#xff0c;主主这些的。故事发生在前段时间&#xff0c;小伙伴看到了博主的MySQL主从&#xff0c;就问博主有没有Redis的主从配置教程&#xff0c;本以为网上到处都是教程的博主打开网页一搜&#xff0c;好…

SpringCloud:分布式缓存之Redis主从

1.搭建主从架构 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写分离。 2.主从数据同步原理 2.1.全量同步 主从第一次建立连接时&#xff0c;会执行全量同步&#xff0c;将master节点的所有数据…

VSCode+Git+TortoiseGit+Gitee

目录 一、VSCode 1、VSCode(visual studio code)下载安装 2、VSCode使用技巧和经验 2.1、设置字体: 2.2、快捷方式 2.3、安装插件 二、Git下载安装 三、TortoiseGit 1、TortoiseGit 简介 2、下载安装Git及Tortoisegit 3、Tortoisegit拉取gitee仓库到本地 4、Git拉取…

Linux 终端安装并使用tmux管理远程会话 tmux使用教程

文章目录 1 Tmux简介1.1 会话与窗口1.2 tmux功能 2 tmux安装2.1 源码安装2.2 命令行安装 3 基本用法&#xff08;命令行&#xff09;3.1 创建窗口3.2 分离会话 切换会话3.3 连接会话3.4 关闭会话并杀死进行对会话进行重命名 4 Tmux 的快捷键5 窗口操作与窗格操作参考 1 Tmux简介…

Ctfshow基础二刷(1)

前言&#xff1a; 前两天的信安给我整emo了&#xff0c;头一回打正经比赛&#xff0c;结果发现基础太差&#xff0c;代码审计烂得一踏糊涂。 寻思寻思&#xff0c;从头整一遍基础。又买了安恒出的新书。争取7号去吉林打省队选拔不给导儿丢脸吧呜呜 文件包含 web78: 这题一…