© Ευάγγελος Κουράκος Μαυρομιχάλης, 2006
Προηγούμενο | Περιεχόμενα | Επόμενο
 

Τι είναι η Prolog

N. Wirth: Program = data structure + algorithm
R. Kowalski: Algorithm = logic + control

Η Prolog είναι μία δηλωτική γλώσσα προγραμματισμού στην οποία τόσο οι δομές δεδομένων της όσο και ο μηχανισμός λειτουργίας της βασίζονται στο προτασιακό και κατηγορηματικό λογισμό.

Prolog = Programming in Logic

Τα πρώτα βήματα στο λογικό προγραμματισμό οφείλονται στους Kowalski και Colmerauer το 1972. Πρώτος ο Kowalski διατύπωσε τη διαδικαστική ερμηνεία της λογικής των τύπων Horn.

Έδειξε ότι κάθε κανόνας της μορφής:

Α1 <= Β1 & Β2 & ... & Βn

όπου Α1, B1,... Βn είναι κατηγορήματα, μπορεί να διαβαστεί και να εκτελεστεί από μία αναδρομική γλώσσα προγραμματισμού όπως η Prolog.

Για να πάρουμε μία "γεύση" για το πως αναπαριστούμε τύπους Horn στη Prolog, δίνουμε τα ακόλουθα δύο παραδείγματα:

Παράδειγμα 1ο:

Έστω η ακόλουθη πρόταση:

"Όταν μελετώ στα Happy Donuts και τρώω donuts θέλω να πίνω και καφέ."

στη μαθηματική λογική αναπαριστούμε τη πρόταση γράφοντας τον ακόλουθο τύπο Horn:

(s & k & d) => (c)

όπου s="μελετώ",
k ="είμαι στα Happy Donuts",
d="τρώω donuts",
c="πίνω καφέ"

Αντίστοιχα στη Prolog εισάγουμε τα ακόλουθα γεγονότα (τα οποία πιστεύουμε ότι ισχύουν):

s.
k.
d.

και τον ακόλουθο κανόνα:

c :- s, k, d.

όπου ":-" και "," αναπαριστούν τους λογικούς συνδέσμους <= και & αντίστοιχα.

Έχοντας εισάγει τη γνώση αυτή στη Prolog, μπορούμε να ρωτήσουμε αν το γεγονός c είναι αληθές. Η Prolog ελέγχοντας διαδοχικά από αριστερά προς τα δεξιά όλα τα γεγονότα του δεξιού μέλους του κανόνα βγάζει αυτόματα το συμπέρασμα ότι το c είναι αληθές.

Παράδειγμα 2ο:

Ένα άλλο παράδειγμα τύπου Horn είναι το ακόλουθο:

"Αν ο Χ είναι άνθρωπος τότε ο Χ είναι θνητός"

Στη μαθηματική λογική γράφουμε:

(Human(x)) --> (Mortal(x))

Αντίστοιχα στην Prolog έχουμε:

mortal(X):- human(X).

Αν τώρα δηλώσουμε ότι το γεγονός:

human(john).

είναι αληθές, τότε η Prolog μπορεί να εξάγει το συμπέρασμα ότι ο john είναι θνητός, δηλαδή ότι το γεγονός mortal(john) ισχύει. Αν όμως ρωτήσουμε αν ισχύει το γεγονός mortal(nick), τότε η Prolog απαντά ότι το γεγονός αυτό δεν ισχύει (ακόμα και αν πιστεύουμε ότι στο πραγματικό μας κόσμο ισχύει). Δηλαδή στη Prolog ισχύει η υπόθεση του κλειστού κόσμου (closed world assumption).

Στις επόμενες δύο ενότητες θα αναφερθούμε:


Τελευταία ενημέρωση σελίδας: 17/10/2008