Java 河内塔问题-线性规划
我在做一个关于规划河内塔的作业,使用线性规划,我不允许使用任何递归函数。问题是,我的解决方案并不像递归方法那样是最优的。它会产生多余的步骤。例如: 我有3根分别命名为A、B、C的杆,有2个名为1、2的盘(盘1比盘2小,盘1在盘2上),然后有2种方法将所有盘从杆A移动到杆C,使用杆B作为中间杆,如下所示:Java 河内塔问题-线性规划,java,Java,我在做一个关于规划河内塔的作业,使用线性规划,我不允许使用任何递归函数。问题是,我的解决方案并不像递归方法那样是最优的。它会产生多余的步骤。例如: 我有3根分别命名为A、B、C的杆,有2个名为1、2的盘(盘1比盘2小,盘1在盘2上),然后有2种方法将所有盘从杆A移动到杆C,使用杆B作为中间杆,如下所示: (与递归算法的输出类似) 将盘1移到连杆B上 将盘2移到连杆C上 将盘1移到连杆C上 (非最优使用规划) 将盘1移到连杆C上 将盘2移到连杆B上 将盘1移到连杆A上 将盘2移到连杆C上 将
- 将盘1移到连杆B上
- 将盘2移到连杆C上
- 将盘1移到连杆C上
- 将盘1移到连杆C上
- 将盘2移到连杆B上
- 将盘1移到连杆A上
- 将盘2移到连杆C上
- 将盘1移到连杆C上
那么,我如何(更精确地说:一种可编程的算法)知道磁盘1必须首先移动到棒B,而不是移动到磁盘C才能获得最佳解决方案呢?我非常感谢你的帮助。谢谢 关键在于知道需要移动多少磁盘: 如果堆栈中有偶数个磁盘,则从“备用”磁棒开始
如果堆栈中的磁盘数量为奇数,则从“目标”棒开始我想想象一下棘轮怪胎的回答 尺寸5的示例 尺寸6的示例 更大的尺寸也是如此 其他细节
- 任务是编写算法实现
- 共有3根棒
。您的出发点取决于以下两点:{初始棒、备用棒、目标棒}
,则从备用棒开始如果n%2==0
,则从目标棒开始如果n%2==1
- 需要2^n-1移动,才能将整个堆栈移动到目标堆栈