I am trying to make a program in Clingo to solve a Euler path. So far this is what I have come up with. I want my graph to appear as follows.
My input.
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).
My program so far.
%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).
Am I incorrect in my comments in my program? I would think that the program is it should always connect edges together. As it is right now I do not get an answer, however when the number of steps "num" is ranged from 1..4 I get a solution. I believe a Euler path should have 6 steps, however with a possible solution of:
path(b,d,1)
path(d,a,2)
path(a,b,3)
path(b,c,4)
path(c,d,5)
path(d,e,6)