Κεφάλαιο 2 Ανάλυση Αλγορίθμων

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Κεφάλαιο 2 Ανάλυση Αλγορίθμων"

Transcript

1 Κεφάλαιο Ανάλυση Αλγορίθμων Περιεχόμενα.1 Εισαγωγή Εμπειρική και Θεωρητική Ανάλυση Αλγορίθμων Εμπειρική Πολυπλοκότητα..... Θεωρητική Πολυπλοκότητα Ανάλυση Χειρότερης και Αναμενόμενης Περίπτωσης Ασυμπτωτική Πολυπλοκότητα Αναδρομικές Σχέσεις Ασκήσεις Βιβλιογραφία Εισαγωγή Όταν διατυπώνουμε ένα πρόγραμμα Η/Υ για την επίλυση ενός προβλήματος Π, στην πραγματικότητα διατυπώνουμε μια μέθοδο (method) η οποία είναι ανεξάρτητη από την γλώσσα προγραμματισμού που χρησιμοποιούμε και η συστηματική εκτέλεση των βημάτων της οποίας οδηγεί στη λύση του προβλήματος Π. Γενικά μιλώντας, μπορούμε να πούμε ότι η μέθοδος καθορίζει τα βήματα και τους κανόνες που πρέπει να ακολουθήσουμε για την επίλυση του προβλήματος Π. Ο όρος αλγόριθμος (algorithm) χρησιμοποιείται στην επιστήμη της πληροφορικής, για να περιγράψει γενικά απλά μια μέθοδο επίλυσης ενός προβλήματος Π, και πιο αναλυτικά, για να περιγράψει μια πεπερασμένη (finite), αιτιοκρατική (deterministic) και αποτελεσματική (affective) μέθοδο επίλυσης του προβλήματος Π κατάλληλη για υλοποίηση σε ένα πρόγραμμα Η/Υ. Μπορούμε να ορίσουμε έναν αλγόριθμο περιγράφοντας μια διαδικασία για την επίλυση ενός προβλήματος Π σε μια φυσική γλώσσα, ή γράφοντας ένα πρόγραμμα Η/Υ το οποίο υλοποιεί την διαδικασία. Είναι ενδιαφέρον να σημειώσουμε ότι οι αλγόριθμοι προϋπάρχουν των υπολογιστών, καθώς είναι γνωστό ότι έχουν διατυπωθεί αποτελεσματικοί αλγόριθμοι για πλήθος προβλημάτων εδώ και.300 χρόνια. Κλασσικό παράδειγμα ο αλγόριθμος του Ευκλείδη για υπολογισμό του μέγιστου κοινού διαιρέτη (greater common divisor or gcd) δύο ακέραιων αριθμών, τον οποίο συναντήσαμε στο πρώτο κεφάλαιο. Όπως είδαμε, ο αλγόριθμος βασίζεται στον κανόνα gcd(x, y) = gcd(y, x mod y), όπου x, y θετικοί ακέραιοι αριθμοί με x y. Στη συνέχεια, δίνουμε τον αλγόριθμο του Ευκλείδη σε γλώσσα προγραμματισμού Java και μια εκτέλεση αυτού με είσοδο 18 και 40. 0

2 int Euclid(int x, int y) { if y == 0 return x; return Euclid(y, x%y); } Euclid (18,40)= Euclid (40,8)= Euclid (8,0)= 8 Είναι, επίσης, ενδιαφέρον να σημειώσουμε ότι για κάποιο πρόβλημα ίσως να υπάρχουν περισσότεροι του ενός αλγόριθμοι που το επιλύουν. Για παράδειγμα, είναι σε όλους μας γνωστός ο κλασσικός αλγόριθμος πολλαπλασιασμού δύο ακεραίων αριθμών. Σε λιγότερους, όμως, είναι γνωστός ο αλγόριθμος πολλαπλασιασμού a la russe. Στο παρακάτω παράδειγμα δείχνουμε τον πολλαπλασιασμό των ακεραίων 19 και 45 με τον αλγόριθμο a la russe. Ο αλγόριθμος είναι απλός και, για τους ακεραίους 19 και 45 του παραδείγματος, περιγράφεται ως εξής: (1) Επαναληπτικά, διαιρούμε τον 19 (μικρότερο) με το παίρνοντας το ακέραιο μέρος και πολλαπλασιάζουμε τον 45 (μεγαλύτερο ) επί. () Παίρνουμε από τη στήλη του 45 (μεγαλύτερου) τους ακεραίους των οποίων ο αντίστοιχος ακέραιος στην στήλη του 19 (μικρότερου) είναι περιττός. (3) Προσθέτουμε τους ακεραίους που επιλέξαμε στο βήμα () και επιστρέφουμε το αποτέλεσμα της πρόσθεσης. Έχοντας μια πρώτη προσέγγιση της έννοιας του αλγόριθμου και έχοντας δώσει έως τώρα μερικά παραδείγματα απλών αλγορίθμων, θα μπορούσαμε με βεβαιότητα να ισχυριστούμε ότι για κάθε (επιλύσιμο) πρόβλημα Π υπάρχει ένα σύνολο αλγορίθμων {Α 1, Α, Α κ } που το επιλύουν, k 1. Με άλλα λόγια, για το πρόβλημα Π υπάρχει αλγόριθμος Α i, 1 i k, τέτοιος ώστε για κάθε είσοδο Ι του Π ο αλγόριθμος Α i δίδει σωστό αποτέλεσμα. Έχοντας αυτό ως δεδομένο, ας έρθουμε να κάνουμε την παρακάτω βασική παρατήρηση όσον αφορά την αλγοριθμική επίλυση ενός προβλήματος μέσω ενός Η/Υ. Ας υποθέσουμε ότι διαθέτουμε έναν αλγόριθμο ταξινόμησης Α 1 ο οποίος ταξινομεί στοιχεία σε 30 sec σε ένα Η/Υ μεσαίου μεγέθους. Έχει παρατηρηθεί ότι, εάν χρησιμοποιήσουμε έναν άλλο αλγόριθμο ταξινόμησης Α για το ίδιο πρόβλημα (ταξινόμηση των στοιχείων), είναι πολύ πιθανό ο χρόνος επίλυσης του προβλήματος να αυξηθεί απίστευτα, έστω και αν αυτή τη φορά ο Η/Υ που χρησιμοποιούμε είναι χίλιες φορές γρηγορότερος από τον προηγούμενο. Επομένως, είναι φυσικό να δημιουργούνται ερωτήματα, όπως: 1

3 Είναι ο αλγόριθμος Α αποτελεσματικότερος του αλγόριθμου Β; Με άλλα λόγια, επιλύει ο αλγόριθμος Α το πρόβλημα Π σε λιγότερο χρόνο από τον αλγόριθμο Β; Πόσο θα αυξηθεί ο χρόνος εκτέλεσης του αλγόριθμου Α ή, ισοδύναμα, ο χρόνος επίλυσης του προβλήματος Π, εάν διπλασιάσουμε τα δεδομένα εισόδου του Π; Μπορώ να χρησιμοποιήσω τον αλγόριθμο Α, όταν τα δεδομένα εισόδου του προβλήματος Π, που επιλύει ο αλγόριθμος Α, είναι πολύ μεγάλα; Υπάρχει αλγόριθμος (ή, μπορώ να σχεδιάσω έναν) ο οποίος επιλύει το πρόβλημα Π σε δεδομένο χρόνο t; Κλείνουμε την μικρή αυτή εισαγωγή του Κεφαλαίου λέγοντας ότι δεν αποτελεί υπερβολή να ισχυριστεί κάποιος ότι οι αλγόριθμοι αποτελούν θεμελιώδες, κεντρικό και ίσως το πιο σημαντικό πεδίο μελέτης στην επιστήμη της πληροφορικής.. Εμπειρική και Θεωρητική Ανάλυση Αλγορίθμων Κατά το σχεδιασμό ενός αλγορίθμου θα πρέπει να λαμβάνονται υπόψη, και να ενσωματώνονται σε αυτόν, όλες εκείνες οι παράμετροι που καθιστούν τον αλγόριθμο αποδοτικό ή αποτελεσματικό (efficient). Οι κύριες παράμετροι απόδοσης ενός αλγόριθμου είναι οι εξής: Χρόνος εκτέλεσης, Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα), Βαθμός δυσκολίας υλοποίησης. Ένας αλγόριθμος θα λέγεται αποδοτικός ή αποτελεσματικός, εάν ελαχιστοποιεί τις παραπάνω παραμέτρους. Θα εστιάσουμε κυρίως στην παράμετρο που αφορά το χρόνο εκτέλεσης ενός αλγόριθμου, χωρίς, ωστόσο, οι παράμετροι της απόδοσης που αφορούν την απαιτούμενη μνήμη, την επικοινωνία ή το βαθμό δυσκολίας της υλοποίησης του να αποτελούν δευτερεύοντα κριτήρια, τουλάχιστον σε ένα υπολογιστικό σύστημα. Ένας αλγόριθμος με μικρό χρόνο εκτέλεσης θα λέμε ότι έχει μικρή πολυπλοκότητα χρόνου, ενώ αντίθετα ένας με μεγάλο χρόνο εκτέλεσης θα λέμε ότι έχει μεγάλη πολυπλοκότητα. Διαθέτοντας ένα σύνολο αλγορίθμων {Α 1, Α, Α κ }, k, που επιλύουν το ίδιο πρόβλημα Π, το ερώτημα που καλούμαστε να απαντήσουμε είναι πώς θα αποφασίσουμε ποιος από όλους τους k αλγόριθμους είναι ο πιο αποτελεσματικός, δηλαδή ποιος αλγόριθμος έχει τη μικρότερη πολυπλοκότητα. Στο παραπάνω ερώτημα υπάρχουν δύο προσεγγίσεις: Εμπειρική Προσέγγιση (posteriori) Θεωρητική Προσέγγιση (priori)..1 Εμπειρική Πολυπλοκότητα Η εμπειρική πολυπλοκότητα ενός αλγόριθμου υπολογίζεται μετρώντας το χρόνο εκτέλεσης του αλγόριθμου σε συγκεκριμένη μηχανή. Πιο συγκεκριμένα, για τον υπολογισμό της εμπειρικής πολυπλοκότητας ενός αλγόριθμου εκείνο που κάνουμε είναι:

