汉诺塔问题通项公式

2024-05-21 02:04

1. 汉诺塔问题通项公式

通项公式:H(k)=2^k-1。
汉诺塔游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。
操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
分析:对于这样一个问题,任何人都不可能直接写出移动盘子的每一步,但可以利用下面的方法来解决。设移动盘子数为n,为了将这n个盘子从A杆移动到C杆,可以做以下三步:
(1)以C盘为中介,从A杆将1至n-1号盘移至B杆;
(2)将A杆中剩下的第n号盘移至C杆;
(3)以A杆为中介;从B杆将1至n-1号盘移至C杆。
事实上,上述方法设盘子数为n, n可为任意数,该法同样适用于移动n-1个盘。因此,依据上法,可解决n -1个盘子从A杆移到B杆(第一步)或从B杆移到C杆(第三步)问题。现在,问题由移动n个盘子的操作转化为移动n-2个盘子的操作。
依据该原理,层层递推,即可将原问题转化为解决移动n -2、n -3… … 3、2,直到移动1个盘的操作,而移动一个盘的操作是可以直接完成的。

扩展资料:
目前关于汉诺塔问题解决的一个最主要的观点认为,完成汉诺塔任务时要对圆盘的移动顺序进行预先计划和回顾性计划活动。
当问题呈现后,在开始第一步的移动之前,大多数被试都会根据设定好的目标状态,对圆盘的移动顺序进行预先计划。以决定圆盘的移动顺序,但是这种计划能力的作用可能会受到问题难度的影响。
也有研究者认为,不是计划能力而是抑制能力参与汉诺塔问题的解决过程。为了把更大的圆盘先放置于指定位置,必须让较小的圆盘暂时偏离其最终应该放置的位置,但被试的自然反应总是“尽快”将圆盘移动到最终的目的地,如此反而导致错误,使移动步数更多,完成时间更长。

汉诺塔问题通项公式

2. 汉诺塔公式

2n次减一!!!!!!!!!!!!

3. 汉诺塔问题通项公式

通项公式:H(k)=2^k-1。
汉诺塔游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。
操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
分析:对于这样一个问题,任何人都不可能直接写出移动盘子的每一步,但可以利用下面的方法来解决。设移动盘子数为n,为了将这n个盘子从A杆移动到C杆,可以做以下三步:
(1)以C盘为中介,从A杆将1至n-1号盘移至B杆;
(2)将A杆中剩下的第n号盘移至C杆;
(3)以A杆为中介;从B杆将1至n-1号盘移至C杆。
事实上,上述方法设盘子数为n, n可为任意数,该法同样适用于移动n-1个盘。因此,依据上法,可解决n -1个盘子从A杆移到B杆(第一步)或从B杆移到C杆(第三步)问题。现在,问题由移动n个盘子的操作转化为移动n-2个盘子的操作。
依据该原理,层层递推,即可将原问题转化为解决移动n -2、n -3? ? 3、2,直到移动1个盘的操作,而移动一个盘的操作是可以直接完成的。

扩展资料:
目前关于汉诺塔问题解决的一个最主要的观点认为,完成汉诺塔任务时要对圆盘的移动顺序进行预先计划和回顾性计划活动。
当问题呈现后,在开始第一步的移动之前,大多数被试都会根据设定好的目标状态,对圆盘的移动顺序进行预先计划。以决定圆盘的移动顺序,但是这种计划能力的作用可能会受到问题难度的影响。
也有研究者认为,不是计划能力而是抑制能力参与汉诺塔问题的解决过程。为了把更大的圆盘先放置于指定位置,必须让较小的圆盘暂时偏离其最终应该放置的位置,但被试的自然反应总是“尽快”将圆盘移动到最终的目的地,如此反而导致错误,使移动步数更多,完成时间更长。

汉诺塔问题通项公式

4. 汉诺塔规律公式是什么?

汉诺塔规律公式是:H(k)=2^k-1。汉诺塔的规律是:二进制数的进位变化规律与汉诺塔问题的处理思路一样。
汉诺塔,又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。

大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。
印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。
僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。
不管这个传说的可信度有多大,如果考虑一下把64片金片,由一根针上移到另一根针上,并且始终保持上小下大的顺序。

5. 汉诺塔问题!!!


汉诺塔问题!!!

6. 汉诺塔规则是什么?

汉诺塔游戏规则:
1、有三根相邻的柱子,标号为A,B,C。
2、A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘。
3、现在把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。

汉诺塔的由来
法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。
印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

7. 汉诺塔问题

编程时,脑子里不要去思考递归过程(转来转去,会让人很头疼,一会儿就晕了)。
数列我想你是清楚的,所谓的递归,就是把an变成a(n-1)去处理问题,处理一个通项式是相同的方法,只要给出a1(或者还有a2),这是递归结束的条件。
假设汉诺塔A B C三根针,只考虑移动最底下的盘子时,
如果只有一个盘子,就是直接A->C
如果只有两个盘子,就是A->B  然后A->C
如果只有三个盘子,就是A->C  A->B  C->B  然后A->C
可以发现,
(1)如果想移动最底下的盘子,则,先要上面n-1个移动到B盘,即可。
(2)在移动B盘上的n-1中的最底下的盘子时,则改变一下源针和中间针即可,即:把B看成A A看成B
(3)接下来,在移动A盘上的n-2中的最底下的盘子时,则恢复源针和中间针即可,即:A还是A,B还是B。本步与第一步相同,即1 2两步是在n>1时,的循环。
(4)当只有一个盘子时(n=1),就做“源针”到“目标针”即可,结束本次递归。
因此,递归程序只有以上三步,即可实现汉诺塔的移动。

汉诺塔问题

8. 汉诺塔问题

汉诺塔问题是典型的递归问题,解题的关键就是将这个问题逐步进行分解,直到最后剩1个盘子的时候一步完成。
基本上,汉诺塔可以可以用下面的方式实现:
void move(char x, char y)  {       cout"<<y<<endl;  }  void hanoi(int n,char one,char two,char three)  {       if (n == 1)       {             move(one,three);       }       else       {           hanoi(n-1,one,three,two);           move(one,three);           hanoi(n-1,two,one,three);       }  } 
  
当只剩下1个盘子的时候,把最后一个盘子从起始柱子移动到目标柱子。就是程序中n==1时候的分支;
当剩下的盘子很多的时候,就将整个过程分解:
1、把N-1个盘子从起点柱子移动到(当前)没有任何盘子的过度柱子;
2、把最后一个盘子从起点柱子移动到目标柱子;
3、把N-1个盘子从过度柱子移动到目标柱子(模仿1和2的操作方法来实现)。
这就是else分支所要进行的操作。
  因此,这里面用到了2次递归,一次是操作1,一次是操作3。