Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ."— Μεταγράφημα παρουσίασης:

1 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.1 Σχεδίαση Αλγορίθμων Προτεινόμενα βιβλία: Αλγόριθμοι – Σχεδιασμός και Αάλυση, Παναγιώτης Δ. Μποζάνης, Εκδόσεις Τζιόλα Algorihmics – Theory and Practice, Gilles Brassard & Paul Bratley, Prentice-Hall Δομές Δεδομένων Αλγόριθμοι και Εφαρμογές στη C++, Sartaj Sahnii, Μετάφραση: Γ. Θεοδωρίδης & Γ. Μανωλόπουλος, Εκδόσεις Τζιόλα Ιστοσελίδα (διαφάνειες – ύλη – παλιά θέματα):

2 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.2 Αλγόριθμοι Ι Κάθε καλώς ορισμένη υπολογιστική διαδικασία, η οποία καλείται να επιλύσει ένα συγκεκριμένο πρόβλημα εντός πεπερασμένου χρόνου. Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. (Αν. Εφαρμογών σε Προγραμματιστικό Περιβάλλον, Γ Ενιαίου Λυκείου)

3 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.3 Αλγόριθμοι ΙΙ Ένας αλγόριθμος πρέπει να διαθέτει: είσοδο: καμία, μία ή περισσότερες τιμές δεδομένων έξοδο: τουλάχιστο μία τιμή δεδομένων καθοριστικότητα: κάθε ενέργεια να προσδιορίζεται σαφώς για τον τρόπο εκτέλεσής της περατότητα: να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του αποτελεσματικότητα: κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή και εκτελέσιμη

4 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.4 Αλγόριθμοι ΙΙΙ Κάθε είσοδος που ικανοποιεί τις προδιαγραφές του προβλήματος καλείται νόμιμη και λέμε πως ορίζει ένα συγκεκριμένο στιγμιότυπο του προβλήματος. Ένας αλγόριθμος επιλύει ένα πρόβλημα, όταν για κάθε στιγμιότυπο του προβλήματος τερματίζει μετά από πεπερασμένο χρόνο, παράγοντας σωστή έξοδο.

5 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.5 Σχεδίαση Αλγορίθμων Ι Για να αποδείξουμε ότι ένας αλγόριθμος δεν είναι σωστός αρκεί να βρούμε ένα αντιπαράδειγμα. Για να είναι ένας αλγόριθμος σωστός πρέπει αυτό να αποδειχθεί π.χ. με επαγωγή ή με εις άτοπο απαγωγή. Επαγωγή: Έστω μία πρόταση π, η οποία εξαρτάται από ένα φυσικό αριθμό. Εάν η π ισχύει: (α) για και (β) για n=k+1 εφόσον ισχύει για n=k, τότε ισχύει τελικά για κάθε.

6 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.6 Σχεδίαση Αλγορίθμων ΙΙ Ισχυρά επαγωγή: Έστω μία πρόταση π, η οποία εξαρτάται από ένα φυσικό αριθμό. Εάν αποδειχθεί η π: (α) ισχύει για και (β) ισχύει για n=k+1, εφόσον ισχύει για κάθε, τότε η εν λόγω πρόταση ισχύει για κάθε. Οι δύο μορφές επαγωγής είναι ισοδύναμες.

