7【形式化方法】形式语言与自动机理论的基础概念(计算机软件理论 模型检测 形式化验证 入门必学)

一、计算(机械而有效的方式获取问题答案)理论:中心从数学转至计算机科学

1.1 核心问题:计算机的基本能力和限制是什么?
  1. 可计算性理论:究竟哪些问题,可通过计算解决?

    计算和算法:一阶逻辑谓词可解决的话,就可以用数理逻辑一劳永逸的解决问题。有些问题是不存在算法的。

  2. 计算复杂性理论:解决可计算的问题,究竟需要多少资源?

    到底是什么原因导致有些问题需要耗用大量资源才能解决?——可以对问题按照性质不同进行分类。

  3. 形式语言与自动机理论:为了研究计算,要使用哪些计算模型?

    简单明确、功能强大。

1.2 自动机理论:研究抽象机器及其所能解决问题的理论
  1. 图灵机:计算机的理论抽象模型,它区分了哪些问题是可计算的,哪些是不可计算的。(P = NP ?)
  2. 有限状态机:数字电路、通信协议的设计验证方面等实际问题中有重要应用。
  3. 文法、下推自动机:在计算机语言设计和编译器的实现上发挥了重要的作用。
1.3 形式语言

如果说自动机是研究计算的模型,那么语言就是去研究计算的问题或实例。

形式语言:经数学定义的语言。

二、基本概念

2.1 形式语言中的基本概念:字母表 字符串 集合
  1. 字母表:符号(字符)的非空有穷集。(类似几何中的点、线,不再做过多定义。)

  2. 字符串:由某字母表中的符号组成的有穷序列。

  3. 空串:记为 ϵ \epsilon ϵ (\epsilon),有0个字符的串。

    字母表 Σ \Sigma Σ 可以是任意的,但都有 ϵ ∉ Σ \epsilon \notin \Sigma ϵ/Σ .

  4. 字符串的长度:字符串中符号所占位置的个数,记为 | |

    下面给出递归的定义:

    若 字 母 表 为 Σ , 其 中 a ∈ Σ , w 和 x 是 Σ 中 字 符 组 成 的 字 符 串 若字母表为 \Sigma,其中 a \in \Sigma,w 和 x 是 \Sigma 中字符组成的字符串 ΣaΣ,wxΣ
    ∣ w ∣ = { 0 , w = ϵ ∣ x ∣ + 1 , w = x a |w| = \begin{cases} 0,w=\epsilon \\ |x|+1,w=xa \end{cases} w={0,w=ϵx+1,w=xa

  5. 字符串x和y的连接:将首尾相接得到新字符串的运算,记为 x ⋅ y , 或 x y x\cdot y,或xy xy,xy

    不满足交换律,满足结合律。

  6. 字符串的n次幂, ( a b ) 2 ! = a b 2 (ab)^2 != ab^2 (ab)2!=ab2

  7. 集合A和B的连接:记为 A ⋅ B , 或 A B A\cdot B,或AB AB,AB

  8. 集合A的n次幂
    A = { a } A 3 = A A A = { a } { a } { a } = { a 3 } A=\lbrace{a\rbrace} \\ A^3=AAA=\lbrace{a\rbrace}\lbrace{a\rbrace}\lbrace{a\rbrace}=\lbrace{a^3\rbrace} A={a}A3=AAA={a}{a}{a}={a3}

    那么,若 Σ \Sigma Σ 为字母表,则 $\Sigma ^n $ 为 Σ \Sigma Σ 上长度为n的字符串的集合。

    注意:在学习程序语言设计的时候,需要明确区分字符和字符串,但是在形式语言自动机中,无需明确的进行区分,因为在上下文中它会极其明显。

  9. 克林闭包( K l e e n e C l o s u r e Kleene \quad Closure KleeneClosure

由字母表中任意长度的字符组成的字符串;
Σ ∗ = ⋃ i = 0 ∞ Σ i = Σ 0 ⋃ Σ 1 ⋃ Σ 2 ⋃ Σ 3 . . . \Sigma * =\bigcup_{i=0}^{\infty} \Sigma^i \\ = \Sigma ^0 \bigcup \Sigma ^1 \bigcup \Sigma ^2 \bigcup \Sigma ^3 ... Σ=i=0Σi=Σ0Σ1Σ2Σ3...

  1. 正闭包( P o s i t i v e C l o s u r e Positive \quad Closure PositiveClosure

Σ + = ⋃ i = 1 ∞ Σ i = Σ 1 ⋃ Σ 2 ⋃ Σ 3 . . . \Sigma ^+ =\bigcup_{i=1}^{\infty} \Sigma^i \\ = \Sigma ^1 \bigcup \Sigma ^2 \bigcup \Sigma ^3 ... \\ Σ+=i=1Σi=Σ1Σ2Σ3...

显然有:
Σ ∗ = Σ + ⋃ { ϵ } \Sigma * = \Sigma ^+ \bigcup \lbrace\epsilon\rbrace Σ=Σ+{ϵ}.

2.2 语言

定义:若 Σ \Sigma Σ 为字母表且 ∀ L ⊆ Σ ∗ \forall L \subseteq \Sigma * LΣ,则L称为字母表 Σ \Sigma Σ 上的语言。比如:

  1. 自然语言、程序设计语言
  2. 集合语言、数学语言
  3. 文字方式描述集合

关于语言:唯一重要的约束就是所有字母表都是有穷的。

2.3 自动机理论中的典型问题:成员性问题

判断给定的字符串 w w w 是否属于某个具体的语言 L L L ?即: w ∈ L ? w \in L? wL?

  1. 任何所谓问题,都可以转为语言成员性的问题;
  2. 语言和问题其实是相同的东西;
2.4 形式化证明方法
  1. 演绎法

  2. 归纳法

    课上有两个例子讲了两种形式的归纳法:对长度的归纳和对结构的归纳

  3. 反证法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值