PLI31 GE1 2016 2017

6
ΠΛΗ31 1 η ΕΡΓΑΣΙΑ – 2016-17 Σελίδα 1 από 6 ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεματική Ενότητα ΠΛΗ 31: Τεχνητή Νοημοσύνη - Εφαρμογές Ακαδημαϊκό Έτος 2016 2017 Γραπτή Εργασία #1 Ημερομηνία Παράδοσης Παρασκευή, 16.12.2016, ώρα 23:59:59 Παρατηρήσεις Η εργασία σας θα πρέπει να έχει φτάσει στον Καθηγητή-Σύμβουλό σας μέχρι την Παρασκευή, 16 Δεκεμβρίου 2016, ώρα 23:59:59. Μετά την Τετάρτη, 21 Δεκεμβρίου 2016, ώρα 23:59:59, οποιαδήποτε υποβολή εργασίας θεωρείται ως εκπρόθεσμη. Την Παρασκευή, 23 Δεκεμβρίου 2016, ώρα 11:59:59 (το αργότερο), θα δημοσιευθεί ενδεικτική επίλυση της εργασίας στο διαδίκτυο. Περιμένουμε όλες οι εργασίες να υποβληθούν μέσω του συστήματος study. Πρέπει να υποβάλετε ΕΝΑ μόνο αρχείο (συμπιεσμένο), στο οποίο θα περιλαμβάνονται το πρωτότυπο κείμενο, σε οποιοδήποτε επεξεργαστή κειμένου έχετε χρησιμοποιήσει, και το παραγόμενο PDF, καθώς και όποια άλλα συνοδευτικά αρχεία. Αν υποβάλετε τμήματα κώδικα, θα πρέπει να βρίσκονται σε ξεχωριστά αρχεία, μέσα στο συμπιεσμένο αρχείο, και θα πρέπει ν’ αναφέρονται στο κείμενο της εργασίας. Αν υπάρχουν διευκρινιστικά ερωτήματα που θεωρείτε ότι είναι αναγκαία για την επίλυση της εργασίας και τα οποία δεν έχουν απαντηθεί, μπορείτε στην επίλυσή σας να τα αναφέρετε μαζί με τις παραδοχές που θα κάνετε και τις οποίες θα πρέπει να ακολουθήσετε στην επίλυσή σας. Θέμα 1: Αναζήτηση Το πρόβλημα των 6 βατράχων [20 μονάδες] Έστω ότι υπάρχουν 6 βάτραχοι, 3 πράσινοι και 3 καφέ, και 7 πέτρες στη σειρά σε μία λίμνη, όπου οι πράσινοι βάτραχοι βρίσκονται ο καθένας επάνω σε μία από τις 3 αριστερές πέτρες και οι καφέ βάτραχοι καταλαμβάνουν τις 3 δεξιές πέτρες, όπως φαίνεται στην παρακάτω εικόνα. Οι πράσινοι βάτραχοι μπορούν να κινηθούν μόνο προς τα δεξιά και οι καφέ μόνο προς τα αριστερά. Ένας βάτραχος μπορεί να πάει στην κενή πέτρα που είναι ακριβώς δίπλα του (δεξιά από πράσινο βάτραχο ή αριστερά από καφέ) ή μπορεί να πηδήξει επάνω από ένα μόνο βάτραχο του άλλου χρώματος, που βρίσκεται ακριβώς δίπλα του (δεξιά ή αριστερά, ανάλογα με το χρώμα του βατράχου), εφ’ όσον πίσω από τον βάτραχο αυτό βρίσκεται η κενή πέτρα. Τελικός στόχος είναι να γίνει ανταλλαγή θέσεων μεταξύ των πράσινων και των καφέ βατράχων. Α. Αναπαράσταση κατάστασης και τελεστές μετάβασης [2 μονάδες] Έστω ότι επιλέγουμε ως αναπαράσταση της τυχαίας κατάστασης του προβλήματος μία ακολουθία από επτά χαρακτήρες, τρία G, τρία B και ένα S, όπου το G(reen) αντιστοιχεί σε πράσινο βάτραχο, το B(rown) σε καφέ βάτραχο και το S(tone) στην κενή πέτρα, δεδομένου ότι δεν υπάρχει διαφοροποίηση μεταξύ βατράχων του ίδιου χρώματος. Δηλαδή, η αρχική κατάσταση του προβλήματος είναι η GGGSBBB και η τελική η BBBSGGG. Έστω, επίσης, ότι οι δυνατές κινήσεις των βατράχων ορίζονται σύμφωνα με τον παρακάτω πίνακα. ΣΥΜΒΟΛΟ ΠΕΡΙΓΡΑΦΗ ΠΡΟΫΠΟΘΕΣΕΙΣ ΑΠΟΤΕΛΕΣΜΑ Π1 Μετακίνηση πράσινου βατράχου μία θέση δεξιά στην κενή πέτρα Η τρέχουσα κατάσταση περιέχει υπακολουθία της μορφής GS Στη νέα κατάσταση η υπακολουθία GS αντικαθίσταται από την SG Κ1 Μετακίνηση καφέ βατράχου μία θέση αριστερά στην κενή πέτρα Π2 Μετακίνηση πράσινου βατράχου δύο θέσεις δεξιά, πηδώντας επάνω από καφέ βάτραχο, στην κενή πέτρα πίσω από τον καφέ βάτραχο

