09/12/22 15:57:49
>>9
% Prolog 一番基本的なもの。
有向グラフ(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.