Download presentation

Presentation is loading. Please wait.

Published byRoss Somers Modified over 2 years ago

1
1 Logic Programming School of Informatics, University of Edinburgh Forcing Determinacy: Example minimum(X, Y, X) :- X =< Y. minimum(X, Y, Y) :- X > Y. minimum(1, 2, X) minimum(1, 2, 1)minimum(1, 2, 2) 1 =< 21 > 2

2
2 Logic Programming School of Informatics, University of Edinburgh Safe Determinacy minimum(X, Y, X) :- X =< Y, !. minimum(X, Y, Y) :- X > Y. minimum(1, 2, X) minimum(1, 2, 1)minimum(1, 2, 2) 1 =< 21 > 2 !

3
3 Logic Programming School of Informatics, University of Edinburgh Unsafe Determinacy – Looks OK minimum(X, Y, X) :- X =< Y, !. minimum(X, Y, Y). minimum(1, 2, X) minimum(1, 2, 1)minimum(1, 2, 2) 1 =< 2 !

4
4 Logic Programming School of Informatics, University of Edinburgh Unsafe Determinacy – Not Always OK minimum(X, Y, X) :- X =< Y, !. minimum(X, Y, Y). minimum(1, 2, 2) minimum(1, 2, 1)minimum(1, 2, 2) Fails to match Succeeds

5
5 Logic Programming School of Informatics, University of Edinburgh Forcing Determinacy: Cuts p(X) :- q(X), r(X), !, s(X). p(X) :- t(X). q(1). q(2). q(3). r(2). r(3). s(2). s(3). t(4). p(X) q(X)r(X)!s(X) q(1)q(2)q(3)r(2)r(3)s(2)s(3) t(X) t(4) q(2)r(2) s(2) p(2)

6
6 Logic Programming School of Informatics, University of Edinburgh Tail Recursion Optimisation delete([H|T], X, [H|Rest]):- \+ H = X, !, delete(T, X, Rest). delete([H|T], H, Result) :- delete(T, H, Result). delete([], _, []). delete([a,b,c], c, R) delete([a|[b,c]], c, [a|Rest]) delete([b,c], c, Rest) \+ a = c ! 1 2 3 2 3 delete([b|[c]], c, [b|Rest’]) delete([c], c, Rest’) \+ a = c ! 2 3 1 1 etc We only need to keep track of this goal

7
7 Logic Programming School of Informatics, University of Edinburgh Larger List Example: Agenda Search a bc d e f g [[a]] [[b,a],[c,a]] [[d,b,a],[f,b,a],[c,a]] [[e,d,b,a],[f,b,a],[c,a]] [[f,b,a],[c,a]] Depth first search looking for ‘f’

8
8 Logic Programming School of Informatics, University of Edinburgh Larger List Example: Agenda Search a bc d e f g [[a]] [[b,a],[c,a]] [[c,a],[d,b,a],[f,b,a]] [[d,b,a],[f,b,a],[g,c,a]] [[f,b,a],[g,c,a],[e,d,b,a]] Breadth first search looking for ‘f’

9
9 Logic Programming School of Informatics, University of Edinburgh Larger List Example: Agenda Search search([Agenda|T], _, Target) :- at_target(Agenda, Target). search([Agenda | T], Style, Target) :- \+ at_target(Agenda, Target), extend_agenda(Agenda, NewAgendas), merge_agendas(NewAgendas, T, Style, New), search(New, Style, Target).

10
10 Logic Programming School of Informatics, University of Edinburgh Larger List Example: Agenda Search at_target([Target | _], Target). extend_agenda([H | T], NewAgendas) :- setof([X,H | T], linked(H,X), NewAgendas). merge_agendas(A1, A2, df, New), append(A1, A2, New). merge_agendas(A1, A2, bf, New), append(A2, A1, New).

Similar presentations

OK

Breadth First Search. 1 2 34 5 6 789 101112 13 14 151617 18.

Breadth First Search. 1 2 34 5 6 789 101112 13 14 151617 18.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on resistance temperature detector Ppt on social networking sites advantages and disadvantages Ppt on eddy current brakes ppt Ppt on rc coupled amplifier circuit Ppt on mohandas karamchand gandhi about Ppt on types of pollution download Ppt on power system security Ppt on nitrogen cycle and nitrogen fixation examples Ppt on water softening techniques hair Ppt on aditya birla group