4 κωδικοποιούμε τον αλγόριθμο σε μια γλώσσα προγραμματισμού, εκτελούμε αυτόν σε ένα Η/Υ με πολλά και διάφορα μεγέθη εισόδων και μετρούμε το χρόνο εκτέλεσης του (χρόνος μηχανής) στο συγκεκριμένο Η/Υ. Το χρόνο εκτέλεσης ενός αλγόριθμου θα μπορούσε να μετρηθεί χρησιμοποιώντας το παρακάτω κώδικα Java: public static void main() { long starttime = System.currentTimeMillis();... //run algorithm long endtime = System.currentTimeMillis(); long totaltime = endtime - starttime; } Στον παρακάτω πίνακα δίδουμε τους χρόνους εκτέλεσης σε δευτερόλεπτα για διάφορες δομές χειρισμού ξένων συνόλων (βλέπε Κεφάλαιο 9) με είσοδο τυχαίο αρχείο με n στοιχεία και m ενώσεις συνόλων. όπου, UF = βασική δομή γρήγορης ένωσης, UFW = δομή γρήγορης ένωσης με στάθμιση και UFWP = δομή γρήγορης ένωσης με στάθμιση και συμπίεση διαδρομής... Θεωρητική Πολυπλοκότητα Αντίθετα, η θεωρητική πολυπλοκότητα καθορίζει μαθηματικά το χρόνο (και άλλες παραμέτρους) που απαιτεί ο αλγόριθμος, συναρτήσει του μεγέθους των εξεταζόμενων εισόδων του. Το πλεονέκτημα της θεωρητικής προσέγγισης για τον υπολογισμό της αποτελεσματικότητας ενός αλγόριθμου είναι ότι: δεν εξαρτάται από τον Η/Υ, δεν εξαρτάται από την γλώσσα προγραμματισμού, δεν εξαρτάται από τις ικανότητες του προγραμματιστή. Το ερώτημα είναι ποια μονάδα θα χρησιμοποιήσουμε, για να εκφράσουμε θεωρητικά την αποτελεσματικότητα (πολυπλοκότητα χρόνου) ενός αλγόριθμου. Για παράδειγμα, θα την εκφράσουμε σε sec; θα την εκφράσουμε σε κύκλους μηχανής; θα την εκφράσουμε σε βήματα; Αρχή της Σταθερότητας. Η απάντηση στο παραπάνω ερώτημα δίδεται από την αρχή της σταθερότητας (principle of invariance), που διατυπώνεται ως εξής: 3

5 Δύο διαφορετικές εφαρμογές (implementations) του ίδιου αλγόριθμου, δηλαδή, όταν εκτελούνται σε διαφορετικές μηχανές, όταν γράφονται σε διαφορετικές γλώσσες προγραμματισμού, όταν κωδικοποιούνται από διαφορετικούς προγραμματιστές, κλπ, δεν διαφέρουν στην αποτελεσματικότητά τους περισσότερο από ένα σταθερό πολλαπλάσιο. Αυτό σημαίνει ότι, εάν Ε 1 είναι η αποτελεσματικότητα μιας εφαρμογής του αλγόριθμου και Ε η αποτελεσματικότητα μιας άλλης εφαρμογής του ίδιου αλγόριθμου, τότε ισχύει όπου c μια σταθερά. Ε 1 = c Ε Από την αρχή της σταθερότητας, εστιάζοντας στη χρονική αποτελεσματικότητα (πολυπλοκότητα χρόνου) ενός αλγόριθμου Α, έχουμε ότι, εάν T 1 (n) και T (n) είναι οι χρόνοι εκτέλεσης δύο διαφορετικών εφαρμογών του αλγόριθμου Α, όπου n είναι το μέγεθος της εισόδου, τότε υπάρχει πάντα σταθερά c, τέτοια ώστε T 1 (n) = c T (n), με n πολύ μεγάλο. Οφείλουμε να επισημάνουμε για μία ακόμα φορά ότι η παραπάνω αρχή ισχύει ανεξάρτητα από τον Η/Υ, τη γλώσσα προγραμματισμού και τις ικανότητες του προγραμματιστή. Βασικές Πράξεις. Βασική πράξη (elementary operation) ονομάζεται η πράξη της οποίας ο χρόνος εκτέλεσης φράσσεται άνω από μία σταθερά η οποία εξαρτάται μόνο από την χρησιμοποιούμενη εφαρμογή (H/Y, γλώσσα προγραμματισμού, ικανότητα προγραμματιστή, κλπ). Επειδή ορίζουμε το χρόνο εκτέλεσης ενός αλγόριθμου με την έννοια του «σταθερού πολλαπλασίου», για την ανάλυση της πολυπλοκότητας χρόνου του αλγόριθμου (ή, ισοδύναμα, υπολογισμό χρόνου εκτέλεσης του αλγόριθμου) θα χρειαστούμε μόνο τον αριθμό των βασικών πράξεων που εκτελούνται από αυτόν και όχι τον ακριβή χρόνο που απαιτούν κάθε μία από αυτές τις πράξεις. Είναι προφανές ότι το πλήθος των βασικών πράξεων ενός αλγόριθμου εξαρτάται άμεσα από το μέγεθος της εισόδου του. Παράδειγμα: Ο υπολογισμός του εσωτερικού γινομένου δίδεται από τον παρακάτω τύπο (αλγόριθμο) και πρόγραμμα. z = 0; for (i=0; i<n; i++) { t = x[i]*y[i]; z = z+t; } Είναι πολύ εύκολο να υπολογίσουμε τον χρόνο εκτέλεσης Τ(n) του αλγόριθμου υπολογισμού του εσωτερικού γινομένου, μετρώντας το πλήθος των βασικών πράξεων του αντίστοιχου προγράμματος. Παίρνοντας για βασική πράξη την ανάθεση τιμής σε μεταβλητή (assignment), έχουμε: όπου, T(n) = 1 + n + n + n η εντολή ανάθεσης z = 0 εκτελείται 1 φορά, i = 0 εκτελείται n φορές, t = x[i] y[i] εκτελείται n φορές, καθώς και η εντολή z = z + t εκτελείται n φορές. Εάν c 1, c, c 3 και c 4 είναι ο χρόνος εκτέλεσης των παραπάνω τεσσάρων εντολών ανάθεσης σε μια μηχανή, τότε η πολυπλοκότητα χρόνου του αλγόριθμου είναι: T(n) = c 1 + c n + c 3 n + c 4 n 4

6 Η παραπάνω σχέση γράφεται όπου, c 0 = c + c 3 + c 4. T(n) = c 1 + c 0 n Θα εκφράσουμε τη θεωρητική αποτελεσματικότητα (πολυπλοκότητα χρόνου) με τη χρήση σταθερών πολλαπλασίων. Θα λέμε ότι: Ένας αλγόριθμος εκτελείται σε χρόνο Τ(n) ή ο αλγόριθμος απαιτεί χρόνο Τ(n), εάν υπάρχει θετική σταθερά c και μια εφαρμογή του αλγόριθμου, τέτοια ώστε για κάθε είσοδο μήκους n ο χρόνος εκτέλεσης του αλγόριθμου να φράσσεται άνω από ct(n), όπου n είναι το μέγεθος της εισόδου του αλγόριθμου. Αργότερα θα δούμε ότι η παραπάνω έκφραση αποτελεί τον ασυμπτωτικό συμβολισμό (asymptotic notation) της πολυπλοκότητας των αλγορίθμων..3 Ανάλυση Χειρότερης και Αναμενόμενης Περίπτωσης Είδαμε ότι το πλήθος των βασικών πράξεων ενός αλγόριθμου και, επομένως, ο χρόνος εκτέλεσης T(n) αυτού, εξαρτάται άμεσα από το μέγεθος της εισόδου του και, επίσης, ότι ο χρόνος εκτέλεσης μιας βασικής πράξης φράσσεται άνω από μία σταθερά η οποία εξαρτάται μόνο από την εφαρμογή. Εκφράζουμε, λοιπόν, την πολυπλοκότητα χρόνου T(n) ενός αλγόριθμου ως συνάρτηση του μεγέθους της εισόδου του, δηλαδή όπου Ι το μέγεθος της εισόδου. T(n) = f( Ι ), Αναλύοντας την πολυπλοκότητα χρόνου ενός αλγόριθμου, διακρίνουμε τις παρακάτω δύο περιπτώσεις: Ανάλυση Χειρότερης Περίπτωσης (worst-case analysis) Ανάλυση Αναμενόμενης Περίπτωσης (average-case analysis) Γενικά, η ανάλυση αναμενόμενης (ή μέσης) περίπτωσης απαιτεί γνώση της κατανομής της εισόδου. Όταν η κατανομή δεν είναι γνωστή (κάτι που συμβαίνει συχνά!), συνήθως υποθέτουμε ομοιόμορφη κατανομή. Αντίθετα, η ανάλυση χειρότερης (ή χειρίστης) περίπτωσης δεν απαιτεί καμία γνώση για την κατανομή της εισόδου και ισχύει για κάθε είσοδο. Χειρότερη περίπτωση. Έστω D n είναι το σύνολο όλων των εισόδων μεγέθους n. Για κάθε είσοδο Ι D n, ας είναι t(i) το πλήθος των βασικών πράξεων που εκτελεί ο αλγόριθμος με είσοδο Ι, δηλαδή t(i) : D n N Ορίζουμε την πολυπλοκότητα χρόνου T(n) χειρίστης-περίπτωσης (worst-case complexity) του αλγόριθμου, συνήθως τη συμβολίζουμε W(n), ως εξής: W(n) = max{t(i) Ι D n } Αναμενόμενη περίπτωση. Έστω ότι μπορούμε να αντιστοιχίσουμε μια πιθανότητα p(i) σε κάθε είσοδο Ι D n, έτσι ώστε p(i) να μας δίνει την πιθανότητα εμφάνισης της εισόδου Ι. Ορίζουμε την πολυπλοκότητα χρόνου T(n) μέσης-περίπτωσης (average-case complexity) του αλγόριθμου, συνήθως τη συμβολίζουμε Α(n), ως εξής: 5

7 Α(n) = p(i) t(i) Ι D n Στη συνέχεια θα μελετήσουμε ένα απλό πρόβλημα, αυτό της γραμμικής διερεύνησης (linear search), θα δώσουμε τον αντίστοιχο αλγόριθμο (σε γλώσσα προγραμματισμού Java) και θα δείξουμε τον υπολογισμό της πολυπλοκότητάς του στη χειρότερη και στην αναμενόμενη περίπτωση. Πρόβλημα Γραμμικής Διερεύνησης. Δοθείσης μιας ακολουθίας στοιχείων S μήκους n και ενός στοιχείου x, να ελεγχθεί εάν το δοθέν στοιχείο x ανήκει ή όχι στην ακολουθία S. Εάν ανήκει, θέλουμε τη θέση του στην S, άλλως σχετικό μήνυμα ότι το στοιχείο δεν ανήκει στην S. Ο αλγόριθμος της γραμμικής διερεύνησης διατυπωμένος σε γλώσσα προγραμματισμού Java είναι ο ακόλουθος: public static int Linear_Search(int S[], int x){ int i=1; while (i<= S.length && S[i]!=x){ i=i+1; } if (i > S.length) i=0; return i; } Θα πάρουμε για βασικές πράξεις τις συγκρίσεις i n (i <= S. length)και S(i) x (S[i]!=x) της εντολής while (αρκεί να πάρουμε μία από αυτές). Ανάλυση χειρότερης περίπτωσης. Είναι προφανές ότι o αλγόριθμος εκτελεί το μέγιστο πλήθος συγκρίσεων, εάν το δοθέν στοιχείο x δεν ανήκει στην ακολουθία S. Τότε πολύ εύκολα μπορεί να δει κάποιος ότι το πλήθος των συγκρίσεων είναι n + 1 (εάν το στοιχείο x βρίσκεται στην τελευταία θέση της ακολουθίας S, τότε οι συγυρίσεις είναι n). Επομένως, W(n) = n + 1. Ανάλυση αναμενόμενης περίπτωσης. Ας έρθουμε τώρα να υπολογίσουμε την πολυπλοκότητα του αλγόριθμου στην αναμενόμενη περίπτωση. Αρχικά, υποθέτουμε ότι ισχύουν τα κάτωθι: όλα τα στοιχεία είναι διαφορετικά μεταξύ τους, το στοιχείο x της αναζήτησης υπάρχει στην ακολουθία S, δηλαδή x S, όλες οι θέσεις του στοιχείου x στην S έχουν την ίδια πιθανότητα εμφάνισης. Έστω Ι i είναι η είσοδος για την οποία ισχύει x = S[i], 1 i n. Τότε Επομένως, n Α(n) = p(ι i )t(ι i ) i=1 t(ι i ) = i n = 1 n i = 1 n i = 1 n i=1 n i=1 n(n + 1) = n + 1 6

8 Ας έρθουμε τώρα να άρουμε την υπόθεση ότι το στοιχείο αναζήτησης x υπάρχει στην ακολουθία S. Σε αυτή την περίπτωση θα συμβολίσουμε με Ι e κάθε είσοδο μήκους η οποία δεν περιέχει το στοιχείο x, δηλαδή x S[i] για κάθε i, 1 i n. Προφανώς τότε ισχύει t(ι e ) = n + 1 Έστω q είναι η πιθανότητα το ζητούμενο στοιχείο x να βρίσκεται στην ακολουθία S. Τότε ισχύει Επομένως, n Α(n) = p(ι i ) t(ι i ) i=1 n t(ι i ) = q (1/n) και t(ι e ) = 1 q + p(ι e ) t(ι e ) = q n i + (1 q) n = q n i + (1 q) n = q n i=1 n i=1 n (n + 1) + (1 q) n q (n + 1) = + (1 q) n Εάν q = 1 (το στοιχείο x βρίσκεται στην S), τότε έχουμε Α(n) = n + 1 Όπως υπολογίσαμε, εάν q = 1/ (το στοιχείο x βρίσκεται στην S με πιθανότητα 0.5), τότε Α(n) = n n 4 = 3n Επομένως, σε αυτή την περίπτωση (δηλ., το στοιχείο x να βρίσκεται στην S με πιθανότητα 0.5) πρέπει να διερευνηθεί κατά μέσο όρο περίπου 3/4 της ακολουθίας S. Αντισταθμιστική Πολυπλοκότητα. Αρκετά συχνά, όταν ένας αλγόριθμος ή μία δομή δεδομένων εκτελεί μια ακολουθία από πράξεις, κάθε πράξη μπορεί να έχει διαφορετικό κόστος ανάλογα με την στιγμή που εκτελείται. Ας υποθέσουμε, για παράδειγμα, ότι μια δομή δεδομένων αποθηκεύει n στοιχεία και εκτελεί μια ακολουθία από n πράξεις σε συνολικό χρόνο Τ(n). Μπορεί το κόστος μίας πράξης στη χειρότερη περίπτωση, έστω t w (n), να είναι πολύ μεγάλο, αλλά το μέσο κόστος ανά πράξη t a (n) = T(n)/n να είναι αρκετά μικρότερο σε οποιαδήποτε ακολουθία πράξεων. Δηλαδή, μπορεί να ισχύει t a (n) t w (n) ανεξάρτητα από την ακολουθία πράξεων που εκτελούμε. Ορίζουμε τον αντισταθμιστικό χρόνο εκτέλεσης t a (n) μιας πράξης ως το μέσο κόστος εκτέλεσης της πράξης όταν εκτελούμε μία ακολουθία χειρότερης περίπτωσης. (Προσέξτε ότι, σε αντίθεση με την αναμενόμενη περίπτωση, εδώ δεν υπολογίζουμε το μέσο όρο για κάθε δυνατή ακολουθία εισόδου.) Η σημασία του αντισταθμιστικού χρόνου είναι ότι γνωρίζουμε πως οποιαδήποτε ακολουθία n πράξεων θα εκτελεστεί το πολύ σε n t a (n) χρόνο, το οποίο μπορεί να δίνει ένα καλύτερο (μικρότερο) άνω φράγμα από το n t w (n). Θα μελετήσουμε την αντισταθμιστική πολυπλοκότητα αναλυτικά στο Κεφάλαιο 13. 7

9 .4 Ασυμπτωτική Πολυπλοκότητα Έως τώρα, αυτό που είδαμε είναι ο υπολογισμός του πλήθους των Βασικών Πράξεων ενός αλγόριθμου και η ανάλυση της χειρότερης περίπτωσης W(n) και αναμενόμενης περίπτωσης Α(n) της πολυπλοκότητας χρόνου αυτού. Ένα εύλογο ερώτημα που τίθεται είναι το εξής: Μήπως με αυτή την προσέγγιση της πολυπλοκότητας υπεισέρχονται στον υπολογισμό μας και παράγοντες οι οποίοι δεν μας διευκολύνουν να εκτιμήσουμε την αποτελεσματικότητα ενός αλγόριθμου; Επόμενο εύλογο ερώτημα που αμέσως τίθεται: Είναι οι παράγοντες αυτοί τόσο σημαντικοί, ώστε να μην μπορούν να αγνοηθούν; Ας αναφερθούμε στο πρώτο ερώτημα. Έστω ότι έχουμε δύο αλγορίθμους Α και Β με τις ακόλουθες πολυπλοκότητες χειρότερης περίπτωσης W A (n) και W B (n), αντίστοιχα: W A (n) = n 4 και W B (n) = 10n Εύκολα μπορεί κάποιος να δει ότι ισχύει n 4 < 10n για n < 40 Τότε, ο αλγόριθμος Α είναι αποτελεσματικότερος του αλγορίθμου Β. Όμως, χωρίς δυσκολία, παρατηρούμε ότι για μεγάλες τιμές του n (μέγεθος εισόδου), στο παράδειγμά μας για n 40, ο αλγόριθμος Β είναι πολύ πιο αποτελεσματικός από τον αλγόριθμο Α. Από το παραπάνω παράδειγμα γίνεται σαφές ότι χρειαζόμαστε ένα τρόπο να εξασφαλίσουμε μερικές κατηγορίες συναρτήσεων οι οποίες εξαλείφουν μη-σημαντικούς παράγοντες, όπως σταθερές, μικρού μεγέθους εισόδους, κλπ. Ακολούθως θα ορίσουμε τρεις τέτοιες κατηγορίες συναρτήσεων, οι οποίες στη συνέχεια θα χρησιμοποιηθούν για τον ορισμό της συμπωτικής πολυπλοκότητας και των συμβολισμών Ο, Ω και Θ. Συμβολισμός O (ασυμτωτικό άνω φράγμα) Έστω η συνάρτηση g: N R. Ορίζουμε Ο(g(n)) = {f: N R ( c R + )( n 0 N)( n n 0 )[f(n) cg(n)]} να είναι το σύνολο όλων των συναρτήσεων f: N R οι οποίες φράσσονται άνω από την g(n), για κάθε n n 0. Το σύνολο Ο(g(n)) θα ονομάζεται τάξη (order) της g(n). Θα λέμε ότι η συνάρτηση f(n) είναι τάξης g(n), εάν f(n) Ο(g(n)) ή, ισοδύναμα, f(n) = Ο(g(n)). 8

10 Μια εναλλακτική τεχνική, για να δείξουμε ότι η συνάρτηση f(n) ανήκει στο O(g(n)), δηλαδή, είναι η ακόλουθη: Για τις συναρτήσεις f(n) και g(n) ισχύει f(n) = Ο(g(n)), εάν f(n) lim g(n) = c < n για κάποια σταθερά c, συμπεριλαμβανομένης της περίπτωσης όπου c = 0. Παραδείγματα: (α) (β) επειδή επειδή Συμβολισμός Ω (ασυμτωτικό άνω φράγμα) Έστω g: N R μια συνάρτηση. Ορίζουμε Ω(g(n)) = {f: N R ( c R + )( n 0 N)( n n 0 )[f(n) cg(n)]} να είναι το σύνολο όλων των συναρτήσεων f: N R οι οποίες φράσσονται κάτω από την g(n), για κάθε n n 0. Το σύνολο Ω(g(n)) θα ονομάζεται ωμέγα (omega) της g(n). Θα λέμε ότι η συνάρτηση f(n) ανήκει στο ωμέγα της g(n), εάν f(n) Ω(g(n)) ή, ισοδύναμα, f(n) = Ω(g(n)). 9

11 Μια εναλλακτική τεχνική, για να δείξουμε ότι η συνάρτηση f(n) ανήκει στο Ω(g(n)), δηλαδή, f(n) = Ω(g(n)), είναι η ακόλουθη: Για τις συναρτήσεις f(n) και g(n) ισχύει f(n) = Ω(g(n)), εάν f(n) lim g(n) = c > 0 n για κάποια σταθερά c, συμπεριλαμβανομένης της περίπτωσης όπου c =. Παραδείγματα: (α) (β) επειδή επειδή Συμβολισμός Θ (ασυμτωτικά αυστηρό φράγμα) Έστω g: N R μια συνάρτηση. Ορίζουμε Θ(g(n)) = {f: N R ( c 1, c R + )( n 0 N)( n n 0 )[c 1 g(n) f(n) c g(n)]} να είναι το σύνολο όλων των συναρτήσεων f: N R οι οποίες φράσσονται άνω και κάτω από την g(n), για κάθε n n 0. Ισοδύναμος ορισμός: Ορίζουμε Θ(g(n)) = Ο(g(n)) Ω(g(n)) και ονομάζουμε το σύνολο Θ(g(n)) ακριβή τάξη της g(n) (exact order of g(n)). 30

12 Μια εναλλακτική τεχνική, για να δείξουμε ότι η συνάρτηση f(n) ανήκει στο Θ(g(n)), δηλαδή, f(n) = Θ(g(n)), είναι η ακόλουθη: Για τις συναρτήσεις f(n) και g(n) ισχύει f(n) = Θ(g(n)), εάν f(n) lim g(n) = c n για κάποια σταθερά c, τέτοια ώστε 0 < c <. Παράδειγμα: Έστω ότι θέλουμε να δείξουμε ότι f(n) = 1 n 3n = Θ(n ). Αρκεί να βρούμε θετικές σταθερές c 1, c και n 0, τέτοιες ώστε να ισχύει: c 1 n 1 n 3n c n για κάθε n n 0 (1) Θέλουμε c 1/ 3/n, που ισχύει όταν c 1/ και n 1. Επίσης θέλουμε 0 < c 1 1/ 3. Έχουμε 1/ 3/n > 0, και επομένως n > 6. Επιλέγοντας n = 7, έχουμε 1/ 3/n = 1/ 3/7 = 1/14. Άρα, για n 0 = 7, c 1 = 1/14 και c = 1/, η συνθήκη (1) ικανοποιείται, και επομένως f(n) = 1 n 3n = Θ(n ). Προσοχή! Ακόμα και δύο γνησίως αύξουσες συναρτήσεις μπορεί να έχουν πολλά σημεία τομής (βλέπε Σχήμα 4.1(α) για τις συναρτήσεις f(n) = nlogn και g(n) = 10lnn. Επίσης, δεν είναι όλες οι συναρτήσεις ασυμπτωτικά συγκρίσιμες (βλέπε Σχήμα 4.1(β) για τις συναρτήσεις f(n) = n 1+sinn και g(n) = n). (α) (β) 31

13 Εικόνα 4.1. Ιδιότητες Μεταβατικότητα: f(n) = Θ(g(n)) και g(n) = Θ(h(n)) f(n) = Θ(h(n)) Αυτοπάθεια: f(n) = Θ(f(n)) Συμμετρία: f(n) = Θ(g(n)) g(n) = Θ(f(n)) Οι ιδιότητες της μεταβατικότητα και της αυτοπάθεια ισχύουν και για τους συμβολισμούς O και Ω, όπου στη θέση της συμμετρίας έχουμε: f(n) = O(g(n)) g(n) = Ω(f(n)) f(n) = Θ(g(n)) f(n) = O(g(n)) και g(n) = O(f(n)) Κλάσεις Πολυπλοκότητας Λογαριθμικοί Αλγόριθμοι. Ένας αλγόριθμος θα λέγεται λογαριθμικός, εάν έχει χρόνο εκτέλεσης T(n) = O(log k n), όπου k είναι μια θετική σταθερά. Γραμμικοί Αλγόριθμοι. Ένας αλγόριθμος λέγεται γραμμικός, εάν έχει χρόνο εκτέλεσης T(n) = O(n), όπου n είναι το μέγεθος της εισόδου του αλγόριθμου. Πολυωνυμικοί Αλγόριθμοι. Ένας αλγόριθμος λέγεται πολυωνυμικός, εάν έχει χρόνο εκτέλεσης T(n) = O(n k ), όπου k είναι μια θετική σταθερά. Εκθετικοί Αλγόριθμοι. Ένας αλγόριθμος λέγεται εκθετικός, εάν έχει χρόνο εκτέλεσης T(n) = O(c n ), όπου c > 1. Είναι αναγκαίο να αναφέρουμε ότι η Κλάση Πολυπλοκότητας P (Polynomial) περιλαμβάνει τα προβλήματα που επιδέχονται λύση σε πολυωνυμικό χρόνο (δηλ. υπάρχουν πολυωνυμικοί αλγόριθμοι που τα επιλύουν). Πρακτικές πολυπλοκότητες Στον παρακάτω πίνακα δείχνουμε το ρυθμό αύξησης διαφόρων τύπων συναρτήσεων για μικρές τιμές του n = 1,, 4, 8 και 16. Παρατηρούμε ότι η συνάρτηση n! είναι «απαγορευτική», για να εκφράσει την πολυπλοκότητα ενός αλγόριθμου. Για καλύτερη κατανόηση του ρυθμού αύξησης των παραπάνω συναρτήσεων παραθέτουμε στη συνέχεια, πίνακα που δείχνει το ρυθμό αύξησης για λίγο μεγαλύτερες τιμές του n =, 8, 3 και 64. 3

14 Στον πίνακα αυτόν η τιμή της συνάρτησης εκφράζει το χρόνο εκτέλεσης ενός αλγόριθμου. Εδώ γίνεται εμφανές ότι ένας αλγόριθμος εκθετικής πολυπλοκότητας, για παράδειγμα Ο(n!), είναι «απαγορευτικός» για πρακτικές εφαρμογές, καθώς ο χρόνος για την επίλυση ενός προβλήματος μεγέθους n = 64 είναι μεγαλύτερος από αιώνες. Χρήσιμες συναρτήσεις στην ανάλυση αλγορίθμων Κλείνουμε την παράγραφο παραθέτοντας (χωρίς απόδειξη) μερικές χρήσιμες συναρτήσεις που συχνά εμφανίζονται στην ανάλυση των αλγορίθμων. (α) ( N k ) = N! (N k)! k! Διωνυμικοί συντελεστές ( N k ) Nk k! για μικρή σταθερά k (β) lg N! = lg 1 + lg + lg lg N N lg N Προσέγγιση Stirling (γ) n = n 1 Γεωμετρικό άθροισμα.5 Αναδρομικές Σχέσεις Πολύ συχνά ο χρόνος εκτέλεσης ενός αλγόριθμου μπορεί να εκφραστεί μέσω κάποιας αναδρομικής σχέσης. Αναφέρουμε απλώς, χωρίς να επεκταθούμε στο σημείο αυτό, ότι υπάρχουν πολλές τεχνικές για την επίλυση μιας αναδρομικής σχέσης, όπως 33

15 Επαναληπτική Αντικατάσταση Χρήση της Χαρακτηριστικής Εξίσωσης Γενική Μέθοδος (Master Method) Για τις ανάγκες του συγγράμματος θα περιοριστούμε στην τεχνική της επαναληπτικής αντικατάστασης, την οποία θα δείξουμε με την επίλυση επιλεγμένων παραδειγμάτων. Παράδειγμα 1: Έστω ότι μας δίνεται μία ακολουθία Α = (a 1, a,, a n ) από n ακέραιους, ταξινομημένη κατ αύξουσα τάξη, δηλαδή a 1 a a n, και ένας ακέραιος b. Θέλουμε να βρούμε έναν ακέραιο a i Α τέτοιο ώστε a i = b. Χρησιμοποιούμε δυαδική αναζήτηση, που σε κάθε βήμα είτε βρίσκει το b είτε αποκλείει τα μισά σχεδόν στοιχεία της ακολουθίας Α που απομένουν. Για παράδειγμα, έστω η παρακάτω ακολουθία n = 15 στοιχείων και έστω ότι αναζητούμε το στοιχείο b = 111. Βρίσκουμε το μέσο της ακολουθίας Α, που στο παράδειγμά μας είναι στη θέση 15+1 = 8 και είναι το στοιχείο a 8 = 56, και παρατηρούμε a 8 = 56 < 111 = b. Επομένως, διαγράφουμε τα στοιχεία a 1, a,, a 8 της ακολουθίας Α. Στη συνέχεια, βρίσκουμε το μέσο της ακολουθίας Α = (a 9, a 10,, a 15 ), που στο παράδειγμά μας είναι στη θέση 9+15 = 1 και είναι το στοιχείο a 1 = 18, και παρατηρούμε a 1 = 18 > 111 = b. Επομένως, διαγράφουμε τα στοιχεία a 1, a 13,, a 15 της ακολουθίας Α. Συνεχίζοντας βρίσκουμε το μέσο της ακολουθίας Α = (a 9, a 10, a 11 ), που στο παράδειγμά μας είναι στη θέση 9+11 = 10 και είναι το στοιχείο a 10 = 90, και παρατηρούμε a 10 = 90 < 111 = b. Επομένως, διαγράφουμε τα στοιχεία a 9, a 10 της ακολουθίας Α. θέση στοιχείο Τέλος, βρίσκουμε το μέσο της ακολουθίας Α = (a 11 ), που στο παράδειγμά μας είναι στη θέση = 11 και είναι το στοιχείο a 11 = 10, και παρατηρούμε a 11 = 10 < 111 = b. Επομένως, διαγράφουμε τα στοιχεία a 9, a 10 της ακολουθίας Α. Το στοιχείο b = 111 δεν υπάρχει στην ακολουθία Α. Βρήκαμε, όμως, το αμέσως μικρότερο στοιχείο που είναι το 10. θέση στοιχείο

16 Το πρόγραμμα που περιγράφει τον παραπάνω αλγόριθμο δυαδικής αναζήτησης, διατυπωμένο σε γλώσσα προγραμματισμού Java, είναι το εξής : public static int binarysearch(int a[], int b, int l, int r) { while (r >= l) { int m = (l+r)/; if (b == a[m]) return m; if (b <a[m]) r = m-1; else l = m+1;} return -1; } Η εντολή m = (l + r)/ υπολογίζει το μέσο της ακολουθίας εισόδου, ενώ οι μεταβλητές l και r ορίζουν τα άκρα της εκάστοτε ακολουθίας. Ανάλυση Αλγόριθμου. Έστω T(n) ο χρόνος της αναζήτησης σε ακολουθία n στοιχείων. Τότε, στη χειρότερη περίπτωση, ισχύει: Τ(n) = T(n/) + Θ(1) = T(n/) + c = T(n/4) + c = T(n/8) + 3c = = clogn = Θ(logn) Μάλιστα, χρησιμοποιώντας πιο περίπλοκες δομές μπορούμε να πετύχουμε Θ(log logn) χρόνο επίλυσης για το πρόβλημα της αναζήτησης. Παράδειγμα : Έστω ότι θέλουμε να υπολογίσουμε την πολυπλοκότητα του αλγόριθμου για το πρόβλημα της ακολουθιακής αναζήτησης μιας ακολουθίας n στοιχείων και απαλοιφή ενός στοιχείου κάθε φορά, μέχρι να μείνει κενή ακολουθία. Παρακάτω δίνουμε ένα παράδειγμα μιας ακολουθίας n = 15 στοιχείων (ακέραιοι αριθμοί). Αρχικά, γίνεται αναζήτηση του στοιχείου 45, το οποίο βρίσκεται στην 6 η θέση και διαγράφεται. Στη συνέχεια, γίνεται αναζήτηση του στοιχείου 8, το οποίο βρίσκεται στην 9 η θέση (της ακολουθίας μετά τη διαγραφή του 8) και διαγράφεται. Η διαδικασία συνεχίζεται, έως ότου η ακολουθία μείνει κενή. 35

17 Έστω T(n) ο χρόνος εκτέλεσης για ακολουθία n στοιχείων στη χειρότερη περίπτωση. Τότε, ισχύει: T(n) = { Με τη μέθοδο της αντικατάστασης λαμβάνουμε: T(n 1) n 1 n = 1 Τ(n) = T(n 1) + n = T(n ) + (n 1) + n = T(n 3) + (n ) + (n 1) + n = = T(1) (n ) + (n 1) + n = n(n+1) Με επαγωγή θέλουμε να δείξουμε ότι T(n) = Ο(n ), δηλαδή ότι ισχύει T(n) cn για κάποια θετική σταθερά c. Η βάση της επαγωγής είναι T(1) 1 c1 c, που ισχύει για c 1. Επαγωγικό βήμα: Έστω ότι ισχύει T(n 1) c(n 1). Έχουμε Τ(n) = T(n 1) + n c(n 1) + n c[(n 1) + n] = c(n n + 1) cn, n 1 Με επαγωγή, επίσης, μπορούμε να δείξουμε ότι ισχύει T(n) = Ω(n ), δηλαδή ότι ισχύει T(n) c n για κάποια θετική σταθερά c. Η βάση της επαγωγής είναι T(1) = 1 c 1 = c, που ισχύει για c 1. Επαγωγικό βήμα: Έστω T(n 1) c (n 1). Έχουμε Τ(n) = T(n 1) + n c (n 1) + n = c n c n + c + n c n + (1 c )n c n, που ισχύει για c 1. Άρα έχουμε ότι ισχύει Τ(n) = O(n ) και T(n) = Ω(n ) και, επομένως, T(n) = Θ(n ). Παράδειγμα 3: Έστω T(n) ο χρόνος εκτέλεσης ενός αλγόριθμου στη χειρότερη περίπτωση, ο οποίος δίδεται αναδρομικά από τον παρακάτω τύπο: T(n) = { T (n ) + n n 0 n = 1 Θέλουμε να υπολογίσουμε την ασυμπτωτική πολυπλοκότητα του αλγόριθμου. Με τη μέθοδο της αντικατάστασης λαμβάνουμε: T(n) = T ( n ) + n = [T (n 4 ) + n ] + n = 4T ( n 4 ) + n = 4 [T (n 8 ) + n 4 ] + n = 8T ( n 8 ) + 3m = = k T ( n k) + kn = Θ(kn) = Θ(n logn). Εναλλακτικά έχουμε: T( n ) = T( n 1 ) + n. Τότε, Τ( n ) = T( n 1 ) + n T(n ) n = T(n 1 ) n Άρα, T(n ) n = T(n 1 ) n = T(n ) n + = = n. 36

18 Οπότε ισχύει Τ( n ) = n n και, επομένως, η ασυμπτωτική πολυπλοκότητα του αλγόριθμου του παραδείγματος είναι T(n) = Θ(nlogn). Ασκήσεις.1. Κατατάξτε τις ακόλουθες συναρτήσεις ως προς την τάξη αύξησής τους (by order of growth). Δηλαδή, προσδιορίστε μια διάταξη των συναρτήσεων g 1, g,, g 4, τέτοια ώστε: g 1 = Ω(g ), g = Ω(g 3 ),, g 3 = Ω(g 4 ). Διαμερίστε τη λίστα των συναρτήσεων σε κλάσεις ισοδυναμίας έτσι ώστε f(n) και g(n) ανήκουν στην ίδια κλάση εάν-ν f(n) = Θ(g(n)). ( 3 ) n n 1 log n ( ) log n log n n n 3 log n log log n n n n log log n log n n 4 log n (n + 1)! (log n) n! log n n log (n!) log n n log n n (log n) log n 1.. Δώστε ένα παράδειγμα δύο συναρτήσεων f, g N R, τέτοιων ώστε f O(g) και f Ω(g). Σημείωση: Όλες οι συναρτήσεις δεν είναι ασυμπτωτικά συγκρίσιμες (asymptoticaly comperable). Για παράδειγμα, οι συναρτήσεις f, g: N R με την παραπάνω ιδιότητα ονομάζονται ασυμπτωτικά μη-συγκρίσιμες..3. Δείξτε ότι για οποιεσδήποτε πραγματικές σταθερές (for any real constants) a και b, όπου b > 0, ισχύει (n + a) b = Θ(n b )..4. 'Eστω f, g N R. Δείξτε (με αντιπαράδειγμα) ότι δεν ισχύουν οι παρακάτω προτάσεις: (a) f(n) = O(g(n)) g(n) = O(f(n)). (b) f(n) + g(n) = Θ(min(f(n), g(n)). (c) f(n) = O(g(n)) g(n) = O( f(n) ). (d) f(n) = O((f(n)) ). (e) f(n) = O(f ( n ))..5. Επιλύστε τις παρακάτω αναδρομικές σχέσεις: (a) T(n) = 9 T( n 3 ) + n. (b) T(n) = T( n 3 ) + 1. (c) T(n) = 3 T ( n ) + n log n. 4 (d) T(n) = T( n ) + n log n..6. O χρόνος εκτέλεσης ενός αλγορίθμου A περιγράφεται από τον αναδρομικό τύπο T(n) = 7T( n ) + n. Ένας άλλος ανταγωνιστικός αλγόριθμος A έχει χρόνο εκτέλεσης T (n) = 37

19 α T ( n 4 ) + n. Προσδιορίστε τη μεγαλύτερη ακέραια τιμή του α, έτσι ώστε ο αλγόριθμος A να είναι ασυμπτωτικά γρηγορότερος του αλγορίθμου A..7. Εργαζόμαστε σε ένα εργοστάσιο παραγωγής βάζων, όπου μας ανατίθεται να προσδιορίσουμε το μεγαλύτερο ύψος h από το οποίο μπορούμε να πετάξουμε ένα συγκεκριμένο τύπο βάζου χωρίς να σπάσει. Μας αρκεί να βρούμε το h με ακρίβεια ενός μέτρου. Για το σκοπό αυτό μας δίνεται μία σκάλα που φτάνει τα N μέτρα, αλλά μόνο βάζα. Πρέπει να βρούμε το h (υποθέτουμε ότι h Ν) πραγματοποιώντας το μικρότερο δυνατό αριθμό Χ(Ν) από ρίψεις (ως συνάρτηση του Ν). Προφανώς, αν κάνουμε μία ρίψη ανά ένα μέτρο τότε μπορεί να χρειαστούμε Χ(Ν) = Ν ρίψεις, ενώ χρησιμοποιούμε μόνο το ένα βάζο. Από την άλλη, θα μπορούσαμε να κάνουμε Χ(Ν) = Ο(log N) ρίψεις με δυαδική αναζήτηση, αλλά έτσι μπορεί να χρειαστούμε περισσότερα από βάζα..8. Πως μπορούμε να λύσουμε την Άσκηση.7 όταν το N είναι άγνωστο;.9. Μας δίνεται μια αυθαίρετα μεγάλη ακολουθία στοιχείων x 1, x,, την οποία διαβάζουμε από ένα ρεύμα εισόδου. Θέλουμε να γνωρίζουμε, ανά πάσα στιγμή, ποιό είναι το στοιχείο της ακολουθίας που έχουμε δει μέχρι στιγμής, το οποίο έχει εμφανιστεί τις περισσότερες φορές. Σχεδιάστε ένα αλγόριθμο για το πρόβλημα αυτό, ο οποίος να χρησιμοποιεί μόνο Ο(1) θέσεις μνήμης..10. Μας δίνεται ένας πίνακας Α = [ a 1 a a n ] με n πραγματικούς αριθμούς, καθώς και μια επιθυμητή τιμή K. Σχεδιάστε ένα αλγόριθμο ο οποίος να βρίσκει θέσεις i και j με 1 i j n, τέτοιες ώστε a i + a i a j = K. Ποιά είναι η πολυπλοκότητα του αλγόριθμού σας; Βιβλιογραφία Cormen, T., Leiserson, C., Rivest, R., & Stain, C. (001). Introduction to Algorithms. MIT Press (nd edition). Dasgupta, S., Papadimitriou, C., & Vazirani, U. (008). Algorithms. McGraw-Hill. Garey, M., & Johnson, D. (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. New York: W.H. Freeman. Goodrich, M. T., & Tamassia, R. (006). Data Structures and Algorithms in Java, 4th edition. Wiley. Mehlhorn, K., & Sanders, P. (008). Algorithms and Data Structures: The Basic Toolbox. Springer-Verlag. Sedgewick, R., & Wayne, K. (011). Algorithms, 4th edition. Addison-Wesley. Tarjan, R. E. (1983). Data Structures and Network Algorithms. Society for Industrial and Applied Mathematics. 38

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 2: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 2.0 Πολυπλοκότητα Αλγορίθμων Ασυμπτωτική Πολυπλοκότητα Αναδρομικές Σχέσεις Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων

Διαβάστε περισσότερα

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Ανάλυση - Απόδοση Αλγορίθμων Έλεγχος Αλγορίθμων. Απόδοση Προγραμμάτων. Χωρική/Χρονική Πολυπλοκότητα. Ασυμπτωτικός Συμβολισμός. Παραδείγματα. Αλγόριθμοι: Βασικές Έννοιες

Διαβάστε περισσότερα

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε: Συµβολισµός Ω( ) Τάξη των Συναρτήσεων () Εκτίµηση Πολυπλοκότητας Αλγορίθµων Ορέστης Τελέλης telelis@unipi.gr Ορισµός. Εστω συναρτήσεις: f : N R και g : N R η f(n) είναι Ω( g(n) ) αν υπάρχουν σταθερές C

Διαβάστε περισσότερα

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) 3.1 Ασυμπτωτικός συμβολισμός (Ι) Οι ορισμοί που ακολουθούν μας επιτρέπουν να επιχειρηματολογούμε με ακρίβεια για την ασυμπτωτική συμπεριφορά. Οι f(n) και g(n) συμβολίζουν

Διαβάστε περισσότερα

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κεφάλαιο 11 Ένωση Ξένων Συνόλων Κεφάλαιο 11 Ένωση Ξένων Συνόλων Περιεχόμενα 11.1 Εισαγωγή... 227 11.2 Εφαρμογή στο Πρόβλημα της Συνεκτικότητας... 228 11.3 Δομή Ξένων Συνόλων με Συνδεδεμένες Λίστες... 229 11.4 Δομή Ξένων Συνόλων με Ανοδικά

Διαβάστε περισσότερα

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ανάλυση Αλγορίθμων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανάλυση Αλγορίθμων Η ανάλυση αλγορίθμων περιλαμβάνει τη διερεύνηση του τρόπου

Διαβάστε περισσότερα

Ασυμπτωτικός Συμβολισμός

Ασυμπτωτικός Συμβολισμός Ασυμπτωτικός Συμβολισμός Επιμέλεια διαφανειών: Δημήτρης Φωτάκης (λίγες προσθήκες: Άρης Παγουρτζής) Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Υπολογιστική Πολυπλοκότητα

Διαβάστε περισσότερα

Υπολογιστική Πολυπλοκότητα

Υπολογιστική Πολυπλοκότητα Υπολογιστική Πολυπλοκότητα Υπολογιστική πολυπλοκότητα αλγόριθµου Α: Ποσότητα υπολογιστικών πόρων που απαιτεί Α ως αύξουσα συνάρτηση µεγέθους στιγµιότυπου εισόδου. Χρόνος, µνήµη, επεξεργαστές, επικοινωνία,

Διαβάστε περισσότερα

Ασυμπτωτικός Συμβολισμός

Ασυμπτωτικός Συμβολισμός Ασυμπτωτικός Συμβολισμός ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Υπολογιστική Πολυπλοκότητα Υπολογιστική

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

Διαβάστε περισσότερα

Δομές Δεδομένων Ενότητα 2

Δομές Δεδομένων Ενότητα 2 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 2: Θέματα Απόδοσης Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

1o Φροντιστήριο ΗΥ240

1o Φροντιστήριο ΗΥ240 1o Φροντιστήριο ΗΥ240 Άσκηση 1 Αποδείξτε τη μεταβατική και τη συμμετρική ιδιότητα του Θ Μεταβατική Ιδιότητα (ορισμός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)) Για να ισχύει f(n)= Θ(h(n))

Διαβάστε περισσότερα

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018 Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018 Αλγόριθμοι Ρυθμός αύξησης συναρτήσεων [Rosen 3.2] Αριθμητικές συναρτήσεις Τάξη αριθμητικών συναρτήσεων

Διαβάστε περισσότερα

ΛΟΥΚΑΣ ΓΕΩΡΓΙΑΔΗΣ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΑΥΡΟΣ Δ. ΝΙΚΟΛΟΠΟΥΛΟΣ ΚΑΘΗΓΗΤΗΣ ΛΕΩΝΙΔΑΣ ΠΑΛΗΟΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΛΟΥΚΑΣ ΓΕΩΡΓΙΑΔΗΣ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΑΥΡΟΣ Δ. ΝΙΚΟΛΟΠΟΥΛΟΣ ΚΑΘΗΓΗΤΗΣ ΛΕΩΝΙΔΑΣ ΠΑΛΗΟΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΛΟΥΚΑΣ ΓΕΩΡΓΙΑΔΗΣ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΑΥΡΟΣ Δ. ΝΙΚΟΛΟΠΟΥΛΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΛΕΩΝΙΔΑΣ ΠΑΛΗΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2 Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Εµπειρική ανάλυση αλγορίθµων Μαθηµατική ανάλυση αλγορίθµων Αύξηση συναρτήσεων Συµβολισµός µεγάλου όµικρον Παραδείγµατα

Διαβάστε περισσότερα

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 5.1 Επίδοση αλγορίθμων Μέχρι τώρα έχουμε γνωρίσει διάφορους αλγόριθμους (αναζήτησης, ταξινόμησης, κ.α.). Στο σημείο αυτό θα παρουσιάσουμε ένα τρόπο εκτίμησης της επίδοσης (performance) η της αποδοτικότητας

Διαβάστε περισσότερα

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ ΕΝΟΤΗΤΑ 1 ΕΙΣΑΓΩΓΗ 1 εδοµένα Σύνολο από πληροφορίες που πρέπει να αποθηκευτούν σε έναν υπολογιστή Υπολογιστικό Μοντέλο ένας επεξεργαστής και µεγάλος

Διαβάστε περισσότερα

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

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε; Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε; Πως θα υπολογίσουμε το χρόνο εκτέλεσης ενός αλγόριθμου; Για να απαντήσουμε

Διαβάστε περισσότερα

Ασυμπτωτικός Συμβολισμός

Ασυμπτωτικός Συμβολισμός Ασυμπτωτικός Συμβολισμός ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Υπολογιστική Πολυπλοκότητα Υπολογιστική πολυπλοκότητα αλγόριθμου Α: Ποσότητα

Διαβάστε περισσότερα

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική και τη συµµετρική ιδιότητα του Θ. Λύση Μεταβατική Ιδιότητα (ορισµός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)). Για

Διαβάστε περισσότερα

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

Κεφάλαιο 5 Ανάλυση Αλγορίθμων Κεφάλαιο 5 Ανάλυση Αλγορίθμων 5.1 Επίδοση αλγορίθμων Τα πρωταρχικά ερωτήματα που προκύπτουν είναι: 1. πώς υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 2. πώς μπορούν να συγκριθούν μεταξύ τους οι διάφοροι

Διαβάστε περισσότερα

Εισαγωγή στην Ανάλυση Αλγορίθμων

Εισαγωγή στην Ανάλυση Αλγορίθμων Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)

Διαβάστε περισσότερα

Κεφάλαιο 10 Ψηφιακά Λεξικά

Κεφάλαιο 10 Ψηφιακά Λεξικά Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή... 213 10.2 Ψηφιακά Δένδρα... 214 10.3 Υλοποίηση σε Java... 222 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα... 223 Ασκήσεις... 225 Βιβλιογραφία...

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου, Τμήμα Μηχανικών Πληροφορικής ΤΕ Χειμερινό Εξάμηνο 2014-2015 (Παρουσίαση 6) 1 / 20 Ρυθμοί αύξησης Γραμμικός ρυθμός αύξησης: n, 2n, Πολυωνυμικός

Διαβάστε περισσότερα

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις

Διαβάστε περισσότερα

Σχεδίαση & Ανάλυση Αλγορίθμων

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 1 Αλγόριθμοι και Πολυπλοκότητα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Εισαγωγή Ας ξεκινήσουμε

Διαβάστε περισσότερα

Ασυμπτωτικός Συμβολισμός

Ασυμπτωτικός Συμβολισμός Ασυμπτωτικός Συμβολισμός ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας ΠΕΡΙΓΡΑΦΗ Σε αυτή την άσκηση καλείστε να αναλύσετε και να υπολογίσετε το

Διαβάστε περισσότερα

Ασκήσεις (2) Άσκηση 1

Ασκήσεις (2) Άσκηση 1 Άσκηση 1 Ασκήσεις () Εισαγωγή στην Ανάλυση Αλγορίθμων Υποθέστε ότι συγκρίνουμε την υλοποίηση της ταξινόμησης με εισαγωγή και της ταξινόμησης με συγχώνευση στον ίδιο υπολογιστή. Για εισόδους μεγέθους n,

Διαβάστε περισσότερα

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση Κεφάλαιο 13 Αντισταθμιστική Ανάλυση Περιεχόμενα 13.1 Αντισταθμιστική Ανάλυση... 248 13.2 Μέθοδοι Αντισταθμιστικής Ανάλυσης... 250 13.2.1 Η χρεωπιστωτική μέθοδος... 250 13.2.2 Η ενεργειακή μέθοδος... 251

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΑΘΗΜΑ: ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ 1. α. Να βάλετε σε αύξουσα σειρά μεγέθους τις παρακάτω συναρτήσεις χρονικής πολυπλοκότητας αλγορίθμων: nlogn, n logn,

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας Εισαγωγή στους Αλγόριθμους Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr 1 Περιεχόμενα Μαθήματος Εισαγωγή στου Αλγόριθμους Πολυπλοκότητα Αλγορίθμων Ασυμπτωτική Ανάλυση Θεωρία Γράφων Κλάσεις Πολυπλοκότητας

Διαβάστε περισσότερα

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035).

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035). Ανάλυση Αλγορίθµων Σύντοµη επανάληψη (ΕΠΛ 035). Περίληψη Ανάλυση αλγορίθµων Ο, Θ, Ω Ανάλυση µη αναδροµικών αλγόριθµων Ανάλυση αναδροµικών αλγόριθµων Εµπειρική Ανάλυση Visualization Απόδοση Αλγορίθµων Απόδοση

