Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2010, 00:02   #1
Mira-girl
Пользователь
 
Регистрация: 08.11.2009
Сообщений: 16
Восклицание Prolog нужно разобраться в коде

Есть база фактов с маршрутами в виде:

predicates
nondeterm маршрут (symbol, string, string, symbol).

clauses
%маршрут компания отправление прибытие вид транспорта
маршрут (amtrac, "New York", "Boston", поезд).
маршрут (ndg_transit, "New York", "Philadelphia", поезд).
... и т.д.

Считается, что если в базе есть маршрут из Города1 в Город2, то есть и обратный маршрут из Города2 в Город1.
Написано рекурсивное правило, которое выводит все возможные маршруты через любое количество промежуточных пунктов, причем одинаковые маршруты с различными видами транспорта считаются разными.

predicates
nondeterm маршруты(symbol,symbol,symbol).
nondeterm двунапр_маршрут(string, string, symbol).

clauses
двунапр_маршрут(Город1,Город2,Транс порт):-
маршрут(_,Город1,Город2,Транспорт);
маршрут(_,Город2,Город1,Транспорт).

маршруты(Город1,Город2,Город3):-
двунапр_маршрут(Город2,Город3,Транс порт),
Город3 <> Город1,
nl,
write("from ",Город2," to ",Город3," by ",Транспорт),
nl;
двунапр_маршрут(Город2,Город3,Транс порт),
Город3 <> Город1,
маршруты(Город2,Город3,Город4),
write("from ",Город2," to ",Город3," by ",Транспорт),
nl.

goal
маршруты("",Город2,Город3).

Помогите разобраться как именно работает правило маршруты, как именно унифицируются переменные, сам механизм работы правила.
Заранее благодарна
Mira-girl вне форума Ответить с цитированием
Старый 11.04.2010, 00:12   #2
MrJenika
Форумчанин
 
Аватар для MrJenika
 
Регистрация: 07.09.2009
Сообщений: 361
По умолчанию

Советую разобраться на простых примерах,а затем перейти к вашему.
Тоже недавно изучали пролог, но решил что он не стоит того времени которое ему уделял.
MrJenika вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться в коде fate Общие вопросы по Java, Java SE, Kotlin 5 17.03.2009 22:10
нужно разобраться в коде паскаля. in, out из файла [silver beast] Помощь студентам 6 22.01.2009 08:42