【计算理论】01 绪论与数学基础

绪论

计算理论的主要研究目的就是计算机的基本能力和局限性,即计算机能够计算什么问题,不能计算什么问题

主要包含自动机、可计算性和复杂性三部分

  • 复杂性理论的核心在于什么使得某些问题很难计算、另一些问题容易计算。该问题目前尚无叫好的答案,但可以根据计算难度进行分类,并给出某些问题难以计算的证据。

    对于难以计算的问题,可以计算近似但不完美的解选择在大多情况下表现良好的算法、或是选择其他计算类型(加速算法)

  • 可计算性理论围绕问题是否可以被计算机解决展开;在复杂性理论中,问题被分类为难计算不难计算,而在可计算性理论中,问题被分类为可解不可解

  • 自动机理论阐述了一些基本数学模型的定义和性质,主要包括有穷自动机上下文无关自动机。有穷自动机用于文本处理、编译以及硬件设计中;而上下文无关自动机则用于程序设计语言与AI中。

数学基础

理解计算理论,需要掌握一些基本数学概念。包括集合、序列、函数与关系、图、字符串和语言、布尔逻辑以及定义、定理和证明。

集合

集合(set)可以包含任何类型的对象,例如数字、字符或者其他集合,其中的对象称为元素(element)。常用{}来表示,例如
A = { 7 , 3 , 5 } A = \{7, 3, 5\} A={7,3,5}
就是一个集合。集合是无序的,其中的元素通常不重复。集合可以是有穷的,也可以是无穷的。

使用 ∈ \in 来表示元素存在于集合中,例如 7 ∈ A 7\in A 7A。若某个集合中的任何元素都在另一个集合内,称前者为后者的子集(subset),例如
B = { 7 , 3 } B ⊂ A B = \{7, 3\}\\ B \sub A B={7,3}BA
当集合中的元素满足某种特定规则的时候,通常采用 { w ∣ w 的规则 } \{w|w的规则\} {ww的规则}的表示方法,例如 { n ∣ n 为 3 的倍数 ( 或 n % 3 = = 0 ) } \{n|n为3的倍数(或n\%3==0)\} {nn3的倍数(n%3==0)}

集合常用的操作包括 ∩ , ∪ , A ‾ \cap, \cup, \overline{A} ,,A,分别代表交(union)、并(intersection)、补(complement)。

集合的叉积(cross product)又称笛卡尔积(Cartesian product),记 A × B A\times B A×B,可以理解为包含A和B中所有元素有序对的集合,例如
A = { 1 , 2 , 3 } B = { a , b } A × B = { ( 1 , a ) , ( 2 , a ) , ( 3 , a ) ( 1 , b ) , ( 2 , b ) , ( 3 , b ) } A = \{1, 2, 3\}\\ B = \{a, b\}\\ A\times B = \left\{\begin{array}{} (1,a),(2,a),(3,a)\\ (1,b),(2,b),(3,b) \end{array} \right\} A={1,2,3}B={a,b}A×B={(1,a),(2,a),(3,a)(1,b),(2,b),(3,b)}
如果对集合自身求笛卡尔积,则可以简写为 A k A^k Ak的形式。

序列

序列(sequence)是由有序元素组成的列表,序列中元素的重复与否和顺序都很重要。

和集合一样,序列也可以是有穷或无穷的,如果序列是有穷的,则称元组(tuple)。包含k个元素的元组称为k元组,2元组又称有序对(ordered pair)。

函数与关系

函数(function)又称为映射(mapping),是用于建立输入-输出关系的对象。函数所有可能输入组成的集合称为定义域(domain),所有可能输出组成的集合称为值域(range)。

包含k个自变量的函数称为k元函数(k-ary function),其输入为k元组 ( a 1 , a 2 , … , a k ) (a_1, a_2,\dots,a_k) (a1,a2,,ak),定义域为 A 1 × A 2 × ⋯ × A k A_1\times A_2\times \dots \times A_k A1×A2××Ak