Transcript of PLI31 GE1 2016 2017

Page 1: PLI31 GE1 2016 2017

ΠΛΗ31 – 1η ΕΡΓΑΣΙΑ – 2016-17

Σελίδα 1 από 6

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Θεματική Ενότητα ΠΛΗ 31: Τεχνητή Νοημοσύνη - Εφαρμογές

Ακαδημαϊκό Έτος 2016 – 2017

Γραπτή Εργασία #1

Ημερομηνία Παράδοσης Παρασκευή, 16.12.2016, ώρα 23:59:59

Παρατηρήσεις Η εργασία σας θα πρέπει να έχει φτάσει στον Καθηγητή-Σύμβουλό σας μέχρι την Παρασκευή, 16 Δεκεμβρίου 2016, ώρα 23:59:59.

Μετά την Τετάρτη, 21 Δεκεμβρίου 2016, ώρα 23:59:59, οποιαδήποτε υποβολή εργασίας θεωρείται ως εκπρόθεσμη.

Την Παρασκευή, 23 Δεκεμβρίου 2016, ώρα 11:59:59 (το αργότερο), θα δημοσιευθεί ενδεικτική επίλυση της εργασίας στο διαδίκτυο.

Περιμένουμε όλες οι εργασίες να υποβληθούν μέσω του συστήματος study. Πρέπει να υποβάλετε ΕΝΑ μόνο αρχείο (συμπιεσμένο), στο οποίο θα

περιλαμβάνονται το πρωτότυπο κείμενο, σε οποιοδήποτε επεξεργαστή κειμένου έχετε χρησιμοποιήσει, και το παραγόμενο PDF, καθώς και

όποια άλλα συνοδευτικά αρχεία. Αν υποβάλετε τμήματα κώδικα, θα πρέπει να βρίσκονται σε ξεχωριστά αρχεία, μέσα στο συμπιεσμένο αρχείο,

και θα πρέπει ν’ αναφέρονται στο κείμενο της εργασίας.

Αν υπάρχουν διευκρινιστικά ερωτήματα που θεωρείτε ότι είναι αναγκαία για την επίλυση της εργασίας και τα οποία δεν έχουν απαντηθεί,

μπορείτε στην επίλυσή σας να τα αναφέρετε μαζί με τις παραδοχές που θα κάνετε και τις οποίες θα πρέπει να ακολουθήσετε στην επίλυσή σας.

Θέμα 1: Αναζήτηση – Το πρόβλημα των 6 βατράχων [20 μονάδες]

