PDA

Επιστροφή στο Forum : Εργασια σε γλωσσα prolog. Ας Βοηθησει καποιος αν μπορει. Ευχαριστω πολυ!



ampatzis
23-06-10, 18:53
Εργασία: Πρόβληματα Προσπάθειας και Αποτυχίας
Μία εταιρεία που αποτελείται από 12 τμήματα, πρόκειται να μετακομίσει σε ένα καινούργιο κτήριο με τρείς ορόφους. Κάθε όροφος διαθέτει 40 γραφεία. Στον παρακάτω πίνακα δίνονται οι ανάγκες των τμημάτων της εταιρείας σε γραφεία:

Τμήμα Τ1 Τ2 Τ3 Τ4 Τ5 Τ6 Τ7 Τ8 Τ9 Τ10 Τ11 Τ12
Γραφεία 9 6 11 13 9 12 11 11 7 10 11 10

Επί πλέον, τα παρακάτω τμήματα ανά δύο πρέπει να βρίσκονται στον ίδιο όροφο, γιατί οι δραστηριότητές τους σχετίζονται σε μεγάλο βαθμό και πρέπει να συνεργάζονται:
• Τ1 και Τ3,
• Τ2 και Τ4,
• Τ8 και Τ9.

Να βρεθεί η κατανομή των γραφείων στα τμήματα (σε ποιον όροφο δηλαδή θα
καταλάβει γραφεία το κάθε τμήμα).
Υποδείξεις:
• Χρησιμοποιήστε σαν μοντέλο το πρόγραμμα που αναφέρεται στη λύση του
προβλήματος των 8 βασιλισσών. (παράγραφος 8.7 των σημειώσεων)

• Η λύση μπορεί να δημιουργηθεί σαν μία λίστα L, 12 στοιχείων από τριάδες
<D,N,F>, όπου D είναι το τμήμα, Ν ο αριθμός των γραφείων που χρειάζεται
το τμήμα και F είναι ο όροφος που βρίσκονται τα γραφεία. Στο
συγκεκριμμένο πρόβλημα τα D και N είναι γνωστά και το F αναζητείται.

• Μπορεί να οριστεί ένα κατηγόρημα allocate(L,N1,N2,N3), όπου L η λίστα
των παραπάνω τριάδων και Ν1, Ν2, Ν3 είναι αντίστοιχα ο αριθμός των
ελεύθερων γραφείων κάθε ορόφου. Η ερώτηση ?-allocate(L,40,40,40),
επιλύει το πρόβλημα επιστρέφοντας τις τιμές των αντίστοιχων τριάδων.

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


Ευχαριστω πολυ!

navar
23-06-10, 19:39
μου μυρίζει Χαρτώνας ΤΕΙ λάρισας ???

ampatzis
24-06-10, 20:02
οχι δεν ειναι απο ΤΕΙ Λαρισας :)

