0% found this document useful (0 votes)
233 views28 pages

AI

The document appears to be a lab manual for an Artificial Intelligence course. It includes 10 programming assignments to be completed in the lab covering topics like Prolog, solving puzzles using search algorithms, and implementing concepts like the Tower of Hanoi. It also lists the hardware and software requirements for the lab and provides sample Prolog code for problems like finding route distances and implementing family relationships.

Uploaded by

basaprabhu
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)
233 views28 pages

AI

The document appears to be a lab manual for an Artificial Intelligence course. It includes 10 programming assignments to be completed in the lab covering topics like Prolog, solving puzzles using search algorithms, and implementing concepts like the Tower of Hanoi. It also lists the hardware and software requirements for the lab and provides sample Prolog code for problems like finding route distances and implementing family relationships.

Uploaded by

basaprabhu
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/ 28

AL-FALAH SCHOOL OF ENGINEERING & TECHNOLOGY

(A Muslim Minority Autonomous Institution)


NAAC A Grade Accredited by UGC

Department of Computer Science & Engineering



Lab Manual
Artificial Intelligence





Department of Computer Science and Engineering
Al-Falah School of Engineering and Technology
Dhauj Faridabad Haryana-121001


INDEX


1. Syllabus
2. Hardware/Software Requirements
3. Practicals to be conducted in the lab
4. Programs













CSE-308 F Intelligent System
L - T - P
2
Work Lab.
Exam : 25 Marks
Class 25 Marks
Total 50 Marks
Duration Exam
3 Hrs.

1. Study of PROLOG.

2. Write a program to solve 8 queens problem.

3. Solve any problem using depth first search.

4. Solve any problem using best first search.

5. Solve 8-puzzle problem using best first search

6. Solve Robot (traversal) problem using means End Analysis.

7. Solve traveling salesman problem.
















HARDWARE REQUIRED


P-IV/III PROCESSOR
HDD 40GB
RAM 128MB or above

SOFTWARE REQUIRED

Window 98/2000/ME/XP
Prolog














Practicals to be conducted in the lab


S. No. Title of experiment

1 Program to find the route distance between two cities
2 Program to implement tower of Hanoi
3 Program to calculate the factorial of a number.
4 Program to implement family relationships
5 Program To Logon Example With Recursion And No Repeat
Predicate
6 Program to print the list of customers having different coloured cars
with price and model available
7 Program to implement water jug problem
8 Program to implement breadth first search
9 Recursion In PROLOG
10 Queries






PROGRAM NO. 1

AIM: TO FIND THE ROUTE DISTANCE BETWEEN TWO CITIES
DOMAINS
Town = symbol
Distance = integer

PREDICATES
nondeterm road(Town,Town,Distance)
nondeterm route(Town,Town,Distance)

CLAUSES
road("Karimnagar","Warangal",100).
road("Karimnagar","Hyderabad",120).
road("Hyderabad","Warangal",120).
road("Warangal","Vijaywada",120).
road("Hyderabad","Vijaywada",120).
road("Hyderabad","Kazipet",170).
road("Kazipet","Vijaywada",220).
road("Warangal","Vishakapatnam",170).
road("Vijaywada","Vishakapatnam",120).


route(Town1,Town2,Distance):-
road(Town1,Town2,Distance).

route(Town1,Town2,Distance):-
road(Town1,X,Dist1),
route(X,Town2,Dist2),
Distance=Dist1+Dist2,
!.

GOAL
route("Karimnagar", "Vishakapatnam", X),
write("Distance from Karimnagar to Vishakapatnam is ",X),nl.






Output:
Distance from Karimnagar to Vishakapatnam is 270
X=270
1 Solution























PROGRAM NO. 2

AIM: TO IMPLEMENT TOWER OF HANOI
Domains
A,B,C,N,Z=INTEGER

Predicates
Tower(integer,integer,integer,integer).

Clauses
Tower(1,A,C,B):-
write("move from",A,"to",C),nl.
Tower(N,A,C,B):-
Z=N-1,
Tower(Z,A,B,C),
write("move from",A,"to",C),nl,
Tower(Z,B,C,A).

goal:Tower(3,1,3,2).


























Output:

move from1to3
move from1to2
move from3to2
move from1to3
move from2to1
move from2to3
move from1to3
yes























PROGRAM NO. 3

AIM: TO CALCULATE THE FACTORIAL OF A NUMBER
domains
A,B,Y,Z=Integer

predicates
fact(integer,integer)
go

