我正在尝试在 Clingo 中编写一个程序来解决欧拉路径。到目前为止,这就是我想出的。我希望我的图表如下所示。 我的输入。
edge(a,b).
edge(b,c).
edge(c,d).
edge(d,e).
edge(a,d).
edge(b,d).
%edge(x,y):-edge(y,x).
num(1..6).
我的程序到目前为止。
%Generates paths with X and Ys equal to edges in the input, N can be in the range of 'num'
1{path(X,Y,N):edge(X,Y)}1:-num(N).
%Next edges Y and X1 are the same/connect. Where N is in the range of indices.
:-path(X,Y,N), path(X1,Y1,N+1), Y!=X1, num(N).
我在我的程序中的评论不正确吗?我认为该程序应该始终将边缘连接在一起。因为现在我没有得到答案,但是当“num”的步数从 1..4 不等时,我得到了一个解决方案。我相信欧拉路径应该有 6 个步骤,但是可能的解决方案是:
path(b,d,1)
path(d,a,2)
path(a,b,3)
path(b,c,4)
path(c,d,5)
path(d,e,6)