child(X,Y)
の関係を持ちます。X
はルート/親ノードで、Y
は有向枝です。私は特定のルートノードR
から各サブツリーの高さH
を動的関係height(R, H)
で計算したいと思います。サブツリーのプロローグの高さ(深さ)
私の以前のコードは:
child(a,b).
child(a,f).
child(f,g).
child(f,h).
child(b,c).
child(c,d).
child(b,e).
child(c,l).
child(l,j).
height(R, H) :-
path(R,_,B,H),
write(B).
path(X,Y,[X,Y],1) :-
child(X,Y).
path(X,Y,[X|P],C) :-
child(X,Z),
path(Z,Y,P,Cn),
C is Cn+1.
は、ノードR
から始まるすべてのパス(および長さ)を求めます。再帰的にn-naryツリー内で最長のパスのみを見つける方法はありますか?または、以前にツリー構造をリストに保存する必要がありますか?