考
虑
下
面
的
上
下
文
无
关
文
法
:
考虑下面的上下文无关文法:
考虑下面的上下文无关文法:
S
→
S
S
∗
∣
S
S
+
∣
a
S → SS* \; | \; SS+ \; | \; a
S→SS∗∣SS+∣a
(
1
)
.
表
明
通
过
此
文
法
如
何
生
成
串
a
a
+
a
∗
,
并
为
该
串
构
造
语
法
树
(1). 表明通过此文法如何生成串aa + a*,并为该串构造语法树
(1).表明通过此文法如何生成串aa+a∗,并为该串构造语法树
(
2
)
.
该
文
法
生
成
的
语
言
是
什
么
?
(2). 该文法生成的语言是什么?
(2).该文法生成的语言是什么?
解
:
解:
解:
(
1
)
.
S
⇒
S
S
∗
⇒
S
a
∗
⇒
S
S
+
a
∗
⇒
S
a
+
a
∗
⇒
a
a
+
a
∗
\qquad(1). \;\; S ⇒ SS* ⇒ Sa* ⇒ SS+a* ⇒ Sa+a* ⇒ aa+a*
(1).S⇒SS∗⇒Sa∗⇒SS+a∗⇒Sa+a∗⇒aa+a∗
可
为
该
推
导
序
列
构
造
语
法
树
如
下
:
\qquad\qquad 可为该推导序列构造语法树如下:
可为该推导序列构造语法树如下:
(
2
)
.
\qquad(2). \;\;
(2).
由
规
则
{
S
→
a
S
→
S
S
∗
∣
S
S
+
可
知
,
一
个
串
可
以
由
两
个
串
及
一
个
紧
跟
其
后
的
运
算
符
{
+
∗
}
组
成
由规则\begin{cases} S → a \\ S → SS* \; | \; SS+ \end{cases}可知,一个串可以由两个串及一个紧跟其后的运算符\{+ \quad *\}组成
由规则{S→aS→SS∗∣SS+可知,一个串可以由两个串及一个紧跟其后的运算符{+∗}组成
这
个
语
言
显
然
定
义
了
字
符
a
在
运
算
集
{
+
∗
}
上
的
逆
波
兰
式
\qquad\qquad 这个语言显然定义了字符a在运算集\{+ \quad * \}上的逆波兰式
这个语言显然定义了字符a在运算集{+∗}上的逆波兰式
下 面 附 上 咱班学委 ‾ 苦 思 一 天 所 想 到 逆 波 兰 式 的 数 学 表 达 式 , 以 及 老 师 的 理 解 思 路 \qquad\qquad 下面附上\underline{\textbf{咱班学委}}苦思一天所想到逆波兰式的数学表达式,以及老师的理解思路 下面附上咱班学委苦思一天所想到逆波兰式的数学表达式,以及老师的理解思路
数学表达式
\qquad\qquad \textbf{数学表达式}
数学表达式
{
a
w
1
w
2
⋯
w
k
∣
w
i
=
a
A
i
(
+
∣
∗
)
B
i
,
A
i
,
B
i
,
k
∈
N
,
其
中
∑
i
=
1
k
A
i
=
∑
i
=
1
k
B
i
,
且
∀
j
≤
k
有
∑
i
=
1
j
A
i
≥
∑
i
=
1
j
B
i
}
\qquad\qquad\qquad\qquad \begin{aligned} \{ \; a w_1 w_2 \cdots w_k \; | \; & w_i = a^{A_i} (+ \; | \; *)^{B_i}, \; A_i, B_i, k ∈ N, \\ & 其中 \sum\limits_{i=1}^{k}A_i = \sum\limits_{i=1}^{k}B_i, \\ & 且 \; \forall \; j \le k \;有 \sum\limits_{i=1}^{j}A_i \ge \sum\limits_{i=1}^{j}B_i \; \} \end{aligned}
{aw1w2⋯wk∣wi=aAi(+∣∗)Bi,Ai,Bi,k∈N,其中i=1∑kAi=i=1∑kBi,且∀j≤k有i=1∑jAi≥i=1∑jBi}
理解思路
\qquad\qquad \textbf{理解思路}
理解思路
做
出
状
态
转
换
图
如
下
:
\qquad\qquad\qquad\qquad 做出状态转换图如下:
做出状态转换图如下:
\qquad\qquad\qquad\qquad
根
据
这
个
状
态
转
换
图
构
造
出
的
自
动
机
其
实
是
一
个
无
限
状
态
自
动
机
\qquad\qquad\qquad\qquad 根据这个状态转换图构造出的自动机其实是一个无限状态自动机
根据这个状态转换图构造出的自动机其实是一个无限状态自动机
从
这
个
状
态
转
换
图
来
看
\qquad\qquad\qquad\qquad 从这个状态转换图来看
从这个状态转换图来看
①
S
到
Z
的
第
一
个
状
态
转
换
,
需
要
1
次
a
\qquad\qquad\qquad\qquad\qquad ① \; S到Z的第一个状态转换,需要1次a
①S到Z的第一个状态转换,需要1次a
②
Z
到
A
、
B
、
C
等
状
态
,
可
以
经
过
若
干
组
【
连
续
的
a
和
连
续
的
(
+
∣
∗
)
】
\qquad\qquad\qquad\qquad\qquad ② \; Z到A、B、C等状态,可以经过若干组【连续的a和连续的(+ \; | \; *)】
②Z到A、B、C等状态,可以经过若干组【连续的a和连续的(+∣∗)】
③
Z
到
A
、
B
、
C
等
状
态
,
需
要
的
a
的
总
次
数
必
然
比
需
要
的
(
+
∣
∗
)
的
总
次
数
多
\qquad\qquad\qquad\qquad\qquad ③ \; Z到A、B、C等状态,需要的a的总次数必然比需要的(+ \; | \; *)的总次数多
③Z到A、B、C等状态,需要的a的总次数必然比需要的(+∣∗)的总次数多
④
Z
经
过
若
干
次
回
到
Z
终
态
,
需
要
的
a
的
次
数
必
然
等
于
需
要
的
(
+
∣
∗
)
\qquad\qquad\qquad\qquad\qquad ④ \; Z经过若干次回到Z终态,需要的a的次数必然等于需要的(+ \; | \; *)
④Z经过若干次回到Z终态,需要的a的次数必然等于需要的(+∣∗)
那
么
\qquad\qquad\qquad\qquad 那么
那么
根
据
①
②
,
可
以
知
道
表
达
式
的
形
式
为
a
w
1
w
2
⋯
w
k
,
w
i
=
a
A
i
(
+
∣
∗
)
B
i
,
A
i
,
B
i
,
k
∈
N
\qquad\qquad\qquad\qquad\qquad 根据①②,可以知道表达式的形式为a w_1 w_2 \cdots w_k,w_i = a^{A_i} (+ \; | \; *)^{B_i},A_i, B_i, k ∈ N
根据①②,可以知道表达式的形式为aw1w2⋯wk,wi=aAi(+∣∗)Bi,Ai,Bi,k∈N
根
据
③
,
可
以
知
道
存
在
约
束
:
∀
j
≤
k
有
∑
i
=
1
j
A
i
≥
∑
i
=
1
j
B
i
\qquad\qquad\qquad\qquad\qquad 根据③,可以知道存在约束:\forall \; j \le k \;有 \sum\limits_{i=1}^{j}A_i \ge \sum\limits_{i=1}^{j}B_i
根据③,可以知道存在约束:∀j≤k有i=1∑jAi≥i=1∑jBi
根
据
④
,
可
以
知
道
存
在
约
束
:
∑
i
=
1
k
A
i
=
∑
i
=
1
k
B
i
\qquad\qquad\qquad\qquad\qquad 根据④,可以知道存在约束:\sum\limits_{i=1}^{k}A_i = \sum\limits_{i=1}^{k}B_i
根据④,可以知道存在约束:i=1∑kAi=i=1∑kBi
于 是 就 总 结 出 了 逆 波 兰 式 的 数 学 表 达 式 如 下 : \qquad\qquad\qquad\qquad 于是就总结出了逆波兰式的数学表达式如下: 于是就总结出了逆波兰式的数学表达式如下:
{ a w 1 w 2 ⋯ w k ∣ w i = a A i ( + ∣ ∗ ) B i , A i , B i , k ∈ N , 其 中 ∑ i = 1 k A i = ∑ i = 1 k B i , 且 ∀ j ≤ k 有 ∑ i = 1 j A i ≥ ∑ i = 1 j B i } \qquad\qquad\qquad\qquad\qquad\qquad \begin{aligned} \{ \; a w_1 w_2 \cdots w_k \; | \; & w_i = a^{A_i} (+ \; | \; *)^{B_i}, \; A_i, B_i, k ∈ N, \\ & 其中 \sum\limits_{i=1}^{k}A_i = \sum\limits_{i=1}^{k}B_i, \\ & 且 \; \forall \; j \le k \;有 \sum\limits_{i=1}^{j}A_i \ge \sum\limits_{i=1}^{j}B_i \; \} \end{aligned} {aw1w2⋯wk∣wi=aAi(+∣∗)Bi,Ai,Bi,k∈N,其中i=1∑kAi=i=1∑kBi,且∀j≤k有i=1∑jAi≥i=1∑jBi}