具有深度优先搜索功能的水壶>> [

问题描述 投票:0回答:1
我有这个水壶问题要解决,我必须通过深度优先算法来解决。我有两个水壶,一个4加仑和一个3加仑,都没有标记。您如何才能准确地将2加仑的水倒入4加仑的水罐中?最初两个水罐都是空的。

规则是:

capacity(C,JC), for C equal j1 or j2; jugs(C1,C2), where C1 and C2 give the current contents of the jugs

初始初始事实:水壶(0,0)目标:水罐(2,0)或水罐(0,2)

initial_state(jugs,jugs(0,0)). final_state(jugs(2,C2)). final_state(jugs(C1,2)). transition(jugs(C1,C2),fill(j1)). transition(jugs(C1,C2),fill(j2)). transition(jugs(C1,C2),empty(j1)) :- C1 > 0. transition(jugs(C1,C2),empty(j2)) :- C2 > 0. transition(jugs(C1,C2),transfer(j2,j1)). transition(jugs(C1,C2),transfer(j1,j2)). update(jugs(C1,C2),empty(j1),jugs(0,C2)). update(jugs(C1,C2),empty(j2),jugs(C1,0)). update(jugs(C1,C2),fill(j1),jugs(Capacity,C2)) :- capacity(j1,Capacity). update(jugs(C1,C2),fill(j2),jugs(C1,Capacity)) :- capacity(j2,Capacity). update(jugs(C1,C2),transfer(j2,j1),jugs(W1,W2)) :- capacity(j1,Capacity), Water is C1 + C2, Overhang is Water - Capacity , adapt(Water,Overhang,W1,W2). update(jugs(C1,C2),transfer(j1,j2),jugs(W1,W2)) :- capacity(j2,Capacity), Water is C1 + C2, Overhang is Water - Capacity , adapt(Water,Overhang,W2,W1). adapt(Water,Overhang,Water,0) :- Overhang =< 0. adapt(Water,Overhang,C,Overhang) :- Overhang > 0, C is Water - Overhang. legal(jugs(C1,C2)). capacity(j1,4). capacity(j2,3).

谢谢你!

我有这个水壶问题要解决,我必须通过深度优先算法来解决。我有两个水壶,一个4加仑和一个3加仑,都没有标记。您怎么能精确得到2加仑...

prolog depth-first-search water-jug-problem
1个回答
0
投票
[您填充5加仑的水罐,然后将其倒入3加仑的水罐中,直到装满为止(在5加仑的水罐中剩下2加仑)。您将3加仑的水罐完全倒出。然后,将2加仑的水从5加仑的水罐倒入3加仑的水罐。
© www.soinside.com 2019 - 2024. All rights reserved.