Controlling Backtracking : Cuts - PowerPoint PPT Presentation

About This Presentation
Title:

Controlling Backtracking : Cuts

Description:

Controlling Backtracking : Cuts t.k.prasad_at_wright.edu http://www.knoesis.org/tkprasad/ cs774 (Prasad) L6Backtracking * Production language parser : linear General ... – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 20
Provided by: TK5
Learn more at: http://cecs.wright.edu
Category:

less

Transcript and Presenter's Notes

Title: Controlling Backtracking : Cuts


1
Controlling Backtracking Cuts
  • t.k.prasad_at_wright.edu
  • http//www.knoesis.org/tkprasad/

2
Motivation
  • Efficiency by preventing needless backtracking
  • Cf. CFL Parsing
  • Lookaheads vs Backtracking vs Dynamic programming
  • Avoiding duplicates or resatisfaction
  • Prolog as programming language
  • Tailoring control strategy

3
Efficiency Cut
  • Preventing backtracking when faced with mutually
    disjoint cases
  • sign(X, positive) - X gt 0.
  • sign(X, negative) - X lt 0.
  • sign(X, zero).

4
(contd)
  • Good use of cut if declarative reading preserved
  • In general, reordering of clauses may not
    preserve the declarative meaning.
  • sign(X, positive) - X gt 0, !.
  • sign(X, negative) - X lt 0, !.
  • sign(X, zero).

5
Green Cut vs Red Cut
  • A use of a cut which improves only efficiency of
    a program, without altering its declarative
    meaning, is referred to as a green cut.
  • In practice, prunes away irrelevant proofs, or
    proofs bound to fail.
  • In practice, use them when mutually exclusive
    cases occur, or if non-determinism can be
    minimized.

6
Green Cut vs Red Cut
  • A use of a cut that alters the declarative
    meaning of a program is referred to as a red cut.
  • In practice, eliminates unwanted logical
    solutions
  • Note that mature Prolog implementations index
    clauses for a predicate on the principal functor
    of the first argument in the head of a clause
    thereby reducing non-determinism.
  • p(f(_),_,_) - q1(), , qn().

7
Implementing Conditional
  • p(x) - if c(x) then r(x) else q(x)
  • p(X) - c(X), !, r(X).
  • p(X) - q(X).
  • In this case, reordering of clauses changes the
    meaning.

8
Avoiding Duplicates
  • member(X,XL) - !.
  • member(X,_L) - member(X,L).
  • Without cut, the goal
  • ?- member(a, a, a, a)
  • will succeed thrice.
  • Note that with cut member-predicate cannot be
    used to generate/enumerate elements in a list.
    That is, invertibility is destroyed.

9
Bugs with Cuts
  • min(X, Y, X) - X lt Y, !.
  • min(X, Y, Y).
  • Flaw the goal
  • ?- min(3,6,6)
  • does not fail.
  • Reason min(3,6,6) does not unify with
    min(X,Y,X).
  • Fix change first rule to
  • min(X, Y, Z) - X lt Y,!,Z X.

10
Effect of Cut
  • Matching Rule
  • H - B1, B2, , Bm,!, , Bn.
  • Goal ?-G.
  • When ! is encountered, the bindings for
    variables in goals B1, ,Bm, and G are frozen.
  • That is, alternate solutions to B1, , Bm, and
    remaining alternatives for G are discarded.
  • Note that the ordering of body literals and
    clauses becomes significant in the presence of
    cut.

11
Effect of Cut
  • p(X) - q(X), r(X), !, s(X).
  • p(d).
  • Declarative Reading (ignoring cut) p(d)
  • Procedural reading (using cut) p(d)
  • ?- p(X). -gt one solution
  • ?- p(a). -gt no
  • ?- p(d). -gt yes

12
Effect of Cut
  • p(X) - q(X), r(X), !, s(X).
  • p(d).
  • Additional Facts q(a),r(a),s(a)
  • Declarative Reading p(a), p(d)
  • Procedural reading p(a)
  • ?- p(X). -gt X a
  • ?- p(a). -gt yes
  • ?- p(d). -gt yes

13
(contd)
  • p(X) - q(X), r(X), !, s(X).
  • p(d).
  • Additional Facts q(b),s(b)
  • Declarative Reading (ignoring cut) p(d)
  • Procedural reading (using cut) p(d)
  • ?- p(X). -gt X d
  • ?- p(a). -gt no
  • ?- p(d). -gt yes

14
(contd)
  • p(X) - q(X), r(X), !, s(X).
  • p(d).
  • Additional Facts q(c),r(c)
  • Declarative Reading p(d)
  • Procedural reading
  • ?- p(X). -gt no
  • ?- p(c). -gt no
  • ?- p(d). -gt yes

15
(contd)
  • p(X) - q(X), r(X), !, s(X).
  • p(d).
  • Additional Facts q(a),r(a),s(a),
  • q(b),r(b),s(b)
  • ?- p(X).
  • Declarative Reading (ignoring cut)
  • p(a), p(b), p(d)
  • Procedural reading (using cut)
  • p(a)

16
Disadvantages of Cut
  • Destroys the declarative reading Need to know
    the behavior of the interpreter to understand the
    meaning (side-effects)
  • p - a, b.
  • p - c.
  • p - a, !, b.
  • p - c.
  • p - c.
  • p - a, !, b.

17
Conditional vs Cut
  • tp(X,Y) - q(X) -gt r(Y) s(Y).
  • tp(m,m).
  • tp(n,n).
  • is not equivalent to
  • sp(X,Y) - q(X),!,r(Y).
  • sp(X,Y) - s(Y).
  • sp(m,m).
  • sp(n,n).
  • q(a). q(c).
  • r(e). r(f).
  • s(g). s(h).

18
(contd)
  • ?- tp(X,Y).
  • X a Y e
  • X a Y f
  • X m Y m
  • X n Y n
  • Local cut
  • ?- sp(X,Y).
  • X a Y e
  • X a Y f
  • sp-goal is not resatisfied for sp-facts because
    of the cut.

19
Other uses of Cut
  • Implementing default or otherwise clause.
  • a(X,Y) - p1(X), !, q1(X,Y).
  • a(X,Y) - pn(X), !, qn(X,Y).
  • a(X,Y) - r(X,Y).
  • Cut-Fail combination to formalize conditions
    under which failure is guaranteed.
  • a(X) - p(X), !, fail.
Write a Comment
User Comments (0)
About PowerShow.com