Θέματα Απόδοσης Αλγορίθμων · 2018-01-23 · ‘Λαίμαργοι’...

29
Δομές Δεδομένων & Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 1 Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων

Transcript of Θέματα Απόδοσης Αλγορίθμων · 2018-01-23 · ‘Λαίμαργοι’...

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

1

Δομές Δεδομένων & Αλγόριθμοι

Θέματα Απόδοσης Αλγορίθμων

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

2

Η Ανάγκη για Δομές Δεδομένων

• Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα

• Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές

• Οι πιο σύνθετες εφαρμογές απαιτούν περισσότερους υπολογισμούς

• Οι σύνθετες υπολογιστικά εργασίες δε συμβαδίζουν με την καθημερινή μας εμπειρία

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

3

Οργανώνοντας τα Δεδομένα

• Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης ενός προγράμματος, ο οποίος μπορεί να κυμαίνεται από λίγα δευτερόλεπτα έως μερικές ώρες/μέρες/...

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

– Χώρος

– Χρόνος

• Το κόστος μιας λύσης είναι το ποσό των πόρων που αυτή η λύση δαπανά.

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

4

Επιλέγοντας μια Δομή Δεδομένων

Επιλέγουμε μια δομή δεδομένων ως ακολούθως:1. Αναλύουμε το πρόβλημα για να καθορίσουμε τους

περιορισμούς πόρων, στους οποίους πρέπει να υπόκειται μια λύση

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

– Όλα τα δεδομένα εισάγονται από την αρχή ή υπάρχουν εισαγωγές οι οποίες παρεμβάλλονται ανάμεσα σε άλλες λειτουργίες;

– Μπορούν τα δεδομένα να διαγραφούν;– Όλα τα δεδομένα υφίστανται επεξεργασία σε μια καθορισμένη

σειρά ή επιτρέπεται τυχαία προσπέλαση;3. Επιλέγουμε τη δομή δεδομένων που ικανοποιεί καλύτερα

αυτούς τους περιορισμούς

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

5

Η Φιλοσοφία των Δομών Δεδομένων

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

• Μια δομή δεδομένων απαιτεί:– Χώρο για κάθε αντικείμενο δεδομένων που

αποθηκεύει– Χρόνο για να εκτελέσει κάθε βασική λειτουργία– Προγραμματιστική προσπάθεια

• Κάθε πρόβλημα έχει περιορισμούς ως προς το διαθέσιμο χώρο και χρόνο

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

6

Στόχοι του Μαθήματος

1. Κατανόηση της αρχής ότι κάθε δομή δεδομένων έχει υπέρ και κατά

2. Εκμάθηση των πιο δημοφιλών δομών δεδομένων– Αυτές σχηματίζουν ένα βασικό σύνολο εργαλείων πάνω

στις δομές δεδομένων, το οποίο είναι χρήσιμο για έναν προγραμματιστή

3. Κατανόηση των τεχνικών μέτρησης του κόστους μιας δομής δεδομένων ή ενός προγράμματος– Αυτές οι τεχνικές επίσης επιτρέπουν να κριθεί η αξία

νέων δομών δεδομένων που μπορεί να ανακαλυφθούν στο μέλλον

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

7

Από τους Αφηρημένους Τύπους Δεδομένων στις Δομές Δεδομένων

• Αφηρημένος Τύπος Δεδομένων (ΑΤΔ): ο ορισμός ενός τύπου δεδομένων αποκλειστικά με χρήση ενός συνόλου τιμών και ενός συνόλου λειτουργιών πάνω σε αυτόν τον τύπο δεδομένων

• Δομή δεδομένων (ΔΔ): η φυσική υλοποίηση ενός ΑΤΔ– Κάθε λειτουργία που σχετίζεται με τον ΑΤΔ υλοποιείται από μια

ή περισσότερες υπορουτίνες (ή συναρτήσεις)

• Οι Δομές Δεδομένων συνήθως αναφέρονται σε οργανώσεις δεδομένων στην κύρια μνήμη– Υπάρχουν και οι Δομές Αρχείων για δεδομένα δευτερεύουσας

μνήμης (π.χ. δίσκος)

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

8

Προσδιορισμός ΑΤΔ μιας γραμμικής λίστας

Λειτουργίες Γραμμικής Λίστας

