文章目录
绪论
- 计算机只能表示离散类型的数据,所以计算机科学关心如何对离散结构建立数学模型和如何将已有的连续数学模型离散化。
- “用一组基本的计算机指令来编制一个计算机程序,非常类似于用一组公理来构造一个数学证明”。
第一讲
1.1 集合与序列:
- 集合为基本概念,很难给出其严格定义。
- 特别规定: ∀ A , 有 A ∉ A . \forall A,有A\notin A. ∀A,有A∈/A.
- 集合的两种形式化表示:外延法(列举法,如 { a , b , c ⋯   } \{a,b,c\cdots\} { a,b,c⋯})和内涵法(描述法,如 { x ∣ P ( x ) } \{x|P(x)\} { x∣P(x)})。
- 超集与子集: A ⊆ B A\subseteq B A⊆B,称A为B的子集(subset),B为A的超集(superset)。
- 真子集(proper subset): A ⊂ B A\subset B A⊂B。
- 空集(empty set): ϕ \phi ϕ。
【定理】: A A A为任意集合, ϕ \phi ϕ是空集,则有:(i) A ⊂ A A\subset A A⊂A;(ii) ϕ ⊆ A . \phi \subseteq A. ϕ⊆A.{ 反证法证明ii }
【推论】:空集 ϕ \phi ϕ是唯一的。{ 上述定理中 A A A取为另一空集 ϕ ′ \phi ' ϕ′即可证明 } - 集合的基数(又称势):一个集合所含元素的个数,记作 ∣ A ∣ 或 # A 或 c a r d ( A ) |A|或\#A或card(A) ∣A∣或#A或card(A)。若 ∣ A ∣ < ∞ |A|<\infty ∣A∣<∞,则称A为有限集,否则称为无限集。
- 幂集(power set):一个集合的所有子集构成的集合,记为 P ( A ) \mathscr{P}(A) P(A),即 P ( A ) = { x ∣ x ⊆ A } \mathscr{P}(A)=\{x|x\subseteq A\} P(A)={ x∣x⊆A}。
- 集合的运算:交集( A ∩ B A\cap B A∩B)、并集( A ∪ B A\cup B A∪B)、差集(相对补, A − B , A \ B A-B,A\backslash B A−B,A\B)、补集(绝对补, A ‾ , ∼ A \overline{A}, \sim A A,∼A)、对称差( A ⊕ B = { x ∣ x ∈ A 或 x ∈ B 且 x ∉ A B } A\oplus B=\{x|x\in A或 x\in B且x\notin AB\} A⊕B={ x∣x∈A或x∈B且x∈/AB}).
- 集合运算的运算律:交换律、结合律、分配律、吸收律【 A ∩ ( A ∪ B ) = A , A ∪ ( A ∩ B ) = A A\cap (A\cup B)=A,A\cup (A\cap B)=A A∩(A∪B)=A,A∪(A∩B)=A】、幂等律【 A ∪ A = A , A ∩ A = A A\cup A =A,A\cap A =A A∪A=A,A∩A=A】、双重否定律、矛盾律【 A ∩ A ‾ = ϕ A\cap \overline{A}=\phi A∩A=ϕ】、排中律【 A ∪ A ‾ = U A\cup \overline{A}=U A∪A=U】、余补律【 ϕ ‾ = U , U ‾ = ϕ \overline{\phi}=U,\overline{U}=\phi ϕ=U,U=ϕ】、零律【 A ∪ U = U , A ∩ ϕ = ϕ A\cup U=U,A\cap \phi =\phi A∪U=U,A∩ϕ=ϕ】、同一律【 A ∪ ϕ = A , A ∩ U = A A\cup \phi=A,A\cap U=A A∪ϕ=A,A∩U=A】、摩根律【 A ∪ B ‾ = A ‾ ∩ B ‾ , A ∩ B ‾ = A ‾ ∪ B ‾ \overline{A\cup B}=\overline{A}\cap \overline{B},\overline{A\cap B}=\overline{A}\cup \overline{B} A∪B=A∩B,A∩B=A∪B,另有摩根律的相对性质】。
- 韦恩图。
- 序列、序列中的项、序列的长度、子序列(保持原序)。
- A ∗ A^* A∗定义为由集合 A A A生成的所有有限长度序列的全体, A ∗ A^* A∗中的元素称为词或串, A ∗ A^* A∗中的空序列称为空串(记作 λ \lambda λ或 ε \varepsilon ε),此时的 A A A称为字母表。
- 序列的运算:连接( w 1 ° w 2 w_1\degree w_2 w1°w2)。
1.2 数论基础
- 【定理】:(带余除法,记作 r = m    m o d    n r=m\,\,mod\,\,n r=mmodn) m = q ⋅ n + r m=q\cdot n+r m=q⋅n+r,其中 m , n , q , r m,n,q,r m,n,q,r均为整数,且 0 ≤ r < ∣ n ∣ 0\le r<|n| 0≤r<∣n∣,其中 q q q称作商, r r r称为余数。
- n n n整除 m m m记为 n ∣ m n|m n∣m。
- 素数、合数:要求大于1。【证明素数有无穷多个】
- 【算术基本定理】任意大于1的正整数,可唯一地表示为若干个互异素数幂次的乘积形式,即可唯一地素因式分解( n = p 1 k 1 p 2 k 2 ⋯ p s k s n=p_1^{k_1}p_2^{k_2}\cdots p_s^{k_s} n=p1k1p2k2⋯psks)。
- 公因子、最大公因子【 G C D ( a , b ) GCD(a,b) GCD(a,b)】、互素【 G C D ( a , b ) = 1 GCD(a,b)=1 GCD(a,b)=1】、公倍数、最小公倍数【 L C M ( a , b ) LCM(a,b) LCM(a,b)】
- 【推论】: L C M ( a , b ) ⋅ G C D ( a , b ) = a b . LCM(a,b)\cdot GCD(a,b)=ab. LCM(a,b)⋅GCD(a,b)=ab.
- 数的进制。【突然想到了知乎里看到的俄罗斯的三进制计算机。。。】
- 【当我们不知道 a , b a,b a,b的因子分解时,也可以计算 G C D ( a , b ) GCD(a,b) GCD(a,b)】
- 【定理】:(辗转相除法) 设 a = q b + r , 其 中 a , q , b , r 都 是 整 数 , 则 G C D ( a , b ) = G C D ( b , r ) 设a=qb+r,其中a,q,b,r都是整数,则GCD(a,b)=GCD(b,r) 设a=qb+r,其中a,q,b,r都是整数,则GCD(a,b)=GCD(b,r)。
【证明】: 设 a = q b + r , 若 d ∣ a 且 d ∣ b , 则 d ∣ ( a − q b ) , 即 d ∣ r ; 若 d ∣ b 且 d ∣ r , 即 d ∣ b 且 d ∣ ( a − q b ) , 则 d ∣ a . 故 a , b 的 公 因 子 集 合 与 b , r 的 公 因 子 集 合 相 等 , 自 然 G C D ( a , b ) = G C D ( b , r ) . 设a=qb+r,\\若d|a且d|b,则d|(a-qb),即d|r;\\若d|b 且d|r,即d|b且d|(a-qb),则d|a.\\故a,b的公因子集合与b,r的公因子集合相等,自然GCD(a,b)=GCD(b,r). 设a=qb+r,若d∣a且d∣b,则d∣(a−qb),即d∣r;若d∣b且d∣r,即d∣b且d∣(a−qb),则d∣a.故a,b的公因子集合与b,r的公因子集合相等,自然GCD(a,b)=GCD(b,r). - 【裴蜀等式】: 对 不 全 为 0 的 a , b 和 d , 方 程 s a + t b = d 有 整 数 解 ⇔ G C D ( a , b ) ∣ d . 对不全为0的a,b和d,方程sa+tb=d有整数解\Leftrightarrow GCD(a,b)|d. 对不全为0的a,b和d,方程sa+tb=d有整数解⇔GCD(a,b)∣d.
【证明】
(i)充分性: 由 欧 几 里 得 算 法 可 知 , ∃ k 1 , k 2 ∈ Z , 使 k 1 a + k 2 b = G C D ( a , b ) , 又 G C D ( a , b ) ∣ d , 故 ∃ k ∈ Z , 使 k ⋅ G C D ( a , b ) = d , 所 以 k k 1 a + k k 2 b = k ⋅ G C D ( a , b ) = d , 即 方 程 s a + t b = d 有 整 数 解 s = k k 1 , t = k k 2 . 由欧几里得算法可知,\exist k_1,k_2\in Z,使k_1a+k_2b=GCD(a,b),又GCD(a,b)|d,故\exist k\in Z,使k\cdot GCD(a,b)=d,所以kk_1a+kk_2b=k\cdot GCD(a,b)=d,即方程sa+tb=d有整数解s=kk_1,t=kk_2. 由欧几里得算法可知,∃k1,k2∈Z,使k1a+k2b=GCD(a,b),又GCD(a,b)∣d,故∃k∈Z,使k⋅GCD(a,b)=d,所以kk1a+kk2b=k⋅GCD(a,b)=d,即方程sa+tb=d有整数解s=kk1,t=kk2.
(ii)必要性: 若 方 程 s a + t b = d 有 整 数 解 s = s 0 , t = t 0 , 则 s 0 a + t 0 b = d , 又 G C D ( a , b ) ∣ a 且 G C D ( a , b ) ∣ b , 则 G C D ( a , b ) ∣ ( s 0 a + t 0 b ) , 即 G C D ( a , b ) ∣ d . 若方程sa+tb=d有整数解s=s_0,t=t_0,则s_0a+t_0b=d,又GCD(a,b)|a且GCD(a,b)|b,则GCD(a,b)|(s_0a+t_0b),即GCD(a,b)|d. 若方程sa+tb=d有整数解s=s0,t=t0,则s0a+t0b=d,又GCD(a,b)∣a且GCD(a,b)∣b,则GCD(a,b)∣(s0a+t0b),即GCD(a,b)∣d.
【推论】 前 述 有 G C D ( a , b ) ⋅ L C M ( a , b ) = a b , 而 G C D ( a , b ) 可 由 欧 几 里 得 算 法 求 得 , 故 L C D ( a , b ) 的 计 算 可 转 化 为 G C D ( a , b ) 的 计 算 前述有GCD(a,b)\cdot LCM(a,b)=ab,\\而GCD(a,b)可由欧几里得算法求得,\\故LCD(a,b)的计算可转化为GCD(a,b)的计算 前述有GCD(a,b)⋅LCM(a,b)=ab,而GCD(a,b)可由欧几里得算法求得,故LCD(a,b)的计算可转化为GCD(a,b)的计算 。
【例题】: 计 算 G C D ( 2009 , 1394 ) 和 L C M ( 2009 , 1394 ) . 计算GCD(2009,1394)和LCM(2009,1394). 计算GCD(2009,1394)和LCM(2009,1394). - 同余: 设 a , b 为 整 数 , n 为 正 整 数 , n ∣ ( a − b ) , 则 称 a , b 模 n 同 余 , 记 作 a ≡ b ( m o d    n ) . 设a,b为整数,n为正整数,n|(a-b),则称a,b模n同余,记作a\equiv b(mod\,\,n). 设a,b为整数,n为正整数,n∣(a−b),则称a,b模n同余,记作a≡b(modn).
- 【定理】: a 与 b 模 n 同 余 ⇔ a    m o d    n = b    m o d    n ⇔ ∃ k ∈ Z , 使 得 a = b + k n . a与b模n同余\Leftrightarrow a\,\,mod\,\,n=b\,\,mod\,\,n\Leftrightarrow \exist k\in Z,使得a=b+kn. a与b模n同余⇔amodn=bmodn⇔∃k∈Z,使得a=b+kn.
【推论】: b ∣ a ⇔ a    m o d    b = 0 ⇔ a ≡ 0 ( m o d    b ) . b|a\Leftrightarrow a\,\,mod\,\,b=0\Leftrightarrow a\equiv 0(mod\,\,b). b∣a⇔amodb=0⇔a≡0(modb).
1.3 计数基础
- 分类加法原理(类间不覆盖)、分步乘法原理(步间独立)。
- 排列: 不 重 复 选 取 重 复 选 取 有 序 选 取 排 列 可 重 排 列 无 序 选 取 组 合 可 重 组 合 \begin{array}{c|c:c}&不重复选取&重复选取\\ \hline 有序选取&排列&可重排列\\ \hdashline 无序选取&组合&可重组合 \end{array} 有序选取无序选取不重复选取排列组合重复选取可重排列可重组合
- 【定理】: n 取 r 的 可 重 排 列 数 目 为 n r . n取r的可重排列数目为n^r. n取r的可重排列数目为nr.
- 排列: n 取 r 个 对 象 按 序 排 列 , 该 排 列 的 全 体 构 成 的 集 合 记 为 P ( n , r ) , P ( n , r ) 中 排 列 的 个 数 用 P ( n , r ) 表 示 n取r个对象按序排列,该排列的全体构成的集合记为\mathrm{P}(n,r),\mathrm{P}(n,r)中排列的个数用P(n,r)表示 n取r个对象按序排列,该排列的全体构成的集合记为P(n,r),P(n,r)中排列的个数用P(n,r)表示。全排列。
- 【定理】: P ( n , r ) = { 0 , r > n n ( n − 1 ) ⋯ ( n − r + 1 ) , r ≤ n P(n,r)=\begin{cases}0&,r>n\\n(n-1)\cdots (n-r+1)&,r\le n\end{cases} P(n,r)={ 0n(n−1)⋯(n−r+1),r>n,r≤n
- P ( n , r ) = n ( n − 1 ) ⋯ ( n − r + 1 ) = n ! ( n − r ) ! . P(n,r)=n(n-1)\cdots (n-r+1)={ {n!}\over{(n-r)!}}. P(n,r)=n(n−1)⋯(n−r+1)=(n−r)!n!