Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΕΛΕΓΧΟΣ ΑΝΑΖΗΤΗΣΗΣ. Παράδειγμα 1 member (X, [X | Y]. member (X, [Y | Z] :- member (X, Z) ? member (b, [a, b, c, b, e]) ? member (b, [b, c, b, e]) ? member.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΕΛΕΓΧΟΣ ΑΝΑΖΗΤΗΣΗΣ. Παράδειγμα 1 member (X, [X | Y]. member (X, [Y | Z] :- member (X, Z) ? member (b, [a, b, c, b, e]) ? member (b, [b, c, b, e]) ? member."— Μεταγράφημα παρουσίασης:

1 ΕΛΕΓΧΟΣ ΑΝΑΖΗΤΗΣΗΣ

2 Παράδειγμα 1 member (X, [X | Y]. member (X, [Y | Z] :- member (X, Z) ? member (b, [a, b, c, b, e]) ? member (b, [b, c, b, e]) ? member (b, [c, b, e]) C2 C1 C2 ? member (b, [b, e]) C1 C2 ? member (b, [e]) C2 ? member (b, []) Αχρείαστος υπολογισμός

3 Παράδειγμα 1 (συνέχεια) member (X, [X | Y] :- !. member (X, [Y | Z] :- member (X, Z) ? member (b, [a, b, c, b, e]) Π1Π1 Π2Π2 ?! ? member (b, [b, c, b, e])

4 Παράδειγμα 2 merge ([X | Xs], [Y | Ys], [X | Zs]) :- X < Y, !, merge (Xs, [Y | Ys], Zs). merge ([X | Xs], [Y | Ys], [X, Y | Zs]) :- X = Y, !, merge (Xs, Ys, Zs). merge ([X | Xs], [Y | Ys], [Y | Zs]) :- X > Y, !, merge ([X | Xs], Ys, Zs). merge (Xs, [], Xs) :- !. merge ([], Ys, Ys) :- !. Μόνο ένας κανόνας μπορεί να χρησιμοποιηθεί για κάθε δεδομένο στόχο. Όταν ένα από τα Χ Υ πετύχει τότε τα άλλα θα αποτύχουν.

5 Παράδειγμα 2 (συνέχεια) ? merge ([1, 3, 5], [2, 3], Xs) ?1<2, !, merge ([3,5], [2,3], Zs) ?1=2,!?1>2,!

6 Επίδραση της αποκοπής στο δέντρο υπολογισμού Η αποκοπή κόβει: –όλους τους κανόνες πιο κάτω από τον κανόνα στον οποίο βρίσκεται (κανόνες της ίδιας σχέσης)‚ δηλ. όλες τις εναλλακτικές λύσεις που προέρχονται από κανόνες πιο κάτω. –την οπισθοδρόμηση σε στόχους στα αριστερά της αποκοπής μέσα στον κανόνα που βρίσκεται‚ δηλ. όλες τις εναλλακτικές λύσεις των ατομικών στόχων στα αριστερά της αποκοπής. Η αποκοπή δεν κόβει: –την οπισθοδρόμηση σε στόχους στα δεξιά της αποκοπής μέσα στον κανόνα που βρίσκεται.

7 Επίδραση της αποκοπής στο δέντρο υπολογισμού A1 :- B1, …, Bk. A2 :- C1, …, C2. Aν :- D1, …, Dp, !, Dp+2, …, Dμ Αν+1:- E1, …, En.. Am :- W1, …, Wr Οπισθοδρόμηση

8 Παράδειγμα: Περικοπή λύσεων που πλεονάζουν sort (Xs, Ys) :- append (As, [X, Y | Bs], Xs), X>Y, !, append (As, [Y, X | Bs], Ζs), sort (Ζs, Ys). sort (Xs, Ys) :- ordered (Xs), !. ?sort ([3, 2, 1], Ys) Αυτό έχει μόνο μια λύση Υs = [1, 2, 5]. Όμως υπάρχουν δύο τρόποι για να πάρουμε τη λύση: (1) 3 ↔ 2,3 ↔ 1,2 ↔ 1 [2, 3, 1][2, 1, 3][1, 2, 3] (2) 2 ↔ 1,3 ↔ 1,3 ↔ 2 [3, 1, 2][1, 3, 2][1, 2, 3]

9 Green/Red cuts – Πράσινες/Κόκκινες αποκοπές Πράσινες αποκοπές: Η προσθήκη ή η αφαίρεση αυτών των αποκοπών δεν αλλάζει τη δηλωτική σημασία του προγράμματος‚ π.χ. στο merge και sort πιο πάνω. Κόκκινες αποκοπές : αυτές που δεν είναι πράσινες‚ δηλ. αλλάζουν τη δηλωτική σημασία!

10 Παράδειγμα min (X, Y, X) :- X ≤ Y,!. min (X, Y, Y) :- X > Y. minimum (X, Y, X) :- X ≤ Y,!. minimum (X, Y, Y). Τα δύο αυτά προγράμματα δουλεύουν σωστά στην PROLOG αλλά το δεύτερο έχει σαν λογικό συμπέρασμα π.χ. min (3, 6, 6).

11 Παράδειγμα if_then_else (P,Q,R) :- P, !, Q if_then_else (P,Q,R) :- not P, R. if_then_else (P,Q,R) :- P, !, Q if_then_else (P,Q,R) :- R. Προγράμματα με κόκκινες αποκοπές μπορούν να γίνουν κατανοητά μόνο με τη διαδικαστική ερμηνεία.

12 Υλοποίηση της ΑΣΑ r1: not X:- X, !, fail r2: not X. ?not G r2 r1r1 ? G,!,fail G αποτυγχάνειΟRΟR G επιτυγχάνει ? !,fail ? fail Κόβει την οπισθοδρόμηση στον άλλο κανόνα για το not X Oπισθοδρόμηση


Κατέβασμα ppt "ΕΛΕΓΧΟΣ ΑΝΑΖΗΤΗΣΗΣ. Παράδειγμα 1 member (X, [X | Y]. member (X, [Y | Z] :- member (X, Z) ? member (b, [a, b, c, b, e]) ? member (b, [b, c, b, e]) ? member."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google