Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

find the shortest path

Status
Not open for further replies.

3sir

Technical User
Sep 25, 2013
1
0
0
SG
I would like to find out what is the shortest path from point a to z.


edge(a,b,3).
edge(a,d,8).
edge(a,i,9).
edge(a,f,11).
edge(a,j,16).
edge(a,e,19).
edge(b,h,4).
edge(b,c,6).
edge(b,j,13).
edge(b,g,8).
edge(b,d,5).
edge(b,i,6).
edge(b,f,8).
edge(b,e,16
edge(d,i,1).
edge(d,f,3).
edge(d,j,8).
edge(d,e,11).
edge(d,g,1).
edge(d,c,8).
edge(d,z,16).
edge(i,f,2).
edge(i,j,7).
edge(i,e,10).
edge(i,g,2).
edge(i,c,9).
edge(i,z,17).
edge(f,k,1).
edge(f,g,3).
edge(f,h,9).
edge(f,j,5).
edge(f,e,8).
edge(g,h,6).
edge(g,f,3).
edge(g,c,7).
edge(g,z,15).
edge(g,k,4).
edge(k,j,7).
edge(k,c,14).
edge(j,c,7).
edge(j,e,3).
edge(e,z,8).




path(X,Y,M,[Y]) :- edge(X,Y,M).
path(X,Y,P,[W|T]) :- edge(X,W,M),path(W,Y,N,T),
P is M+N.

pravilo(X,Y,Z) :- assert(min(100)),assert(minpath([])),!,
path(X,Y,K,PATH1),
(min(Z),K<Z,
retract(min(Z));assert(min(K))),
minpath(Q),retract(minpath(Q)),
assert(minpath([X|PATH1])),
nl,!,
fail.

?- pravilo(a,z,X);
write("Minimal Path:"),
minpath(PATH),
write(PATH),
nl,
write("Path weight:"),
min(W),
write(W).


any one can help me to fix it? How would I do this?

thanks
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top