Διαβάστε περισσότερα

Κεφάλαιο 6 Ουρές Προτεραιότητας

Κεφάλαιο 6 Ουρές Προτεραιότητας Κεφάλαιο 6 Ουρές Προτεραιότητας Περιεχόμενα 6.1 Ο αφηρημένος τύπος δεδομένων ουράς προτεραιότητας... 114 6.2 Ουρές προτεραιότητας με στοιχειώδεις δομές δεδομένων... 115 6.3 Δυαδικός σωρός... 116 6.3.1

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 1η: Εισαγωγή Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 1η: Εισαγωγή Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 1η: Εισαγωγή Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΗΥ240: Δομές Δεδομένων Διδάσκουσα: Παναγιώτα Φατούρου Υποχρεωτικό Μάθημα 2ου

Διαβάστε περισσότερα

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Ανάλυση Αλγορίθμων Θέματα Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα Προσεγγίσεις: Θεωρητική ανάλυση Εμπειρική ανάλυση Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Θεωρητική

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου Ημερομηνία Υποβολής:

Διαβάστε περισσότερα

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 13: Αλγόριθμοι-Μεγάλων ακεραίων- Εκθετοποίηση- Πολλαπλασιασμός πινάκων -Strassen Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Διαίρει-και-Βασίλευε Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε Γενική μέθοδος σχεδιασμού αλγορίθμων: ιαίρεση σε ( 2) υποπροβλήματα

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 1 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική

