关于三壶水的问题:
我们有 3 个水壶,第一个水壶的容量为 12,第二个水壶的容量为 8,第三个水壶的容量为 3。初始状态为:(0,0,0) 后继函数为:
- 加:完全填满一个锯齿
- 倒入另一个:将一个水壶的内容物倒入第二个(直到第一个空或第二个完全装满)
- Empty 是:清空一个 jar 中的所有内容
目标状态是:(1,1,1)
我想画它的状态树。我自己做的,但我不确定它是否正确?
(0,0,0)
/ | \
/ | \
/ | \
(12,0,0) (0,8,0) (0,0,3)
(12,0,0) 的子节点是:(12,0,0),(12,8,0),(12,8,3),(0,8,3),(0,0, 3),(0,0,0),(9,8,3),(12,8,0),(4,8,3),(12,0,3),(12,5,3) ,(12,5,3),(12,8,0)
其中 (12,0,0),(0,0,0)==>因为它在根目录中,(12,8,0)==> 是失败节点,我们不展开它们。
我想如果我扩展(0,0,3),我将达到我的目标状态:节点(0,0,3)的孩子:(3,0,0),(0,3,0), (0,0,3),(1,1,1) (1,1,1) 是目标状态,对吗?
问:我理解正确吗?这些是状态和生成的树吗?