Эйлеров путь в прологе. Переделать Prolog

Есть программа на Visual Прологе, ищет эйлеровые циклы(много решений) в неорграфе. Помогите переделать, чтобы он нашёл один путь(одно решение) начиная с заданной вершины.

domains
s=symbol   
list=s*

constants
graf1=[a,b,  b,c,  c,d, d,f,  f,c,  a,c] 
graf2=[a,b,  b,c,  c,d, d,a]

predicates
rp(s,s,list,list).
cycle(s,s,list,list).
ifEyler(list,list).
% Eyler TTyTb. 3aDaHa BEPLLlUHA, HEOPrPaop. UHA4E "HET PELLlEHUU"
clauses 
ifEyler([Start|Tail],Way):- cycle(Start,Start,[Start|Tail],Way).
 
cycle(A,A,[],[A]):- !.
cycle(A,X,Z,[A|B]):- rp(A,C,Z,Y), cycle(C,X,Y,B).
 
rp(A,B,[A,B|C],C).
rp(A,B,[B,A|C],C).
rp(A,B,[C,X|D],[C,X|F]):- rp(A,B,D,F).

goal 
ifEyler(graf2, Way).

Ответы (0 шт):