Пересечение линии программирования набора ответов Clingo

У меня есть правило, которое генерирует следующее

route(5,1,5,3) 
route(5,2,5,3) 
route(5,3,5,3) 
route(3,1,3,1) 
route(2,3,5,3) 
route(3,3,5,3) 
route(4,3,5,3) 
route(4,1,3,1) 
route(5,1,3,1) 
route(3,2,3,1) 
route(3,3,3,1) 
route(3,4,3,1) 
route(3,5,3,1)

в котором следующая часть представляет собой маршрут, начинающийся с 5,1 и заканчивающийся на 5,3

route(5,1,5,3) 
route(5,2,5,3) 
route(5,3,5,3)

в пути(x1,y1,x2,y2)

  • x1 = x координата первой точки
  • y1 = y координата первой точки
  • x2 = x координата второй точки
  • y2 = y координата второй точки

Я хочу написать ограничение, чтобы эти маршруты не пересекались друг с другом, но я не уверен, как подойти к этой проблеме. Буду признателен за любую помощь в этом вопросе.


person NTP    schedule 02.11.2019    source источник


Ответы (1)


Я использовал следующее правило, чтобы предотвратить пересечение маршрутов.

(X',Y') = (X'',Y'') :- route(X,Y,X',Y'), route(X,Y,X'',Y'').
person NTP    schedule 15.11.2019
comment
Это не ограничение, а правило. Я не уверен, что ваше правило делает то, что вы намереваетесь. Если вы предоставите программу, которая генерирует атомы route/4, можно будет протестировать и расширить ваше решение. - person peschü; 02.12.2019