34 lines
		
	
	
		
			675 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			675 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 
 | ||
|  | :- object(depth_first(Bound), | ||
|  | 	instantiates(blind_search(Bound))). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	:- info([ | ||
|  | 		version is 1.0, | ||
|  | 		authors is 'Paulo Moura', | ||
|  | 		date is 1998/3/23, | ||
|  | 		comment is 'Depth first state space search strategy.', | ||
|  | 		parnames is ['Bound']]). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	:- uses(list). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	search(Space, State, Bound, Solution) :- | ||
|  | 		depth(Space, State, Bound, [], Path), | ||
|  | 		list::reverse(Path, Solution). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	depth(Space, State, _, Path, [State| Path]) :- | ||
|  | 		Space::goal_state(State). | ||
|  | 
 | ||
|  | 	depth(Space, State, Bound, Path, Solution) :- | ||
|  | 		Bound > 0, | ||
|  | 		Space::next_state(State, Next), | ||
|  | 		\+ list::member(Next, [State| Path]), | ||
|  | 		Bound2 is Bound - 1, | ||
|  | 		depth(Space, Next, Bound2, [State| Path], Solution). | ||
|  | 
 | ||
|  | 
 | ||
|  | :- end_object. |