Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεBarbara Athan Τροποποιήθηκε πριν 10 χρόνια
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πισθοδρόμηση
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.