KCS751A
KCS751A
Students are able to apply and analyse various AI Problem Solving K2, K3
CO2 Techniques on AI Problems.
Students acquire skills to identify the given problem and design the rule K3, K4, K1
CO3 based system.
CO2 2 2 2 1 - - - - - - - -
Reviewed By
CO3 2 2 3 1 - - - - - - - -
CO4 2 2 3 1 - - - - - - - -
CO5 2 2 3 1 - - - - - - - -
AVG 2 2 2.6 1 - - - - - - - 1
CO-PSO Mapping
Assignment No – 1
Reviewed By
a) FACTS:
Some facts about family relationships could be written as :
sister(sue,bill)
Reviewed By
parent(ann,sam)
male(jo)
female(riya)
b) RULES:
To represent the general rule for grandfather, wewrite:
grandfather(X,Z)
parent(X,Y)
parent(Y,Z)
male(X)
c) QUERIES:
Given a database of facts and rules such as that above, we may make queries by typing after a query a symbol
‘?_’ statements such as:
?_ parent(X,sam)
X=ann
?_grandfather(X,Y)
X=jo, Y=sam
PROLOG in Designing Expert Systems
An Expert System is a set of programs that manipulates encoded knowledge to solve problems in a specialized
domain that normally requires human expertise. An Expert system’s knowledge is obtained from the expert
sources such as texts, journals articles, databases etc. and coded in a form suitable for the system to use in its
inference or reasoning processes. Once a sufficient body of Expert knowledge has been acquired, it must be
encoded in some form, loaded into knowledge base, then tested, and refined continually throughout the life of
the system.
PROLOG serves as a powerful language in designing expert systems because of its following features:
Use knowledge rather thandata.
Modification of the knowledge base without recompilation of controlprograms.
Reviewed By
Capable of explaingconclusions.
Symbolic computations resembling manipulations of natural language.
Reason withmeta-knowledge.
META-PROGRAMMING
A meta-program is a program that other programs as data. Interpreters and compilers are examples of meta-
programs. Meta-interpreter is a particular kind of meta-program: an interpreter for a language written in that
language. So a PROLOG meta-interpreter is an interpreter for PROLOG, itself written in PROLOG.
Due to its symbol-manipulation capabilities, prolog is a powerful language for meta- programming. Therefore,
it is often used as an implementation language for other languages. PROLOG is particularly suitable as a
language for rapid prototyping where we are interested in implementing new ideas quickly. New ideas are
rapidlyimplemented and experimented with. In prototyping the emphasis is on bringing new ideas to life
quickly and cheaply, so that they can be immediatelytested.
On the other hand, there is not much emphasis on efficiency of implementation. Once the ideas are developed, a
prototype may have to be re-implemented, possibly in another, more efficient programming language. Even if
this is necessary, the prototype is useful because it usually helps to speed up the creative development stage.
VIVA QUESTION
OUTCOME: Students will get the basic idea of how to program in prolog and its working
environment
ASSIGNMENT 2
OBJECTIVE: Write simple fact for following:
Reviewed By
Program:
Clauses
likes(ram ,mango).
girl(seema).
red(rose).
likes(bill ,cindy).
owns(john ,gold).
Output:
Goal
queries
?-likes(ram,What).
What= mango
?-likes(Who,cindy).
Who= cindy
?-red(What).
What= rose
?-owns(Who,What).
Who= john
What= gold.
VIVA QUESTION
Reviewed By
Assignment 3
OBJECTIVE: Write predicates one converts centigrade temperatures to Fahrenheit, the other checks if a
temperature is below freezing.
Program:
Production rules:
Arithmetic:
c_to_f →f is c * 9 / 5 +32
freezing→ f < = 32
Rules:c_to_f(C,F) :-
F is C * 9 / 5 + 32.
freezing(F) :-
F =< 32.
Output:
Queries:
?- c_to_f(100,X).
X = 212
Yes
?- freezing(15) .
Yes
?- freezing(45).
No
VIVA QUESTION
S.No. Questions Marks CO BL
1. What is horn clause? 2.5 2 2
2. 2.5 2 1
Assignment 4
Reviewed By
Imagine a room containing a monkey, chair and some bananas. That have been hanged from the centre of ceiling. If the
monkey is clever enough he can reach the bananas by placing the chair directly below the bananas and climb on the
chair .The problem is to prove the monkey can reach the bananas.The monkey wants it, but cannot jump high enough
from the floor. At the window of the room there is a box that the monkey can use. The monkey can perform the following
actions:-
1) Walk on the floor.
2) Climb the box.
3) Push the box around (if it is beside the box).
4) Grasp the banana if it is standing on the box directly under the banana.
Production Rules
can_reach→ clever,close.
get_on: →can_climb.
under →in room,in_room, in_room,can_climb.
Close →get_on,under| tall
Parse Tree:
Clauses:
in_room(bananas).
in_room(chair).
in_room(monkey).
clever(monkey).
can_climb(monkey, chair).
tall(chair).
can_move(monkey, chair, bananas).
can_reach(X, Y):-
clever(X),close(X, Y).
get_on(X,Y):- can_climb(X,Y).
under(Y,Z):-
in_room(X),in_room(Y),in_room(Z),can_climb(X,Y,Z).
close(X,Z):-get_on(X,Y),
under(Y,Z);
tall(Y).
Reviewed By
Output:
Queries:
?- can_reach(A, B).
A = monkey.
B = banana.
?- can_reach(monkey, banana).
Yes.
VIVA QUESTION
Assignment 5
OBJECTIVE: WAP in turbo prolog for medical diagnosis and show the advantage and disadvantage of green and
red cuts.
Program:
Domains:
disease,indication=symbol
name-string
Predicates:
hypothesis(name,disease)
symptom(name,indication)
response(char)
go
goonce
Clauses
go:-
goonce
write("will you like to try again (y/n)?"),
response(Reply),
Reply='n'.
go.
goonce:-
write("what is the patient's name"),nl,
readln(Patient),
hypothesis(Patient,Disease),!,
Reviewed By
write(Patient,"probablyhas",Disease),!,
goonce:-
write("sorry, i am not ina position to diagnose"),
write("the disease").
symptom(Patient,fever):-
write("does",Patient,"has a fever (y/n)?"),nl,
response(Reply),
Reply='y',nl.
symptom(Patient,rash):-
write ("does", Patient,"has a rash (y/n)?" ),nl,
response(Reply),
Reply='y',
symptom(Patient_body,ache):-
write("does",Patient,"has a body ache (y/n)?"),nl,
response(Reply).
Reply='y',nl.
symptom(Patient,runny_nose):-
write("does",Patient,"has a runny_nose (y/n)?"),
response(Reply),
Reply='y'
hypothesis(Patient,flu):-
symptom(Patient,fever),
symptom(Patient,body_ache),
hypothesis(Patient,common_cold):-
symptom(Patient,body_ache),
Symptom(Patient,runny_nose).
response(Reply):-
readchar(Reply),
write(Reply).
Output: makewindow(1,7,7"Expert Medical Diagnosis",2,2,23,70),
go.
VIVA QUESTION
Assignment 6
OBJECTIVES: WAP to implement Factorial, Fibonacci of a given number.
Reviewed By
predicaes
fact(X,X)
clauses fact(0,1):-!.
fact(No,Fac):-
N = No -1, Fact(N,F),
Fac = No*F.
predicaes
fib(0, 0).
clauses
fib(X, Y) :- X > 0, fib(X, Y, _).
fib(1, 1, 0).
fib(X, Y1, Y2) :-
X > 1,
X1 is X - 1,
fib(X1, Y2, Y3),
Y1 is Y2 + Y3.
Output:
Goal:
?-fib(10,X).
X=55
VIVA QUESTION
Reviewed By
OUTCOME: Student will understand the implementation of Fibonacci and factorial series
using prolog.
Assignment no – 7
Program:
In the 4 Queens problem the object is to place 4 queens on a chessboard in such a way that no queens can
capture a piece. This means that no two queens may be placed on the same row, column, or diagonal.
predicates
nondetermplaceN(integer, board, board)
nondetermplace_a_queen(integer, board, board)
nondetermnqueens(integer)
nondetermmakelist(integer, freelist)
nondetermfindandremove(integer, freelist, freelist)
nextrow(integer, freelist, freelist)
clausesnqueens(N):-
makelist(N,L),
Diagonal=N*2-1,
makelist(Diagonal,LL),
Reviewed By
placeN(N,board([],L,L,LL,LL),Final), write(Final).
placeN(_,board(D,[],[],D1,D2),board(D,[],[],D1,D2)):-!.
placeN(N,Board1,Result):-
place_a_queen(N,Board1,Board2),
placeN(N,Board2,Result).
place_a_queen(N,
board(Queens,Rows,Columns,Diag1,Diag2),
board([q(R,C)|Queens],NewR,NewC,NewD1,New D2)):-
nextrow(R,Rows,NewR),
findandremove(C,Columns,NewC),
D1=N+C-R,findandremove(D1,Diag1,NewD1),
D2=R+C-1,findandremove(D2,Diag2,NewD2).
findandremove(X,[X|Rest],Rest).
findandremove(X,[Y|Rest],[Y|Tail]):-
findandremove(X,Rest,Tail).
makelist(1,[1]).
makelist(N,[N|Rest]) :-
N1=N-1,makelist(N1,Rest).
nextrow(Row,[Row|Rest],Rest).
Output:
Goal:
?-nqueens(4),nl. board([q(1,2),q(2,4),q(3,1),q(4,3),[],[],[7,4,1],[7,4,1])
yes
Reviewed By
VIVA QUESTION
Assignment 8
OBJECTIVE: Write a program to solve traveling salesman problem.
Program:
Production Rules:-
route(Town1,Town2,Distance)
road(Town1,Town2,Distance).
route(Town1,Town2,Distance)
road(Town1,X,Dist1),
route(X,Town2,Dist2),
Distance=Dist1+Dist2, domains
town = symbol
distance = integer predicates
nondeterm road(town,town,distance)
Reviewed By
nondeterm route(town,town,distance)
clauses
road("tampa","houston",200).
road("gordon","tampa",300).
road("houston","gordon",100).
road("houston","kansas_city",120).
road("gordon","kansas_city",130).
route(Town1,Town2,Distance):-
road(Town1,Town2,Distance).
route(Town1,Town2,Distance):-
road(Town1,X,Dist1),
route(X,Town2,Dist2),
Distance=Dist1+Dist2,!.
Output:
Goal:
route("tampa", "kansas_city", X),
write("Distance from Tampa to Kansas City is ",X),nl.
VIVA QUESTION
Assignment 9
OBJECTIVE: Write a program to solve water jug problem using LISP.
Program:
;returns the quantity in first jug (defun get-first-jug
(state) (carstate))
Reviewed By
;return the state when the first jug is filled (first jug can hold 3)
(defun fill-first-jug (state)
(cond
((< (get-first-jug state) 3) (get-state 3 (get-second-jug state))))))
;returns the state when the second jug is filled (second jug can hold 5) (defun fill-second-jug
(state)
(cond
((< (get-second-jug state) 5) (get-state (get-first-jug state) 5))))
;;;MAIN FUNCTION
(defundfs (start-state depth lmt) (setf *node* 0)
(setf *limit* lmt)
(dfs-node start-state depth)
)
VIVA QUESTION
Reviewed By
Reviewed By