动态规化 - 汉诺塔
汉诺塔问题(tower of Hanoi)是心理学实验研究常用的任务之一。该问题的主要材料包括三根高度相同的柱子和一些大小及颜色不同的圆盘,三根柱子分别为起始柱A、辅助柱B及目标柱C。在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

动态规化子问题分解:设移动盘子数为n,为了将这n个盘子从A杆移动到C杆,可以做以下三步:
- 以C盘为中介,从A杆将1至n-1号盘移至B杆;
- 将A杆中剩下的第n号盘移至C杆;
- 以A杆为中介;从B杆将1至n-1号盘移至C杆。
# -*- coding: utf-8 -*-
def hanoi(n, path={
"start": "A", "transfer": "B",
本文介绍了汉诺塔问题,这是一个心理学实验中常见的任务。问题涉及到三根柱子和多个大小不一的圆盘,目标是将所有圆盘从起始柱按照大小顺序移动到目标柱,每次只能移动一个盘子且大盘必须在小盘下方。动态规化通过将问题分解为子问题来解决,即先将一部分盘子移到辅助柱,然后移动最大盘,最后再将剩余盘子借助起始柱移到目标柱。
最低0.47元/天 解锁文章
2080

被折叠的 条评论
为什么被折叠?