Διαβάστε περισσότερα

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις Γενικό πλάνο Μαθηµατικά για Πληροφορική 6ο Μάθηµα 1 Ανάλυση αλγορίθµων Ηλίας Κουτσουπιάς, Γιάννης Εµίρης 2 Συµβολισµοί O, Ω και Θ Τµήµα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήµιο Αθηνών 27/11/2008 3

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 25 Φεβρουαρίου 2015 1 / 53 Περιεχόµενα

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Βιβλιογραφία Robert Sedgewick, Αλγόριθμοι σε C, Μέρη 1-4 (Θεμελιώδεις Έννοιες, Δομές Δεδομένων, Ταξινόμηση,

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 4: Αναδρομικές σχέσεις και ανάλυση αλγορίθμων Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών 1 Συναρτήσεις και ο υπολογισµός τους 2 Μηχανές Turing 3 Καθολικές γλώσσες προγραµµατισµού 4 Μια µη υπολογίσιµη συνάρτηση 5 Πολυπλοκότητα προβληµάτων 1 Συναρτήσεις Μία συνάρτηση

Διαβάστε περισσότερα

Μαθηµατικά για Πληροφορική

Μαθηµατικά για Πληροφορική Μαθηµατικά για Πληροφορική 6ο Μάθηµα Ηλίας Κουτσουπιάς, Γιάννης Εµίρης Τµήµα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήµιο Αθηνών 27/11/2008 27/11/2008 1 / 55 Γενικό πλάνο 1 Ανάλυση αλγορίθµων 2 Συµβολισµοί

Διαβάστε περισσότερα

1η Σειρά Γραπτών Ασκήσεων

1η Σειρά Γραπτών Ασκήσεων 1/20 Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 1η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 1 Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 2 3 4 5 2/20

Διαβάστε περισσότερα

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων Κεφάλαιο 1 Εισαγωγή Περιεχόμενα 1.1 Αλγόριθμοι και Δομές Δεδομένων... 9 1.2 Διατήρηση Διατεταγμένου Συνόλου... 12 1.3 Ολοκληρωμένη Υλοποίηση σε Java... 15 Ασκήσεις... 18 Βιβλιογραφία... 19 1.1 Αλγόριθμοι

Διαβάστε περισσότερα

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 1: Εισαγωγή- Χαρακτηριστικά Παραδείγματα Αλγορίθμων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ Θέματα μελέτης Ορθότητα και απόδοση αλγορίθμων Παρουσίαση και ανάλυση αλγορίθμου για πρόσθεση Al Khwarizmi Αλγόριθμοι Το δεκαδικό σύστημα εφευρέθηκε στην Ινδία περίπου το

Διαβάστε περισσότερα

Ενότητα 1 Εισαγωγή. ΗΥ240: Δοµές Δεδοµένων. Διδάσκουσα: Παναγιώτα Φατούρου

Ενότητα 1 Εισαγωγή. ΗΥ240: Δοµές Δεδοµένων. Διδάσκουσα: Παναγιώτα Φατούρου ΗΥ240: Δοµές Δεδοµένων Διδάσκουσα: Παναγιώτα Φατούρου Υποχρεωτικό Μάθηµα 2ου έτους Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Ενότητα 1 Εισαγωγή ΗΥ240 - Παναγιώτα Φατούρου 2 Εισαγωγικά Θέµατα Αντικείµενο

Διαβάστε περισσότερα

Σχεδίαση & Ανάλυση Αλγορίθμων

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 3 Αλγόριθμοι Επιλογής Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Αλγόριθμοι Επιλογής Γνωρίζουμε

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 04: ΠαραδείγματαΑνάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα -Γραμμική

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

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

Διαβάστε περισσότερα

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε» Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε» ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε

Διαβάστε περισσότερα

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Γενική µέθοδος σχεδιασµού αλγορίθµων: Διαίρεση σε ( 2) υποπροβλήµατα (σηµαντικά) µικρότερου µεγέθους.

Διαβάστε περισσότερα

Πολυπλοκότητα Αλγορίθµων

Πολυπλοκότητα Αλγορίθµων Πολυπλοκότητα Αλγορίθµων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εµπειρική Θεωρητική Ανάλυση Αλγορίθµων Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις

Διαβάστε περισσότερα

ΗΥ240: οµές εδοµένων

ΗΥ240: οµές εδοµένων ΗΥ240: οµές εδοµένων ιδάσκουσα: Παναγιώτα Φατούρου Υποχρεωτικό Μάθηµα 2ου έτους Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Ενότητα 1 Εισαγωγή ΗΥ240 - Παναγιώτα Φατούρου 2 Εισαγωγικά Θέµατα Αντικείµενο

Διαβάστε περισσότερα

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013 Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013 Λυμένες Ασκήσεις Σετ Α: Ανάλυση Αλγορίθμων Άσκηση 1 Πραγματοποιήσαμε μια σειρά μετρήσεων του

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

ρυθιμός αύξησης συναρτήσεων

ρυθιμός αύξησης συναρτήσεων ρυθμός αύξησης συναρτήσεων Παύλος Εφραιμίδης 1 περιεχόμενα Ασυμπτωτικός συμβολισμός Καθιερωμένοι συμβολισμοί και συνήθεις συναρτήσεις 2 ασυμπτωτική πολυπλοκότητα Πολυπλοκότητα χειρότερης περίπτωσης Συγχωνευτική

Διαβάστε περισσότερα

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1 Διαίρει-και-Βασίλευε Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική μέθοδος

Διαβάστε περισσότερα

ΗΥ240: οµές εδοµένων. ιδάσκουσα: Παναγιώτα Φατούρου ΗΥ240 - Παναγιώτα Φατούρου 2

ΗΥ240: οµές εδοµένων. ιδάσκουσα: Παναγιώτα Φατούρου ΗΥ240 - Παναγιώτα Φατούρου 2 ΗΥ240: οµές εδοµένων ιδάσκουσα: Παναγιώτα Φατούρου Υποχρεωτικό Μάθηµα 2ου έτους Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Ενότητα 1 Εισαγωγή ΗΥ240 - Παναγιώτα Φατούρου 2 Εισαγωγικά Θέµατα Αντικείµενο

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

Αριθμοθεωρητικοί Αλγόριθμοι

Αριθμοθεωρητικοί Αλγόριθμοι Αλγόριθμοι που επεξεργάζονται μεγάλους ακέραιους αριθμούς Μέγεθος εισόδου: Αριθμός bits που απαιτούνται για την αναπαράσταση των ακεραίων. Έστω ότι ένας αλγόριθμος λαμβάνει ως είσοδο έναν ακέραιο Ο αλγόριθμος

Διαβάστε περισσότερα

Διακριτά Μαθηματικά. Γιάννης Εμίρης. Τμήμα Πληροφορικής & Τηλεπικοινωνιών ΕΚΠΑ. Οκτώβριος

Διακριτά Μαθηματικά. Γιάννης Εμίρης. Τμήμα Πληροφορικής & Τηλεπικοινωνιών ΕΚΠΑ. Οκτώβριος ΔιακριτάΜαθηματικά Γιάννης Εμίρης http://eclass.uoa.gr/ Τμήμα Πληροφορικής & Τηλεπικοινωνιών ΕΚΠΑ Οκτώβριος 2016 Διακριτά Μαθηματικά Αλγόριθμοι Ρυθμόςαύξησηςσυναρτήσεων[Rosen 3.2] Διακριτά Μαθηματικά Ορισμοί

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

Διαβάστε περισσότερα

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση Πίνακες Διασποράς Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση κλειδί k T 0 1 2 3 4 5 6 7 U : χώρος πιθανών κλειδιών Τ : πίνακας μεγέθους

Διαβάστε περισσότερα

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Βασικές έννοιες και εφαρμογές Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη - Πολυπλοκότητα Αλγορίθμων / Επανάληψη Χρήσιμων Μαθηματικών Ορισμών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αλγόριθμοι, Κριτήρια Αξιολόγησης Αλγόριθμων, Γιατί αναλύουμε τους Αλγορίθμων

Διαβάστε περισσότερα

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012 Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012 Ενδεικτικές απαντήσεις 1 ου σετ ασκήσεων. Άσκηση 1 Πραγματοποιήσαμε μια σειρά μετρήσεων του χρόνου εκτέλεσης τριών

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

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

Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διωνυμικοί Συντελεστές Διωνυμικοί

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Μέρος 4

Αλγόριθμοι Ταξινόμησης Μέρος 4 Αλγόριθμοι Ταξινόμησης Μέρος 4 Μανόλης Κουμπαράκης Δομές Δεδομένων και Τεχνικές 1 Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Οι αλγόριθμοι ταξινόμησης που είδαμε μέχρι τώρα αποφασίζουν πώς να

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 1 Εισαγωγικές έννοιες Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 1 1 / 57 Περιεχόµενα 1.

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 2: Ανάλυση Αλγορίθμων. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

Διαβάστε περισσότερα

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Αναζήτηση. Σειριακή αναζήτηση. Δυαδική Αναζήτηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου

Διαβάστε περισσότερα

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 5: Αναδρομικές σχέσεις - Υπολογισμός Αθροισμάτων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 5: Ασκήσεις Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Ενότητα 4 Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας

Διαβάστε περισσότερα

Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων

Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων Περιεχόμενα 3.1 Στοιχειώδεις τύποι δεδομένων... 39 3.2 Πίνακες... 40 3.2.1 Διδιάστατοι πίνακες... 43 3.3 Συνδεδεμένες Λίστες... 48 3.4 Αναδρομή... 51 3.4.1 Μέθοδος

Διαβάστε περισσότερα

Αναδρομή Ανάλυση Αλγορίθμων

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6α: Αναζήτηση Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commos. Για εκπαιδευτικό

Διαβάστε περισσότερα

Σχεδίαση & Ανάλυση Αλγορίθμων

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Απαιτήσεις Μαθήματος Εργαστηρίου Σκιαγράφηση Μαθήματος μια Πρώτη Εισαγωγή Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

(Γραμμικές) Αναδρομικές Σχέσεις

(Γραμμικές) Αναδρομικές Σχέσεις (Γραμμικές) Αναδρομικές Σχέσεις Διδάσκοντες: Φ. Αφράτη, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Αναδρομικές Σχέσεις

Διαβάστε περισσότερα

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης 1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης Στη συγκεκριμένη ενότητα εξετάζουμε θέματα σχετικά με την αριθμητική πεπερασμένης ακρίβειας που χρησιμοποιούν οι σημερινοί υπολογιστές και τα

Διαβάστε περισσότερα

(Γραμμικές) Αναδρομικές Σχέσεις

(Γραμμικές) Αναδρομικές Σχέσεις (Γραμμικές) Αναδρομικές Σχέσεις ιδάσκοντες:. Φωτάκης. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Αναδρομικές Σχέσεις Αναπαράσταση

Διαβάστε περισσότερα