Algorithm 水壶问题在死硬3成图

Algorithm 水壶问题在死硬3成图,algorithm,graph,Algorithm,Graph,我不太确定如何实现这个 我需要根据电影《死硬汉3》中的水壶问题创建一个加权有向图() 我需要为所有可能的移动(填充、清空、倾倒)创建节点。之后我需要找到解决方案的最短路径。但是我很难创建这个图表。我正在使用自己创建的链表/节点 任何有助于创建此图的算法的帮助都将非常有用。谢谢 ex)给定3加仑,5加仑。在5加仑的罐子里装4加仑。我需要创建一个所有可能的移动到4加仑的图表。每个不同的加仑代表不同的节点 感恩节快乐=)大概每个节点都有两个正整数——3加仑罐中的加仑数,5加仑罐中的加仑数。弧,又名边(

我不太确定如何实现这个

我需要根据电影《死硬汉3》中的水壶问题创建一个加权有向图()

我需要为所有可能的移动(填充、清空、倾倒)创建节点。之后我需要找到解决方案的最短路径。但是我很难创建这个图表。我正在使用自己创建的链表/节点

任何有助于创建此图的算法的帮助都将非常有用。谢谢

ex)给定3加仑,5加仑。在5加仑的罐子里装4加仑。我需要创建一个所有可能的移动到4加仑的图表。每个不同的加仑代表不同的节点


感恩节快乐=)

大概每个节点都有两个正整数——3加仑罐中的加仑数,5加仑罐中的加仑数。弧,又名边(定向),是“移动”(并标有弧所代表的动作)——显然你手头也有一个未命名的水龙头,因为你总是可以填满任何一个水壶;你也可以随时清空一个罐子(所以你也有一个水槽);以此类推(其他移动都涉及将水从一加仑移动到另一加仑,直到第一加仑是空的,或者第二加仑是满的)。毫无疑问,最好避免生成合法但无用的弧线(“移动”),例如“填充”已经装满的水壶,或者撤销您刚做的移动(例如清空您刚从水龙头中填充的水壶),尽管添加这样的弧线只意味着多一点工作,而不是错误的解决方案


所以从(0,0)开始——两个罐子都满了,就像你在开始的时候一样。很明显,从这里开始的两个圆弧分别带您到(3,0)和(0,5)(从抽头填充一个或另一个),依此类推。希望这有帮助

在每个步骤中,您有6个不同的选项

1.A=满
2.B=满
3.A->B
4.B->A
5.A=0
6.B=0

给你。 将状态放在查找表中,并检查所有解决方案都不会重复。这也是停车条件

查找表的大小是A*B,而计算散列值只是A*vol(B)+B

在表[A*vol(B)+B]中,从您来自的巫婆位置保存。
在-1上初始化表元素(我假设您的语言中第一个索引是0)

谢谢,但我需要找出某种alg。这给了我所有可能的jug状态组合。第一步是(3,0)和(0,5)。但有并没有一个alg可以给我所有的节点呢?当然,只要做所有可能的移动来生成新的节点(保留一组已经生成的元组,即所有现有的节点)。当您从一个节点进行所有移动并生成新节点时,该节点将耗尽。当所有现有节点都耗尽时,就完成了(很容易跟踪另一组节点)。如果您能阅读Python(“可执行伪代码”,通常被称为),我可以在10分钟内向您展示所有细节,但我的文字描述应该足以让您在您选择的任何伪代码中转录(或者根据您自己做作业的需要,对吧?!-)。