Я новичок в Прологе, и теперь мне нужно реализовать алгоритм согласованности пути для исчисления RCC8 / алгебры временных интервалов Аллена в Прологе.
Я борюсь с основными проблемами.Небольшой пример моего фона знаний.Это все о заданной таблице транзитивности и вычислении результирующих ограничений между регионами:
tpp(a,b).
dc(b,c).
dc(A,C) :- dc(A,C).
dc(A,C) :- tpp(A,B), dc(B,C).
Таким образом, должно быть сгенерировано ограничение dc(a,c).
.Весь алгоритм:
Input: A network T
Output: A path consisten network
repeat
S <- T
for k:=1 to n do
for i,j := 1 to n do begin
Cij <- Cij UNION Cik COMPOSITION Ckj
until S = T
, где Cij - ограничение между узлами i и j.В случае BK tpp (a, b), например.Итак, моя проблема в том, что я изо всех сил пишу правило, которое вычисляет результирующее ограничение из таблицы транзитивности.Я хочу начать с чего-то вроде этого:
comp([tpp(a,b), dc(b,c)], X).
, который хранит dc(a,c)
в X, и я получаю X = [dc(a,c)]
обратно.Я не знаю, правильный ли это подход.Я хочу иметь правило, к которому я даю список ограничений, и оно вычисляет все полученные ограничения.Я привык программировать на Python и Java, и теперь я изо всех сил, начиная с этой проблемы.
Большое спасибо!: D