/********************************************************************

(1)--(2) (8)

= = /

(4)--(3)--(5)--(6)

= / \ =

(10) (9) (7)

------------------------------------------------------------------------

PROPUESTO

=========

(1)--(2) (8)

= =

(4)--(3) (5)--(6)

= / =

(10) (9) (7)

 

 

*******************************************************************/

DOMAINS

i=integer

li=i*

DATABASE

num(i)

PREDICATES

hecho1(i,i)

busca_hecho1(i,i)

CLAUSES

hecho1(1,2). hecho1(1,3). hecho1(2,5).

hecho1(5,3). hecho1(3,4). hecho1(5,6).

hecho1(6,8). hecho1(6,7). hecho1(5,9).

hecho1(5,7). hecho1(4,10).

busca_hecho1(X,Y):-hecho1(X,Y); hecho1(Y,X).

 

PREDICATES

camino(i,i,li)

busca(i,i,li,li)

invierte(li,li,li)

pertenece(i,li)

CLAUSES

camino(Inicio,Llegada,Recorre):-busca(Inicio,Llegada,[Inicio],Recor),

invierte(Recor,[],Recorre).

busca(Llegada,Llegada,Recorre,Recorre).

busca(Inicio,Llegada,Recorre,Recor):-busca_hecho1(Inicio,Paso),

not(pertenece(PAso,Recorre)),

busca(Paso,Llegada,[Paso|Recorre],Recor).

%- - - - - - - - - - - - HERRAMIENTAS - - - - - - - - - - - -

invierte([],L,L):-!.

invierte([X|L],L1,L2):-invierte(L,[X|L1],L2).

pertenece(X,[X|_]).

pertenece(X,[_|L]):-pertenece(X,L).