radomer
14-01-11, 00:33
Εχω και εγω μια εργασια ΚΑΙ ειναι κρισιμο για μενα να την κανω. Δεν ξερω πολλα απο prolog και δεν καταλαβαινω και πολλα βασικα σε οτι αφορα ασκησεις :( Ξερει καποιος να με βοηθησει ??

Να κατασκευάσετε ένα πρόγραμμα σε Prolog το οποίο να συμβουλεύει κάποιον που θέλει να ταξιδέψει με αεροπλάνο μεταξύ δύο πόλεων μία συγκεκριμένη ημέρα. Συγκεκριμένα να γίνουν τα ακόλουθα:
α) Να αναπαρασταθούν με κατάλληλα γεγονότα τα στοιχεία των απευθείας πτήσεων του πίνακα 1, όπως:
• Πόλη (ή αεροδρόμιο) αναχώρησης
• Πόλη (ή αεροδρόμιο) άφιξης
• Ώρα αναχώρησης (ακέραιες ώρες μόνο)
• Ώρα άφιξης (ακέραιες ώρες)
• Κωδικός αριθμός πτήσης
• Ημέρες της εβδομάδας κατά τις οποίες πραγματοποιούνται οι αντίστοιχες πτήσεις
Σημείωση: Έχουμε δύο διαφορετικές έννοιες: α) τη διατεταγμένη σύνδεση δύο πόλεων, π.χ. london→edinburgh και β) τις πτήσεις μεταξύ των δύο πόλεων. Να δημιουργηθεί ένα γεγονός για κάθε διατεταγμένο ζευγάρι πόλεων το οποίο να περιέχει μία λίστα με όλες τις πτήσεις για την ίδια διαδρομή. Κάθε πτήση να αναπαρασταθεί με όλες τις παραμέτρους της.
β) Να κατασκευαστεί το κατηγόρημα route(Place1,Place2,Day,Route), το οποίο να επιστρέφει στη λίστα Route, όλες τις πτήσεις που πρέπει να πραγματοποιήσει κάποιος αν θέλει να ταξιδέψει από την πόλη Place1 στην πόλη Place2 την ημέρα Day της εβδομάδας. Εννοείται ότι όλες οι πόλεις δε συνδέονται μεταξύ τους με απευθείας πτήσεις, συνεπώς θα πρέπει να υπάρχουν ανταποκρίσεις των πτήσεων σε κάποιους ενδιάμεσους σταθμούς. Για να πραγματοποιηθεί η ανταπόκριση θα πρέπει η ώρα άφιξης μιας πτήσης να είναι μικρότερη ή το πολύ ίση από την ώρα αναχώρησης της επόμενης πτήσης. Τα στοιχεία της λίστας Route να περιλαμβάνουν την πόλη αναχώρησης, την πόλη προορισμού, τον κωδικό της πτήσης και την ώρα αναχώρησης της πτήσης.
Σημείωση: Οι λύσεις που επιστρέφονται δε θα πρέπει να περιέχουν περιττές διαδρομές, όπως π.χ. κυκλικές διαδρομές. Για παράδειγμα, αν θέλει κάποιος να πάει από την Αθήνα στο Λονδίνο, δε θα πρέπει να γίνεται αποδεκτή η λύση Αθήνα->Ζυρίχη->Αθήνα->Λονδίνο, γιατί το πηγαινέλα στη Ζυρίχη είναι περιττό.
Σημείωση 2: Το κατηγόρημα route/4 πρέπει να χρησιμοποιεί αναδρομή, για να είναι γενικό και να είναι σε θέση δουλεύει σε όλες τις περιπτώσεις, όχι μόνο για τα συγκεκριμένα παραδείγματα πτήσεων.
Σημείωση 3: Το κατηγόρημα route/4 πρέπει να επιστρέφει και εναλλακτικές λύσεις, όπου αυτές υπάρχουν.
Παράδειγμα χρήσης:
?- route(athens,edinburgh,tu,A).
A = [flight(athens,zurich,oa322,11), flight(zurich,london,sr806,16), flight(london,edinburgh,ba4822,18)] ;
A = [flight(athens,london,oa211,11), flight(london,edinburgh,ba4822,18)] ;
no

navar
14-01-11, 00:44
αν και μας έκανα στον ΤΕΙ , δεν την χώνεψα ποτέ και δεν ασχολήθηκα ποτέ μαζί της !
είχα σπάσει το κεφάλι μου και είχα γίνει πολύ καλός κάποτε στο πρώτο εξάμηνο στην ML , αλλα μετά κατάλαβα πως ήταν απλώς άχρηστη , και κάτι τέτοιο ψηλιάστικα και για την Prolog και την απέφυγα !

κατα τα άλλα νομίζω πως αν το πάρεις σιγά σιγά απο την αρχή και με τις σημειώσεις , παλεύεται , λογική θέλει , σαν να λύνεις soduku