Έστω ότι υπάρχουν 6 βάτραχοι, 3 πράσινοι και 3 καφέ, και 7 πέτρες στη σειρά σε μία λίμνη, όπου οι

πράσινοι βάτραχοι βρίσκονται ο καθένας επάνω σε μία από τις 3 αριστερές πέτρες και οι καφέ

βάτραχοι καταλαμβάνουν τις 3 δεξιές πέτρες, όπως φαίνεται στην παρακάτω εικόνα.

Οι πράσινοι βάτραχοι μπορούν να κινηθούν μόνο

προς τα δεξιά και οι καφέ μόνο προς τα

αριστερά. Ένας βάτραχος μπορεί να πάει στην

κενή πέτρα που είναι ακριβώς δίπλα του (δεξιά

από πράσινο βάτραχο ή αριστερά από καφέ) ή

μπορεί να πηδήξει επάνω από ένα μόνο βάτραχο

του άλλου χρώματος, που βρίσκεται ακριβώς

δίπλα του (δεξιά ή αριστερά, ανάλογα με το

χρώμα του βατράχου), εφ’ όσον πίσω από τον

βάτραχο αυτό βρίσκεται η κενή πέτρα. Τελικός

στόχος είναι να γίνει ανταλλαγή θέσεων μεταξύ

των πράσινων και των καφέ βατράχων.

Α. Αναπαράσταση κατάστασης και τελεστές μετάβασης [2 μονάδες]

Έστω ότι επιλέγουμε ως αναπαράσταση της τυχαίας κατάστασης του προβλήματος μία ακολουθία

από επτά χαρακτήρες, τρία G, τρία B και ένα S, όπου το G(reen) αντιστοιχεί σε πράσινο βάτραχο, το

B(rown) σε καφέ βάτραχο και το S(tone) στην κενή πέτρα, δεδομένου ότι δεν υπάρχει διαφοροποίηση

μεταξύ βατράχων του ίδιου χρώματος. Δηλαδή, η αρχική κατάσταση του προβλήματος είναι η

GGGSBBB και η τελική η BBBSGGG. Έστω, επίσης, ότι οι δυνατές κινήσεις των βατράχων

ορίζονται σύμφωνα με τον παρακάτω πίνακα.

ΣΥΜΒΟΛΟ ΠΕΡΙΓΡΑΦΗ ΠΡΟΫΠΟΘΕΣΕΙΣ ΑΠΟΤΕΛΕΣΜΑ

Π1

Μετακίνηση πράσινου

βατράχου μία θέση δεξιά

στην κενή πέτρα

Η τρέχουσα

κατάσταση περιέχει

υπακολουθία της

μορφής GS

Στη νέα κατάσταση η

υπακολουθία GS

αντικαθίσταται από την SG

Κ1

Μετακίνηση καφέ βατράχου

μία θέση αριστερά στην κενή

πέτρα

Π2

Μετακίνηση πράσινου

βατράχου δύο θέσεις δεξιά,

πηδώντας επάνω από καφέ

βάτραχο, στην κενή πέτρα

πίσω από τον καφέ βάτραχο

Page 2: PLI31 GE1 2016 2017

ΠΛΗ31 – 1η ΕΡΓΑΣΙΑ – 2016-17

Σελίδα 2 από 6

Κ2

Μετακίνηση καφέ βατράχου

δύο θέσεις αριστερά,

πηδώντας επάνω από

πράσινο βάτραχο, στην κενή

πέτρα πίσω από τον πράσινο

βάτραχο

Συμπληρώστε κατάλληλα τον πίνακα με τις προϋποθέσεις εφαρμογής των τελεστών και τα

αποτελέσματά τους.

Β. Χαρακτηριστικά χώρου καταστάσεων [5 μονάδες]

i. Πόσες είναι όλες οι πιθανές καταστάσεις του προβλήματος; Στη γενικευμένη εκδοχή του

προβλήματος, που θα είχαμε N πράσινους και N καφέ βατράχους (και 2N+1 πέτρες), πόσες

θα ήταν τότε οι πιθανές καταστάσεις του προβλήματος;

