2012-10-12 35 views
1

我有問題要問你們。3水壺的啓發式功能

我是人工智能的新手。我想用A *搜索解決水罐問題(3罐 - 3升,5升,9升 - 試圖獲得7升)。

我需要一個啓發函數來實現解決方案,但我不能找到一個很好的啓發F(N),使得算法會發現至少步驟來解決。

+0

我在大學裏也參加了一個AI課程,到目前爲止你有什麼嘗試? – Woot4Moo

+0

我試過一個函數定義爲h(n)=(目標狀態壺的總和(n) - 初始狀態總和(n))/ 2 ..我無法成功。 –

+0

我打算將此作爲收盤精確複製:http://stackoverflow.com/questions/1806880/water-jug-problem-in-die-hard-3-into-a-graph – Woot4Moo

回答

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。應該不涉及任何部門,您只需要使其使用特定的操作「昂貴」即可。

+0

所以你說使用這樣的功能? (例如:(2,3,5 = 2 + 3 + 5 = 10)+ 操作量(例如:pour = 1,Fill = 1 ,空= 6) –

+0

@Un_NatMenDim這將是類似的規定是,在傾,填充和空操作分配一個值或重量。什麼這些參數的最佳值是超出我的那一刻特別是與動態投入。 – Woot4Moo

+0

好了,感謝您的回答朋友。 –