Presentation is loading. Please wait.

Presentation is loading. Please wait.

8puzzle in CP.

Similar presentations


Presentation on theme: "8puzzle in CP."— Presentation transcript:

1 8puzzle in CP

2 1 2 3 1 2 3 4 5 7 5 6 7 8 4 6 8

3 1 4 2 7 6 3 5 8 1 4 2 7 6 3 5 8 1 4 6 2 7 3 5 8 1 4 6 2 7 3 5 8

4 Representation 1 4 6 2 7 3 5 8 1 4 7 2 5 8 3 6 9 1 4 7 2 5 8 3 6 9

5 Representation 1 4 6 2 7 3 5 8 1 4 2 7 6 3 5 8 1 4 2 7 6 3 5 8 1 4 6 2 7 3 5 8 1 4 6 2 7 3 5 8

6 1 4 6 2 7 3 5 8 Representation of states
To get from initial state to a goal state we make a number of moves and moves take us to new states If we have a plan that takes us from I to G in n steps we will have n-1 states between I and G Represent a state as 9 constrained integer variables S[i] has a value [0..8], the tile in position i the value 0 corresponds to the blank tile Therefore for a plan, let’s say of 3 steps from I to G we will have states S[1..4][1..9] S[1][5] is the tile in the 5th position of the 1st state (and is 0 in our example)

7 1 4 6 2 7 3 5 8 1 4 7 2 5 8 3 6 9 Representation of moves
There are 24 possible moves from a state position of blank (zero) possible moves (swaps) move numbers (1,2),(1,4) ,2 (2,1),(2,3),(2,5) ,4,5 (3,2),(3,6) ,7 (4,1),(4,5),(4,7) ,9,10 (5,2),(5,4),(5,6),(5,8) ,12,13,14, (6,3),(6,5),(6,9) ,16,17 (7,4),(7,8) ,19 (8,5),(8,7),(8,9) ,21,22 (9,6),(9,8) ,24 We have n-1 move variables, where move[i] has a domain [1..24]

8 Representation of moves & states 1 4 6 2 7 3 5 8 1 4 6 2 7 3 5 8 move[1] = 14 1 4 6 2 7 3 5 8 move[2] = 21 1 4 2 7 6 3 5 8 move[1] = 18 1 4 2 7 6 3 5 8 position of blank (zero) possible moves (swaps) move numbers (1,2),(1,4) ,2 (2,1),(2,3),(2,5) ,4,5 (3,2),(3,6) ,7 (4,1),(4,5),(4,7) ,9,10 (5,2),(5,4),(5,6),(5,8) ,12,13,14, (6,3),(6,5),(6,9) ,16,17 (7,4),(7,8) ,19 (8,5),(8,7),(8,9) ,21,22 (9,6),(9,8) ,24

9 Constraints on a move 1 4 6 2 7 3 5 8 If we are in state 1 and the blank tile is in position 1 and we make move 1 (swap(1,2)) then in state 2 the blank is in position 2 and what is in position 2 of in state 1 is now in position 1 in state 2

10 Constraints on a move 1 4 6 2 7 3 5 8

11 Constraints on a move 1 4 6 2 7 3 5 8 But … when we make a move, only the things that we move change! This is the frame problem (GOF AI) … and so on

12 Constraints on a move 1 4 6 2 7 3 5 8 We also need to say that if the blank tile (zero) is not in a specific position we cannot make a specified move … and so on

13 1 4 6 2 7 3 5 8 Solving The move variables are our decision variables
Find values for the move variables that satisfy the constraints This will find a plan of n-1 steps if one exists

14 1 4 6 2 7 3 5 8 Bi-directional search
Search from I to G and from G to I simultaneously Replace the variables move[i] introduce fmove[i] the forwards move from state i to state i+1 introduce bmove[i] the backward move from state i + 1 to I post all the constraints we hadd before in both directions! add the following constriants I call this a bridge between backward & forward moves We can now search in the following order fmove[1],bmove[n-1],fmove[2],bmove[n-2] ...

15 1 4 6 2 7 3 5 8 Propagation through plans
There is little if any propagation through plans

16 1 4 6 2 7 3 5 8 Propagation through plans
There is little if any propagation through plans If in state i I cannot move the blank tile into position x then in state i+1 I cannot make a move out of position x! Example: If at time T I cannot put the bunch of flowers on the table then at time T+1 I cannot move the bunch of flowers from the table

17 1 4 6 2 7 3 5 8 Propagation through plans
If in state i I cannot move the blank tile into position x then in state i+1 I cannot make a move out of position x! I call this a rippling constraint position of blank (zero) possible moves (swaps) move numbers (1,2),(1,4) ,2 (2,1),(2,3),(2,5) ,4,5 (3,2),(3,6) ,7 (4,1),(4,5),(4,7) ,9,10 (5,2),(5,4),(5,6),(5,8) ,12,13,14, (6,3),(6,5),(6,9) ,16,17 (7,4),(7,8) ,19 (8,5),(8,7),(8,9) ,21,22 (9,6),(9,8) ,24

18 1 4 6 2 7 3 5 8 My problems with planning
what happens if we cannot find a plan in n-1 steps? Build a bigger model … or add another layer to the model like iterative dfs could we have a null move, i.e. a move[i] = 0 yes, but we have to condition the rippling constraint our rippling constraint can generate a contradiction otherwise! the model is BIG I’m working on something neater

19 That’s all for now folks


Download ppt "8puzzle in CP."

Similar presentations


Ads by Google