Пролог: сохранить результаты переходных отношений в список - PullRequest
0 голосов
/ 11 мая 2018

Я новичок в Прологе, и теперь мне нужно реализовать алгоритм согласованности пути для исчисления 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

...