Курсовая работа: Математические модели
/* ОСУЩЕСТВЛЯЕТСЯ ПОИСК ПУТИ */
маршрут(Станция,Станция,[Станция],1,Линия,_) :- линия(Линия,Список),принадлежит(Станция,Список).
% путь с пересадкой
маршрут(Начало,Конец,[Начало,Начало2|Хвост],Остановки1,Линия,История) :-
линия(Линия,Список),линия(Новая_Линия,Новый_Список),
принадлежит(Начало,Список),принадлежит(Начало2,Новый_Список),
пересадка(Начало,Линия,Новая_Линия),Линия<>Новая_Линия,
смежные_станции(Начало,Начало2,_),
not(принадлежит(Начало2,История)),
маршрут(Начало2,Конец,[Начало2|Хвост],Остановки2,Новая_Линия,[Начало2|История]),
Остановки1=Остановки2+1.
% путь без пересадки
маршрут(Начало,Конец,[Начало,Начало2|Хвост],Остановки1,Линия,История) :-
линия(Линия,Список),линия(Новая_Линия,Новый_Список),
принадлежит(Начало,Список),принадлежит(Начало2,Новый_Список),
Линия=Новая_Линия,смежные_станции(Начало,Начало2,_),
not(принадлежит(Начало2,История)),
маршрут(Начало2,Конец,[Начало2|Хвост],Остановки2,Линия,[Начало2|История]),
Остановки1 = Остановки2 + 1.
/* осуществляется поиск пути через заданную остановку*/
через_станцию(Начало,Конец,Пром,Ost,List):-маршрут(Начало,Конец,List,Ost,_,[Начало]),принадлежит(Пром,List).
поиск:-write("Выбор маршрута в метро c проездом через заданные остановки"),nl,
write("Схему метро смотрите в Приложении А пояснительной записки"),nl,nl,
write("Введите начальнаую станцию = "),readln(Начало),
write("Введите конечную станцию = "),readln(Конец),
vvod1(_,Prom),
findall(Остановки,stations(Начало,Конец,Prom,Остановки,List),Ost_Список),
минимальное(Остановки,Ost_Список),
stations(Начало,Конец,Prom,Остановки,List),