Προηγούμενη Πάνω Επίπεδο Επόμενη Περιεχόμενα
Επόμενη: SLD -Δέντρα Πάνω Επίπεδο: Ανάλυση Προηγούμενη: Η Αρχή της Ανάλυσης 

4.6 SLD -Ανάλυση

Η SLD- ανάλυση προτάθηκε από τον Kowalski. Το όνομά της σημαίνει SL- ανάλυση για οριστικές (Definite) προτάσεις και είναι βασισμένη στην ανάλυση εισόδου (input resolution), η οποία είναι ένας περαιτέρω περιορισμός της γραμμικής ανάλυσης και απαιτεί μια από τις γονικές προτάσεις σε κάθε βήμα ανάλυσης να είναι πρόταση εισόδου. Η SLD- ανάλυση είναι απλούστερη από την ανάλυση χωρίς περιορισμούς ή τη γραμμική, αλλά μπορεί να εφαρμοστεί μόνο σε προτάσεις Horn (Horn clauses).

Μια πρόταση Horn (Horn clause) (οφείλει το όνομά της στον λογικό Alfred Horn) είναι είτε μια οριστική προγραμματική πρόταση (definite program clause), είτε ένας οριστικός στόχος (definite goal). Μια οριστική προγραμματική πρόταση είναι μια πρόταση που περιέχει ένα θετικό και κανένα ή περισσότερα αρνητικά λεκτικά στοιχεία. 'Ενας οριστικός στόχος είναι μια πρόταση που περιέχει μόνο αρνητικά λεκτικά στοιχεία. Θα ονομάζουμε οριστικό πρόγραμμα ένα πεπερασμένο σύνολο από οριστικές προγραμματικές προτάσεις - συνήθως θα το συμβολίζουμε tex2html_wrap_inline1236.

Εάν μια οριστική προγραμματική πρόταση αποτελείται από το θετικό λεκτικό στοιχείο A και από τα αρνητικά λεκτικά στοιχεία tex2html_wrap_inline1470, τότε η πρόταση αυτή μπορεί να γραφεί, ισοδύναμα, στη μορφή
displaymath1458
ή
displaymath1459
όπου το A ονομάζεται κεφαλή (head) της πρότασης και το κομμάτι tex2html_wrap_inline1474 σώμα (body) της πρότασης. Στην περίπτωση ενός μόνον ατόμου (m=0) μπορούμε να παραλείψουμε το σύμβολο ``tex2html_wrap_inline1478''. 'Ενας οριστικός στόχος μπορεί να γραφεί στη μορφή
displaymath1460
Επίσης, η κενή πρόταση θεωρείται στόχος.

Το σύνολο των προτάσεων Horn είναι ένας περιορισμός του συνόλου όλων των τύπων, αφού υπάρχουν τύποι που δεν μπορούν να γραφούν στη μορφή αυτή. Ωστόσο, οι προτάσεις Horn είναι ευκολότερες στο χειρισμό σε σχέση με τις γενικές προτάσεις. Η γλώσσα Horn από ένα αλφάβητο, είναι το σύνολο όλων των προτάσεων Horn που μπορούν να σχηματιστούν από τα σύμβολα του εν λόγω αλφαβήτου.

Ας είναι tex2html_wrap_inline1050 ένα σύνολο προτάσεων Horn και C μια πρόταση Horn. Ονομάζουμε SLD- παραγωγή μήκους k της C από το tex2html_wrap_inline1050, μια πεπερασμένη ακολουθία προτάσεων Horn
displaymath1461
τέτοια ώστε tex2html_wrap_inline1490 και κάθε tex2html_wrap_inline1492 είναι ένα δυαδικό αναλυθέν ενός επιλεγμένου ατόμου στο σώμα του Rj-1 και της κεφαλής μιας οριστικής προγραμματικής πρότασης Cj από το tex2html_wrap_inline1050. Το άτομο αυτό είναι δυνατό να επιλεγεί με χρήση ενός κανόνα υπολογισμού (computation rule) ή, όπως αλλιώς λέγεται, ενός κανόνα επιλογής (selection rule). Η R0 ονομάζεται κορυφαία πρόταση (top clause) και οι Cj προτάσεις εισόδου (input clauses) της SLD- παραγωγής. Μια SLD- παραγωγή της κενής πρότασης από το tex2html_wrap_inline1050 θα ονομάζεται SLD- άρνηση του tex2html_wrap_inline1050.

Αν tex2html_wrap_inline1236 είναι ένα οριστικό πρόγραμμα, G ένας οριστικός στόχος και tex2html_wrap_inline1512 η ακολουθία των γενικότερων ταυτοποιητών που χρησιμοποιούνται σε κάποια SLD- άρνηση του tex2html_wrap_inline1514, τότε το αποτέλεσμα του tex2html_wrap_inline1236 ονομάζεται υπολογισμένη απάντηση (computed answertex2html_wrap_inline1282 για το tex2html_wrap_inline1514 και ισούται με τον περιορισμό της σύνθεσης tex2html_wrap_inline1522 στις μεταβλητές του G, όπου υποθέσαμε ότι tex2html_wrap_inline1526 tex2html_wrap1210.

Ο προηγούμενος ορισμός προϋποθέτει ότι κάθε πρόταση εισόδου Cj δεν έχει κοινές μεταβλητές με το στόχο G αλλά ούτε και με προηγούμενες προτάσεις εισόδου και γενικότερους ταυτοποιητές. Τούτο μπορεί να επιτευχθεί με τη μετονομασία κάποιων μεταβλητών στις προτάσεις εισόδου. Για παράδειγμα, ας θεωρήσουμε το επόμενο πρόγραμμα tex2html_wrap_inline1236:
 

tabular343

Αν tex2html_wrap_inline1540, τότε η SLD- άρνηση του tex2html_wrap_inline1514 φαίνεται στο σχ. 4.6α [*], όπου τα tex2html_wrap_inline1544 είναι οι γενικότεροι ταυτοποιητές που χρησιμοποιούνται σε κάθε βήμα. Ο κανόνας υπολογισμού σ' αυτό το παράδειγμα επιλέγει το αριστερότερο άτομο σε κάθε στόχο (υπογραμμισμένα άτομα).

  figure349
Σχήμα 4.6α: SLD- άρνηση με επιλογή του αριστερότερου στόχου
 

Η υπολογισμένη απάντηση είναι tex2html_wrap_inline1546, αφού tex2html_wrap_inline1548. Στο προηγούμενο παράδειγμα, αν χρησιμοποιήσουμε ένα κανόνα υπολογισμού ο οποίος επιλέγει πάντοτε το δεξιότερο άτομο σ' ένα στόχο, θα πάρουμε την ίδια υπολογισμένη απάντηση tex2html_wrap_inline1546 (βλ. σχ. 4.7α  [*]).
 


Εργαστήριο Γλωσσών Προγραμματισμού και Τεχνολογίας Λογισμικού

Mon Apr 5 16:25:43 EEST 1999