《计算机科学中的数学》学习笔记(02 良序原理)


书本信息:

作者: [美] Eric Lehman / [美] F. Thomson Leighton / [美] Albert R. Meyer
出版社: 电子工业出版社
出品方: 博文视点
副标题: 信息与智能时代的必修课
原作名: Mathematics for Computer Science

02 良序原理(Well Ordering Principle)


良序原理(Well-Ordering Principle)是数学中的一个基本原理,尤其在集合论和数论中有重要应用。它是数学归纳法的一个等价表述。

表述如下:

  • 非负整数集中的每个非空子集都有一个最小元素。

也可以表述为:

  • 每一个非空的自然数集合都有一个最小元素。

这个原理看起来可能非常直观,但它实际上是一个非常强大的工具,可以用来证明许多重要的数学定理。例如,它可以用来证明每一个大于1的自然数都可以写成素数的乘积(质因数分解定理,也就是算术基本定理)。

良序原理和数学归纳法是等价的,也就是说,如果你接受数学归纳法是正确的,那么你就必须接受良序原理是正确的,反之亦然。这两个原理都是基于自然数的基本性质,即自然数是离散的、无限的,并且每一个自然数都有一个唯一的后继。

在更高级的数学中,良序原理可以推广到其他类型的集合,例如有序集和良序集。在这些情况下,良序原理的表述可能会更复杂,但基本的思想是相同的:每一个非空的集合都有一个最小元。

1、良序证明

通过良序证明(Well Ordering Proofs)来证明任何正整数的分数都可以化简为最简形式,即分子和分母没有公共的质因数。

首先,假设存在正整数m和n,使得分数m/n不能化简为最简形式。然后,定义集合C为所有不能化简为最简形式的分数的分子。由于m属于C,所以C非空。根据良序原理,集合C中必然存在一个最小的整数m0。由C的定义,存在一个大于0的整数n0,使得分数m0/n0不能化简为最简形式。

这意味着m0和n0必然有一个大于1的公共质因数p。但是,m0/p和n0/p的分数也不能化简为最简形式,这意味着m0/p也在C中。然而,m0/p小于m0,这与m0是C中最小元素的事实相矛盾。

因此,假设C非空导致了矛盾,所以C必须为空。也就是说,不存在不能化简为最简形式的分数的分子,因此也就不存在不能化简为最简形式的分数。

这就是通过良序原理证明任何正整数的分数都可以化简为最简形式的过程。

2、良序证明模板

良序证明通常用于证明某些性质对所有自然数都成立。这种证明方法的一般步骤如下:

  1. 假设存在一个自然数使得给定的性质不成立,并形成一个这样的自然数的集合。
  2. 根据良序原理,这个集合有一个最小元。我们将这个最小元记作 n。
  3. 通过逻辑推理,证明如果 n-1(或者比 n 小的其他自然数)满足给定的性质,那么 n 也应该满足。这通常涉及到一些对 n 的操作,比如分解 n,或者考虑 n 和其他数的关系。
  4. 这就产生了一个矛盾,因为我们假设 n 是不满足给定性质的自然数集合中的最小元。这个矛盾表明我们的初始假设(存在一个不满足给定性质的自然数)是错误的。
  5. 因此,我们得出结论:给定的性质对所有自然数都成立。

这种证明方法有时被称为最小反例法(method of least counterexample),因为它的思路是假设存在一个最小的反例,然后通过推理产生矛盾,从而证明这个反例实际上是不存在的。

3、质因数分解定理

质因数分解定理(Prime Factorization Theorem)又称为唯一分解定理(Unique Factorization Theorem)或算术基本定理(Fundamental Theorem of Arithmetic),这个定理的主要内容是:

  • 每一个大于1的整数都可以唯一地(忽略顺序)分解为质数的乘积。 注:质数本身可以看作是只有一个质因数的特殊情况。
  • 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积。 注:我觉得这个表述更为合理。

