このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1248012902/509
#  【 課題 】 
#  http://nojiriko.asia/jpeg/841.jpg
#  図の有向グラフの最短経路を求めよ。 
#  初期値がMAXでアルゴリズムを作れ。 

有向グラフ(1,2,50). 
有向グラフ(1,3,80). 
有向グラフ(2,4,15). 
有向グラフ(2,3,20). 
有向グラフ(4,5,30). 
有向グラフ(3,4,10). 
有向グラフ(3,5,15). 

有向グラフの最短経路(_頂点1,_頂点2,_最短距離,_最短経路) :- 
  findmin([_距離,_経路],有向グラフの距離と経路(_出発点,_終点,_距離,_経路),[_ 
最短距離,_最短経路]). 

有向グラフの距離と経路(_頂点,_頂点,0,[_頂点]) :- !. 
有向グラフの距離と経路(_頂点1,_頂点2,_距離,[_頂点1|R]) :- 
  有向グラフ(_頂点1,_頂点3,_距離1), 
  有向グラフの距離と経路(_頂点3,_頂点2,_距離2,R), 
  _距離 is _距離2 + _距離1. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

有向グラフ(1,2,50).
有向グラフ(1,3,80).
有向グラフ(2,4,15).
有向グラフ(2,3,20).
有向グラフ(4,5,30).
有向グラフ(3,4,10).
有向グラフ(3,5,15).

有向グラフの最短経路(_頂点1,_頂点2,_最短距離,_最短経路) :-
    findmin([_距離,_経路],有向グラフの距離と経路(_出発点,_終点,_距離,_経路),[_
最短距離,_最短経路]).

有向グラフの距離と経路(_頂点,_頂点,0,[_頂点]) :- !.
有向グラフの距離と経路(_頂点1,_頂点2,_距離,[_頂点1|R]) :-
    有向グラフ(_頂点1,_頂点3,_距離1),
    有向グラフの距離と経路(_頂点3,_頂点2,_距離2,R),
    _距離 is _距離2 + _距離1.