Answer set programming Clingo答案集编程线交点

Answer set programming Clingo答案集编程线交点,answer-set-programming,clingo,Answer Set Programming,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结束的路线 rout

我有一个规则,生成以下内容

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坐标

我想写一个约束,这样这些路径就不会相互交叉,但我不知道如何解决这个问题。在这件事上,我将不胜感激。

我使用了以下规则来防止路线交叉

(X',Y') = (X'',Y'') :- route(X,Y,X',Y'), route(X,Y,X'',Y'').

这不是约束,而是规则。我不确定你的规则是否符合你的意愿。如果您提供生成route/4原子的程序,则可以测试和扩展您的解决方案。