•Δημιουργία•Καθορισμός άδειας λίστας•Καθορισμός μήκους λίστας•Εύρεση k-οστού στοιχείου•Αναζήτηση ενός στοιχείου•Διαγραφή k-οστού στοιχείου•Εισαγωγή νέου στοιχείου ακριβώς μετά το k-οστό στοιχείο

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

9

Αλγόριθμοι και Προγράμματα

• Αλγόριθμος: μια μέθοδος ή μια διαδικασία που ακολουθείται για την επίλυση ενός προβλήματος– Μια συνταγή

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

• Ένας αλγόριθμος παίρνει την είσοδο ενός προβλήματος(συνάρτηση) και τη μετασχηματίζει στην έξοδο– Μια αντιστοίχηση της εισόδου στην έξοδο

• Ένα πρόβλημα μπορεί να επιλύεται με πολλούς εναλλακτικούς αλγορίθμους

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

10

Αλγόριθμοι

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

σαφώς για τον τρόπο εκτέλεσής της• περατότητα: να τελειώνει μετά από πεπερασμένα

βήματα εκτέλεσης των εντολών του• αποτελεσματικότητα: κάθε μεμονωμένη εντολή του

αλγορίθμου να είναι απλή και εκτελέσιμη

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

11

Ιδιότητες Αλγορίθμου

• Ένας αλγόριθμος έχει τις ακόλουθες ιδιότητες:– Πρέπει να είναι ορθός– Πρέπει να αποτελείται από μια σειρά από σαφή βήματα– Πρέπει να αποτελείται από ένα πεπερασμένο αριθμό βημάτων– Πρέπει να είναι σαφές ποιο βήμα θα εκτελεστεί κάθε φορά– Πρέπει να τερματίζει

• Ένα πρόγραμμα υπολογιστή είναι ένα στιγμιότυπο ή μια διακριτή αναπαράσταση για έναν αλγόριθμο σε μια προγραμματιστική γλώσσα.

– Μαθηματικό υπόβαθρο: Σύνολα, Αναδρομή, Επαγωγικές αποδείξεις, Λογάριθμοι, Αθροίσματα, Επαναληπτικές σχέσεις

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

12

Ιδιότητες των Αλγορίθμων

• Αποτελεσματικότητα: ο αλγόριθμος μπορεί να γραφτεί ως πρόγραμμα – Υπάρχουν προβλήματα για τα οποία δεν υπάρχει

αλγόριθμος• Ορθότητα: βρίσκει τη σωστή λύση για κάθε είσοδο• Τερματισμός: ολοκληρώνεται μετά από έναν

πεπερασμένο αριθμό βημάτων – Κάθε βήμα απαιτεί ένα πεπερασμένο χρόνο

• Αποδοτικότητα: κάνει σωστή χρήση των πόρων του υπολογιστή

• Πολυπλοκότητα: υλοποιείται εύκολα σε κώδικα, μπορεί να διορθωθεί και να αλλάξει εύκολα

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

13

Πρόβλημα Πλανόδιου Πωλητή

• Βρες την μικρότερη διαδρομή που περνά από κάθε πόλη μόνο μια φορά και γυρνά σε αυτήν που ξεκίνησε

Α

Ε

D

B

C

25

322 2

4

3 1

6

σημείο εκκίνησης: Α

μικρότερη διαδρομή: ABDECAμήκος(ABDECA) = 2+2+2+2+3=11

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

14

Εξαντλητική Αναζήτηση

• Υπολόγισε όλα τα μονοπάτια και διάλεξε το συντομότερο– Μήκος(ABCDEA) = 2 + 3 + 6 + 2 + 5 = 18– Μήκος(ACBDEA) = 3 + 3 + 2 + 2 + 5 = 15

……– Μήκος(ABDECA) = 2 + 2 + 2 + 2 + 3 = 11– Μήκος(AEBCDA) = 5 + 1 + 3 + 6 + 4 = 19

• Για n πόλεις => (n-1)! μονοπάτια =>• Πολυπλοκότητα: Ω(2n)

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

15

Εκθετικά Προβλήματα

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

• Ερώτημα: Υπάρχει καλύτερος αλγόριθμος; Μέχρι πότε θα ψάχνουμε για ένα καλύτερο αλγόριθμο;

