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|_]).