【具体数学 Concrete Mathematics】1.1 递归问题 导入
本节(1.1、1.1.1-1.1.3)主要围绕《具体数学》第一章 递归问题(Recurrent Problems)讲义部分的三个问题展开,分别是汉诺塔、平面上的直线以及约瑟夫问题。下面简单介绍一下递归问题和数学归纳法,做一个简单的导入,具体的递归应用可以在三个例子(1.1.1-1.1.3)中获得更好的体现:
1. 递归问题:
递归问题的主要思想是将大的问题分解成小的问题,然后只要提供最小的问题的具体解决方案即可。这样实际上递归方案并没有给出原问题的具体解决方案,而是给了一个解决问题的步骤。
一个典型的例子是《线性代数》中计算行列式的值D=∑j=1nAijD=\sum_{j=1}^n A_{ij}D=∑j=1nAij。这里就是将计算nnn维行列式DDD分解成nnn个n−1n-1n−1维行列式AijA_{ij}Aij的计算。最后可以展开到111维行列式∣x∣=x|x|=x∣x∣=x。整个过程中直接计算的只有最小的问题模块——111维行列式,其他维度都是直接根据递归方案来计算的。
通过这个小例子我们也可以看到递归方案只有到最后一步才真正解决具体问题,此前我们都假设更小的问题答案已知,如D=∑j=1nAijD=\sum_{j=1}^n A_{ij}D=∑j=1nAij中,我们假设AijA_{ij}Aij都已知,但是其实