clauses
go:-
write("enter the no."),nl,
readint(A),
B=1,
fact(A,B).
fact(A,B):-
A<>1,
Y=A-1,
Z=A*B,
fact(Y,Z).
fact(1,B):-
write("factorial is",B).

goal:go.




















Output:

enter the no.
6
factorial is720yes





























PROGRAM NO. 4

AIM: TO IMPLEMENT FAMILY RELATIONSHIPS

DATABASE - tmp
son(STRING,STRING)
sister(STRING,STRING)
brother(STRING,STRING)
married(STRING,STRING)

CLAUSES
son("Deepak","Jack").
sister("Jiya","swati").
brother("Sonia", "Harsh").
married("Jack", "Jiya").
married("Lokesh", "Sonia").
married("Priya","Deepak").

PREDICATES
father(STRING father,STRING child)
grandfather(STRING grandfather,STRING grandchild)
sister_in_law(STRING,STRING)
brother_in_law(STRING,STRING)
father_in_law(STRING,STRING)

CLAUSES
father(A,B):-son(B,A).

grandfather(A,B):-father(A,C), father(C,B).

sister_in_law(A,B):-married(A,C), sister(C,B).
sister_in_law(A,B):-brother(A,C), married(C,B).

brother_in_law(A,B):-married(A,C), brother(C,B).
brother_in_law(A,B):-brother(A,C), married(C,B).

father_in_law(A,B):-married(A,C), son(C,B).

GOAL
father_in_law("Priya",Z),
format(Msg,"father_in_law(\"Priya\",%)",Z),
write(Msg).
%GOAL father_in_law("Priya",Z).


Output:

father_in_law("Priya",Jack)Z=Jack, Msg=father_in_law("Priya",Jack)
1 Solution























PROGRAM NO. 5

AIM: LOGON EXAMPLE WITH RECURSION AND NO REPEAT
PREDICATE

domains
Name,Password = symbol
predicates
getinput(Name,Password)
logon
user(Name,Password)
clauses
logon :-
getinput(Name,Password),

user(Name,Password),
write("You are now logged on."),nl.
logon :-
write("Sorry, you are not permitted access."),
write("Please try again."),nl,
logon.

getinput(Name,Password) :-
write("Please Enter Your Name:"),
readln(Name),nl,
write("Please Enter Password:"),

readln(Password),nl.
user(bill,bigfoot).

user(john,superman).
user(sue,happy).

goal:
getinput(Name,Password).










Output:

Please Enter Your Name:bill

Please Enter Password:bigfoot

Name=bill, Password=bigfoot
1 Solution





















PROGRAM NO. 6

AIM: TO PRINT THE LIST OF CUSTOMERS HAVING DIFFERENT
COLORED CARS WITH PRICE AND MODEL AVAILABLE.

Domains
namelist=names*
names=symbol
color=symbol
list=names*

Predicates
cust_names(namelist,color)
model(color,list)
cost(symbol)
price(color,integer)

Clauses
cust_names([jitander,preeti,veena,avinash,jyeshtha],green).
cust_names([arvind,poonam,abhijeet],white).
cust_names([daya,bhanu,anuradha,anju],red).
model(red,[hyundai_accent,ford_monedo,indgo]).
model(white,[maruti_esteem,maruti_baleno]).
model(green,[toyota_avalon,lotus_elise]).
model(green,[toyta_avalon,lotus_elise]).
price(red,450000).
price(white,350000).
price(green,430000).
cost(green):-
cust_names(A,green),nl,
write(A),nl,
price(green,X),nl,
write("the price of green color car is ",X),nl,
model(green,Y),nl,
write("the model available in green color ",Y),nl.
cost(white):-
cust_names(A,white),nl,
write(A),nl,
price (white,X),nl,
write("the price of white color car is ",X),nl,
model(blue,Y),nl,
write(" the models available in white color ",Y),nl.



goal:
write(" name list of customers who own green color car :-"),nl,
cost(green).
/*write("name list of customers who own red color car :-"),nl,
cost(red).
write("name list of customer who own white color car :-"),nl,
cost(white). */


































Output:
name list of customers who own green color car :-

["jitender","preeti","veena","avinash","jyeshtha"]

the price of green color car is 430000

the model available in green color ["toyota_avalon","lotus_elise"]
yes
































PROGRAM NO. 7

AIM: TO IMPLEMENT WATER JUG PROBLEM


Domains
Z,A,X,Y=integer

Predicates
waterjug(X,Y)

