fatih university department of computer engineering controlling backtracking notes for ch.5 of...

13
FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

Upload: virginia-tyler

Post on 28-Dec-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Controlling Backtracking

Notes for Ch.5 of BratkoFor CENG 421 Fall03

Page 2: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Preventing Backtracking

• Prolog automatically backtracks in its attempts to satisfy a goal (equivalently, in its traversal of a goal tree)

• Sometimes, backtracking is a source of inefficiency

• For example, Prolog, when requested for additional answers to a goal, may try clauses that are known to lead, eventually, to failure

Page 3: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

A Double-step Function• if X < 3 then Y = 0• if 3 =< X and X < 6 then Y = 2• if 6 =< X then Y = 4• In Prolog, f( X,0) :- X < 3. % Rule 1 f( X,2) :- 3 =< X, X < 6. % Rule 2 f( X,4) :- 6 =< X. % Rule 3• Assume that X is instantiated to a

number when the program is used• The program does not exploit the fact

that the three rules are mutually exclusive

Page 4: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Experiment 1: ch5_1.pl[trace] 6 ?- f( 1,Y), Y > 2. Call: (7) f(1, _G423) ? creep ^ Call: (8) 1<3 ? creep^ Exit: (8) 1<3 ? creep Exit: (7) f(1, 0) ? creep No need to go beyond

here! Redo: (7) f(1, _G423) ? creep But rules 2 and 3^ Call: (8) 3=<1 ? creep are tried anyway^ Fail: (8) 3=<1 ? creep Redo: (7) f(1, _G423) ? creep^ Call: (8) 6=<1 ? creep^ Fail: (8) 6=<1 ? creep Fail: (7) f(1, _G423) ? creepNo

Page 5: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Using the cut: ch5_2.pl f( X,0) :- X < 3, !. % commit! f( X,2) :- 3 =< X, X < 6, !. % commit! f( X,4) :- 6 =< X.[trace] 9 ?- f( 1,Y), Y > 2. Call: (7) f(1, _G423) ? creep^ Call: (8) 1<3 ? creep^ Exit: (8) 1<3 ? creep Exit: (7) f(1, 0) ? creep Fail: (7) f(1, 0) ? creep since rule1 was “used”,No rules 2 and 3 are not

tried• “used” means: the cut in rule 1 was reached

Page 6: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Green and Red Cutsf( X,0) :- X < 3, !. % if X < 3 then Y = 0f( X,2) :- X < 6, !. % otherwise, if X < 6 then Y = 2 f( _,4). % otherwise Y = 4 (ch5_3.pl)• But the following is incorrectf( X,0) :- X < 3.f( X,2) :- X < 6 .f( _,4).• Sometimes a cut changes the meaning of a

program• Red cuts change the meaning of a program (as

in the program above)• Green cuts do not change the meaning of a

program (as in ch5_2.pl)

Page 7: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Cut Mechanism

• Let the parent goal be the one that matches the head of the clause containing the cut

• When the cut is encountered as a goal, it succeeds immediately, but it commits the system to all choices made between the time the parent goal was invoked and the time the cut was encountered: all the remaining possibilities between the parent goal and the cut are discarded

Page 8: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Examples Using Cut: ch5_4.pl

• max/3 (with cut); max1/3 (without cut)• strange behavior when one of the

arguments is a list of numbers: the first number in the list is used in the comparison. Cf. SWI-Prolog manual, section 4.6.1

• problem with max( 3,1,1): it succeeds!• max2/3 fixes this problem

max2( X,Y,Max) :- X >= Y, !, Max = X.max2( _,Y,Max) :- Max = Y.

• deterministic membership (member1/2)

Page 9: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Examples Using Cut: ch5_4.pl, Ctd.

• adding an element to a list without duplication

• add/3

• classification into categories• class/2

• in both cases, the last argument should not be instantiated

Page 10: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Negation as Failure• different( X,Y) :- X = Y, !, fail.• different( X,Y). Or:• different( X,Y) :- X = Y, !, fail; true.• not( P) :- P, !, fail ; true.• op( 900, fy, [not, ‘\+’]).• not P succeeds if P fails.• different( X,Y) :- not( X = Y).

Page 11: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Problem with Negation As Failure

• Cf. even/odd mutually recursive program (ch5_5.pl)

• A positive query ?-p(X) is interpreted as a proof for “there exists X s.t. P(X) is true”

• A negative query ?- not(p(X)) is interpreted as a proof for “for all X, P(X) is false)

Page 12: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Problems with cut and negation• The main problem with cut is that we

may lose the valuable correspondence between declarative and procedural meanings of a program

• Prolog negation is based on the closed world assumption: “if something cannot be proven, it is false.”

• This leads to especially bad results when the argument of not is a term containing unistantiated variables

• Some Prolog dialects (e.g., NU-Prolog) try to delay not subgoals until all variables in them are instantiated, when possible

Page 13: FATIH UNIVERSITY Department of Computer Engineering Controlling Backtracking Notes for Ch.5 of Bratko For CENG 421 Fall03

FATIH UNIVERSITYFATIH UNIVERSITYDepartment of Computer EngineeringDepartment of Computer Engineering

Logical Negation

• Logical negation cannot be handled using Prolog’s goal tree mechanism

• See HoleInGoalTrees.ppt