04 Recursion Lists
04 Recursion Lists
04 Recursion Lists
Lists
Artificial Intelligence Programming in Prolog
Lecturer: Tim Smith
Lecture 4
04/10/04
• BACKTRACKING
– when the system fails during its search, it returns to previous
choices to see if making a different choice would allow
success.
4) likes(Person,Drink):-
drinks(Person,Drink).
5) likes(Person,Somebody):-
likes(Person,Drink),
likes(Somebody,Drink).
X/coffee 4
X = coffee
drinks(alan,X).
1st match is failed
and forgotten 1 X/beer
X = beer
2nd solution
= “Alan likes beer because Alan drinks beer.”
X = beer
X = coffee
likes(alan,coffee) likes(Somebody,coffee)
1 X/beer
Somebody
X/coffee 2 Somebody 3 / heather
/alan
X = beer 2
X = coffee Somebody
4 solution =
th
Somebody
“Alan likes Heather = heather
= alan
because Heather likes coffee.”
Somebody 2 3 5
= alan likes(Someb,coffee)
Somebody 2 likes(coffee,coffee)
= heather Someb = alan
likes(coffee,X3)
likes(X2,X3)
Symbols Signs
a Strings <--->
bob ==>
l8r_2day ‘a’
…
‘Bob’
‘L8r 2day’