Clauses
waterjug(X,Y):-
X=0,
Y=0,
write("4l jug empty & 3l jug empty"),nl,
Z=0,
A=3,
waterjug(Z,A).
waterjug(X,Y):-
X=0,
Y=3,
write("4l jug empty & 3ljug 3l water"),nl,
Z=3,
A=0,
waterjug(Z,A).
waterjug(X,Y):-
X=3,
Y=0,
write(" 4l jug 3l water & 3l jug empty"),nl,
Z=3,
A=3,
waterjug(Z,A).
waterjug(X,Y):-
Z=3,
A=3,
write("4l jug 3l water& 3l jug 3l water"),nl,
Z=4,
A=2,
waterjug(Z,A).
waterjug(X,Y):-
X=4,
Y=2,
write("4l jugh 4l water & 3l jug 2l water"),nl,


Z=0,
A=2,
waterjug(Z,A).
waterjug(X,A):-
X=0,
Y=2,
write("4l jug empty & 3l jug 2l water"),nl,
Z=2,
A=0,
waterjug(Z,A).
waterjug(X,Y):-
X=2,
Y=0,
write("Goal Achieved").

goal:waterjug(0,0).
































Output:

4l jug empty & 3l jug empty
4l jug empty & 3ljug 3l water
4l jug 3l water & 3l jug empty
4l jug 3l water& 3l jug 3l water
4l jug 3l water& 3l jug 3l water
4l jug 3l water& 3l jug 3l water
4l jug empty & 3l jug 2l water
4l jug 3l water& 3l jug 3l water
4l jug empty & 3l jug 2l water
4l jug 3l water& 3l jug 3l water
Goal Achievedyes



























PROGRAM NO. 8

AIM: TO IMPLEMENT BREADTH FIRST SEARCH


Domains
W=Integer*
Value=Integer

Predicates
pop(W,W,Value)
append(W,W,W)
go
checkbfs(W)
test(Value,W,W)

Clauses
pop([Head|Tail],S1,X):-
X=Head,
S1=Tail.
append([],LIST1,LIST1).
append([X|LIST1],LIST2,[X|LIST3]):-
append(LIST1,LIST2,LIST3).
checkbfs([]):-
write("STACK NULL").
checkbfs(STACK):-
write("checkbfs"),nl,
pop(STACK,STACK2,X),
test(X,STACK2,S3),
write(S3),nl,
checkbfs(S3).
test(A,STACK2,S3):-
A=5,nl,
write(A,"goal found"),
S3=[].
test(A,STACK2,S3):-
write(A),nl,
S3=STACK2.
go:-
A=[10],B=[7],C=[6],D=[5],E=[12],F=[11],G=[15],
H=[16],I=[17],J=[20],
append(I,J,R1),
append(G,H,R2),


append(E,F,R3),
append(R2,R1,R4),
append(R3,R4,R5),
append(C,D,R6),
append(B,R6,R7),
append(R7,R5,R8),
append(A,R8,R9),
ROOT=R9,
write("Starting Program\n"),nl,
checkbfs(ROOT).

Goal:go.




































Output:

Starting Program

checkbfs
10
[7,6,5,12,11,15,16,17,20]
checkbfs
7
[6,5,12,11,15,16,17,20]
checkbfs
6
[5,12,11,15,16,17,20]
checkbfs

5goal found[]
STACK NULLyes































PROGRAM NO. 9

Recursion In PROLOG
Consider the following database (Pl file).
parent(gaurav,suarav).
parent(saurav,sita).
parent(sita,gita).
parent(gita,rattan).
parent(suarav,ram).
parent(ram,sunny).
ancestor(A,B):-parent(A,B).
ancestor(A,B):-parent(C,B),ancestor(A,C).














OUTPUT:
1 ?- [ancestor].
to consult or compile th PROLOG source file.
2 ?- ancestor(gaurav,saurav).
3 ?- ancestor(gaurav,rattan).
4 ?- ancestor(rattan,saurav).
5 ?- ancestor(WHO,WHOM).
6 ?- ancestor(WHO,WHOM).






























PROGRAM NO. 10

Answer following queries
1 ?- [LIST].
To consult or compile the PROLOG source file.
2 ?- [H1|T] = [1,2,3].
3 ?- [H1,H2|T] = [1,2,3].
4 ?- [H1,H2,H3|T] = [1,2,3].
5 ?- [H1,H2,H3,H4|T] = [1,2,3].

































OUTPUT:

H1 =1
T=2,3


H1=1
H2=2

T=[3]

H1=1
H2=2
H3=3
T=[]


false

You might also like