Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.