值域为 { T r u e , F a l s e } \{True, False\} {True,False}的函数称为谓词(predicate)或者性质(property),若谓词的定义域为 A k A^k Ak,即k元组中的每个元素的定义域都为 A A A,则称该谓词为关系(relation)或k元关系(k-ary relation)。通常使用的关系是二元关系(binary relation)。

【重点】二元关系中存在一种特殊的关系,称为等价关系(equivalence relation),满足以下三个条件:

  • 自反性:对每个 x x x,满足 x R x xRx xRx
  • 对称性:对每个 x , y x, y x,y,若存在 x R y xRy xRy,则有 y R x yRx yRx
  • 传递性:对每个 x , y , z x, y, z x,y,z,若存在 x R y , y R z xRy, yRz xRy,yRz,则有 x R z xRz xRz

决定这三个条件是否成立的因素是范围,可以理解为,只要对关系的定义添加足够的约束,就可以实现特定的等价关系、或使得某个或多个条件不成立。

单个条件不成立的情况举例:

  • 不传递:向量平行,对0向量是不能传递的。
  • 不对称: x ≤ y x \le y xy,不能得出 y ≤ x y\le x yx
  • 不自反:定义关系A和B是两个独立的人,在该关系定义下,不满足自反性。

(graph)可以分为无向图(undirected graph)和有向图(directed graph)。由顶点(vertex)的集合和连接某些点的线段/箭头组成。

顶点的(degree)是以该顶点为端点的边的数目,在有向图中,根据箭头的方向,顶点的度又分为入度(indegree)和出度(outdegree)。

图的路径(path)是以边连接的顶点序列,如果路径中没有重复顶点,称该路径为简单路径(simple path)。任何顶点相互连通的无向图称为连通图(connected graph);在有向图中,如果从每个顶点到任何其他顶点,都存在一条有向路径,则称强连通图(strongly connected graph)。

字符串与语言

定义字母表(alphabet)为任意非空有穷集合,字母表内的元素为该表的符号(symbol)。通常使用 Σ \Sigma Σ Γ \Gamma Γ表示。
Σ 1 = { 0 , 1 } Σ 2 = { a , b , c } Γ = { 0 , 1 , x , y , x } \Sigma_1 = \{0, 1\}\\ \Sigma_2 = \{a, b, c\}\\ \Gamma = \{0, 1, x, y, x\} Σ1={01}Σ2={a,b,c}Γ={0,1,x,y,x}
任意字母表中符号的有穷序列称为字母表上的字符串(string over the alphabet),例如,01001就是字母表 Σ 1 \Sigma_1 Σ1上的串,abaca就是字母表 Σ 2 \Sigma_2 Σ2上的串。长度为0的串称为空串(empty string),记 ε \varepsilon ε语言(language)为字符串的集合,通常会带有某些条件,例如 { w ∣ w 由 0 结尾 } \{w|w由0结尾\} {ww0结尾}

字符串的顺序(string order)通常采用字典序(lexicographic order)+ 短串在前的策略,例如 Σ 1 \Sigma_1 Σ1上的字符串的顺序为( ε \varepsilon ε, 0, 1, 00, 01, 11, …)

布尔

布尔逻辑(Boolean logic)是建立在True, False上的代数系统。包含NOT, AND, OR, XOR等运算,这些运算的真值表如下

NOT
0 1 ¬ 1 0 \begin{array}{c|cc} &0&1\\ \hline \neg&1&0\\ \end{array} ¬0110
AND
0 1 0 0 0 1 0 1 \begin{array}{c|cc} &0&1\\ \hline 0&0&0\\ 1&0&1\\ \end{array} 01000101
OR
0 1 0 0 1 1 1 1 \begin{array}{c|cc} &0&1\\ \hline 0&0&1\\ 1&1&1\\ \end{array} 01001111
XOR
0 1 0 0 1 1 1 0 \begin{array}{c|cc} &0&1\\ \hline 0&0&1\\ 1&1&0\\ \end{array} 01001110
此外,还有等值(equality)和蕴涵(implication)两种运算,分别用 ↔ 与 → \leftrightarrow 与\to 表示

