Prolog等级计数器和eulerpath

问题描述

| 这周我要做这个作业:计算无向图中节点的等级,并测试其中是否有一条欧拉路径。该功能应如下所示:
gradliste([[a,b],[b,c],g],[c,d],[d,e],[e,f],[f,[g,h],f]],X).
X = [[a,1],3],2],[h,1]]

testEulerweg([[a,[a,d]]).
true.
我对函数
gradliste
的第一个想法是“合并”图形并生成如下列表:
[a,b,c,g,d,e,f,h,f]
然后我计算每个节点的数量。不幸的是我坚持住了3英镑。 对于第二个函数
testEulerweg
,我认为我应该首先编写一个函数
allconnected
,如下所示:
allconnected([[a,d]]).
true.

allconnected([[a,f]]).
False.
然后可以使用
gradliste
函数检查是否有2个节点或具有奇数等级的节点。 谁能帮我实现我的主意?我也愿意接受新的想法:) 提前致谢 比尔兹克     

解决方法

        
merge
功能很简单。我将其重命名为
flatten
flatten([[X,Y] | Edges],[X,Y|Rest]) :-
    flatten(Edges,Rest).
我让您编写基本案例。 至于寻找欧拉路径的方法,请查阅Wikipedia的算法。第二个可以很容易地用ѭ11来实现,只要您不在列表中先ѭ9即可:)