第一章 递归问题
汉诺塔
另T(n)为移动最少次数
则T(n) = T(n-1)[将n-1个盘移到一个柱] + T(n-1)[将剩下的n-1个盘移动到一个柱] + 1 [将大盘移动到最后一个位置]
直线分割问题
画图看看就知道了,第n条直线能和前面n-1个直线相交,然后多n个空间出来
拓展问题:用折线“V”代替直线
对于每对折线损失2个空间,因此
约瑟夫环问题
2n的情况下,J(2n) = 2J(n)-1
2n+1的情况下,J(2n+1) = 2J(n)-1
画图理解,在2n情况下,id = 3要被转换成 id = 2来表示下一轮(下一轮的id从1,3,5,7,2n-1映射成了1,2,3,4...n-1,n),所以J(2n) = 2J(n)-1;2n+1的情况同理,如果是程序设计,直接记忆化搜索或者直推就好
成套方法求解
已知:
则有:
假设有
此时我们的任务就变成了求解A(n),B(n),C(n)
让R(n) = 三个值,求出三个等式,三个三元一次方程组解出A(n),B(n),C(n)
第二章 和式
记号:,还有一些简化的写法,,P(k)代表是否满足给定条件,结果为false(0) 或者 true(1)。只是写法问题,用的顺手就好
接下来的方法解决一个问题,如果在已知递归式的情况下,求解表达式呢?答案是先转化成和式
这里针对形如 的递归式形式
两边同乘 则有:
,并且要求
根据(1)式子,通过枚举n=[1,n] 等式相乘,则有
另,则有
所以有
以上求表达式在快排求解复杂度中的运用
已知代表n个数快排的复杂度
另 n=n-1,则有
两式做差,得到
则有
利用和式三大定律求解和式
例题1:求解
总结:变量替代后,式子相加
例题2:求解几何级数
总结:加上后一项,凑出S,最后移项化简
多重求和
一般性求和方法
求解
方法0:查找公式。如果知道序列的前几个项,可以在OEIS上查
方法1:猜答案+数学归纳法验证,不建议,比较看运气猜
方法2:扰动法。直接加(n+1)^2得不到有效的结果,但是会发现有抵消的部分。尝试(n+1)^3,展开项中就存在S_n
方法3:有限微积分,下一节
方法4:生成函数,以后的章节会讲