分类: C/C++
2013-11-14 22:52:42
原文地址:[读书笔记]基于归纳的算法设计——算法引论 作者:fancyzg
———G.w.布莱尼兹(1646-1716)
基于归纳的算法思想类似于数学归纳法,方法要保证两点:第一、解决问题的一个小规模事例是可能的(基础事例),第二、每个问题的解答都可由更小规模问题的解答构造出来(归纳步骤)。
1、如果原始问题的规模为n,假设问题规模为n-1时的求解释已知的,那么只要求出从n->n-1的过程即可。
2、如果所求的问题,有如下的性质:[P and Q](
需要注意:问题规模缩小时,必须保证子问题和原问题满足的条件必须一致;如果用更强的归纳,所使用的条件Q要证明。
问题 给定一串实数an,an-1,...,a1,a0,以及一个实数x,计算多项式Pn(x) = anxn + an-1xn-1 + ... + a1x +a0的值 |
问题 给定一个无向图G=(V,E)和一个整数k,试找出G的最大导出子图H=(U,F),其中H中所有顶点的度大于或等于k,或者说明不存在这样的子图。 |
归纳思路:
[全局观] 首先,考虑顶点数小于n的情况,如果n<=k,那么即使是完全图,也无法满足要求,如果n=k+1,只有完全图才能满足要求。(问题的终止条件)
[归纳假设] 然后,考虑n>k+1的情况,首先假设顶点数为n-1的情况是已知最大导出子图的。(假如n-1规模已知)
如果顶点的度
说明:1、处理顶点的
问题 给定一个集合A和一个从A到自身的映射f,寻找元素个数最多的一个子集S属于A,S满足:(1)f把S中的每一个元素映射到S中的另一个元素(即f把S映射到它自身),(2)S中没有两个元素映射到相同的元素(即f在S上是一对一函数)。 |
问题 给定一个n x n 连接矩阵,确定是否存在一个i,其满足在第i列的所有项(除了第ii项)都为1,并且第i行所有项(除了第ii项)都为0 |
问题 给定一颗n个节点的二叉树T,计算所有节点的平衡因子。 |