Наше задание - отображать временную шкалу событий в Прологе.
Наша база данных выглядит примерно так:
event(e1, 20).
event(e2, before(e1)).
event(e3, before(e2)).
event(e4, 15).
event(e5, before(5)).
event(e6, 30).
event(e7, before(e2)).
Наша идея состоит в том, чтобы определить 2 точки (0 и ноль) как фиксированные значения и представить временные шкалы следующим образом:
0 5 15 20 30 nil
\ x x e4 e1 e6 /
\ e5/
\ x e3 e2 /
\ x e7 /
(Извините, я не знаю, как здесь работают вкладки, и я не могу опубликовать скриншот)
Наша идея состоит в том, чтобы найти все возможные пути от 0 до нуля и попытаться выяснить, какие узлы можно объединить.
Пути будут выглядеть примерно так:
[
[0, e4, e1, e6, nil],
[0, e5, e4, e1, e6, nil],
[0, e3, e2, e1, e6, nil],
[0, e7, e2, e1, e6, nil]
]
Как мы можем найти события в правильном порядке? Кажется, мы не можем продвинуться вперед от 0, потому что, чтобы найти первое событие, вы должны убедиться, что оно перед каким-то другим событием или чем-то еще?