↔ \leftrightarrow
0 1 0 1 0 1 0 1 \begin{array}{c|cc} &0&1\\ \hline 0&1&0\\ 1&0&1\\ \end{array} 01010101
→ \to
0 → 0 = 1 0 → 1 = 1 1 → 0 = 0 1 → 1 = 1 0\to0=1\\ 0\to1=1\\ 1\to0=0\\ 1\to1=1 00=101=110=011=1

使用AND和OR可以表示其他所有运算
P ∪ Q = ¬ ( ¬ P ∩ ¬ Q ) P → Q = ¬ P ∪ Q P ↔ Q = ( P → Q ) ∩ ( Q → P ) P ⊕ Q = ¬ ( P ↔ Q ) P \cup Q = \neg (\neg P \cap \neg Q)\\ P \to Q = \neg P \cup Q\\ P \leftrightarrow Q = (P\to Q) \cap(Q\to P)\\ P \oplus Q = \neg (P\leftrightarrow Q) PQ=¬(¬P¬Q)PQ=¬PQPQ=(PQ)(QP)PQ=¬(PQ)

定义、定理和证明

定义(difinition)描述了使用的对象和概念。当定义对象时,务必确定什么构成该对象,什么不构成该对象。在定义对象和概念后,通常需要给出对应的数学命题(mathematical statement)。

证明(proof)是一种逻辑论证,目的是使人相信一个命题为真。论证必须是周密且无疑的。

定理(theorem)是证明为真的数学命题。如果某个命题的证明是为了帮助证明另一个命题,则称前者为引理(lemma),后者为推论(corollary)。

证明的基本策略包含两步:首先,看清并理解命题中的每个符号,尝试拆分命题(有些命题可能隐含多个部分,例如充要条件的证明,纪要证明充分性,也要证明必要性);然后,尽可能证明每个部分为真,例如寻找一些符合真个性质的对象,或者找到一个不符合该性质的对象。

常见的证明类型包括构造性证明反证以及归纳

构造性证明

构造性证明的目的是证明存在满足某种条件的对象,即说明如何构造这种对象,下面用例子来说明。

首先定义k正则图(k-regular graph):如果一个图中的每个顶点度都为k,则称这个图为k正则图。

给出待证:对每个大于2的偶数n, ∃ \exists 有n个顶点的3正则图。

证明:

  1. 理解命题,n为大于2的偶数,即n的取值为{4, 6, 8…};3正则图意味着每个顶点的度为3.

  2. 易知对任意n > 3顶点的图,将所有顶点按圆周顺序相连,可以得到2正则图;可得边集
    E 1 = { { i , i + 1 } ∣ 0 ≤ i ≤ n − 2 } ∪ { { n − 1 , 0 } } E_1 = \{\{i, i+1\}|0\le i\le n-2\} \cup \{\{n-1, 0\}\} E1={{i,i+1}∣0in2}{{n1,0}}

  3. 若将n > 2的偶数个顶点在圆周上均匀排布,对任意顶点,都可以找到过圆心的对称顶点;可得第三条边的边集
    E 2 = { { i , i + n / 2 } ∣ 0 ≤ i ≤ n / 2 − 1 } E_2 = \{\{i, i+n/2\}| 0\le i \le n/2 - 1\} E2={{i,i+n/2}∣0in/21}

  4. E = E 1 ∪ E 2 E = E_1 \cup E_2 E=E1E2,得证。

反证法

反证法首先会假设待证定理为假,然后在该假设下,寻找一个明显错误的结论,来拒绝该假设,从而证明定理为真。举例说明。

定义:若一个数可以表示为分式m/n,则该数称为有理数;否则为无理数。

待证:2的平方根为无理数。