7 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.7 Σχεδίαση Αλγορίθμων ΙΙΙ Παράδειγμα επαγωγής: Algorithm Max(A) Input:Πίνακας Α n αριθμών Output:Ο μεγαλύτερος αριθμός του Α 1.max=A[0] 2.for (i=1;i

8 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.8 Σχεδίαση Αλγορίθμων ΙV Τεχνικές σχεδίασης αλγορίθμων: αλγόριθμοι brute-force: διακρίνονται από το γεγονός ότι επιλύουν το πρόβλημα με τον πιο απλό, άμεσο ή προφανή τρόπο. Η λειτουργία τους βασίζεται στον εξαντλητικό έλεγχο όλων των πιθανών περιπτώσεων. άπληστοι αλγόριθμοι: προχωρούν με βάση σταδιακές επιλογές, που αφορούν στο βέλτιστο κάθε βήματος. αλγόριθμοι οπισθοδρόμησης: σε κάθε βήμα εξετάζουν συστηματικά όλα τα πιθανά αποτελέσματα κάθε απόφασης, εκτός και αν αποφασίσουν ότι για κάποιες περιπτώσεις δεν είναι απαραίτητος ένας τέτοιος εξαντλητικός έλεγχος. αλγόριθμοι διαίρει και βασίλευε: το πρόβλημα υποδιαιρείται σε πολλά μικρά υποπροβλήματα πανομοιότυπα με το αρχικό. Κάθε ένα από αυτά επιλύεται ανεξάρτητα και οι επιμέρους λύσεις συνδυάζονται σε μία τελική λύση του αρχικού προβλήματος.

9 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.9 Σχεδίαση Αλγορίθμων V αλγόριθμοι δυναμικού προγραμματισμού: το πρόβλημα υποδιαιρείται σε πολλά μικρά προβλήματα, τα οποία επιλύονται σταδιακά ως σύνθεση των λύσεων των μικρότερων και άρα απλούστερων υποπροβλημάτων. Είναι ιδιαίτερα διαδεδομένοι για την επίλυση προβλημάτων βελτιστοποίησης. τυχαιοποιημένοι αλγόριθμοι: αλγόριθμοι που φαίνεται ότι συμπεριφέρονται τυχαία αλγόριθμοι γράφων αλγόριθμοι αναγνώρισης συμβολοσειρών αριθμητικοί αλγόριθμοι κατανεμημένοι αλγόριθμοι αλγόριθμοι συντακτικής – σημασιολογικής ανάλυσης (μεταγλωττιστές)

10 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.10 Ανάλυση Αλγορίθμων Ι Ποιος είναι ο καλύτερος αλγόριθμος; Συγκρίνουμε τους αλγορίθμους με βάση την αποδοτικότητά τους ως συνάρτηση του μεγέθους των περιπτώσεων του προβλήματος για τον υπολογισμό χρόνου ή χώρου. Διακρίνουμε την θεωρητική προσέγγιση: χρησιμοποιείται το μοντέλο της Μηχανής Turing για την κατάταξή τους σε κλάσεις πολυπλοκότητας εμπειρική προσέγγιση: ως μηχανή εκτέλεσης χρησιμοποιείται το μοντέλο της Μηχανής Τυχαίας Προσπέλασης (RAM) η αποδοτικότητα χαρακτηρίζεται ως συνάρτηση του μεγέθους του προβλήματος Με τον όρο μέγεθος αναφερόμαστε σε οποιοδήποτε ακέραιο που με κάποιο τρόπο «μετράει» τον αριθμό των συστατικών μερών μιας περίπτωσης του προβλήματος. Παράδειγμα: πρόβλημα ταξινόμησης μέγεθος περίπτωσης είναι ο αριθμός n των προς ταξινόμηση δεδομένων

11 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.11 Ανάλυση Αλγορίθμων ΙΙ Μοντέλο Μηχανής Τυχαίας Προσπέλασης (RAM) Αφαιρετική θεώρηση υπολογιστικού συστήματος που: αναφέρεται σε συστήματα του ενός επεξεργαστή δεν έχει τη δυνατότητα τελέσεως ταυτόχρονων πράξεων διαθέτει τους αναγκαίους καταχωρητές, ένα συσσωρευτή και μία ακολουθία απθηκευτικών θέσεων με διευθύνσεις οι οποίες συνιστούν την κύρια μνήμη είναι σε θέση να εκτελεί τις αριθμητικές πράξεις {+, -, *, /, mod}, να παίρνει αποφάσεις τύπου if και να γράφει – διαβάζει από και προς τις θέσεις μνήμης

12 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.12 Ανάλυση Αλγορίθμων ΙΙΙ Οι στοιχειώδεις πράξεις που μπορεί να εκτελέσει μια μηχανή RAM έχουν κάποιο κόστος σε χρόνο: μέτρηση μοναδιαίου κόστους: σταθερό, πεπερασμένο κόστος ανεξαρτήτως του μήκους της δυαδικής αναπαράστασης των τελεστέων μέτρηση λογαριθμικού κόστους: η πράξη παίρνει χρόνο ανάλογο με το μήκος της δυαδικής αναπαράστασης Εμείς θα χρησιμοποιήσουμε την πρώτη προσέγγιση. Θεώρημα: Κάθε υπολογιστική διαδικασία μιας μηχανής Turing, με κόστος πολυωνυμικό στο μέγεθος της εισόδου, μπορεί να εξομοιωθεί από μία υπολογιστική, πολυωνυμική στο μέγεθος της εισόδου, διαδικασία μιας μηχανής RAM και αντίστροφα.

13 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.13 Ανάλυση Αλγορίθμων ΙV Η ανάλυση θα γίνεται βάση του μοναδιαίου μέτρου ως συνάρτηση του μεγέθους της εισόδου που: για ένα πρόβλημα ταξινόμησης είναι το πλήθος n των προς διάταξη αντικειμένων για έναν αλγόριθμο εύρεσης ελάχιστου επικαλυπτόμενου δένδρου σε γράφο με σύνολο κορυφών V και σύνολο ακμών E, η είσοδος έχει μέγεθος n=|V|+|E| για την τέλεση πολλαπλασιασμών μεταξύ μεγάλων ακεραίων το μέγεθος εισόδου είναι το συνολικό μήκος σε αριθμό bit της δυαδικής αναπαράστασής τους (όχι το πλήθος τους)

14 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.14 Ανάλυση Αλγορίθμων V Υπολογισμός κόστους ενός αλγορίθμου: σε κάθε εντολή ανάθεσης τιμής ή δήλωσης θα χρεώνουμε σταθερό χρόνο οι βρόχοι for και while θα χρεώνονται το πλήθος των επαναλήψεων επί το πλήθος των εντολών που εκτελούνται σε κάθε επανάληψη Συχνά θα επικεντρωνόμαστε στις κυρίαρχες πράξεις, δηλαδή αυτές που παίζουν καταλυτικό ρόλο στη συμπεριφορά του αλγορίθμου: π.χ. στους αλγορίθμους ταξινόμησης οι κυρίαρχες πράξεις είναι οι συγκρίσεις και οι ανταλλαγές στοιχείων μεταξύ δύο θέσεων του πίνακα εισόδου

15 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.15 Ανάλυση Αλγορίθμων VΙ Παράδειγμα ανάλυσης: Algorithm selectionSort(A) Input:Πίνακας Α n αριθμών Output:Διατεταγμένος πίνακας κόστος #εκτελέσεων 1.for (i=0;i

16 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.16 Ανάλυση Αλγορίθμων VΙΙ Συνολικός χρόνος αλγορίθμου: ένας αλγόριθμος είναι γρηγορότερος από έναν άλλο αν ένας αλγόριθμος είναι ασυμπτωτικά γρηγορότερος από έναν άλλο αν

17 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.17 Ανάλυση Αλγορίθμων VΙΙΙ Στις περισσότερες περιπτώσεις είτε δεν είμαστε σε θέση είτε δε ας ενδιαφέρει να βρούμε ακριβείς τύπους και απλά ασχολούμαστε με το ρυθμό αύξησης ή την τάξη αύξησης των συναρτήσεων που εκφράζουν την πολυπλοκότητα του αλγορίθμου. Τότε μιλάμε για ασυμπτωτικές εκτιμήσεις O, Θ ή Ω.

18 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.18 Ανάλυση Αλγορίθμων ΙΧ Αλγόριθμος που εκτελείται σε χρόνο τάξης nεμφανίζει γραμμική πολυπλοκότητα n 2 εμφανίζει τετραγωνική πολυπλοκότητα n 3 εμφανίζει κυβική πολυπλοκότητα n κ πολυωνυμική πολυπλοκότητα c n εκθετική πολυπλοκότητα Αποδοτικότητα χώρου μνήμης για παράλληλους αλγορίθμους: Αποδοτικότητα επικοινωνίας

19 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.19 Ανάλυση Αλγορίθμων Χ

20 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.20 Ανάλυση Αλγορίθμων ΧΙ ΟΡΙΣΜΟΣ Θεωρούμε ότι η συνάρτηση f(n) είναι μη αρνητική για όλους τους ακεραίους. Λέμε ότι f(n)=O(g(n)), αν υπάρχει ακέραιος n 0 και μία σταθερά c>0 έτσι ώστε για όλους τους ακέραιους. ΠΑΡΑΔΕΙΓΜΑ Έστω f(n)=8n+128. Ισχύει ότι f(n)=O(n 2 )? Ας θεωρήσουμε c=1. Τότε, Αφού για κάθε ισχύει (n+8)>0, θέλουμε Άρα ισχύει ότι f(n)=0(n 2 )

21 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.21 Ανάλυση Αλγορίθμων ΧΙΙ ΟΡΙΣΜΟΣ Θεωρούμε τη συνάρτηση f(n)=O(g(n)). Αν για κάθε συνάρτηση h(n) έτσι ώστε f(n)=O(h(n)), ισχύει επίσης ότι g(n)=O(h(n)), τότε λέμε ότι η g(n) είναι ένα στενό ασυμπτωτικό όριο της f(n). Παράδειγμα: Δείξαμε ότι για f(n)=8n+128 ισχύει ότι f(n)=O(n 2 ). Παρόλα αυτά, το n 2 δεν είναι ένα στενό ασυμπτωτικό όριο, γιατί ισχύει επίσης f(n)=O(n). Βέβαια, για να αποδειχθεί ότι η g(n)=n είναι ένα στενό ασυμπτωτικό όριο πρέπει να δείξουμε ότι για κάθε h(n) που f(n)=O(h(n)), ισχύει ότι g(n)=O(h(n)). Για το συγκεκριμένο παράδειγμα μπορεί αυτό να γίνει με εις άτοπο απαγωγή.

22 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.22 Ανάλυση Αλγορίθμων ΧΙΙΙ ΣΥΜΒΑΣΕΙΣ: Συνηθίζεται σε μία έκφραση κεφαλαίου «Ο» να διατηρούμε μόνο τον πιο σημαντικό όρο. Έτσι, αντί για Ο(n 2 +nlogn+n) γράφουμε απλά O(n 2 ). Συνηθίζεται να αγνοούνται οι συντελεστές. Έτσι, αντί για Ο(3n 2 ), απλά γράφουμε Ο(n 2 ). Προτιμούμε την εύρεση στενού ασυμπτωτικού ορίου. Έτσι, αντί να γράφουμε f(n)=n=O(n 3 ) προτιμούμε να γράφουμε f(n)=O(n). Σε κάποια βιβλία αντί για f(n)=O(g(n)) γράφουνε f(n)  O(g(n)). (βλ. Brassard & Bratley).

23 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.23 Ανάλυση Αλγορίθμων ΧΙV ΑΣΥΜΠΤΩΤΙΚΟ ΚΑΤΩ ΟΡΙΟ (ΣΥΜΒΟΛΙΣΜΟΣ Ω): Θεωρούμε ότι η συνάρτηση f(n) είναι μη αρνητική για όλους τους ακεραίους. Λέμε ότι f(n)=Ω(g(n)), αν υπάρχει ακέραιος n 0 και μία σταθερά c>0 έτσι ώστε για όλους τους ακέραιους,. Όλες οι συμβάσεις που εισάγαμε στο συμβολισμό κεφαλαίου «Ο» ισχύουν και για το συμβολισμό κεφαλαίου «Ω». ΠΑΡΑΔΕΙΓΜΑ: Αποδείξτε ότι αν f(n)=5n 2 -64n+256, τότε f(n)=Ω(n 2 ). ΑΣΥΜΠΤΩΤΙΚΟΣ ΣΥΜΒΟΛΙΣΜΟΣ Θ: Θεωρούμε ότι η συνάρτηση f(n) είναι μη αρνητική για όλους τους ακεραίους. Λέμε ότι f(n)=Θ(g(n)), αν και μόνο αν f(n)=Ο(g(n)) και f(n)=Ω(g(n)). Τότε λέμε ότι η f(n) είναι ακριβώς τάξης g(n) και αν μπορεί να αποδειχθεί κάτι τέτοιο για έναν αλγόριθμο είναι πιο ισχυρό από ότι αν απλά ο αλγόριθμος είναι τάξης g(n).

24 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.24 Ανάλυση Αλγορίθμων ΧV ΑΣΥΜΠΤΩΤΙΚΟΣ ΣΥΜΒΟΛΙΣΜΟΣ ΠΕΖΟΥ «ο»: Θεωρούμε ότι η συνάρτηση f(n) είναι μη αρνητική για όλους τους ακεραίους. Λέμε ότι f(n)=ο(g(n)), αν και μόνο αν f(n)=Ο(g(n)), αλλά δεν ισχύει f(n)  Θ(g(n)). ΑΣΥΜΠΤ. ΣΥΜΒΟΛΙΣΜΟΣ ΜΕ ΠΟΛΛΕΣ ΠΑΡΑΜΕΤΡΟΥΣ: Χρήσιμος για περιπτώσεις όπου για παράδειγμα ο χρόνος εκτέλεσης εξαρτάται από περισσότερες από μία παραμέτρους της κάθε περίπτωσης π.χ. αλγόριθμοι γράφων που εξαρτώνται από τον αριθμό των ακμών και τον αριθμό των κορυφών. Λέμε τότε ότι f(m,n)=O(g(m,n)), αν υπάρχουν ακέραιοι n 0 και m 0 και μία σταθερά c>0, έτσι ώστε για όλους τους ακέραιους και ισχύει.

25 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.25 Ανάλυση Αλγορίθμων ΧVI ΑΣΥΜΠΤ. ΣΥΜΒΟΛΙΣΜΟΣ ΥΠΟ ΣΥΝΘΗΚΗ: Μία συνάρτηση t(n) είναι O(f(n)|P(n)) αν υπάρχει ένας ακέραιος n 0 και μία σταθερά c>0, έτσι ώστε για όλους τους ακέραιουςνα συνάγεται P(n)  t(n)  cf(n). Έτσι, αν αυτό βολεύει, μπορούμε να μελετήσουμε την αποδοτικότητα ενός αλγορίθμου για περιπτώσεις με μεγέθη π.χ. που προκύπτουν ως δυνάμεις του 2. Συνήθως βέβαια, στη συνέχεια, αναζητείται κάποιος τρόπος για να αρθεί η συνθήκη της οποίας ο ρόλος περιορίζεται στη διευκόλυνση της ανάλυσης της του αλγορίθμου. ΠΡΑΞΕΙΣ ΜΕ ΑΣΥΜΠΤ. ΣΥΜΒΟΛΙΣΜΟ: Τι σημαίνει ο συμβολισμός O(f(n))+O(g(n)); Ο συμβολισμός αυτός εκφράζει το σύνολο των συναρτήσεων που προκύπτει με την πρόσθεση της τιμής οποιασδήποτε συνάρτησης ανήκει στο O(f(n)) στην τιμή οποιασδήποτε συνάρτησης ανήκει στο O(g(n)). Γενικά, μία συνάρτηση t(n) είναι O(f(n)) op O(g(n)), αν υπάρχουν συναρτήσεις f και g, που ανήκουν αντίστοιχα στα σύνολα συναρτήσεων O(f(n)) και O(g(n)) και ένας ακέραιος n 0 έτσι ώστε για όλους τους ακέραιους t(n)=f(n) op g(n)

26 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.26 Ανάλυση Αλγορίθμων ΧVII ΘΕΩΡΗΜΑ Αν θεωρήσουμε ότι f 1 (n)=O(g 1 (n)) και f 2 (n)=O(g 2 (n)), τότε f 1 (n)+f 2 (n)=O(max(g 1 (n),g 2 (n))) ΑΠΟΔΕΙΞΗ: Εξ ορισμού υπάρχουν δύο ακέραιοι n 1 και n 2 και δύο σταθερές c 1 και c 2, έτσι ώστε f 1 (n)  c 1 g 1 (n) για n  n 1 και f 2 (n)  c 2 g 2 (n) για n  n 2. Έστω ότι n 0 =max(n 1,n 2 ) και c 0 =2max(c 1,c 2 ). Τότε, για n  n 0 ΘΕΩΡΗΜΑ Αν f (n)=f 1 (n)+f 2 (n) και οι f 1 (n) και f 2 (n) είναι και οι δύο μη αρνητικές για όλους τους ακεραίους n  0, έτσι ώστε για κάποιο L  0, τότε f(n)=0(f 1 (n)).

27 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.27 Ανάλυση Αλγορίθμων ΧVIII ΣΗΜΑΝΤΙΚΟ ΘΕΩΡΗΜΑ, διότι χάρη σε αυτό συμπεραίνουμε π.χ. ότι f 1 (n)+f 2 (n)=n 3 +n 2 =O(n 3 ). ΓΙΑΤΙ?? ΕΠΕΙΔΗ: ΘΕΩΡΗΜΑ Αν θεωρήσουμε ότι f 1 (n)=O(g 1 (n)) και f 2 (n)=O(g 2 (n)), τότε f 1 (n)Χf 2 (n)=O(g 1 (n)Χg 2 (n)) ΑΠΟΔΕΙΞΗ: Εξ ορισμού υπάρχουν δύο ακέραιοι n 1 και n 2 και δύο σταθερές c 1 και c 2, έτσι ώστε f 1 (n)  c 1 g 1 (n) για n  n 1 και f 2 (n)  c 2 g 2 (n) για n  n 2. Επιπλέον, οι f 1 (n) και f 2 (n) είναι μη αρνητικές για όλους τους ακεραίους n  0. Θεωρούμε n 0 =max(n 1,n 2 ) και c 0 =c 1 c 2. Τότε για n  n 0

28 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.28 Ανάλυση Αλγορίθμων ΧIX ΣΗΜΑΝΤΙΚΟ ΘΕΩΡΗΜΑ, διότι χάρη σε αυτό συμπεραίνουμε π.χ. ότι f 1 (n)Xf 2 (n)=(n 3 +n 2 +n+1)X(n 2 +n+1)=0(n 3 Xn 2 )=O(n 5 ). ΘΕΩΡΗΜΑ Αν θεωρήσουμε ότι f 1 (n)=O(g 1 (n)) και η g 2 (n) είναι μη αρνητική για όλους τους ακεραίους n  0, τότε f 1 (n)Χf 2 (n)=O(g 1 (n)Χg 2 (n)) ΘΕΩΡΗΜΑ Αν θεωρήσουμε ότι f(n)=O(g(n)) και η g(n)= O(h(n)), τότε f(n)=O(h(n)). ΣΗΜΑΝΤΙΚΟ ΘΕΩΡΗΜΑ, διότι χάρη σε αυτό συμπεραίνουμε π.χ. ότι αν f 1 (n)=5n 3, που είναι Ο(n 3 ) και f 2 (n)=3n 2, τότε f 1 (n)+f 2 (n)=0(f 1 (n)), γιατί. Το γεγονός όμως ότι f 1 (n)=Ο(n 3 ), δίνει με μεταβατική ιδιότητα ότι f 1 (n)+f 2 (n)= Ο(n 3 )

29 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.29 Ανάλυση Αλγορίθμων ΧX ΘΕΩΡΗΜΑ Αν θεωρήσουμε ένα πολυώνυμο της μορφής όπου. Τότε f(n)=O(n m ). ΑΠΟΔΕΙΞΗ: Αφού το μέγεθος n είναι εξ ορισμού μη αρνητικός αριθμός, για να είναι ένας όρος του πολυωνύμου αρνητικός πρέπει. Άρα για κάθε όρο του αθροίσματος ισχύει. Επειδή θεωρήσαμε ότι Επειδή

30 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.30 Ανάλυση Αλγορίθμων ΧXI ΘΕΩΡΗΜΑ Αν θεωρήσουμε ένα πολυώνυμο της μορφής όπου. Τότε f(n)=Ω(n m ). ΘΕΩΡΗΜΑ Για κάθε ακέραιο k  1, log k n=O(n).

31 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.31 Ανάλυση Αλγορίθμων ΧXII Για να βρεθούν ασυμπτωτικά όρια: Όταν ο αλγόριθμος περιέχει επαναληπτικές δομές ελέγχου (while, for κ.λ.π.), τότε η αποδοτικότητα εκφράζεται ως άθροισμα όρων, π.χ.. Έτσι, η ανάλυση ανάγεται στην δυνατότητα χειρισμού τέτοιων αθροισμάτων και εύρεσης ασυμπτωτικών ορίων. Πρέπει να γνωρίζετε πολύ καλά τον υπολογισμό σειρών: - αριθμητικών - γεωμετρικών - αρμονικών για τις οποίες προσπαθείτε να αποδείξετε την ισχύ ενός ασυμπτωτικού ορίου με τη χρήση επαγωγής.

32 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.32 Ανάλυση Αλγορίθμων ΧXIIΙ Όταν ο αλγόριθμος περιέχει αναδρομικές κλήσεις, τότε η αποδοτικότητά του εκφράζεται από αναδρομικές εξισώσεις ή ανισοϊσότητες, π.χ. τότε προσπαθούμε να βρούμε την αποδοτικότητα με κάποιο από το εξής τρόπους: προσπαθούμε να «μαντέψουμε» με επαναληπτική αντικατάσταση με τη γενική μέθοδο

33 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.33 Ανάλυση Αλγορίθμων ΧXΙV … προσπαθώντας να «μαντέψουμε» Έστω ότι θέλουμε να δείξουμε ότι αν το κόστος είναι η λύση είναι O(n). Άρα πρέπει να δείξουμε ότι για μία σταθερά c, T(n)  cn. Εφαρμόζουμε ισχυρά επαγωγή και αντικαθιστούμε στην αναδρομική εξίσωση: αλλά εμείς θέλουμε σύμφωνα με την υπόθεση της επαγωγής να δείξουμε ότι T(n)  cn. Για το λόγο αυτό δοκιμάζουμε για cn-b, όπου b σταθερά:

34 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.34 Ανάλυση Αλγορίθμων ΧXV … προσπαθώντας να «μαντέψουμε» εάν τυχόν υπάρχουν αρχικές συνθήκες για την αναδρομή όπως π.χ. Τ(1)=4, τότε αυτές μπορεί να καθορίζουν τη σταθερά c ένα «κόλπο» για να «μαντέψουμε» είναι με χρήση «δένδρου αναδρομής» (βλ. Αλγόριθμοι – Σχεδιασμός και Αάλυση, Παναγιώτης Δ. Μποζάνης).

35 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.35 Ανάλυση Αλγορίθμων ΧXVΙ … με επαναληπτική αντικατάσταση έστω ότι και Τ(1)=1. Δίχως βλάβη της γενικότητας ας υποθέσουμε ότι το n είναι δύναμη του 3. Τότε,

36 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.36 Ανάλυση Αλγορίθμων ΧXVΙΙ … με επαναληπτική αντικατάσταση η επαναληπτική διαδικασία σταματάει όταν οπότε με αντικατάσταση και πράξεις

37 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.37 Ανάλυση Αλγορίθμων ΧXVΙΙΙ γενική μέθοδος ουσιαστικά είναι μία μέθοδος για την επίλυση αναδρομικών εξισώσεων της μορφής και βασίζεται στην εφαρμογή κάποιων θεωρημάτων. Περισσότερες πληροφορίες στο: Αλγόριθμοι – Σχεδιασμός και Αάλυση, Παναγιώτης Δ. Μποζάνης, σελ. 19

38 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.38 Μορφές ανάλυσης ανάλυση μέσης περίπτωσηςμέσο κόστος εκτέλεσης του αλγορίθμου ανάλυση χειρότερης περίπτωσης μέγιστο κόστος εκτέλεσης του αλγορίθμου

39 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.39 Ανάλυση χειρότερης περίπτωσης Ι Παράδειγμα ανάλυσης χειρότερης περίπτωσης: Algorithm quickSort(A,left,right) Input:Πίνακας Α n αριθμών με όρια left και right Output:Διατεταγμένος πίνακας 1. i=left-1, j=right; 2. o=a[right]; 2.while (true) {//εύρεση θέσης pivot 3.while (a[++i]=j) break; 7.temp=a[i]; a[i]=a[j]; a[j]=temp; 8.} 9. temp=a[i]; a[i]=a[right]; a[right]=temp; 10. if (left

40 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.40 Ανάλυση χειρότερης περίπτωσης ΙI Πως λειτουργεί το quicksort: Αν π.χ. έχουμε ένα πίνακα αριθμών [4, 8, 2, 7, 1, 5, 6, 3], τότε επιλέγεται ως στοιχείο pivot αυτό που βρίσκεται στη δεξιότερη θέση και αναζητείται η σωστή του θέση μέσα στον πίνακα. Αυτό τοποθετείται στη σωστή του θέση και αριστερά του τοποθετούνται όλα τα στοιχεία που είναι μικρότερα από το pivot, ενώ δεξιά του αυτά που είναι μεγαλύτερα. Έτσι, προκύπτει [2, 1, 3, 4, 8, 7, 5, 6] και η quicksort εφαρμόζεται τόσο στο αριστερό όσο και στο δεξί τμήμα του πίνακα. Εφαρμογή: [4, 1, 2, 3]left=0right=3 i=-1j=3pivot=3 εύρεση θέσης pivot: i  0 j  2ανταλλαγή a[i] & a[j] [2, 1, 4, 3] i  2 j  1θέση pivot: 2 [2, 1, 3, 4] κ.λ.π. Χειρότερη περίπτωση: να αναζητούμε τη θέση του pivot σε έναν ήδη ταξινομημένο πίνακα

41 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.41 Ανάλυση χειρότερης περίπτωσης ΙIΙ Σχέση κόστους: Όταν όμως ο πίνακας είναι ήδη ταξινομημένος (χειρότερη περίπτωση), από τα δύο υποπροβλήματα η quicksort καλείται αναδρομικά μόνο για το ένα. Έτσι, το κόστος δίνεται από τη σχέση:

42 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.42 Ανάλυση μέσης περίπτωσης Ι Μέση περίπτωση: δοθέντος ενός πίνακα n στοιχείων, όλα τα στοιχεία έχουν την ίδια πιθανότητα να είναι pivot (δηλαδή να βρίσκονται στη δεξιότερη θέση του πίνακα) αφαιρούμε κατά μέλη

43 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.43 και με επαναληπτική αντικατάσταση Ανάλυση μέσης περίπτωσης ΙΙ

44 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.44 Ανάλυση ταξινόμησης I Αλγόριθμος straight insertion sort (σταδιακή ταξινόμηση) AlgorithmstraightInsertSort(A) Input:Πίνακας Α n αριθμών Output:Διατεταγμένος πίνακας for (i=1;i=0 and x

45 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.45 Ανάλυση ταξινόμησης II Αλγόριθμος straight insertion sort (εκτέλεση...)

46 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.46 Ανάλυση ταξινόμησης III Αλγόριθμος straight insertion sort (ανάλυση...) πόσες συγκρίσεις (εντολή while) γίνονται για κάθε i? καλύτερη περίπτωση: η τιμή στη θέση i είναι μεγαλύτερη από την τιμή στη θέση i-1 (πίνακας ταξινομημένος σε αύξουσα) μία σύγκριση για κάθε i και άρα συνολικά n-1 συγκρίσεις χειρότερη περίπτωση: (πίνακας ταξινομημένος σε φθίνουσα) i-1 συγκρίσεις για κάθε i και άρα συνολικά συγκρίσεις

47 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.47 Ανάλυση ταξινόμησης IV Αλγόριθμος straight insertion sort (ανάλυση...) μέση περίπτωση: αν θεωρήσουμε μόνο διαφορετικούς μεταξύ τους αριθμούς, τότε η μέση περίπτωση είναι ο μέσος αριθμός συγκρίσεων για όλες τις πιθανές σειρές, που μπορεί να προκύψουν από την {1,2,3,...,n} με αλλαγή της θέσης των στοιχείων της ονομάζουμε αντιστροφή την εμφάνιση ζεύγους αριθμών που εμφανίζονται με λάθος σειρά π.χ. η σειρά {1,4,3,2} περιέχει τρεις αντιστροφές, τις (4,3,), (4,2) και (3,2) Τι σχέση έχει η αντιστροφή με τη βασική πράξη, που είναι η σύγκριση??

48 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.48 Ανάλυση ταξινόμησης V Αλγόριθμος straight insertion sort (ανάλυση...) μέση περίπτωση (συνέχεια): στον αλγόριθμο straight insertion sort και πιο συγκεκριμένα στο βρόχο while αφαιρείται κάθε φορά μία αντιστροφή με αντιμετάθεση των στοιχείων που την απαρτίζουν. Άρα έχουμε τόσες συγκρίσεις, όσες οι εμφανιζόμενες αντιστροφές. Θεώρημα: Ο μέσος αριθμός εμφανιζόμενων αντιστροφών σε μία τυχαία επιλεγμένη σειρά n διακριτών αριθμών είναι Απόδειξη: Έστω S μία τυχαία σειρά n διακριτών αριθμών και S R η αντίστροφη σειρά της S. Άρα κάθε ζεύγος αριθμών σχηματίζει μία αντιστροφή που βρίσκεται είτε στην S είτε στην S R. Πόσα ζεύγη αριθμών περιέχει η κάθε σειρά? Άρα κατά μέσο όρο η S θα περιέχει τις μισές αντιστροφές.

49 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.49 Ανάλυση ταξινόμησης VΙ Συνοψίζοντας: αλγόριθμοςκαλύτερη περίπτωσημέση περίπτωσηχειρότερη περίπτωση straight insertion sortnn2n2 n2n2 binary search sortn log(n)n2n2 n2n2 bubble sortn2n2 n2n2 n2n2 quicksortn log(n) n2n2 straight selection sortn2n2 n2n2 n2n2 heapsortn log(n) mergesortn log(n)

50 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.50 Ανάλυση αλγορίθμων: εφαρμογές Περισσότερες εφαρμογές ανάλυσης αλλά και ασκήσεις: Algorihmics – Theory and Practice, Gilles Brassard & Paul Bratley, Prentice-Hall κεφάλαιο 2

51 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.51 Δομές δεδομένων Αντικείμενο είναι η επισταμένη μελέτη των υλοποιήσεων των συχνότερα εμφανιζόμενων αφηρημένων τύπων δεδομένων (abstract data types). Ως αφηρημένος τύπος δεδομένων ορίζεται ένα σύνολο, με μία συλλογή πράξεων επί των στοιχείων του συνόλου. Συνοπτική αναφορά στις: Λίστες Γράφους (ή γραφήματα) Δένδρα Σωρούς Δομές διαζευγμένων συνόλων

52 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.52 Λίστες Ι Λίστα είναι μία συλλογή κόμβων. Η δομή που θα υλοποιεί μία λίστα πρέπει με αποδοτικό τρόπο να επιτρέπει την προσπέλαση στον πρώτο κόμβο, στον τελευταίο και στους προηγούμενο ή/και επόμενο ενός δοθέντος κόμβου. Λειτουργίες: first(), last(), insertAfter/Before(p,e), remove (p), getNext(), nofElements() και addLast(x) Υλοποίηση (1ος τρόπος): struct tablist { int counter ;//με τιμές από 0 μέχρι maxlength atype value[maxlength] ; } ακαριαία προσπέλαση στο πρώτο, τελευταίο, προηγούμενο και επόμενο στοιχείο

53 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.53 Λίστες ΙI εισαγωγή και διαγραφή με αριθμό πράξεων στη χειρότερη περίπτωση της τάξης του τρέχοντος μεγέθους της λίστας 1ος τρόπος υλοποίησης ιδιαίτερα αποδοτικός για την περίπτωση της δομής της στοίβας, που απαιτεί μόνο εισαγωγή και διαγραφή από το ένα άκρο της λίστας. Υλοποίηση (2ος τρόπος): struct listelement { atype element ; listelement* next ; } αποδοτικότερη υλοποίηση σε απαιτήσεις χώρου μνήμης αποδοτική εισαγωγή και διαγραφή κόμβων προσπέλαση: ανάλογα με τους δείκτες που χρησιμοποιούνται

54 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.54 Γράφοι Ι Γράφος είναι ένα σύνολο κόμβων, που συνδέονται μεταξύ τους με ένα σύνολο γραμμών ή τόξων. Διακρίνουμε τους κατευθυνόμενους και τους μη κατευθυνόμενους γράφους. Οι γραμμές που συνδέουν τους κόμβους ονομάζονται ακμές, ενώ οι κόμβοι κορυφές. Μία ακμή από τον κόμβο α στον κόμβο b συμβολίζεται με (α, b) αν πρόκειται για κατευθυνόμενο γράφο και με {α, b}, για μη κατευθυνόμενο.

55 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.55 Γράφοι ΙΙ Υλοποίηση (1ος τρόπος): struct adjgraph { atype value[nbnodes] ; int adjacent[nbnodes][nbnodes] ; } αν υπάρχει ακμή από τον κόμβο i στον κόμβο j, τότε adjacent[i-1][j-1]=1 ή με τον ακέραιο που εκφράζει το βάρος της ακμής, αν πρόκειται για ζυγισμένο γράφο. Διαφορετικά, adjacent[i-1][j-1]=0. Στην περίπτωση μη κατευθυνόμενου γράφου ο πίνακας που προκύπτει είναι συμμετρικός. αποδοτική αναπαράσταση για έλεγχο αν δύο κορυφές συνδέονται για εύρεση όλων των κορυφών, που συνδέονται με μία δεδομένη χρειάζεται ανάγνωση μιας ολόκληρης γραμμής του πίνακα (τάξης nbnode) Χώρος μνήμης: πολυπλοκότητα τετραγωνική ως προς τον αριθμό κορυφών

56 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.56 Γράφοι ΙΙI Υλοποίηση (2ος τρόπος): struct nodelist { atype value ; nodelist* next ; } nodelist *listgraph[nbnodes]; εδώ σε κάθε κορυφή i αντιστοιχίζεται μία λίστα κορυφώ, που γειτνιάζουν με την i Για τον έλεγχο του αν οι i και j γειτνιάζουν, τότε πρέπει να εξετάσουμε τη λίστα της i-1 και αν ο γράφος είναι κατευθυνόμενος και της j-1. Αν ο αριθμός των ακμών είναι μικρός, αυτός ο τρόπος αναπαράστασης συμφέρει από άποψη χώρου μνήμης. Δένδρο είναι ένας άκυκλος συνδεδεμένος μη κατευθυνόμενος γράφος. Σε κάθε δένδρο υπάρχει ακριβώς ένα μονοπάτι, που συνδέει οποιοδήποτε ζεύγος δοθέντων κορυφών. Ίδια αναπαράσταση.

57 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.57 Δένδρα Ι Κάθε δένδρο με n κορυφές περιέχει ακριβώς n-1 ακμές. Συνήθως απεικονίζεται με τη ρίζα στο πάνω μέρος. Υλοποίηση (1ος τρόπος): struct treenode { atype value ; treenode *eldet-child, *next-sibling ; }

58 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.58 Βάθος κόμβου είναι ο αριθμός των ακμών από τη ρίζα. Ύψος κόμβου είναι ο αριθμός των ακμών στο μεγαλύτερο μονοπάτι από το συγκεκριμένο κόμβο προς κάποιο φύλλο. Το επίπεδο ενός κόμβου είναι το ύψος της ρίζας μείον το βάθος του κόμβου. Παράδειγμα: βάθος κόμβου gamma 1, ύψος 0, επίπεδο 1 Δένδρα ΙI

59 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.59 Δένδρα ΙI Υλοποίηση n-ικού δένδρου: struct ntreenode { atype value ; ntreenode *child[n] ; } Υλοποίηση δυαδ-ικού δένδρου: struct btreenode { atype value ; btreenode *left, *right ; } Ένα δυαδικό δένδρο είναι δένδρο αναζήτησης αν η τιμή κάθε εσωτερικού κόμβου είναι μεγαλύτερη ή ίση από όλες τις τιμές των αριστερών απογόνων του και μικρότερη ή ίση από όλες τις τιμές των δεξιών απογόνων. Λειτουργίες: εισαγωγή, διαγραφή, αναζήτηση

60 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.60 Σωρός Ι Ένα δυαδικό δένδρο είναι βασικώς πλήρες, αν κάθε εσωτερικός κόμβος έχει ακριβώς δύο απογόνους, με πιθανή εξαίρεση έναν ειδικό κόμβο, που αν υπάρχει θα είναι στο επίπεδο 1 και θα διαθέτει μόνο αριστερό απόγονο. Επιπλέον, όλα τα φύλλα του δένδρου θα είναι είτε στο επίπεδο 0, είτε στο επίπεδο 1, αλλά δεν θα υπάρχει φύλλο επιπέδου 1 στα αριστερά κάποιου εσωτερικού κόμβου επιπέδου 1. Ο μοναδικός ειδικός κόμβος, αν υπάρχει, βρίσκεται στα δεξιά όλων των εσωτερικών κόμβων επιπέδου 1.

61 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.61 Σωρός ΙΙ Αποθήκευση σε πίνακα: οι κόμβοι βάθους k τοποθετούνται στον πίνακα στις θέσεις 2 k -1, 2 k,…, 2 k+1 -2 από αριστερά προς τα δεξιά

62 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.62 Σωρός ΙΙΙ Οι απόγονοι του κόμβου που βρίσκεται στη θέση i του πίνακα βρίσκονται στις θέσεις 2i+1 και 2i+2. ΒΑΣΙΚΗ ΙΔΙΟΤΗΤΑ ΤΟΥ ΣΩΡΟΥ: Η τιμή κάθε εσωτερικού κόμβου είναι μεγαλύτερη ή ίση από τις τιμές των απογόνων του. Έστω ότι αλλάζει η τιμή ενός κόμβου. Αν η νέα τιμή είναι μεγαλύτερη από την τιμή του προγόνου του, τότε γίνεται ανταλλαγή των δύο τιμών και η διαδικασία συνεχίζεται όσες φορές χρειάζεται. Λέμε ότι η αλλαγμένη τιμή «διεισδύει» προς τη νέα της θέση. Αν η τιμή ενός κόμβου μειωθεί έτσι ώστε να γίνει μικρότερη από τουλάχιστο μια τιμή απογόνου, τότε γίνεται ανταλλαγή με τη μεγαλύτερη από τις τιμές των απογόνων κ.ο.κ. Λέμε ότι η αλλαγμένη τιμή «πέφτει» προς τη νέα της θέση.

63 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.63 Σωρός ΙV Οι σωροί χρησιμοποιούνται σε πολλές εφαρμογές γιατί είναι μία πολύ καλή δομή για την ακαριαία εύρεση του μεγαλύτερου στοιχείου ενός συνόλου και την αφαίρεση, την εισαγωγή ή την ενημέρωση ενός κόμβου. Είναι η ιδανική δομή για την υλοποίηση λίστας δυναμικά καθοριζόμενων προτεραιοτήτων. Ο κόμβος που αντιπροσωπεύει το συμβάν με τη μεγαλύτερη προτεραιότητα βρίσκεται πάντα στην κορυφή, ενώ οι προτεραιότητες των συμβάντων μπορεί να μεταβάλλονται δυναμικά. Εκτός από τους σωρούς, όπως τους περιγράψαμε υπάρχουν και οι min-σωροί, που έχουν στην κορυφή τους την ελάχιστη και όχι τη μέγιστη τιμή.

64 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.64 Σωρός V shift-down (T[n],i) { //μετακινεί ένα κόμβο προς τα κάτω με αμοιβαίες ανταλλαγές τιμών, για να //αποκαταστήσει την ιδιότητα του σωρού - υποθέτουμε ότι 0  i  n-1 k=i do { j=k //βρες τη μεγαλύτερη τιμή απογόνου if (2j+1  n && T[2j+1] > T[k]) k=2j+1 if (2j+2 T[k]) k=2j+2 αντάλλαξε τα T[j] και Τ[k] } while (j != k) }

65 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.65 Σωρός VI percolate (T[n],i) { //διείσδυση //μετακινεί ένα κόμβο προς τα πάνω με αμοιβαίες ανταλλαγές τιμών, για να //αποκαταστήσει την ιδιότητα του σωρού - υποθέτουμε ότι 1  i  n-1 k=i do { j=k if (j>0 && T[(j-1) div 2] < T[k]) k=(j-1) div 2 αντάλλαξε τα T[j] και Τ[k] } while (j != k) } alter-heap(T[n], i, v) { //ο σωρός είναι ο T[n], στην τιμή T[i] αναθέτουμε την τιμή v και αποκαθιστούμε //την ιδιότητα του σωρού – υποθέτουμε ότι 1  i  n-1 x=T[i] T[i]=v if (v

66 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.66 Σωρός VII find-max (T[n]) { return T[0]} delete-max (T[n]) { //αφαιρεί από το σωρό το μεγαλύτερο στοιχείο του και αποκαθιστά τη //βασική ιδιότητα του σωρού T[n-1] T[0]=T[n] shift-down (T[n-1],0) } insert-max (T[n],v) { //εισάγει ένα νέο στοιχείο με τιμή v και αποκαθιστά τη βασική ιδιότητα //στο σωρό T[n+1] T[n]=v percolate (T[n+1], n) }

67 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.67 Σωρός VIII make-heap(T[n]) //μετασχηματίζει τον πίνακα T[n] σε σωρό for (i=0;i

68 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.68 Σωρός IX Μετασχηματίζουμε σε σωρό κάθε ένα από τα υποδένδρα με ρίζα στο επίπεδο 1.

69 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.69 Σωρός X Στη συνέχεια μετασχηματίζουμε σε σωρό τα υποδένδρα με ρίζα στο επόμενο υψηλότερο επίπεδο. Τελικά παίρνουμε: Η διαδικασία ολοκληρώνεται με τη μετακίνηση της ρίζας προς τα κάτω:

70 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.70 Σωρός XI Για εφαρμογές που η precolate χρησιμοποιείται πιο συχνά από την shift-down αξίζει να χρησιμοποιούμε περισσότερους από δύο απογόνους για κάθε εσωτερικό κόμβο. Και αυτού του είδους οι σωροί μπορούν να αναπαρασταθούν με πίνακα. Για εφαρμογές που τείνουν να μετακινούν τη ρίζα περίπου στο κάτω επίπεδο αξίζει τον κόπο να εφαρμόσουμε μία παραλλαγή του αλγορίθμου: αγνοούμε προσωρινά τη νέα τιμή που πρέπει να αποθηκευθεί στη ρίζα και κατεβάζουμε την (άδεια) ρίζα σε ένα φύλλο. Συμπληρώνουμε την κατάλληλη τιμή και εφαρμόζουμε precolate για να πάει στη σωστή της θέση. Υπάρχουν και άλλες παραλλαγές σωρών όπως ο σωρός Fibonacci.

71 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.71 Δομές διαζευγμένων συνόλων Ι Ή ΔΙΑΚΡΙΤΕΣ ΔΟΜΕΣ ΣΥΝΟΛΩΝ ΠΡΟΒΛΗΜΑ: Έστω ότι έχουμε N στον αριθμό αντικείμενα και θέλουμε να τα ομαδοποιήσουμε σε διακριτές δομές συνόλων. Τα στοιχεία του κάθε συνόλου θα φέρουν την ίδια επιγραφή, η οποία θα προέρχεται από κάποιο από τα αντικείμενα του συνόλου. Αρχικά έχουμε N διακριτά σύνολα και κάθε αντικείμενο ανήκει σε ένα μόνο σύνολο. Μας ενδιαφέρει η εκτέλεση δύο ειδών λειτουργιών: - για δοθέν αντικείμενο να βρεθεί το σύνολο που το περιέχει και να επιστραφεί η επιγραφή του -δοθέντων δύο επιγραφών να γίνει συγχώνευση των αντίστοιχων συνόλων

72 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.72 Δομές διαζευγμένων συνόλων ΙΙ Έστω ότι χρησιμοποιούμε ως επιγραφή το μικρότερο στοιχείο του κάθε συνόλου. Έτσι, τα στοιχεία του συνόλου {7,3,16,9} θα έχουν επιγραφή «3». Έστω ότι τα στοιχεία περιέχονται σε έναν πίνακα set[Ν]. Αρκεί η τιμή κάθε στοιχείου του πίνακα να δίνει την επιγραφή του συνόλου στο οποίο ανήκει. find1 (x) { //επιστρέφει την επιγραφή του συνόλου που ανήκει το στοιχείο στη θέση x return set[x] } merge1 (a,b) { //συνενώνει τα σύνολα με επιγραφές a και b i  a; j  b; if (i>j) αντάλλαξε i και j for (k=0; k

73 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.73 Δομές διαζευγμένων συνόλων ΙΙI Συνεχίζουμε να χρησιμοποιούμε πίνακα, αλλά τώρα κάθε σύνολο εκφράζεται από ένα αντεστραμμένο δένδρο. Άρα, αν set[i]=i, τότε το i είναι η ρίζα του αντίστοιχου δένδρου και η επιγραφή του συνόλου. Αν set[i]=j  i, τότε σε κάποιο δένδρο το j είναι πρόγονος του i. Σύνολα παραδείγματος: {0,4},{1,3,6,9} και {2,5,7,8}

74 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.74 Δομές διαζευγμένων συνόλων ΙV find2 (x) { //επιστρέφει την επιγραφή του συνόλου που ανήκει το στοιχείο στη θέση x i=x while (set[i]!=i) { i=set[i] } return i } merge2 (a,b) { //συνενώνει τα σύνολα με επιγραφές a και b if (a

75 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.75 Δομές διαζευγμένων συνόλων V Αν το N είναι συγκρίσιμο με το n, τότε δεν έχουμε μία περισσότερο αποδοτική υλοποίηση. Το πρόβλημα οφείλεται στο γεγονός ότι μετά από k κλήσεις της merge2 ενδεχομένως έχει σχηματισθεί δένδρο βάθους k και άρα μετά κάθε εκτέλεση της find2 έχει κόστος τάξης k. Άρα θα είχαμε έναν πιο αποδοτικό αλγόριθμο αν περιορίζαμε το ύψος του παραγόμενου δένδρου. ΛΥΣΗ: Αντί να χρησιμοποιούμε ως επιγραφή το μικρότερο στοιχείο του συνόλου, επιλέγουμε η συνένωση των δένδρων να γίνεται με διαφορετικό τρόπο. Πιο συγκεκριμένα αν πρόκειται να συνενωθούν δύο δένδρα ύψους h 1 και h 2 επιλέγουμε να κάνουμε υποδένδρο της ρίζας του άλλου, αυτό που έχει το μικρότερο ύψος. Έτσι το ύψος του νέου δένδρου γίνεται max(h 1, h 2 ) αν h 1  h 2 και h 1 +1 αν h 1 = h 2. Το ύψος των δένδρων διατηρείται στον πίνακα height[N], έτσι ώστε το στοιχείο height[i] δίνει το ύψος του στοιχείου i στο δένδρο που βρίσκεται.

76 ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ. Πληροφορικής, Α.Π.Θ.76 Δομές διαζευγμένων συνόλων VI Αν a είναι η επιγραφή ενός συνόλου, τότε η height[a] δίνει το ύψος του αντίστοιχου δένδρου. Το find2 εξακολουθεί να ισχύει. merge3 (a,b) { //συνενώνει τα σύνολα με επιγραφές a και b, υποθέτουμε a  b if (height[a]==height[b]) { height[a]= height[a]+1 set[b]=a } else { if (height[a]>height[b]) set[b]=a else set[a]=b } Μετά από μία σειρά λειτουργιών merge ένα δένδρο με k κόμβος θα έχει ύψος το πολύ  lg k . Στη χειρότερη περίπτωση, το κόστος εκτέλεσης n λειτουργιών find2 και merge3 ξεκινώντας από την αρχική κατάσταση είναι της τάξης nlogn.


Κατέβασμα ppt "ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τετάρτη, 20 Αυγούστου 2014Τμ."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google