% % Generate { cycle(X,Y) : path(X,Y) } = 1 :- node(X). { cycle(X,Y) : path(X,Y) } = 1 :- node(Y). % Display #show cycle/2. % Optimize #minimize { C,X,Y : cycle(X,Y), edge(X,Y,C) }. % Nodes node(a;b;c;d;e;f). % (Directed) Edges path(a,(b;c;d)). path(b,(d;e;f)). path(c,(a;d;e)). path(d,(a;b)). path(e,(c;d;f)). path(f,(b;c;e)). % Edge Costs edge(a,b,2). edge(a,c,3). edge(a,d,1). edge(b,d,2). edge(b,e,2). edge(b,f,4). edge(c,a,3). edge(c,d,2). edge(c,e,2). edge(d,a,1). edge(d,b,2). edge(e,c,2). edge(e,d,2). edge(e,f,1). edge(f,b,4). edge(f,c,3). edge(f,e,1).