递归问题
Posted suwakow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归问题相关的知识,希望对你有一定的参考价值。
1.河内塔问题
- 数学归纳法:①对最小规模时成立;②设对\(n=[1,k]\)时成立,证明对于\(n=k+1\)时也成立。于是问题对任意规模都成立。
它可以与递归的模型天然地结合在一起。
实际问题->递归式->数学归纳法->通项公式
- 通过处理递归式的某些项会使得数学归纳更加简单。
2.平面上的直线
展开递归式是求通项公式的好方法。
对于不易直接分析的实例,可以讨论“损失”了多少。
3.JOJO问题
- 对于一个递归式,把它的部分常量替换为未知数,希望求出它的通项公式中每个未知数的系数。
此时可以把每个未知数取一些特殊值,代入递归式中。
更加通用的方法是找一些简单的函数,令它满足递归式,借此列出方程,解出未知数的值。通过这种方式寻找未知数系数之间的联系,从而列出关于未知数系数的方程。
注意到有多少独立的未知数,我们就需要列出多少组方程。
同时,解除递归式中一些既定的限制(进制等),可以将递归式推广到更为一般的情况。
4.热身题
问题出在“类似的”,数学归纳法只能假设\([1,k]\)内的马是相同颜色,如果要推广到\([2,k+1]\)的情况,则需要证明\(k+1\)号马与前面颜色均相同。
发现对规模为\(k\)的问题,流程如下:①将\([1,k-1]\)移动到\(B\)柱;②将\(k\)移动到中间柱;③将[1,k-1]移动到\(A\)柱;④将\(k\)移动到\(B\)柱;⑤将\([1,k-1]\)移动到\(B\)柱。
设\(T_n\)为将规模为\(n\)的问题解决所需的最小步数,由此获得递归式:
\[T_1=2\]
\[T_n=6T_n-1+2,n\geq 2\]
设\(G_n=T_n+\frac25\),则\(G_1=\frac125,G_n=6(T_n-1+\frac25)=6G_n-1=\frac256^n\)。
即\(T_n=\frac25(6^n-1)\)。
证明:\(T_n\)一定是整数,即\(5|(6^n-1)\)。
对于\(n=1\)的情况,显然成立。
假设对于\([1,n-1]\)均成立。\(6^n-1=6\times6^n-1-1=(6-1)\times 6^n-1+6^ n-1-1\),由于对于\(n-1\)时成立,此处也成立。
显然\(A,B\)柱上会有此类正确摆放,只需考虑中间柱。发现在③过程时,\(n\)必然在中间柱,而\([1,n-1]\)从\(B\)到\(A\),必然整体经过中间柱。
设\(T_n\)为原规则下的最小步数,\(G_n\)是将\(n\)个始末位置不确定的圆盘排好的最小步数。问题转化为对于任意始末位置,证明\(G_n\leq T_n\)。
对于\(n=1\)的情况,若始末位置在同一根石柱,则\(G_1=0<T_1\),否则\(G_1=T-1\),结论成立。
假设对于\([1,n-1]\)均成立。对于第\(n\)个圆盘,设始位置为\(x\),末位置为\(y\),中间位置为\(z\)。若\(x=y\),则\(G_n=G_n-1\leq T_n-1<T_n\)。否则,需要执行如下操作:①\([1,n-1]\)移动到\(z\),设此操作花费\(G_n-1,0\);②将\(n\)移动到\(y\);③将\([1,n-1]\)移动到对应末位置,设此操作花费\(G_n-1,1\)。此时\(G_n=G_n-1,0+G_n-1,1+1\leq 2T_n-1+1=T_n\)。
由数学归纳法得证。
以上是关于递归问题的主要内容,如果未能解决你的问题,请参考以下文章