这个定理的两部分内容都非常重要:

  1. 存在性:每一个大于1的整数都可以写成质数的乘积。例如,数字20可以写成225,这三个因数都是质数。
  2. 唯一性:这种分解是唯一的,除了因数的顺序。也就是说,如果我们有两种不同的方式将一个数分解为质数的乘积,那么这两种方式实际上是相同的,只是因数的顺序不同。例如,20可以写成225,也可以写成522,但这两种分解实际上是相同的。

这个定理是数论的基石,因为它告诉我们质数在整数中的特殊地位:它们是所有其他整数的"构建块"。这个定理也有许多重要的应用,例如在密码学中,质因数分解的难度是许多公钥密码系统安全性的基础,如RSA算法。

可以使用良序原理来证明算术基本定理的存在性部分,即每一个大于1的整数都可以写成质数的乘积。
以下是证明过程:

  • 假设存在一个不能被分解为质数乘积的最小正整数n。根据良序原理,这样的数必定存在。首先,n不能是一个质数,因为每个质数都可以被视为只有一个质因数的乘积,这与我们的假设矛盾(如果是第2种表述就不用考虑这种情况)。
  • 因此,n必须是一个合数,所以存在两个整数a和b,使得1 < a < n,1 < b < n,并且n = a * b。由于a和b都小于n,根据我们的假设,它们都可以被分解为质数的乘积。然后,我们可以将这两个质数乘积相乘,得到n的一个质数乘积,这与我们的假设矛盾。
  • 因此,我们的原始假设(存在一个不能被分解为质数乘积的最小正整数)必须是错误的。所以,我们得出结论:每一个大于1的整数都可以写成质数的乘积。

这就完成了算术基本定理存在性部分的证明。唯一性部分的证明则需要使用到素数的定义和性质,这部分证明相对复杂一些,涉及到一些更深入的数论知识。

4、良序集合

良序集合(Well-Ordered Set)是集合论中的一个重要概念。
一个集合如果满足以下两个条件,就被称为良序集合:

  1. 集合中的任何两个元素都可以比较大小,即对于集合中的任意两个元素a和b,要么a小于等于b,要么b小于等于a。这个性质也叫做全序(total order)或者线性顺序(linear order)。
  2. 集合中的任何非空子集都有最小元素。这个性质也叫做良序性质(well-ordering property)。

可以对良序集合中的良序性进行扩展,将大小关系替换为其他某种关系,数学描述如下:

设S是一个集合,如果存在一个关系R满足以下两个条件,那么我们就说(S, R)是一个良序集合:

  1. 对于所有的a, b ∈ S,要么aRb,要么bRa。(全序性质)
  2. 对于所有的非空子集T ⊆ S,存在一个元素m ∈ T,对于所有的t ∈ T,都有mRt。(良序性质)

良序性在计算机科学中有多种应用,特别是在理论计算机科学和算法设计中。以下是一些主要的应用:

  • 归纳证明:良序性是数学归纳法的基础。在计算机科学中,我们经常使用归纳法来证明算法的正确性或者复杂性。例如,我们可能需要证明一个递归算法对所有输入都能正确工作,或者证明一个算法的时间复杂性是O(n log n)。
  • 数据结构设计:良序性也在某些数据结构的设计中起到关键作用。例如,二叉搜索树就是一个良序集合的例子,其中的元素按照某种特定的顺序被组织起来,这使得我们可以在对数时间内完成搜索、插入和删除操作。
  • 算法设计:良序性在某些算法设计中也起到关键作用。例如,贪心算法通常需要对输入进行排序,这就需要输入是一个良序集合。另一个例子是动态规划,其中的子问题通常需要按照某种特定的顺序来解决,这也需要良序性。
  • 形式化验证:在形式化验证中,良序性被用来证明系统的终止性。如果我们可以将系统的状态空间映射到一个良序集合,那么我们就可以证明系统最终会达到一个稳定的状态。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值