Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
hi there
we have 3 water jugs that the capacity of first jug is 12 and capacity of second jug is 8 and capacity of third jug is 3.
the initial state is: (0,0,0)
the successor function is:
1) add e i
2)pour to another one: [12,x,y],[x,8,z],[x,y,3]
3)empty is: [0,y,z],[x,0,z],[x,y,0]
and the goal state is: (1,1,1)
-------------
now i want to draw its state tree. i did it by myself but i'm not really sure that it is right or not?
                          (0,0,0)
                     /       |      \
                (12,0,0)  (0,8,0)   (0,0,3)
now the child node for(12,0,0) is: (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)
 
which (12,0,0),(0,0,0)==>because it is in root,(12,8,0)==>cause same
are fail node and we don't expand them.
 

i think if i expand (0,0,3), i will reach to my goal state:
the child for the node (0,0,3): (3,0,0),(0,3,0),(0,0,3),(1,1,1) (1,1,1) is the goal state am i right?
 
[edit]Spurious bold removed, Code block added - OriginalGriff[/edit]
Posted 12-Dec-12 23:22pm
Edited 13-Dec-12 0:22am
v3
Comments
Matt T Heffron at 13-Dec-12 15:28pm
   
Can you describe the problem in a little more detail?
Specifically, a bit more about the successor function:
"1) add e i" is pretty vague (I don't think you mean that "e" is the base of the natural log, or "i" is sqrt(-1))
"2)pour to another one: ..." still unclear
 
ALSO, is your actual question about solving the problem or drawing the state tree?

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Your problem statement is very messy and difficult to follow.
 
My understanding and formalization are as follows:
 
Assume you are in state [x, y, z]. Here are the possible transitions:
 
Fill 12 -> [12, y, z]
Fill 8 -> [x, 8, z]
Fill 3 -> [x, y, 3]
 
Empty 12 -> [0, y, z]
Empty 8 -> [x, 0, z]
Empty 3 -> [x, y, 0]
 
12 to 8 -> [x + y - 8, 8, z] or [0, x + y, z], depending on x + y >< 8
8 to 12 -> [12, x + y - 12, z] or [x + y, 0, z], depending on x + y >< 12
 
12 to 3 -> [x + z - 3, y, 3] or [0, y, x + z],  depending on x + z >< 3
3 to 12 -> [12, y, x + z - 12] or [x + z, y, 0],  depending on x + z >< 12
 
8 to 3 -> [x, y + z - 3, 3] or [x, 0, y + z], depending on y + z >< 3
3 to 8 -> [x, 8, y + z - 8] or [x, y + z, 0],  depending on y + z >< 8
 
There are potentially 13 x 9 x 4 different states (maybe not all achievable). You should consider a state graph rather than a state tree, given that there can be loops.
 
You can build the complete graph, starting from state [0, 0, 0] and trying all 12 transitions recursively, depth first or breadth first.
  Permalink  
v7

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 350
1 Jochen Arndt 190
2 Richard MacCutchan 135
3 Sergey Alexandrovich Kryukov 120
4 DamithSL 95
0 OriginalGriff 6,045
1 DamithSL 4,611
2 Maciej Los 4,087
3 Kornfeld Eliyahu Peter 3,480
4 Sergey Alexandrovich Kryukov 3,310


Advertise | Privacy | Mobile
Web03 | 2.8.141220.1 | Last Updated 14 Dec 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100