【问题标题】:A heuristic function for 3 Water Jug [closed]3个水壶的启发式函数[关闭]
【发布时间】:2012-10-03 09:33:23
【问题描述】:

我有问题要问你们。

我是人工智能的新手。我想使用 A* 搜索解决水壶问题(3 个水壶 - 3 升、5 升、9 升 - 试图获得 7 升)。

我需要一个启发式函数来实现解决方案,但我找不到一个好的启发式 f(n) 以便算法找到解决方案的最少步骤。

【问题讨论】:

  • 我在大学也学过人工智能课程,到目前为止你尝试过什么?
  • 我尝试了一个函数定义为 h(n) = (目标状态的水罐之和 (n) - 初始状态的总和 (n)) / 2.. 我无法成功。
  • 我打算将此标记为完全重复的关闭:stackoverflow.com/questions/1806880/…
  • 更大的问题是你知道如何在不使用启发式的情况下解决这个问题吗?
  • 是的,我使用 DFS 和 BFS 解决了这个问题。

标签: artificial-intelligence graph-algorithm heuristics


【解决方案1】:

所以给定你的参数,解决这个问题的非启发式方法是:

0) Fill the 9 liter jug  
1) Pour the 9 liter jug into the 5 liter jug, this leaves 4 liters in the 9 liter  
2) Fill the 3 liter jug  
3) Pour the 3 liter jug into the 9 liter jug and the problem is solved

因此,查看此图,您将得到一个图,其中的节点可以处于以下两种状态之一:PourFill。然后,您为每个节点分配一个权重,该权重代表您将从该节点获得的液体量,1,2,3,etc。不应该涉及到划分,你只需要让它“昂贵”来使用特定的操作。

【讨论】:

  • 所以你说使用这样的功能? f(n) = 某一状态下的液体数量之和(例如:for(2,3,5 = 2 + 3 + 5 = 10) + 操作量(例如:pour = 1, Fill = 1, Empty = 6 )
  • @Un_NatMenDim 这将是类似的东西,是的,倾倒、填充和清空操作被分配了一个值或权重。这些参数的最佳值目前超出了我的范围,尤其是对于动态输入。
  • 好的,谢谢朋友的回答..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多