ii. Είναι όλες οι πιθανές καταστάσεις του προβλήματος προσβάσιμες από την αρχική κατάσταση

μετά από κάποιες εφαρμογές τελεστών μετάβασης; Εξηγήστε σύντομα.

iii. Υπάρχουν προσβάσιμες καταστάσεις από την αρχική κατάσταση που είναι αδιέξοδα, δηλαδή

δεν είναι δυνατόν να εφαμοσθεί σε αυτές κάποιος τελεστής μετάβασης; Εξηγήστε σύντομα.

iv. Ποιο είναι το μέγιστο πλήθος τελεστών μετάβασης (παράγοντας διακλάδωσης) που μπορούν

να εφαρμοσθούν σε μία κατάσταση;

v. Έχει κύκλους ο χώρος καταστάσεων; Εξηγήστε σύντομα.

Γ. Ευρετικά [3 μονάδες]

i. Ας θεωρήσουμε, για κάποια κατάσταση n του προβλήματος, το ευρετικό h(n) = «άθροισμα

των αποστάσεων κάθε βατράχου από την τρέχουσα μέχρι την επιθυμητή θέση του στην τελική

κατάσταση». Εξηγήστε γιατί στο πρόβλημα των 3 πράσινων και των 3 καφέ βατράχων η τιμή

αυτού του ευρετικού για την αρχική κατάσταση ισούται με 24. ii. Αν η εφαρμογή καθενός από τους τελεστές Π1, Π2, Κ1 και Κ2 έχει κόστος ίσο με 1, είναι το

ευρετικό του ερωτήματος i. παραδεκτό; Εξηγήστε σύντομα. iii. Απαντήστε την ερώτηση ii. για την περίπτωση που οι τελεστές Π1 και Κ1 έχουν κόστος 1 και

οι Π2 και Κ2 έχουν κόστος 2.

Δ. Αναζητήσεις στο δέντρο [8 μονάδες]

Το παρακάτω είναι τμήμα του δέντρου αναζήτησης του προβλήματος έως το βάθος 6. Θεωρείται ότι

έχουν προτεραιότητα οι τελεστές που μετακινούν πράσινο βάτραχο έναντι αυτών που μετακινούν

καφέ βάτραχο.

i. Αν εφαρμόσουμε αναζήτηση σε βάθος, ποιοι είναι οι 8 πρώτοι κόμβοι του δέντρου που θα

αναπτυχθούν στους απογόνους τους;

ii. Αν εφαρμόσουμε αναζήτηση σε πλάτος, ποιοι είναι οι 15 πρώτοι κόμβοι του δέντρου που θα

αναπτυχθούν στους απογόνους τους;

Page 3: PLI31 GE1 2016 2017

ΠΛΗ31 – 1η ΕΡΓΑΣΙΑ – 2016-17

Σελίδα 3 από 6

iii. Αν εφαρμόσουμε την άπληστη αναζήτηση, με ευρετικό αυτό του ερωτήματος Γ.i., ποιοι είναι

οι 6 πρώτοι κόμβοι του δέντρου που θα αναπτυχθούν στους απογόνους τους; Μεταξύ

ισόβαθμων κόμβων, προτεραιότητα στην ανάπτυξη έχει αυτός που γεννήθηκε πρώτος από τον

γονέα του.

iv. Αν εφαρμόσουμε τον αλγόριθμο A*, με ευρετικό αυτό του ερωτήματος Γ.i. και κόστος

τελεστών αυτό του ερωτήματος Γ.iii., ποιοι είναι οι 15 πρώτοι κόμβοι του δέντρου που θα

αναπτυχθούν στους απογόνους τους; Μεταξύ ισόβαθμων κόμβων, προτεραιότητα στην

ανάπτυξη έχει αυτός που γεννήθηκε πρώτος από τον γονέα του. Παρατηρείτε κάτι στο

αποτέλεσμα;

Ε. Λύση του προβλήματος [2 μονάδες]