• Αν αποδειχθεί ότι το πρόβλημα είναι το ίδιο δύσκολο όσο κάποιο άλλο επίσης δύσκολο πρόβλημα για το οποίο δεν έχει βρεθεί καμία καλύτερη λύση, τότε, σταματάμε να ψάχνουμε καλύτερη λύση για το πρώτο πρόβλημα

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

16

Προβλήματα NP-Complete

• Δύσκολα προβλήματα για τα οποία ξέρουμε μόνο εκθετικούς αλγορίθμους– Ίσως υπάρχουν πολυωνυμικές λύσεις άλλα δεν έχουν

βρεθεί ακόμα• Παραδείγματα:

– Πλανόδιου Πωλητή (TSP)– Μονοπάτι Hamilton– Καλάθι 0-1 (Knapsack Problem)

• Ιδιότητες NP Completeness:a) Όχι καθορισμένη πολυωνυμικότηταb) Πληρότητα

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

17

Όχι Καθορισμένη Πολυωνυμικότητα

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

καθορισμένος (deterministic): προσπαθεί να βρει μια λύση χρησιμοποιώντας τεχνάσματα

– Π.χ., TSP: το επόμενο σημείο είναι το πιο κοντινό στο παρόν σημείο

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

18

Παράδειγμα στο πρόβλημα TSP

• Ακολουθεί πάντα την μικρότερη διαδρομή προκειμένου να πάει στην επόμενη πόλη

• Δεν καταλήγει πάντα σε συντομότερη διαδρομή

Α

Ε

D

B

C

25

322 2

43 1

6

μήκος(ABEDCA) =2+1+2+6+3=14

δεν είναι βέλτιστο

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

19

Πληρότητα• Κάθε NP-complete πρόβλημα μετατρέπεται

σε ένα άλλο NP-complete σε πολυωνυμικό χρόνο

• Τότε, αν βρεθεί βέλτιστος πολυωνυμικός αλγόριθμος για ένα από αυτά τα προβλήματα, τότε υπάρχει τέτοιος αλγόριθμος για όλα – Για να λυθεί ένα NP-complete πρόβλημα αρκεί να

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

– Η πολυπλοκότητα της λύσης είναι το άθροισμα της πολυπλοκότητας μετατροπής και της λύσης του πρώτου προβλήματος

– Στο σύνολο η πολυπλοκότητα θα είναι πολυωνυμική

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

20

Τύποι Αλγορίθμων

• Ευρηματικοί (Heuristic) – Λαίμαργοι (greedy) – Τοπική αναζήτηση

• Βέλτιστοι (Optimal)– Εξαντλητική Αναζήτηση– Διαίρει & Βασίλευε (divide & conquer)– Διακλάδωση με όρια (branch and bound)– Δυναμικός Προγραμματισμός (DP)

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

21

Τεχνικές σχεδίασης αλγορίθμων

• αλγόριθμοι brute-force: διακρίνονται από το γεγονός ότι επιλύουν το πρόβλημα με τον πιο απλό, άμεσο ή προφανή τρόπο. Η λειτουργία τους βασίζεται στον εξαντλητικό έλεγχο όλων των πιθανών περιπτώσεων.

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

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

• αλγόριθμοι διαίρει και βασίλευε: το πρόβλημα υποδιαιρείται σε πολλά μικρά υποπροβλήματα πανομοιότυπα με το αρχικό. Κάθε ένα από αυτά επιλύεται ανεξάρτητα και οι επιμέρους λύσεις συνδυάζονται σε μία τελική λύση του αρχικού προβλήματος.

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

22

Τεχνικές σχεδίασης αλγορίθμων

• αλγόριθμοι δυναμικού προγραμματισμού: το πρόβλημα υποδιαιρείται σε πολλά μικρά προβλήματα, τα οποία επιλύονται σταδιακά ως σύνθεση των λύσεων των μικρότερων και άρα απλούστερων υποπροβλημάτων. Είναι ιδιαίτερα διαδεδομένοι για την επίλυση προβλημάτων βελτιστοποίησης.

• τυχαιοποιημένοι αλγόριθμοι: αλγόριθμοι που φαίνεται ότι συμπεριφέρονται τυχαία

• αλγόριθμοι γράφων• αλγόριθμοι αναγνώρισης συμβολοσειρών• αριθμητικοί αλγόριθμοι• κατανεμημένοι αλγόριθμοι • αλγόριθμοι συντακτικής – σημασιολογικής ανάλυσης

