形式化建模与分析复习归纳
可能存在部分错误,需读者自行判断。
文章目录
简答题
1. 串行系统的程序正确性定义
Q表示一段串行程序,x是Q的输入,z是Q的输出,且Q合法的输入要求由
φ
(
x
)
φ(x)
φ(x)来约束,合法的输出由
ψ
(
x
,
z
)
ψ(x,z)
ψ(x,z)来约束,则称Q具有:
部分正确性:
φ
(
x
)
∧
Q
终止
→
ψ
(
x
,
z
)
\varphi (x) \land Q_{终止} \rightarrow \psi(x,z)
φ(x)∧Q终止→ψ(x,z)
终止性:
ψ
(
x
)
→
Q
终止
\psi(x) \rightarrow Q_{终止}
ψ(x)→Q终止
完全正确性:
φ
(
x
)
→
Q
终止
∧
ψ
(
x
,
z
)
\varphi(x) \rightarrow Q_{终止} \land \psi(x,z)
φ(x)→Q终止∧ψ(x,z)
2. 有限状态机的不足之处
- 状态数很多,组合、进行复合时,状态数会呈几何倍数增加,使得状态图规模非常庞大。
- 有限状态机模型在系统所处的每个状态上,在任何时刻最多执行一个操作。因此有限状态机只可以描述持续性接受输入,描述并发能力弱。
- 状态数是有限的,只能描述有限状态,不能描述无限状态的系统。
- 状态之间不存在结构信息,因此不能描述系统的结构特性。
3. Petri 网模型上迁移间的关系、几种特殊Petri 网对各类关系的描述能力。
-
迁移间的关系:
-
顺序关系:$M[t_1>M’,且M’[t_2>, \lnot M[t_2> $
-
并行/并发关系:
M [ t 1 > M ′ , 且 M ′ [ t 2 > M ′ ′ ′ M[t_1>M',且M'[t_2>M''' M[t1>M′,且M′[t2>M′′′
且
M [ t 2 > M ′ ′ , 且 M ′ ′ [ t 1 > M ′ ′ ′ M[t_2>M'',且M''[t_1>M''' M[t2>M′′,且M′′[t1>M′′′
- 冲突关系:
M [ t 1 > M ′ , 且 M [ t 2 > M ′ ′ M[t_1>M',且M[t_2>M'' M[t1>M′,且M[t2>M′′
但
¬ M ′ [ t 2 > , 且 M ′ ′ [ t 1 > \lnot M'[t_2>,且M''[t_1> ¬M′[t2>,且M′′[t1>
- 混惑关系:
当前M=(1,1,0,1,0,0),且同一时刻 t 1 , t 3 t_1,t_3 t1,t3都可发生。
1.若 t 3 t_3 t3先引发,则 t 1 , t 2 t_1,t_2 t1,t2会存在混惑。
2.若 t 1 t_1 t1先引发,再引发 t 3 t_3 t3,则不会存在混惑。
以上两种情况初态相同,终态相同,但一种有冲突发生,一种没有。
∴ \therefore ∴ 仅从初态和终态无法观察出是否发生过冲突的情况,成为混惑。
-
-
特殊Petri 网对各类关系的描述能力:
- 状态机: 顺序,并发,冲突,不混惑
- 标记图: 顺序,并发,不冲突
- 自由选择网: 顺序,并发,冲突,不混惑
- 扩展的自由选择网: 顺序,并发,冲突,混惑(对称混惑)
- 非对称的自由选择网: 顺序,并发,冲突,混惑(非对称混惑)
4. Statecharts 中状态节点的类型
S t a t e c h a r t s 的状态 { 基态 / 原子态 / 简单状态 层次态 / “或”状态 并发态 / “与”状态 Statecharts的状态 \begin{cases} 基态/原子态/简单状态\\ \\ 层次态/“或”状态\\ \\ 并发态/“与”状态 \end{cases} Statecharts的状态⎩ ⎨ ⎧基态/原子态/简单状态层次态/“或”状态并发态/“与”状态
分析证明题
5. 命题逻辑的演绎证明法:
- 直接证明法:
运用推理常用的规则,直接从前提推导出结论 - 间接证明法
给定前提 𝐺 1 , 𝐺 2 , ⋯ , 𝐺 𝑛 {𝐺_1,𝐺_2,⋯,𝐺_𝑛} G1,G2,⋯,Gn,则 ( 𝐺 1 ∧ 𝐺 2 ∧ ⋯ ∧ 𝐺 𝑛 ) → 𝑆 (𝐺_1∧𝐺_2∧⋯∧𝐺_𝑛)→𝑆 (G1∧G2∧⋯∧Gn)→S为重言式当且仅当 ( 𝐺 1 ∧ 𝐺 2 ∧ ⋯ ∧ 𝐺 𝑛 ∧ ¬ 𝑆 ) (𝐺_1∧𝐺_2∧⋯∧𝐺_𝑛∧¬𝑆) (G1∧G2∧⋯∧Gn∧¬S)为矛盾式。
即将结论的反当作条件进行证明,若矛盾则成立。 - 归结推理法(子句归结法)
将题目条件转换为合取范式,将其中的析取式提取出来,与结论的反构成子句集合,之后利用子句集合不断证明,直至出现矛盾式。
- 例题:
P
→
(
Q
∨
R
)
,
¬
S
→
¬
Q
,
P
∧
¬
S
⊢
R
P \rightarrow (Q \lor R), \lnot S \rightarrow \lnot Q, P \land \lnot S \vdash R
P→(Q∨R),¬S→¬Q,P∧¬S⊢R
直接证明法:
间接证明法:
归结推理法(子句归结法):
- 例题:
-
( P ∨ Q ) ∧ ( P ∨ R ) ⊢ P ∨ ( Q ∨ R ) (P \lor Q) \land (P \lor R) \vdash P \lor (Q \lor R) (P∨Q)∧(P∨R)⊢P∨(Q∨R)
归结推理法:
-
P ∧ ( Q ↔ R ) ⊢ ( P ∧ Q ) ↔ ( P ∧ R ) P \land (Q \leftrightarrow R) \vdash (P \land Q) \leftrightarrow (P \land R) P∧(Q↔R)⊢(P∧Q)↔(P∧R)
直接证明法:
- 部分公式:
P Q P ↔ Q 0 0 1 0 1 0 1 0 0 1 1 1 \begin{array}{c|c|c} P & Q & P \leftrightarrow Q \\ \hline 0 &0 &1 \\ 0 &1 &0 \\ 1 &0 &0 \\ 1 &1 &1 \\ \end{array} P0011Q0101P↔Q1001
P Q P → Q 0 0 1 0 1 1 1 0 0 1 1 1 \begin{array}{c|c|c} P & Q & P \rightarrow Q \\ \hline 0 &0 &1 \\ 0 &1 &1 \\ 1 &0 &0 \\ 1 &1 &1 \\ \end{array} P0011Q0101P→Q1101
P ↔ Q ⇔ P → Q ∧ Q → P P \leftrightarrow Q \Leftrightarrow P \rightarrow Q \land Q \rightarrow P P↔Q⇔P→Q∧Q→P
P → Q ⇔ ¬ P ∨ Q P \rightarrow Q \Leftrightarrow \lnot P \lor Q P→Q⇔¬P∨Q
6. 谓词逻辑
-
文字描述转谓词逻辑描述
- 例题:所有哺乳动物都是脊椎动物,并非所有哺乳动物都是胎生动物,因此有些脊椎动物不是胎生的。
- 例题:所有哺乳动物都是脊椎动物,并非所有哺乳动物都是胎生动物,因此有些脊椎动物不是胎生的。
-
谓词逻辑证明
-
例题1: ⊢ ∃ X ⋅ ( P ( X ) → ∀ Y ⋅ P ( Y ) ) \vdash \exists X \cdot (P(X) \rightarrow \forall Y \cdot P(Y) ) ⊢∃X⋅(P(X)→∀Y⋅P(Y))
归结推理法:
-
例题2: P ( a , b ) ∧ ∀ X ⋅ ( ∃ Y ⋅ P ( Y , X ) ∨ P ( X , Y ) → P ( X , X ) ) ⊢ P ( a , a ) P(a,b) \land \forall X \cdot (\exists Y \cdot P(Y,X) \lor P(X,Y) \rightarrow P(X,X)) \vdash P(a,a) P(a,b)∧∀X⋅(∃Y⋅P(Y,X)∨P(X,Y)→P(X,X))⊢P(a,a)
直接证明法:
归结推理法:
- 例题3:
间接证明法:
-
7. Floyd 前后断言法
-
归纳断言法: 证明部分正确性。
-
建立断言:
P i ( X , Y ) P_i(X,Y) Pi(X,Y): i i i处的断言(程序的每个循环处)
φ ( X ) \varphi (X) φ(X):开始处断言
ψ ( X , Z ) \psi (X,Z) ψ(X,Z):结束处断言 -
建立检验条件:
R j ( X , Y ) R_j(X,Y) Rj(X,Y):通过通路 j j j的条件
r j ( X , Y ) r_j(X,Y) rj(X,Y):通过通路 j j j后变量组 Y Y Y的值- 设通路
j
j
j连接断点
i
i
i和
k
k
k,则检验条件为:
P i ( X , Y ) ∧ R j ( X , Y ) → P k ( X , r j ( X , Y ) ) P_i(X,Y) \land R_j(X,Y) \rightarrow P_k(X,r_j(X,Y)) Pi(X,Y)∧Rj(X,Y)→Pk(X,rj(X,Y)) - 如果通路
j
j
j的入口点为程序的开始处,则检验条件为:
φ ( X ) ∧ R j ( X , Y ) → P k ( X , r j ( X , Y ) ) \varphi (X) \land R_j(X,Y) \rightarrow P_k(X,r_j(X,Y)) φ(X)∧Rj(X,Y)→Pk(X,rj(X,Y)) - 如果通路
j
j
j的结束点为程序的结束处,则检验条件为:
P i ( X , Y ) ∧ R j ( X , Y ) → ψ ( X , Z ) P_i(X,Y) \land R_j(X,Y) \rightarrow \psi (X,Z) Pi(X,Y)∧Rj(X,Y)→ψ(X,Z)
- 设通路
j
j
j连接断点
i
i
i和
k
k
k,则检验条件为:
-
证明检验条件:
证明第2步中得到的所有检验条件。
- 例题1:
- 例题2:
利用归纳断言法证明其部分正确性
- 例题3:
-
-
良序集法: 证明终止性。
-
建断言:
为程序开始处及每个循环中设置断点,并为每个断点处建立断言,且循环处断言应为循环不变式。
q i ( X , Y ) q_i(X,Y) qi(X,Y): i i i处的断言(程序的每个循环处)
φ ( X ) \varphi (X) φ(X):开始处断言。 -
选取良序集 ( W , < ) (W,<) (W,<),并在断点处定义一个函数 f i ( X , Y ) f_i(X,Y) fi(X,Y)
-
证断言是良断言:
R j ( X , Y ) R_j(X,Y) Rj(X,Y):通过通路 j j j的条件
r j ( X , Y ) r_j(X,Y) rj(X,Y):通过通路 j j j后变量组 Y Y Y的值
对于每条从程序入口到断点 k k k的通路 j j j,有:
φ ( X ) ∧ R j ( X , Y ) → q k ( X , r j ( X , Y ) ) \varphi (X) \land R_j(X,Y) \rightarrow q_k(X,r_j(X,Y)) φ(X)∧Rj(X,Y)→qk(X,rj(X,Y))
对于每条从断点 i i i到断点 k k k的通路 j j j,有:
q i ( X , Y ) ∧ R j ( X , Y ) → q k ( X , r j ( X , Y ) ) q_i(X,Y) \land R_j(X,Y) \rightarrow q_k(X,r_j(X,Y)) qi(X,Y)∧Rj(X,Y)→qk(X,rj(X,Y)) -
证所定义函数为良函数:
即对于每个循环处断点 i i i都有:
q i ( X , Y ) → f i ( X , Y ) ∈ W q_i(X,Y) \rightarrow f_i(X,Y) \in W qi(X,Y)→fi(X,Y)∈W -
证每条通路上终止条件成立:
即对于每条断点 i i i出发并回到断点 i i i的通路 j j j,有:
q i ( X , Y ) ∧ R i ( X , Y ) → f i ( X , r i ( X , Y ) ) < f i ( X , Y ) q_i(X,Y) \land R_i(X,Y) \rightarrow f_i(X,r_i(X,Y)) \lt f_i(X,Y) qi(X,Y)∧Ri(X,Y)→fi(X,ri(X,Y))<fi(X,Y)
- 例题1:
利用良序集法证明其终止性
-
-
完全正确性: 同时满足部分正确性和终止性。
- 例题1:
- 例题1:
8. Hoare 公理化方法
证明程序部分正确性。
P
i
(
X
,
Y
)
P_i(X,Y)
Pi(X,Y):
i
i
i处的断言(程序的每个循环处)
φ
(
X
)
\varphi (X)
φ(X):开始处断言
ψ
(
X
,
Z
)
\psi (X,Z)
ψ(X,Z):结束处断言
程序Q的部分正确性可以表示为:
{
φ
(
X
)
}
Q
{
ψ
(
X
,
Z
)
}
\{ \varphi (X) \} Q \{ \psi (X,Z) \}
{φ(X)}Q{ψ(X,Z)}
-
赋值公理:
设执行赋值语句 Y : = g ( X , Y ) Y:=g(X,Y) Y:=g(X,Y) 满足:
{ P ( X , g ( X , Y ) ) } Y : = g ( X , Y ) { P ( X , Y ) } \{ P(X,g(X,Y)) \}Y:=g(X,Y) \{P(X,Y) \} {P(X,g(X,Y))}Y:=g(X,Y){P(X,Y)} -
顺序规则:
设执行语句序列 Q 1 ; Q 2 Q_1;Q_2 Q1;Q2 推理规则为:
{ P } Q 1 { S } , { S } Q 2 { R } { P } Q 1 ; Q 2 { R } \frac {\{ P\}Q_1\{ S\},\{ S\}Q_2\{ R\}} {\{ P\}Q_1;Q_2\{ R\}} {P}Q1;Q2{R}{P}Q1{S},{S}Q2{R} -
条件规则:
设执行条件语句 i f B t h e n Q 1 e l s e Q 2 if~B~then~Q_1~else~Q_2 if B then Q1 else Q2 推理规则为:
{ P ∧ B } Q 1 { R } , { P ∧ ¬ B } Q 2 { R } { P } i f B t h e n Q 1 e l s e Q 2 { R } \frac {\{ P \land B \}Q_1\{ R\},\{ P \land \lnot B\}Q_2\{ R\}} {\{ P\}if~B~then~Q_1~else~Q_2\{ R\}} {P}if B then Q1 else Q2{R}{P∧B}Q1{R},{P∧¬B}Q2{R} -
循环规则:
设执行循环语句 w h i l e B d o Q while~B~do~Q while B do Q 推理规则为:
{ P ∧ B } Q { P } { P } w h i l e B d o Q { P ∧ ¬ B } \frac {\{ P \land B\}Q\{ P\}} {\{ P\}while~B~do~Q\{ P \land \lnot B\}} {P}while B do Q{P∧¬B}{P∧B}Q{P} -
推断规则:
设执行程序段Q,推理规则为:
{ P } → { B } , { B } Q { R } { P } Q { R } \frac {\{ P\} \rightarrow \{ B\},\{ B\}Q\{ R\}} {\{ P\}Q\{ R\}} {P}Q{R}{P}→{B},{B}Q{R}
或 或 或
{ P } Q { B } , { B } → { R } { P } Q { R } \frac {\{ P\}Q\{ B\},\{ B\} \rightarrow \{ R\}} {\{ P\}Q\{ R\}} {P}Q{R}{P}Q{B},{B}→{R} -
证明形式:
-
自顶向下:
-
自底向上:
-
- 例题1:
自顶向下证明:
- 例题2:
自底向上证明:
- 例题3:
自底向上证明:
9. Dijstra 最弱前置谓词法
证明程序完全正确性。
w
p
(
Q
,
ψ
)
wp(Q,\psi)
wp(Q,ψ): 使程序
Q
Q
Q执行能够终止,且终止后
ψ
\psi
ψ成立的最弱的那个谓词公式。
w
p
(
Q
,
ψ
)
wp(Q,\psi)
wp(Q,ψ):
∀
P
(
X
)
,满足
P
(
X
)
→
Q
终止
∧
ψ
(
X
)
,都有
P
(
X
)
→
w
p
(
Q
,
ψ
)
\forall P(X),满足~ P(X) \rightarrow Q_{终止} \land \psi(X),都有~P(X)\rightarrow wp(Q, \psi)
∀P(X),满足 P(X)→Q终止∧ψ(X),都有 P(X)→wp(Q,ψ)
-
最弱前置法基本思想:
找到 w p ( Q , ψ ) ,若 φ ( X ) → w p ( Q , ψ ) ,则 φ ( X ) → Q 终止 ∧ ψ ( X , Z ) 找到wp(Q, \psi), 若\varphi(X) \rightarrow wp(Q, \psi), 则 \varphi (X) \rightarrow Q_{终止} \land \psi (X, Z) 找到wp(Q,ψ),若φ(X)→wp(Q,ψ),则φ(X)→Q终止∧ψ(X,Z) -
谓词交换函数 w p wp wp的性质:
- 异常排除定律:
对任何语句Q,恒有:
w p ( Q , f a l s e ) = f a l s e wp(Q,false)=false wp(Q,false)=false - 单调定律:
若 R 1 → R 2 R_1 \rightarrow R_2 R1→R2,则对任何语句Q,恒有:
w p ( Q , R 1 ) → w p ( Q , R 2 ) wp(Q,R_1) \rightarrow wp(Q,R_2) wp(Q,R1)→wp(Q,R2) - 与分布定律:
对任何语句 Q Q Q,以及任何后置条件 R 1 R_1 R1 和 R 2 R_2 R2,恒有:
w p ( Q , R 1 ) ∧ w p ( Q , R 2 ) = w p ( Q , R 1 ∧ R 2 ) wp(Q,R_1) \land wp(Q,R_2) = wp(Q,R_1 \land R_2) wp(Q,R1)∧wp(Q,R2)=wp(Q,R1∧R2) - 或分布定律:
对任何语句 Q Q Q,以及任何后置条件 R 1 R_1 R1 和 R 2 R_2 R2,恒有:
w p ( Q , R 1 ) ∨ w p ( Q , R 2 ) → w p ( Q , R 1 ∨ R 2 ) wp(Q,R_1) \lor wp(Q,R_2) \rightarrow wp(Q,R_1 \lor R_2) wp(Q,R1)∨wp(Q,R2)→wp(Q,R1∨R2)
- 异常排除定律:
-
基本语句成分的谓词变换函数:
-
简单赋值语句:
形如: x : = e x:=e x:=e
w p ( x : = e , R ) = R [ e / x ] wp(x:=e,R)=R[e/x] wp(x:=e,R)=R[e/x]
-
序列语句:
形如: S 1 ; S 2 ; ⋯ ; S n S_1;S_2; \cdots ;S_n S1;S2;⋯;Sn
w p ( S 1 ; S 2 , R ) = w p ( S 1 , w p ( S 2 , R ) ) wp(S_1;S_2,R)=wp(S_1,wp(S_2,R)) wp(S1;S2,R)=wp(S1,wp(S2,R))
-
条件语句:
形如:
w p ( I F , R ) = B B ∧ ∀ i : 1 ≤ i ≤ n ⋅ B i → w p ( S i , R ) wp(IF,R)=BB \land \forall i :1 \le i \le n \cdot B_i \rightarrow wp(S_i,R) wp(IF,R)=BB∧∀i:1≤i≤n⋅Bi→wp(Si,R)
其中 B B BB BB表示 B 1 ∨ B 2 ∨ ⋯ ∨ B n B_1 \lor B_2 \lor \cdots \lor B_n B1∨B2∨⋯∨Bn
若有缺省条件不一定执行则有:
w p ( I F , R ) = ( ∀ i : 1 ≤ i ≤ n ⋅ B i → w p ( S i , R ) ) ∧ ( ¬ B B → R ) wp(IF,R)=\big( \forall i :1 \le i \le n \cdot B_i \rightarrow wp(S_i,R) \big) \land (\lnot BB \rightarrow R) wp(IF,R)=(∀i:1≤i≤n⋅Bi→wp(Si,R))∧(¬BB→R)
上式有没有缺省条件都能用。- 循环语句:
形如:
设谓词P以及一个依赖于程序变量的整型函数f,满足:
{ P ∧ B i → w p ( S i , P ) P ∧ B B → f > 0 P ∧ B i ∧ f ≤ f 0 + 1 → w p ( S i , f ≤ f 0 ) P ∧ ¬ B B → R \begin{cases} P \land B_i \rightarrow wp(S_i,P) \\ P \land BB \rightarrow f \gt 0\\ P \land B_i \land f \le f_0 + 1 \rightarrow wp(S_i,f \le f_0) \\ P \land \lnot BB \rightarrow R \\ \end{cases} ⎩ ⎨ ⎧P∧Bi→wp(Si,P)P∧BB→f>0P∧Bi∧f≤f0+1→wp(Si,f≤f0)P∧¬BB→R
则, P → w p ( D O , R ) P \rightarrow wp(DO,R) P→wp(DO,R)- 例题1:
- 例题2:
o d d ( x ) : x odd(x):x odd(x):x是否为奇数
- 例题3:
-
10. 有限状态机
有限状态机五元组: M = ( Q , ∑ , δ , q 0 , F ) M=(Q, \small\sum , \delta ,q_0,F) M=(Q,∑,δ,q0,F)
-
确定有限状态机(DFA):
- Q = { q 0 , q 1 , ⋯ , q n } Q=\{q_0,q_1,\cdots,q_n\} Q={q0,q1,⋯,qn} 是有限状态集合。在任一确定时刻,有限状态机只能处于一个确定的状态 q i q_i qi
- ∑ = { σ 1 , σ 2 , ⋯ , σ n } \small\sum=\{\sigma_1, \sigma_2 , \cdots , \sigma_n\} ∑={σ1,σ2,⋯,σn} 是有限输入字符集合。在任一确定时刻,有限状态机只能接收一个确定的输入 σ i \sigma_i σi
- δ : Q × ∑ → Q \delta:Q \times \small\sum \rightarrow Q δ:Q×∑→Q 是状态转移函数(单值部分映射)。 如果在某一确定时刻,有限状态机处于某一状态 q i ∈ Q q_i \in Q qi∈Q,并接收一个输入字符 σ i ∈ ∑ \sigma_i \in \small\sum σi∈∑ ,那么下一时刻将处于一个确定的状态 q ′ = δ ( q i , σ i ) ∈ Q q'=\delta(q_i, \sigma_i) \in Q q′=δ(qi,σi)∈Q。
- q 0 ∈ Q q_0 \in Q q0∈Q 是唯一的初始状态,有限状态机由此状态开始接收输入。
- F ⊆ Q F \subseteq Q F⊆Q 是终结状态集合(可空),有限状态机在到达终态后不再接收输入。
-
非确定有限状态机(NFA):
- Q = { q 0 , q 1 , ⋯ , q n } Q=\{q_0,q_1,\cdots,q_n\} Q={q0,q1,⋯,qn} 是有限状态集合。在任一确定时刻,有限状态机只能处于一个确定的状态 q i q_i qi
- ∑ = { σ 1 , σ 2 , ⋯ , σ n } \small\sum=\{\sigma_1, \sigma_2 , \cdots , \sigma_n\} ∑={σ1,σ2,⋯,σn} 是有限输入字符集合。在任一确定时刻,有限状态机只能接收一个确定的输入 σ i \sigma_i σi
- δ : Q × ∑ → 2 Q \delta:Q \times \small\sum \rightarrow 2^Q δ:Q×∑→2Q 是状态转移函数(非单值部分映射)。 如果在某一确定时刻,有限状态机处于某一状态 q i ∈ Q q_i \in Q qi∈Q,并接收一个输入字符 σ i ∈ ∑ \sigma_i \in \small\sum σi∈∑ ,那么下一时刻将处于一个确定的状态 q ′ = δ ( q i , σ i ) ∈ Q q'=\delta(q_i, \sigma_i) \in Q q′=δ(qi,σi)∈Q。
- q 0 ∈ Q q_0 \in Q q0∈Q 是非空的初始状态集合,有限状态机由此状态开始接收输入。
- F ⊆ Q F \subseteq Q F⊆Q 是终结状态集合(可空),有限状态机在到达终态后不再接收输入。
-
字符串
- 字符串的长度:
字符串中所包含的字母的个数,用 ∣ ∣ |~| ∣ ∣ 表示。
例如:字符串 a a b b aabb aabb的长度为4,记作 ∣ a a b b ∣ = 4 |aabb|=4 ∣aabb∣=4。空串 ε \varepsilon ε 的长度为0。 - 字符串的连接:
依次把两个字符串拼接在一起,用“ ⋅ \cdot ⋅”表示,实际应用中连接符号可略去不写。字符串的连接仍为字符串。除非连接的是空串,否则连接不满足交换律。
例如:对于空串的连接, α ⋅ ε = ε ⋅ α = ε α = α ε \alpha \cdot \varepsilon = \varepsilon \cdot \alpha = \varepsilon \alpha = \alpha \varepsilon α⋅ε=ε⋅α=εα=αε。
字符串 α = a a b b , β = a b a b , α ⋅ β = a a b b a b a b , β ⋅ α = a b a b a a b b \alpha =aabb, \beta =abab, \alpha \cdot \beta=aabbabab, \beta \cdot \alpha=ababaabb α=aabb,β=abab,α⋅β=aabbabab,β⋅α=ababaabb - 字符串的重复连接:
对于正整数 n n n 和字符串 α \alpha α,重复地将其依次拼接 n n n 次,称为字符串 α \alpha α 的 n n n 次重复连接,记为 a n a^n an 。
- 字符串的长度:
-
题型:
- 给出定义形式的一个有限状态机,画出其状态转移图、状态转移表、状态转移矩阵;或给出状态转移图形式的有限状态机,写出其定义形式。
-
例题1:
-
例题2
- 写出有限状态机所接受的语言集合。
- 例题1:
L ( M ) = { ( + ∣ − ) s D I G m . D I G n E ( + ∣ − ) t D I G r ∣ m 、 n 、 r > 0 , s 、 t ∈ [ 0 , 1 ] } L(M)=\{(+|-)^s DIG^m . DIG^n E(+|-)^tDIG^r|m、n、r \gt 0, s、t \in [0,1] \} L(M)={(+∣−)sDIGm.DIGnE(+∣−)tDIGr∣m、n、r>0,s、t∈[0,1]}
- 例题2:
L ( M ) = { ε , ( 10 ∣ 01 ) m ∣ m > 0 } L(M)=\{ \varepsilon ,(10|01)^m | m \gt 0\} L(M)={ε,(10∣01)m∣m>0}
- 例题3:
L ( M ) = { ( 1 ∣ 01 ∣ 001 ) n 00 0 m ∣ n , m ≥ 0 } L(M)=\{(1|01|001)^n000^m|n,m \ge 0\} L(M)={(1∣01∣001)n000m∣n,m≥0} 或 L ( M ) = { ( 0 ∣ 1 ) n 00 0 m ∣ n , m ≥ 0 } L(M)=\{(0|1)^n000^m|n,m \ge 0\} L(M)={(0∣1)n000m∣n,m≥0}
- 例题4:
L ( M ) = { ( 00 ∣ 11 ∣ 01 ∣ 10 ) ( 0 ∣ 1 ) n ∣ n ≥ 0 } L(M)=\{(00|11|01|10)(0|1)^n|n \ge 0\} L(M)={(00∣11∣01∣10)(0∣1)n∣n≥0} 或 L ( M ) = { ( 0 ∣ 1 ) n ∣ n ≥ 2 } L(M)=\{(0|1)^n|n \ge 2\} L(M)={(0∣1)n∣n≥2}
11. petri 网
标记或令牌用位置中的黑点或数字表示。
-
化简
- 化简规则:
- 例题1:
- 化简规则:
-
覆盖树生成
- 构造算法:
- 例题1:
-
例题2:
-
例题3:
- 构造算法:
-
有界性、活性、可逆性分析。(可结合化简或覆盖树)
-
活性
-
有界性
-
可逆性
-
通过覆盖树判断
- 有界性:
若存在任一位置的令牌数为 ω \omega ω ,则是无界的;否则就是所有令牌数中最大的令牌数的有界的。
例如:
图 a a a:因为最大令牌数是2,所以它是2有界的。
图 b b b:因为出现了 ω \omega ω 所以它是无界的。- 活性:
l 4 l_4 l4 :若覆盖树上所有迁移 t t t 都可以无限次引发,则说明是 l 4 l_4 l4 活的。
l 3 l_3 l3 :若覆盖树上某个分支中有迁移 t i t_i ti 可以无限次引发,则说明 t i t_i ti 是 l 3 l_3 l3 活的。
l 2 l_2 l2 :若覆盖树上有迁移 t i t_i ti 只能引发 k k k 次 k ∈ Z , k ≥ 2 k\in Z,k \ge 2 k∈Z,k≥2 (或者说引发的次数受到其他的迁移 t t t影响),则说明 t i t_i ti 是 l 2 l_2 l2 活的。
l 1 l_1 l1 :若覆盖树上有迁移 t i t_i ti 只能引发一次,则说明 t i t_i ti 是 l 1 l_1 l1 活的。
l 0 l_0 l0:若覆盖树上没有出现petri网中的某个迁移 t i t_i ti 则它是 l 0 l_0 l0 活的(死的)。
例如:
图 a a a:因为覆盖树中 t 2 t_2 t2 没有出现,所以是 l 0 l_0 l0 活的(死的)。
图 b b b:因为覆盖树中所有迁移都只出现一次,且没有发生循环,所以是 l 1 l_1 l1 活的。
图 c c c:因为覆盖树中 t 1 , t 2 t_1,t_2 t1,t2 在两个分支中均只出现了两次,且没有发生循环,所以是 l 1 l_1 l1 活的。
图 d d d: t 1 t_1 t1 无法引发没有覆盖树,是 l 0 l_0 l0 活的(死的)
图 e e e:因为覆盖树中 M 1 = M 3 M_1=M_3 M1=M3 所以它们之间会产生循环,使得 t 2 , t 3 t_2,t_3 t2,t3 无限次引发,所以 t 2 , t 3 t_2,t_3 t2,t3 是 l 3 l_3 l3 活的;但是 t 1 t_1 t1 只出现了一次,所以 t 1 t_1 t1 是 l 1 l_1 l1 活的,因为 l 1 < l 3 l_1 \lt l_3 l1<l3 所以这个petri网是 l 1 l_1 l1 活的。
图 f f f:因为覆盖树中 M 2 = M 4 M_2=M_4 M2=M4 所以它们之间会产生循环,使得 t 1 , t 2 t_1,t_2 t1,t2 无限次引发,且不存在其他分支,所以这个petri网是 l 4 l_4 l4 活的。
图 g g g:因为覆盖树中 M 0 = M 2 M_0=M_2 M0=M2 所以它们之间会产生循环,使得 t 1 , t 2 t_1,t_2 t1,t2 无限次引发; M 4 = M 1 M_4=M_1 M4=M1 所以它们之间会产生循环,使得 t 3 , t 4 t_3,t_4 t3,t4 无限次引发,所以在 M 0 → M 1 → M 3 → M 4 ( M 1 ) → M 2 ( M 0 ) → ⋯ M_0 \rightarrow M_1 \rightarrow M_3 \rightarrow M_4(M_1) \rightarrow M_2(M_0) \rightarrow \cdots M0→M1→M3→M4(M1)→M2(M0)→⋯ 中 t 1 , t 2 , t 3 , t 4 t_1,t_2,t_3,t_4 t1,t2,t3,t4 会无限引发的,所以这个petri网是 l 4 l_4 l4 活的。
图 h h h:因为覆盖树中 M 1 = M 3 M_1=M_3 M1=M3 所以它们之间会产生循环,使得 t 1 t_1 t1 无限次引发,所以 t 1 t_1 t1 是 l 3 l_3 l3 活的; M 4 = M 5 M_4=M_5 M4=M5 所以它们之间会产生循环,使得 t 3 t_3 t3 不断引发,所以 t 3 t_3 t3 是 l 3 l_3 l3 活的;但 t 3 t_3 t3 引发会使得 P 2 P_2 P2 中的令牌数不断减少,最终会停止,所以存在一个下界,所以 t 3 t_3 t3 是 l 2 l_2 l2 活的; t 1 t_1 t1 只引发了一次,所以 t 1 t_1 t1 是 l 1 l_1 l1 活的;所以综上这个petri网是 l 1 l_1 l1 活的。- 可逆性:
若覆盖树最后的叶子节点是根节点 M 0 M_0 M0 则说明是可逆的;反之不可逆。
例如:
- 有界性:
-
应用题
12. 有限状态机、Moore 机、Mealy 机设计
- 有限状态机设计
-
例题1:
-
例题2:
-
例题3:
- Moore 机设计
例如:
到达状态时输出。
- 例题1:
- Mealy 机设计
例如:
状态转移时输出。
- 例题1:
13. Statecharts 设计电梯控制系统
给条件,给节点,进行连线
14. Petri 网设计
-
哲学家就餐:
-
例题生产线:
-
课后生产线:
-
生产者消费者:
-
消防员灭火