Μπορείτε να φανταστείτε/βρείτε μία λύση του προβλήματος;

Page 4: PLI31 GE1 2016 2017

ΠΛΗ31 – 1η ΕΡΓΑΣΙΑ – 2016-17

Σελίδα 4 από 6

Θέμα 2: Κατηγορηματική Λογική –

Αναπαράσταση Γνώσης και Συλλογιστική [20 μονάδες]

Α. Αναπαράσταση σε κατηγορηματική λογική [6+2+2 μονάδες]

Α1. Αναπαραστήστε σε κατηγορηματική λογική τις ακόλουθες προτάσεις:

1. Ο Γιώργος, ο Νίκος, και ο Θόδωρος είναι μέλη του ορειβατικού συλλόγου “Όλυμπος”.

2. Κάθε μέρος του ορειβατικού συλλόγου που δεν είναι σκιέρ είναι ορειβάτης.

3. Στους ορειβάτες δεν αρέσει η βροχή.

4. Σε όσους δεν αρέσει το χιόνι δεν είναι σκιέρ.

5. Ο Νίκος αντιπαθεί αυτά που αρέσουν στον Γιώργο.

6. Αυτά που αντιπαθεί ο Γιώργος αρέσουν στον Νίκο.

7. Στον Γιώργο αρέσει η βροχή και το χιόνι.

Στην αναπαράστασή σας χρησιμοποιείστε μόνο τις σταθερές “Γιώργος”, “Νίκος”, “Θόδωρος”,

“Όλυμπος”, “βροχή”, “χιόνι”, και τα κατηγορήματα skier(x), climber(x), member(x, y), likes(x, y) με

τις προφανής ερμηνείες.

Α2. Αποδείξτε σε φυσική γλώσσα (όχι με την χρήση κατηγορηματικής λογικής), πως υπάρχει κάποιο

μέλος του ορειβατικού συλλόγου που είναι ορειβάτης αλλά όχι σκιέρ.

Α3. Αποδείξτε σε φυσική γλώσσα πως αν από τις παραπάνω προτάσεις αφαιρέσουμε την (5), δεν

προκύπτει πλέον το προηγούμενο συμπέρασμα (ότι δηλαδή υπάρχει μέλος του ορειβατικού συλλόγου

που είναι ορειβάτης αλλά όχι σκιέρ).

Υπόδειξη: Αρκεί να κατασκευάσετε ένα αντιπαράδειγμα που να ικανοποιεί τις προτάσεις (1) - (4) και

(6) - (7), και για το οποίο κανένα μέλος του συλλόγου δεν είναι μόνο ορειβάτης.

Β. Μετασχηματισμός σε ΣΚΜ και Αναγωγή [3+2+5 μονάδες]

Β1. Δίνεται η παρακάτω πρόταση κατηγορηματικής λογικής.

xyzw ( P(x) ( P(y) Q(y) ) ( ( P(z) Q(z) ) ( P(w) Q(x) ) ) )

Β.1.1 Μετατρέψτε την πρόταση σε Συζευκτική Κανονική Μορφή.

Β.1.2 Ελέγξτε μέσω αναγωγής εάν η πρόταση είναι ικανοποιήσιμη.

Β2. Δίνονται το παρακάτω σύνολο προτάσεων κατηγορηματικής λογικής:

1. mother(Mary, Anna)

2. alive(Mary)

3. xy ( mother(x, y) parent(x, y) )

4. xy ( parent(x, y) alive(x) older(x, y) )

Ελέγξτε με την μέθοδο της αναγωγής μέσω αντίκρουσης της άρνησης εάν από τις παραπάνω

προτάσεις (1) – (4) προκύπτει το συμπέρασμα older(Mary, Anna).

Page 5: PLI31 GE1 2016 2017

ΠΛΗ31 – 1η ΕΡΓΑΣΙΑ – 2016-17

Σελίδα 5 από 6

Θέμα 3: Αναπαράσταση και Συλλογισμός σε Prolog [20 μονάδες]

