Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 1 The “Russian Farmer” Problem Continued.

Similar presentations


Presentation on theme: "Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 1 The “Russian Farmer” Problem Continued."— Presentation transcript:

1 Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 1 The “Russian Farmer” Problem Continued

2 Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 2 (F,W,G,C) (l, l, l, l) (r, l, r, l) (l, l, r, l) (r, r, r, l) (r, l, r, r) (l, r, l, l) (l, l, l, r) (r, r, l, r) (l, r, l, r) (l, r, l, r) (r, r, r, r)

3 Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 3 ?- go( state(left,left,left,left), state(right,right,right,right) ). A solution is: The farmer takes the Goat from left of the river to right The farmer crosses the river from right to left The farmer takes the Wolf from left of the river to right The farmer takes the Goat from right of the river to left The farmer takes the cabbage from left of the river to right The farmer crosses the river from right to left The farmer takes the Goat from left of the river to right A solution is: The farmer takes the Goat from left of the river to right The farmer crosses the river from right to left The farmer takes the cabbage from left of the river to right The farmer takes the Goat from right of the river to left The farmer takes the Wolf from left of the river to right The farmer crosses the river from right to left The farmer takes the Goat from left of the river to right No

4 Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 4 path(Start, Target,Visited,Path):- move(Start, NextNode), % Generate a move not( unsafe(NextNode) ), % Check that it is safe not( member(NextNode,Visited) ), % Check for recurrence path(NextNode, Target,[NextNode |Visited],Path),!. path(Target, Target,Path,Path). % Reached the goal go(Start,Target):- path(Start, Target,[Start],Path), write(‘A solution is:’),nl, write_path(Path).

5 Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 5 move(state(X,X,G,C),state(Y,Y,G,C)):-opposite(X,Y). % FARMER & WOLF unsafe( state(F,X,X,_) ):- opposite(F,X),!. % The wolf eats the goat Other unsafe clauses opposite(left,right). opposite(right,left). move(state(X,W,X,C),state(Y,W,Y,C)):-opposite(X,Y). % FARMER &GOAT move(state(X,W,G,X),state(Y,W,G,Y)):-opposite(X,Y). % FARMER & Cbg. move(state(X,W,G,C),state(Y,W,G,C)):-opposite(X,Y). % FARMER alone

6 Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 6 write_path( [] ). write_path( [H1,H2|T] ) :- write_move(H1,H2), write_path([H2|T]). write_move( state(X,X,G,C), state(Y,Y,G,C) ) :-!, write(‘The farmer takes the Wolf from the ‘), write(X),write(‘side of the river to ‘),write(Y),nl. write_move( state(X,W,G,C), state(Y,W,G,C) ) :-!, write(‘The farmer crosses the river from ‘), write(X),write(‘ to ‘),write(Y),nl.

7 Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 7 ?-go(X,Y). ?-go(state(left,left,left,left),Y).


Download ppt "Lecture 24 Farmer, Goat, Cabbage and Wolf Problem Continued 1 The “Russian Farmer” Problem Continued."

Similar presentations


Ads by Google