0% found this document useful (0 votes)
34 views6 pages

AI (Prolong) LAB 9

The document contains Prolog code that defines relationships between nodes in a tree such as parent, sibling, and depth. It includes predicates for finding the height, depth, and path of nodes in the tree.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views6 pages

AI (Prolong) LAB 9

The document contains Prolog code that defines relationships between nodes in a tree such as parent, sibling, and depth. It includes predicates for finding the height, depth, and path of nodes in the tree.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

LAB 9

Name: Sahil Nenwani


Student id:9870

Height setof:
Height begof:
Depth setof:
Depth begof:
Code:
:-op(500,xfx, is_parent).

a is_parent b.

c is_parent g.

f is_parent l.

j is_parent q.

a is_parent c.

c is_parent h.

f is_parent m.

j is_parent r.

a is_parent d.

c is_parent i.

h is_parent n.

j is_parent s.

b is_parent e.

d is_parent j.

i is_parent o.

m is_parent t.

b is_parent f.

e is_parent k.

i is_parent p.

:-op(500,xfx, is_sibling_of).

X is_sibling_of Y:- Z is_parent X,Z is_parent Y, X \== Y.

%?g is_sibling_of Y

:-op(500,xfx,is_same_level_as).

X is_same_level_as X.

X is_same_level_as Y:- W is_parent X,Z is_parent Y,W is_same_level_as Z,X \== Y.

:-op(500,xfx, has_depth).

/*a has_depth 0 :- !.
Node has_depth D :- Mother is_parent Node,

Mother has_depth D1,D is D1 + 1.*/

has_depth(a,0):-!.

has_depth(Node,D):-Mother is_parent Node,

Mother has_depth D1,D is D1 + 1.

locate(Node) :- path(Node),write(Node),nl.

path(a).

path(Node):- Mother is_parent Node,path(Mother),write( Mother),write(' -> ').

ht(Node,0):-leaf(Node),!.

ht(Node,H):-Node is_parent Child,ht(Child,H1),H is H1 +1.

leaf(Node):- not(is_parent(Node,_)).

max([],M,M).

max([X|R],M,A):- (X > M -> max(R,X,A) ;max(R,M,A)).

/*

height(N,H):-setof(Z,ht(N,Z),Set),max(Set,0,H).

height(N,H):-bagof(Z,ht(N,Z),Bag),max(Bag,0,H).

*/

min([],M,M).

min([X|R],M,A):- (X < M -> min(R,M,A) ;min(R,X,A)).

/*

depnode(N,D):-setof(Z,has_depth(N,Z),Set),min(Set,0,D).

*/

depnode(N,D):-bagof(Z,has_depth(N,Z),Bag),min(Bag,0,D).

You might also like