Θεωρείστε το πρόβλημα των 6 βατράχων (Θέμα 1).

Α. Αναπαράσταση και Εκτύπωση Σχηματισμού [2 μονάδες]

Αναπαραστήστε το σχηματισμό των βατράχων (με την κενή πέτρα) με γεγονότα, μέσω ενός

κατηγορήματος Prolog. Χρησιμοποιείστε το κατηγόρημα pos/3. Τα τρία ορίσματα αφορούν τη θέση

μιας πέτρας στο σχηματισμό (από αριστερά-ξεκινώντας από το 1), το χρώμα του βατράχου που

βρίσκεται επάνω της (green ή brown ή stone όταν είναι κενή) και ένα αριθμό (1, 2 ή 3) που αποτελεί

το «όνομα» του αντίστοιχου βατράχου, ώστε να ξεχωρίζουν μεταξύ τους. Αντίστοιχο «όνομα» (π.χ. 0)

πρέπει να δοθεί και στο κενό.

Με βάση την αναπαράσταση αυτή, γράψτε πρόγραμμα Prolog (κατηγόρημα: show_grid/0) που να

εκτυπώνει στην οθόνη απεικόνιση του σχηματισμού στην τρέχουσα κατάσταση, ως εξής:

όπου G: green, B: brown και S: stone.

Υπόδειξη: Για την απάντηση, θα βοηθηθείτε από τις απαντήσεις στις ερωτήσεις 3Α και 3Β της περσινής

1ης

Εργασίας.

Β. Τελεστές μετάβασης [4 μονάδες]

Υλοποιήστε σε Prolog τους τελεστές μετάβασης, όπως ορίζονται στο πρόβλημα των βατράχων.

Χρησιμοποιείστε ως κατηγορήματα τα: move_green_1/0, move_brown_1/0, move_green_2/0,

move_brown_2/0.

Υπόδειξη: Θα χρειαστεί να χρησιμοποιήσετε τα ενσωματωμένα κατηγορήματα assert/1 και retract/1 της

Prolog, κατά παρόμοιο τρόπο με αυτόν της απάντησης στο ερώτημα 3Γ της περσινής 1ης Εργασίας. Το

κατηγόρημα retract διαγράφει ένα γεγονός από τη μνήμη και το assert εισάγει ένα νέο γεγονός στη

μνήμη. Για να τα χρησιμοποιήσουμε στην SWI-Prolog θα πρέπει να δηλώσουμε τα αντίστοιχα

κατηγορήματα ως δυναμικά, στην αρχή του προγράμματος. Π.χ. αν ‘give/2’ είναι ένα κατηγόρημα του

οποίου γεγονότα θέλουμε να εισάγουμε ή να διαγράφουμε από τη μνήμη, στην αρχή του προγράμματος

δηλώνουμε:

:- dynamic give/2.

Τότε μέσα στο πρόγραμμα μπορούμε να γράψουμε εκφράσεις της μορφής:

retract(give(X,5))

assert(give(giannis,10))

στο σώμα ενός κανόνα/κατηγορήματος Prolog, για την διαγραφή ή την εισαγωγή ενός γεγονότος.

Όταν έχω περισσότερα του ενός δυναμικά κατηγορήματα, τα δηλώνω στην ίδια δήλωση:

:- dynamic give/2, count/1, move/3.

Γ. Ευρετική συνάρτηση [4 μονάδες]

Υλοποιήστε σε Prolog την παραδεκτή ευρετική συνάρτηση που προτείνατε στο πρόβλημα των

βατράχων. Χρησιμοποιείστε ως βασικό κατηγόρημα το: calculate_heuristic/0.

Δ. Στρατηγικές αναζήτησης [10 μονάδες]

Σχεδιάστε και υλοποιήστε πρόγραμμα σε Prolog, χρησιμοποιώντας αυτά που ορίσατε στα Α και Β,

ώστε να εκτυπώνει τους Ν πρώτους κόμβους του δέντρου αναζήτησης, που θα αναπτυχθούν

