Búsqueda en Prolog

busca(NodoI,NodoF) :- 
      busca_aux([NodoI],NodoF). 

busca_aux([NodoF|_],NodoF). 
busca_aux(Agenda,NodoF) :- 
      nva_agenda(Agenda,NAgenda), 
      busca_aux(NAgenda,NodoF). 

% depth-first
nva_agenda([N1|Agenda],NAgenda) :- 
      expande(N1,Nodos), 
      append(Nodos,Agenda,NAgenda).

% breadth-first
nva_agenda([N1|Agenda],NAgenda) :- 
      expande(N1,Nodos), 
      append(Agenda,Nodos,NAgenda).

% best first 
nva_agenda([N1|Agenda],NAgenda) :- 
      expande(N1,Nodos), 
      append(Nodos,Agenda,AgendaInt), 
      sort(AgendaInt,NAgenda).

% hill-climbing
nva_agenda([N1|Agenda],[Mejor]) :- 
      expande(N1,Nodos), 
      append(Nodos,Agenda,AgendaInt), 
      sort(AgendaInt,[Mejor|_]).



Eduardo Morales 2009-08-25