Algorithm 给定初始条件,如何构造所有可能条件的图?
考虑一下流行的容器问题: 我们有三个容器,一个是10升,一个是7升,一个是4升。10升容器为空,7升和4升容器为满。列举通过将一个容器的内容物倒入另一个容器,直到a)倾倒容器为空或b)接收容器为满为止,您可以达到的方法(其他一些状态) 对于家庭作业(我已经完成了),我们应该讨论如何将这类问题解释为一个图,然后在图上运行什么算法来找到解决方案Algorithm 给定初始条件,如何构造所有可能条件的图?,algorithm,graph,permutation,Algorithm,Graph,Permutation,考虑一下流行的容器问题: 我们有三个容器,一个是10升,一个是7升,一个是4升。10升容器为空,7升和4升容器为满。列举通过将一个容器的内容物倒入另一个容器,直到a)倾倒容器为空或b)接收容器为满为止,您可以达到的方法(其他一些状态) 对于家庭作业(我已经完成了),我们应该讨论如何将这类问题解释为一个图,然后在图上运行什么算法来找到解决方案 我的问题是,在一定的初始条件下,我们如何生成三个容器所有可能状态的图表?对于一组给定的容器,可能有N个可能的状态,但我想象有M个不相交的状态,它们不可能从初
我的问题是,在一定的初始条件下,我们如何生成三个容器所有可能状态的图表?对于一组给定的容器,可能有N个可能的状态,但我想象有M个不相交的状态,它们不可能从初始条件达到。那么我们如何找到有效图的N-M个顶点,以及连接这些顶点的边呢?一个图有节点和边 节点表示一种状态。也就是说,所有容器的状态 边表示状态之间的(有效)转换 如果可以枚举更改状态的所有方法,则可以将节点的所有传出边枚举给其他节点 以容器为例: 状态:10升容器(内部一定量)、7升容器(内部一定量)和4升容器(内部一定量) 状态转换功能:
- 将4升容器中的内容物倒入7升容器中
- 将7升容器中的内容物倒入10升容器中
- 将4升容器中的内容物倒入10升容器中
- 将7升容器中的内容物倒入4升容器中
- 将10升容器中的内容物倒入4升容器中
- 将10升容器中的内容物倒入7升容器中
实际上,可以通过前面描述的BFS或DFS方法来生成稍后要搜索的图形。简单地说,创建一个描述初始条件的节点,然后对其应用所有状态转换函数以生成所有可访问的节点。将这些节点放在列表中(这些节点已生成但尚未展开)。对于列表中的每个元素,以相同的方式展开它。将已完成扩展的节点放在一个封闭列表中,这样您就可以确保不再尝试两次生成同一个节点。也许我不清楚,但我想知道如何生成要搜索的图,而不仅仅是搜索已经存在的图。或者你是说我们一个BFS或DFS就足以生成图形?@TyLarrabee一个BFS和DFS就足以生成图形。至少,可以从开始节点访问的所有节点的图形。正确。谢谢你的帮助!