现在我正在学习Prolog。请帮我完成这项任务:如何获得在Prolog上创建Euler路径的顶点列表?程序应该适用于任何图形。
我有这个程序,但它仅适用于此图。
graph([a-b,a-c,a-d,b-c,c-d,c-e,d-e]).
edge(X,Y,[X-Y|_])
edge(X,Y,[Y-X|_]).
edge(X,Y,[_|T]) :- edge(X,Y,T).
erase(X,Y,[X-Y|T],T).
erase(X,Y,[Y-X|T],T).
erase(X,Y,[H|T],[H|T2]) :- erase(X,Y,T,T2).
euler_route(X,Y,P,[X-Y]) :- edge(X,Y,P).
euler_route(X,Y,P,[X-Z|V]) :- edge(X,Z,P), erase(X,Z,P,P2), euler_route(Z,Y,P2,V).
euler_path(X,P,M) :-
graph(P),
euler_route(X,Y,P,M),
X \= Y,
length(P,L),
length(M,L).