Download presentation

Presentation is loading. Please wait.

Published byCody Huck Modified over 3 years ago

2
CS 2104 – Prog. Lang. Concepts Final wrap-up Dr. Abhik Roychoudhury School of Computing

3
Cuts A cut prunes an explored part of a Prolog search tree. a(1):-b. a(2):-e. b:- c. b:-d. d. e. ?- a(X). X = 1 ; X = 2 ; no Cut in a clause commits to the use of that clause. Cut has the effect of making b fails if c fails. X=2 X=1 a(X) b e c d X=1 X=2 !, c ?- a(X). X = 2 ; no

4
a(X):-b(X). a(X) :-f(X). b(X):-g(X), v(X). b(X):-X = 4, v(X). g(1). g(2). g(3). v(1). v(X) :- f(X). f(5). ?- a(Z). Z = 1 ; Z = 5 ; no v(3) a(Z) b(Z)f(Z) g(Z), v(Z) Z=4,v(4) backtrack v(1)f(1) Z = 1 v(1)v(2) f(2) backtrack f(3) backtrack f(4) backtrack f(5) Z = 5 !, ?- a(Z). Z = 1 ; Z = 5 ; no

5
Green Cuts, Red Cuts Green Cut a cut the prunes part of a Prolog search tree that cannot possibly reach a solution used mainly for efficiency sake. Red Cut a cut that alters the set of possible solutions reachable. Powerful tool, yet fatal and can be confusing Handle with care

6
Merging two lists merge([X|Xs],[Y|Ys],[X|Zs]) :- X

7
Example: Green cut merge([X|Xs],[Y|Ys],[X|Zs]) :- X

8
Example: Red Cut member(X,[X|Xs]) :- !. member(X,[Y|Ys]) :- member(X, Ys). member(1, [1,2,1,1,3]) is more efficient. But member(X, [1,2,3]) produces only one answer X = 1

9
Summary Prolog is a procedural language with: Assign once variables Nondeterminism As a result of having assign once variables Assignment is symmetric Test and assignment represented by same operator. Unification combines the concepts of test, assignment and pattern matching.

10
Summary As a result of having nondeterminism Control issues for the search Cuts (allows the programmer explcit control) Meaning of Prolog program given by queries that can be evaluated to true. Applications of Prolog Database query language Grammar Processing, Natural Language Processing

11
Homework 10 mergesort([], []) :- !. mergesort([A], [A]) :- !. mergesort(L, L1) :- split(L, M, N), mergesort(M, M1), mergesort(N, N1), merge(M1, N1, L1). split([], [], []). split([A], [A], []). split([A,B|Rest], [A|M], [B|N]) :- split(Rest, M, N).

12
Homework 10 Replacing an element in a list replace(X, Y, [X|Rest], [Y|Rest]) :- !. replace(X, Y, [Z|Rest], [Z|List]) :- replace(X, Y, Rest, List).

13
Homework 10 Removing duplicates in a list remdup(L, L1) :- remdup(L, [], L1). remdup([], L, L). remdup([X|Xs], SoFar, List) :- member(X, SoFar), !, remdup(Xs, SoFar, List). remdup([X|Xs], SoFar, List) :- remdup(Xs, [X|SoFar], List).

14
Homework 10 What happens for query find(X) find(X) :- not(p(X)). p(X) :- q(X), r(X). q(f(X)) :- q(X), X \= b. r(X) :- X \= a

15
Homework 10 find(X) not(p(X)) p(X) q(X), r(X) q(X1), r(f(X1)) q(X2), r(f(f(X2))) Query eval. Does not terminate …

16
Answers for last year’s final exam posted in course web-site. Look under -> Materials -> Other Resources

17
Thank You

Similar presentations

OK

1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 28: Prolog’s Lists, Negation and Imperative Control Flow COMP 144 Programming Language.

1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 28: Prolog’s Lists, Negation and Imperative Control Flow COMP 144 Programming Language.

© 2018 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on land soil water natural vegetation and wildlife resources Best ppt on online education Ppt on bresenham's line drawing algorithm in c Appt online Ppt on astronomy and astrophysics notes Ppt on construction of building Ppt on industrial employment standing order act 1946 Ppt on symbols of elements Economics ppt on lpg Ppt on global warming and climate change