εφαρμόζοντας αναζήτηση κατά βάθος. Χρησιμοποιήστε ως βασικό κατηγόρημα το produce_dfs/1, με

όρισμα τον αριθμό των κόμβων που επιθυμούμε να εκτυπωθούν.

Page 6: PLI31 GE1 2016 2017

ΠΛΗ31 – 1η ΕΡΓΑΣΙΑ – 2016-17

Σελίδα 6 από 6

Υποδείξεις: Προσπαθήστε να εξομοιώσετε τον τρόπο με τον οποίο λειτουργεί η κατά βάθος αναζήτηση.

Χρησιμοποιήστε λίστες για αποθήκευση σύνθετων πληροφοριών, όπως π.χ. οι καταστάσεις των κόμβων

και οι τελεστές. Θα πρέπει να ορίσετε τουλάχιστον τα παρακάτω κατηγορήματα:

1) Frogstates/1: κρατά την αρχική κατάσταση και τις καταστάσεις-κόμβους που έχουν ήδη

αναπτυχθεί, με τη σειρά που αναπτύχθηκαν. Για να γίνει αυτό θα χρειαστεί να προσδιορίσετε τι

πληροφορίες πρέπει να κρατάτε σε κάθε κόμβο που αναπτύσσεται. Π.χ. την τρέχουσα κατάσταση

(δηλ. τις θέσεις των βατράχων και του κενού) και τους τελεστές που εναπομένουν για εφαρμογή

(δηλ. όλους πλην αυτών που ήδη έχουν ήδη εφαρμοστεί στον κόμβο).

2) choose_apply_oper/1: εξετάζει με τη σειρά ποιος από τους διαθέσιμους τελεστές πρώτος

εφαρμόζεται σ’ ένα κόμβο και τον εφαρμόζει.

3) update_frogstates/0: ενημερώνει τις υπάρχουσες καταστάσεις (frogstates) με μια καινούργια

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

4) update_pos/1: ενημερώνει την τρέχουσα κατάσταση, που προκύπτει μετά την εφαρμογή κάποιου

τελεστή.

Σημείωση: Ο ορισμός ενός κατηγορήματος δεν αποτελείται πάντα από ένα κανόνα Prolog, αλλά

μπορεί να συνίσταται από περισσότερους του ενός κανόνες. Επίσης, σε κάποιους από τους

παραπάνω ορισμούς θα χρειαστεί να χρησιμοποιήσετε αναδρομή. Σε κάποιες περιπτώσεις

αναδρομής, για να τερματιστεί η αναδρομή μπορεί να χρειαστεί να χρησιμοποιήσετε το «!».

5) Εκτός από τα assert/1 και retract/1, που αναφέρθηκαν πιο πάνω, (πιθανότατα) θα σας

χρειαστούν τα ενσωματωμένα κατηγορήματα findall/3 kai delete/3, που λειτουργούν ως εξής:

findall(Object,Goal,List): Βρίσκει όλα τα ‘Object’ που ικανοποιούν το ‘Goal’ και τα

βάζει στη λίστα ‘List’. Για παράδειγμα:

Αν έχω τα

p(a,1).

p(b,3).

Τότε, η έκφραση findall([X,Y], p(X,Y), L) αποδίδει στο L τη λίστα [[a,1], [b,3]].

delete(List1,Elem,List2): Αφαιρεί το Elem από τη List1 και αναθέτει την υπόλοιπη

λίστα στην List2. Για παράδειγμα:

Η έκφραση delete(X,Y,L), αν X=[a,b,c] και Y=b, αποδίδει στο L τη λίστα [a,c].

ΘΕΜΑ ΜΟΝΑΔΕΣ ΒΑΘΜΟΣ

ΠΕ1.Α 20

ΠΕ1.Β 20

1ο 20 (2 + 5 + 3 + 8 + 2)

2ο 20 (6 + 2 + 2 + 3 + 2 + 5)

3ο 20 (2 + 4 + 4 + 10)

ΣΥΝΟΛΟ 100