数学归纳法+递归问题之汉诺塔问题

数学归纳法:

数学归纳法有好几种形式,我们这里采用最常见的一种。其他形式,详见
PS:有时候维基百科+百度百科,对比的看,效果更好。维基更细,但百度百科可以帮助我们总结,例子也更中国思维,更容易理解。

当我们要证明自然数范围内的某种规律时,可采用这种方法:

  1. 当n=1时,规律成立。
  2. 假设n=k时,规律成立。如果可证明n=k+1时,规律依然成立。那么该规律在自然数范围内成立。
    (思想:层层递推)

递归问题:

什么时候使用递归?

  1. 定义是递归的:Fibonacci数列
  2. 数据结构是递归的:链表
  3. 问题解法是递归的:Hanoi塔

Hanoi problem:

特别感谢:https://www.cnblogs.com/xxNote/articles/3965739.html
以及严蔚敏老师的《数据结构》

假设圆盘的个数为n,圆盘编号从上到下依次为1,2,3,4,……n,我们开始从中找规律:

①当 n = 1 时,从 A 移动到 C 显然能够完成,设需要移动的次数是a1。
在这里插入图片描述

②当 n = 2 时,由①可知从把 1 号盘子从 A 移动到 B能够完成(B 和 C 是等效的)此时移动次数为a1。

在这里插入图片描述
之后把2号盘子移动到C上面此时移动次数为a1 + 1。

在这里插入图片描述

这时把1号盘子从B移动到C和①是等价的,

在这里插入图片描述

移动后总的移动次数是a2 = a1 + 1 + a1。

③当n = 3时,由②可知移动成下图的效果是可以实现的,

在这里插入图片描述

此时移动的次数是a2,接着把3号盘子移动到C上面

在这里插入图片描述

此时移动的次数是a2 + 1,这时把1和2号盘子移动到C上面(移动过程中3号盘子始终不会动)和②等效的,移动完成之后如下

在这里插入图片描述

移动的总次数是a3 = a2 + 1 + a2

④当n=4时,由③可知移动成下图的效果是可以实现的,

在这里插入图片描述

此时移动的次数是a3

把4号盘子从A移动到C

在这里插入图片描述

此时移动的次数是a3 + 1

接下来把123号盘子从B移动到C的过程又和③等效了移动之后如下

在这里插入图片描述

移动的总次数是a4 = a3 + 1 + a3

数学归纳法,首先,针对具体的问题,我们要归纳总结出规律。从上述例子中,我们可以得出规律:(n>1)

a n = a n 1 + 1 + a n 1 a_{n}=a_{n-1}+1+a_{n-1}
利用数学归纳法证明:

  1. 当k=1,2时, a 2 = a 1 + 1 + a 1 a_{2}=a_{1}+1+a_{1}
  2. 假设当n=k(k>1)时,等式成立: a k = a k 1 + 1 + a k 1 a_{k}=a_{k-1}+1+a_{k-1}

当n=k+1时:在k+1盘上有k层盘,由(2)和汉诺塔规则知,这k层盘可以挪到B,需要 a k a_{k} 步,k+1盘由A到C需要1步,K层盘由B到C同样需要 a k a_{k} 步。由此可知下式成立:
a k + 1 = a k + 1 + a k a_{k+1}=a_{k}+1+a_{k}
综上所述,对于Hanoi规律 a n = a n 1 + 1 + a n 1 a_{n}=a_{n-1}+1+a_{n-1} 在n>1的自然数范围内都成立。

此外 我们还可以移动n个盘子需要的搬运次数:
a n = a n 1 + 1 + a n 1 a_{n}=a_{n-1}+1+a_{n-1} 等价于 a n + 1 = 2 a n 1 + 1 a_{n}+1=2*(a_{n-1}+1) ,后式是一个等比数列,比为2.
即:等比数列通项公式为: a n + 1 = 2 ( n 1 ) a 1 + 1 = 2 n a_{n}+1=2^{(n-1)}*(a_{1}+1)=2^n
最后可得: a n = 2 n 1 a_{n}=2^n-1

代码:

// 分治递归思想,递归出口+调用规模变小但相同的处理方法
void Hanoi(int n ,char A, char B, charC)
{
		if(1==n) move(A, 1,C);
		else{
				Hanoi(n-1,A,B,C);   // else中的三句话,就是上边的$$a_{n}=a_{n-1}+1+a_{n-1}$$
				move(A,n,C);
				Hanoi(n-1,B,A,C);
		}
}

总结:

汉诺塔问题属于递归中解法是递归的问题类型,其搬运次数和盘子数量呈指数关系,当盘子数过多,问题需要步骤过多,花费的时间也就越多。

猜你喜欢

转载自blog.csdn.net/vc43vc/article/details/82775981