(μεταγλωττιστές)

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

23

‘Λαίμαργοι’ Αλγόριθμοι (1/2)

• Όταν κάνουν μια επιλογή διαλέγουν αυτή με μικρότερο κόστος– TSP: η επόμενη πόλη της διαδρομής είναι η πιο

κοντινή σε αυτή που βρίσκεται κάθε φορά

Α

Ε

D

B

C

25

322 24

3 1

6

σημείοεκκίνησης μήκος(BECADB) =

1 + 2 + 3 + 4 + 2 = 12όχι βέλτιστο

βέλτιστο μήκος(BACEDB) = 2 + 3 + 2 + 2 + 2 = 11

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

24

‘Λαίμαργοι’ Αλγόριθμοι(2/2)

• Σε κάποιες περιπτώσεις, βρίσκουν την βέλτιστη λύση• Πρόβλημα σακιδίου:

– ανάμεσα σε Ν αντικείμενα διαφόρων αξιών και ίδιου μεγέθους βρες αυτά που γεμίζουν ένα σακί χωρητικότητας C με την μεγαλύτερη αξία;

– Λύση: γέμισε το σακί με τα αντικείμενα μεγαλύτερης αξίας

• Προγραμματισμός δουλειάς: – ποια είναι η σειρά εξυπηρέτησης Ν πελατών η οποία

ελαχιστοποιεί τον μέσο χρόνο αναμονής; – Λύση: πρώτα πελάτες με τον μικρότερο χρόνο εξυπηρέτησης

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

25

Διαίρει και Βασίλευε (D&C)

• Το πρόβλημα διασπάται σε μικρότερα προβλήματα που λύνονται και οι λύσεις τους συνδυάζονται μέχρι να βρεθεί η λύση του αρχικού προβλήματος

• Η ιδέα είναι ότι όσο μικρότερο είναι ένα υποπρόβλημα, τόσο πιο εύκολο είναι να λυθεί

• Προσπάθεια να έχουμε υπο-προβλήματα ίδιου μεγέθους

• Εκφράζεται με επαναληπτικούς αλγορίθμους– Π.χ. Mergesort (Συγχώνευση & Ταξινόμηση)

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

26

Δυναμικός Προγραμματισμός

• Το αρχικό πρόβλημα διασπάται σε μικρότερα προβλήματα πού λύνονται ευκολότερα

• Οι λύσεις τους αποθηκεύονται και επαναχρησιμοποιούνται πολλές φορές όταν χρειάζονται για να λυθούν μεγαλύτερα υπο-προβλήματα και τελικά το αρχικό πρόβλημα

• Συχνά εκφράζεται με αναδρομική σχέση που δηλώνει πως συνδυάζονται τα μικρότερα προβλήματα για να λύσουν ένα μεγαλύτερο

• Το διαίρει & βασίλευε μοιάζει αλλά δεν αποθηκεύει ή χρησιμοποιεί ξανά μερικές λύσεις

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

27

Αριθμοί Fibonacci

• Χρησιμοποιώντας αναδρομή η πολυπλοκότητά είναι

• Χρησιμοποιώντας ένα πίνακα για αποθήκευση λύσεων η πολυπλοκότητα είναι O(n)

)(nF1)1(0)0(

FF

2nif )2()1()( nFnFnF

)()( nnF

F(0) F(1) F(n-1) F(n)…

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

28

0-1 Σακί (knapsack)

• Aν δίνονται αντικείμενα που ποικίλουν σε μέγεθος και αξία, ποια είναι η μέγιστη αξία που μπορεί να χωρέσει σε σακί χωρητικότητας C ;

• Πως θα επιτύχουμε την μέγιστη δυνατή πληρότητα με την μέγιστη αξία ;

Δομές Δεδομένων & Αλγόριθμοι

Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής

29

Εξαντλητική Αναζήτηση

• Η προφανής μέθοδος για να λύσουμε το πρόβλημα του είναι να δοκιμάσουμε όλους τους δυνατούς συνδυασμούς n αντικειμένων

• Κάθε αντικείμενο αντιστοιχεί σε ένα κελί• Αν μπει στο σακί τότε το κελί του γίνεται 1• Αν δεν μπει τότε γίνεται 0• Υπάρχουν 2n διαφορετικοί συνδυασμοί

0 1 2 … n

0 01 1