Пролог самый дешевый путь

#path #prolog

#путь #пролог

Вопрос:

Я должен создать приложение Prolog, которое должно найти самый дешевый путь, самый быстрый путь, самый дешевый с максимальным временем прибытия, самый быстрый с максимальной ценой. Я немного пишу, но я не знаю, как найти самые дешевые, это не сработает.

 %train/plane(name,from,to,departure,arrival,price).
train(p1,gdansk, sopot, odjazd(10:15), przyjazd(10:30), cena(5)).
train(p2,sopot, gdynia, odjazd(11:00), przyjazd(11:30), cena(5)).
train(p3,sopot, gdynia, odjazd(11:15), przyjazd(11:45), cena(5)).
plane(s1,gdansk, warszawa, odlot(16:00), przylot(17:15), cena(300)).
plane(s2,gdansk, wroclaw, odlot(14:00), przylot(15:30), cena(300)).
plane(s3,gdansk, poznan, odlot(18:00), przylot(19:30), cena(200)).


path(From, To, Path) :-
    path(From, To, [], Path).

path(From, From, _, [From]).
path(From, To, Visited, [From|Nodes]) :-
      member(From, Visited),
    dif(From, To),
        (train(_, From,Node,_,_,_);
         plane(_, From,Node,_,_,_)
        ),
    path(Node, To, [From|Visited], Nodes).

path_cost(P, C) :- aggregate_all(sum(Cost), member(train(_,_,_,_,_,Cost), P), C).

path_min_cost(From, To, Min, Path) :- aggregate(min(C,P), 
                                               (path(From,To,P), path_cost(P,C)),
                                               min(Min,Path)).              
  

Комментарии:

1. Что такое pociag ?

2. Я забыл об этом, это train.