希赛考试网
首页 > 软考 > 软件设计师

构造下述文法G[S]的自动机

希赛网 2024-01-13 09:56:01

在计算机科学中,自动机是一种可以有限状态转换的计算模型。自动机是指一种接受或拒绝输入的数学模型。它可以被用来描述许多现实生活中的实体(如在自动化、语言设计、计算等方面)。文法G[S]的自动机也是一种自动机,它通过一个文法生成一个自动机。

文法G[S]是形如以下的形式:

S → aB | aA

A → bB | aS

B → bS | ε

其中,S, A, B 都是非终止符号;a, b 是终止符号,ε 表示空符号。

aB、aA表示S产生的第一种情况,bB、aS表示S产生的第二种情况,bS表示S产生的第三种情况。

下面分别从文法G[S]和它对应的自动机的角度入手来分析它。

从文法G[S]角度分析

首先,需要了解几个术语:

1. 非终点符号(非终止符号):也就是上面提到的S, A, B等符号。非终止符号可以表示一个或多个符号串。

2. 终点符号(终止符号):由一个字符组成,例如:a、b等。

3. 产生式(规则):是形如A -> α的形式,在其中,A是非终止符号,α是由非终止符和/或终止符组成的符号串。

以下是对文法G[S]的分析:

文法G[S]中的产生式是怎么定义的?

Just now,已经看到文法G[S]的产生式,下面解释一下产生式定义的意思。

1. 第一个产生式:S → aB | aA

“|”是用来表示或的符号,aB和aA都是S能够生成的结果。需要注意的是,这两个产生式之间是“或”的关系,即在自动机中它们的状态时互斥的。

2. 第二个产生式:A → bB | aS

如果在文法中的输入是一个A,那么在B的前面加上一个b或在输入的S后面加上a都是可以得到该串的。这和S的产生式是相似的。

3. 第三个产生式:B → bS | ε

这里的“ε”表示空串,如果在该文法中输入B,它有两种转换的可能:添加一个b,在S的前面添加一个空串——这会使它回到对于S的那个选择。如果遇到了S,这产生了另一个空串或者b ——这种情况即是输入了字符串。

接下来需要将该文法转化为自动机。

从自动机角度分析

自动机包含状态和转换。状态是指某个时刻机器所处的情况,它具有继承特性。转移指某个状态下,如何根据输入字符进行状态转移的规则。当自动机经过某些状态后,会认为自己已经完成了任务。下面,我们就来看看下述文法G[S]的自动机实现方法。

以下是该文法对应的自动机:

该自动机有四个状态 S, A, B, error。其中error表示读入的语句不合法或者无法转化的情况。S是该自动机的起始状态,而A和B表示S可以转移到的状态。这些状态和文法G [S]中的非终止符号一一对应。就此而言,自动机的状态是由文法G[S]的属性决定的。

现在来看看自动机的转移。

1. S -> aA

该转换表示S将单一的输入a转化为状态A。

2. S -> aB

该转换也是表示S将单一的输入a转化为状态B。但是和第一种转换不同的是,这个转移不回到S状态。

3. A -> bB

在状态A输入b,将会转化为状态B。

4. A -> aS

在状态A输入a,将会转化为状态S。

5. B -> bS

在状态B输入b,将会转化为状态S。

6. B -> ε

这里的“ε”表示空串,意味着一个空串输入会将状态B回到状态S

在该自动机中,当自动机运行到终止状态S时,它会认为自己已经接受了该输入。如果自动机在任何时候进入了错误状态error中,它将终止运行。

扫码领取最新备考资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件