证明:

  1. 假设 2 \sqrt 2 2 为有理数,则根据有理数定义,有
    2 = m n \sqrt 2 = \frac m n 2 =nm
    该分式应该为最简形式。

  2. 整理该式,可知 m 2 m^2 m2为偶数。
    m 2 = 2 n 2 m^2 = 2n^2 m2=2n2

  3. 证明引理:奇数的平方总是奇数。
    ∀ n = 2 k + 1 , { k = 0 , 1 , …   } n 2 = 4 k 2 + 2 k + 1 ∵ 4 k 2   %   2 = 0 ,   2 k   % 2 = 0 ∴ n 2   %   2 = 1 \forall n = 2k+1, \{k=0, 1, \dots\}\\ n^2 = 4k^2 + 2k + 1\\ \because 4k^2\ \%\ 2 = 0,\ 2k\ \% 2 = 0\\ \therefore n^2\ \% \ 2 = 1 n=2k+1,{k=0,1,}n2=4k2+2k+14k2 % 2=0, 2k %2=0n2 % 2=1

  4. 根据引理,m一定是偶数,可以表示为 2 k 2k 2k,故有
    4 k 2 = 2 n 2 n 2 = 2 k 2 4k^2 = 2n^2\\ n^2 = 2k^2 4k2=2n2n2=2k2

  5. 可见 n 2 n^2 n2也应该是偶数,即n为偶数

  6. 若m, n都为偶数,则m/n可以继续化简,显然假设不成立,拒绝原假设, 2 \sqrt 2 2 为无理数。

归纳法

归纳法用于证明无穷集合的所有元素具有特定性质。归纳证明包含两部分:归纳基础(basis)和归纳步骤(induction step),即

  1. 归纳基础:证明 P ( 1 ) \mathcal{P}(1) P(1)成立
  2. 归纳步骤:对 ∀ i ≥ 1 \forall i \ge 1 i1,假设 P ( i ) \mathcal{P}(i) P(i)为真,通过该假设证明 P ( i + 1 ) \mathcal P (i + 1) P(i+1)为真

例子:在房产贷款中,会使用月付计算公式来计算每个月的固定偿还金额;设 P P P为本金, I > 0 I > 0 I>0为年利率, Y Y Y为月付数,由于存在利息,贷款的余额每月会发生变化,为方便计算,使用 I I I计算月倍增系数 M M M M = 1 + I / 12 M = 1 + I/12 M=1+I/12

每月的还款分为两部分:1. 贷款的余额会按 M M M每月复利, P t M P_tM PtM;2. 贷款月会随着清偿而定额减少, − Y -Y Y

P t P_t Pt为t个月后未清偿的贷款余额, P 0 = P P_0 = P P0=P,试证 ∀ t ≥ 0 \forall t \ge 0 t0
P t = P M t − Y ( M t − 1 M − 1 ) P_t = PM^t - Y\left(\frac {M^t - 1}{M-1}\right) Pt=PMtY(M1Mt1)
证明:

  1. t = 0 t = 0 t=0 M 0 = 1 M^0 = 1 M0=1,带入得 P t ( t = 0 ) = P − 0 = P P_t(t = 0) = P - 0 = P Pt(t=0)=P0=P,基础成立。

  2. 设当 t = k t = k t=k时,上式成立;根据 P k P_k Pk P k + 1 P_{k + 1} Pk+1得关系,有
    P k + 1 = P k M − Y P_{k + 1} = P_kM - Y Pk+1=PkMY

  3. 展开,得证
    P k + 1 = P k M − Y = P M k + 1 − M Y ( M k − 1 M − 1 ) − Y = P M k + 1 − Y ( M k + 1 − M M − 1 + M − 1 M − 1 ) = P M k + 1 − Y ( M k + 1 − 1 M − 1 ) P_{k + 1} = P_kM - Y\\ = PM^{k + 1} - MY\left(\frac {M^k - 1}{M-1}\right) - Y\\ = PM^{k + 1} - Y\left(\frac {M^{k+1} - M}{M-1} + \frac {M-1} {M-1}\right)\\ = PM^{k + 1} - Y\left(\frac {M^{k+1} - 1}{M-1}\right) Pk+1=PkMY=PMk+1MY(M1Mk1)Y=PMk+1Y(M1Mk+1M+M1M1)=PMk+1Y(M1Mk+11)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Recitative

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值