Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Σχετικά έγγραφα
Γνωριµία. οµές εδοµένων Εισαγωγή. Βιβλία Μαθήµατος. Επικοινωνία. ιδάσκων: Ορέστης Τελέλης. Ωρες γραφείου (502, Γρ.

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

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

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

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

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης

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

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

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

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

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

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

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

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

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

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

Βασικές Έννοιες Δοµών Δεδοµένων

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Περιεχόμενα. Περιεχόμενα

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Δοµές Δεδοµένων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Φθινοπωρινό Εξάµηνο Ευάγγελος Μαρκάκης

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Λογισµικό (Software SW) Γλώσσες

Αλγόριθμοι και πολυπλοκότητα Ανάλυση αλγορίθμων

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

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

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

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

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

9. Κόκκινα-Μαύρα Δέντρα

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

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

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

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

Ισοζυγισμένα υαδικά έντρα Αναζήτησης

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

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

Δοµές Δεδοµένων. 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων. Ε. Μαρκάκης

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

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

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

10. Πίνακες Κατακερματισμού

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Αντικειμενοστρεφής Προγραμματισμός

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

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

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

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

Αλγόριθμοι και Πολυπλοκότητα Φώτης Ε. Ψωμόπουλος, Περικλής Α. Μήτκας

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

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

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

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Ουρές προτεραιότητας

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

2.1 Αντικειµενοστρεφής προγραµµατισµός

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

4. Συνδεδεμένες Λίστες

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Transcript:

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 1. Εισαγωγή 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 7/10/2016

Γνωριμία ιδάσκων: Χρήστος ουλκερίδης e-mail: cdoulk@unipi.gr Ώρες γραφείου (102, Γρ.Λαμπράκη 126): ευτέρα 12:00 14:00 Παρασκευή 9:00 11:00 Και κατόπιν συνεννόησης Ώρες μαθήματος: Παρασκευή 11:15 14:00 Τμήμα:Α-Λ 105: Ορέστης Τελέλης Τμήμα:Μ-Ω Π αμφ: Χρήστος ουλκερίδης Δομές Δεδομένων, 3ο Εξάμηνο 2

Επικοινωνία Ιστοσελίδα μαθήματος: http://evdoxos.ds.unipi.gr/courses/ds100/ Θέματα και υλικό σχετικά με το μάθημα ΙΑΛΕΞΕΙΣ ΑΝΑΚΟΙΝΩΣΕΙΣ ΕΚΦΩΝΗΣΕΙΣ ΕΡΓΑΣΙΩΝ ΠΑΡΑ ΟΣΗ ΕΡΓΑΣΙΩΝ ΒΟΗΘΗΤΙΚΟ ΥΛΙΚΟ... Άρα γραφτείτε στο μάθημα! Δομές Δεδομένων, 3ο Εξάμηνο 3

Βιβλία Μαθήματος Lafore R. (2005): ομές εδομένων και Αλγόριθμοι στη JAVA (μεταφρασμένο), Εκδόσεις Μ. Γκιούρδας. Goodrich M., Tamassia R. (2013): ομές εδομένων και Αλγόριθμοι σε Java, (μεταφρ. Μ.Χατζόπουλος), Εκδόσεις ίαυλος. ιαβάστε το βιβλίο, οι διαφάνειες δεν αρκούν! Δομές Δεδομένων, 3ο Εξάμηνο 4

Επιπρόσθετες Πηγές Sedgewick R. (2005): Αλγόριθμοι σε Java, Τόμοι 1-4, 3η αμερικάνικη έκδοση (μεταφρασμένο), Εκδόσεις Κλειδάριθμος. T. H. Cormen, C. E. Leiserson, R. Rivest, C. Stein. Εισαγωγή στους Αλγορίθμους. Τόμος Ι (Μεταφρασμένος). Πανεπιστημιακές Εκδόσεις Κρήτης, 2006. Δομές Δεδομένων, 3ο Εξάμηνο 5

Βαθμολογία Προγραμματιστικές Εργασίες (Π1, Π2) Εξέταση (Ε) Τελικός Βαθμός = 0.7*Ε + 0.2*(Π1+Π2) όμως πρέπει Ε > 4 Παραδείγματα : Φοιτητής που έγραψε 6 στην τελική εξέταση αλλά δεν παρέδωσε ΠΡΟΣΟΧΗ: Οι εργασίες του μαθήματος ασκήσεις Τελικός Βαθμός = 0.7*6 + 0.2*(0+0) = 4.2 4 ΟΧΙ Φοιτητής το Σεπτέμβριο που έγραψε 5 στην (ΟΧΙ τελική τον εξέταση Ιούνιο, και αν παρέδωσε υπάρξει ασκήσεις που βαθμολογήθηκαν με 10/10 Τελικός Βαθμός = 0.7*5 εξέταση). + 0.2*(10+10) = 7.5 8 Φοιτητής που έγραψε 4 στην τελική εξέταση και παρέδωσε ασκήσεις που βαθμολογήθηκαν με 8/10 παραδίδονται ΜΟΝΟ στην περίοδο διδασκαλίας του. Τελικός Βαθμός = 0.7*4 + 0.2*(8+8) = 6 Δομές Δεδομένων, 3ο Εξάμηνο 6

Εργαστήρια Μαθήματος 4 εργαστήρια το εξάμηνο με διαφορετική θεματολογία Προαιρετικά Για ενίσχυση της κατανόησης των δομών και σχετικών αλγορίθμων Για την εμπειρία υλοποίησης θεωρητικών αλγοριθμικών κατασκευών Σας μένει ο κώδικας που θα γράψουμε στα εργαστήρια 4 τμήματα (2 για καθένα από τα τμήματα Α-Λ, Μ-Ω) θα ανακοινωθούν Ώρες και Τόπος θα ανακοινωθούν Δομές Δεδομένων, 3ο Εξάμηνο 7

Σκοπός Μαθήματος Παρουσίαση βασικών δομών δεδομένων και η χρήση τους στην ανάπτυξη προγραμμάτων Υλοποίηση δομών δεδομένων με χρήση της γλώσσας προγραμματισμού Java Βασικές γνώσεις της Java θεωρούνται προαπαιτούμενο! Δομές Δεδομένων, 3ο Εξάμηνο 8

Περιεχόμενα Μαθήματος Ανάλυση Αλγορίθμων Πίνακες Ουρές και Στοίβες Συνδεδεμένες λίστες Μονά συνδεδεμένη ιπλά συνδεδεμένη Κυκλική Αναδρομή Ταξινόμηση έντρα υαδικά δέντρα αναζήτησης 234- έντρα έντρα πολλαπλών διαδρομών AVL- έντρα Β- έντρα Σωροί & Ουρές Προτεραιότητας Πίνακες κατακερματισμού Γράφοι Δομές Δεδομένων, 3ο Εξάμηνο 9

Εισαγωγικές Έννοιες

Δομές Δεδομένων & Αλγόριθμοι ομές εδομένων ιευθέτηση ή οργάνωση δεδομένων στη μνήμη ενός υπολογιστή (ή στο δίσκο) Παραδείγματα: Πίνακες, συνδεδεμένες λίστες, στοίβες, δυαδικά δέντρα, πίνακες κατακερματισμού, κ.ά. Αλγόριθμοι ιαδικασία εκτέλεσης μιας συγκεκριμένης εργασίας Χειρίζονται τα δεδομένα που βρίσκονται αποθηκευμένα στις δομές δεδομένων με διάφορους τρόπους Αναζήτηση, εισαγωγή, διαγραφή, ταξινόμηση Δομές Δεδομένων, 3ο Εξάμηνο 11

Χρησιμότητα Δομών Δεδομένων Αποθήκευση πραγματικών δεδομένων Παραδείγματα: Σύστημα κράτησης εισιτηρίων Βάση δεδομένων αδειών οδήγησης... Εργαλεία προγραμματιστών ομές δεδομένων χρησιμοποιούνται από προγραμματιστές ως εργαλεία για τη διεκπεραίωση μιας άλλης λειτουργίας Μοντελοποίηση πραγματικού κόσμου Παράδειγμα: Γράφοι για αναπαράσταση δρομολογίων αεροπλάνων μεταξύ πόλεων Γράφοι για αναπαράσταση σχέσεων σε ένα κοινωνικό δίκτυο Σωστή επιλογή δομής δεδομένων δημιουργεί προϋποθέσεις σημαντικών βελτιώσεων στην απόδοση ενός προγράμματος Δομές Δεδομένων, 3ο Εξάμηνο 12

Αλγόριθμοι Πολλοί αλγόριθμοι εφαρμόζονται απευθείας σε συγκεκριμένες δομές δεδομένων Για τις δομές δεδομένων, θα πρέπει να γνωρίζουμε πώς υλοποιούνται τρεις βασικές λειτουργίες Εισαγωγή νέων δεδομένων Αναζήτηση συγκεκριμένου στοιχείου ιαγραφή συγκεκριμένου στοιχείου Δομές Δεδομένων, 3ο Εξάμηνο 13

Παραδείγματα ομή δεδομένων Πίνακας ομή δεδομένων Συνδεδεμένη λίστα 45 23 28 95 71 19 30 Αλγόριθμος Αναζήτηση Εισαγωγή ιαγραφή Αλγόριθμος Αναζήτηση Εισαγωγή ιαγραφή Δομές Δεδομένων, 3ο Εξάμηνο 14

Υπόλοιπο Σημερινού Μαθήματος... Αντικειμενοστρεφής Προγραμματισμός Ανάλυση & Πολυπλοκότητα Αλγορίθμων Δομές Δεδομένων, 3ο Εξάμηνο 15

Αντικειμενοστρεφής Προγραμματισμός (Object-oriented Programming) Δομές Δεδομένων, 3ο Εξάμηνο 16

Αντικειμενοστρεφής Προγραμματισμός Αντικείμενα (σε αντιδιαστολή με διαδικαστικές γλώσσες προγραμματισμού) Πιο κοντά στα πραγματικά αντικείμενα Αντιμετώπιση προβλημάτων που δημιουργούνται από καθολικά δεδομένα Αντικείμενο thermostat Μεταβλητές currenttemp, desiredtemp μπορούν να προσπελαστούν μόνο από τις μεθόδους f_on(), f_off Το αντικείμενο περιέχει Μεθόδους Μεταβλητές Δομές Δεδομένων, 3ο Εξάμηνο 17

Κλάσεις (Classes) Ανάγκη ύπαρξης πολλών αντικειμένων του ίδιου τύπου Κλάση: προδιαγραφή για ένα ή περισσότερα αντικείμενα class Thermostat { private float currenttemp; private float desiredtemp; Μεταβλητές } public void f_on(){ } public void f_off(){ } Μέθοδοι Δομές Δεδομένων, 3ο Εξάμηνο 18

Δημιουργία Αντικειμένων Για δημιουργία αντικειμένων χρησιμοποιείται η εντολή new Thermostat therm1, therm2; therm1 = new Thermostat(); therm2 = new Thermostat(); Προσπέλαση μεθόδων αντικειμένων therm1.f_on(); Μέθοδοι κατασκευής (constructor) ήλωση ημιουργία αντικειμένων Καλείται αυτόματα κάθε φορά που δημιουργείται ένα νέο αντικείμενο. Δομές Δεδομένων, 3ο Εξάμηνο 19

class List { // variables private Object [] items; // store the items in an array private int numitems; // the current # of items in the list // methods // constructor function public List() { items = new Object[10]; numitems = 0; } } // AddToEnd: add a given item to the end of the list public void AddToEnd(Object ob) {... } Δομές Δεδομένων, 3ο Εξάμηνο 20

Κληρονομικότητα (Inheritance) class MountainBike extends Bicycle { // new fields and methods defining a mountain bike would go here } Δομές Δεδομένων, 3ο Εξάμηνο 21

Πολυμορφισμός Η αντιμετώπιση αντικειμένων που ανήκουν σε διαφορετικές κλάσεις με τον ίδιο τρόπο Προϋπόθεση: οι κλάσεις αυτές να παράγονται από την ίδια base class Παράδειγμα Employee class Secretary class extends Employee Manager class extends Employee private Collection<Employee> emps = new ArrayList<Employee>(); emps.add(new Secretary( X")); emps.add(new Manager( Y")); for (Employee e : emps) { System.out.println(e.display()); } Δομές Δεδομένων, 3ο Εξάμηνο 22

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

Περίγραμμα Τι είναι η ανάλυση αλγόριθμου? Κριτήρια ανάλυσης αλγορίθμων Πως υπολογίζουμε το χρόνο που απαιτείται για την εκτέλεση ενός αλγόριθμου? Δομές Δεδομένων, 3ο Εξάμηνο 24

Ανάλυση Αλγορίθμων: Ορισμοί Αλγόριθμος: Καθορισμένο σύνολο οδηγιών (ακολουθία υπολογιστικών βημάτων) που ο υπολογιστής πρέπει να ακολουθήσει προκειμένου να λύσει ένα πρόβλημα. Πρόγραμμα: Υλοποίηση αλγόριθμου σε μία γλώσσα προγραμματισμού Πρόβλημα Αλγόριθμος Έλεγχος ορθότητας Καθορισμός Πόρων Δομές Δεδομένων, 3ο Εξάμηνο 25

Ανάλυση Αλγορίθμων: Κριτήρια Ορθότητα Σαφή διατύπωση του τι πρέπει να κάνει ο αλγόριθμος Περιγραφή συνθηκών που πρέπει να πληρούν τα δεδομένα εισόδου Αναμενόμενα αποτελέσματα Όταν τα δεδομένα εισόδου ικανοποιούν τις αναγκαίες συνθήκες ο αλγόριθμος τερματίζει παράγοντας τα αναμενόμενα αποτελέσματα Απαιτήσεις σε μνήμη Μνήμη που απαιτείται για να αποθηκευτούν δεδομένα που χρησιμοποιεί ο αλγόριθμος + δεδομένα εισόδου Χρόνος εκτέλεσης Ταχύτητα εκτέλεσης των λειτουργιών για την ολοκλήρωση υπολογισμών Δομές Δεδομένων, 3ο Εξάμηνο 26

Ανάλυση Αλγορίθμων: Εισαγωγή Η ανάγκη επεξεργασίας μεγάλου όγκου δεδομένων απαιτεί τη χρήση υπολογιστή Όταν ένα πρόγραμμα «τρέχει» σε μεγάλο όγκο δεδομένων πρέπει να βεβαιωθούμε ότι θα τερματίσει μέσα σε αποδεκτά χρονικά πλαίσια. Ο χρόνος εκτέλεσης εξαρτάται από (κατά αύξουσα σειρά και θεωρώντας συγκεκριμένη επιλογή υλικού) 1. Γλώσσα προγραμματισμού 2. Μεθοδολογία (διαδικαστική vs. αντικειμενοστρεφή) 3. Επιλογή αλγορίθμου Δομές Δεδομένων, 3ο Εξάμηνο 27

Προσεγγίσεις Ανάλυσης Αλγόριθμου Πειραματική Θεωρητική Δομές Δεδομένων, 3ο Εξάμηνο 28

Πειραματική Μελέτη Γράψε ένα πρόγραμμα που να υλοποιεί τον αλγόριθμο «Τρέξε» τον αλγόριθμο χρησιμοποιώντας δεδομένα εισόδου διαφορετικού μεγέθους και σύνθεσης. Μέτρησε το χρόνο εκτέλεσης (runtime) Σχεδίασε τη γραφική παράσταση των αποτελεσμάτων Δομές Δεδομένων, 3ο Εξάμηνο 29

Περιορισμοί Πειραματικής Μελέτης Απαραίτητη η υλοποίηση του αλγόριθμου, η οποία μπορεί να είναι δύσκολη και να απαιτεί χρόνο Καλή κλιμάκωση των δεδομένων εισόδου? Σύγκριση δύο αλγορίθμων Ίδιος μηχανικός εξοπλισμός (hardware) και λογισμικό (software) Δομές Δεδομένων, 3ο Εξάμηνο 30

Θεωρητική Ανάλυση Χρήση υψηλού επιπέδου περιγραφής του αλγορίθμου και όχι της υλοποίησης του Χαρακτηρίζει το χρόνο εκτέλεσης σαν συνάρτηση του μεγέθους των δεδομένων εισόδου (Ν) Εξετάζει μεγάλα σύνολα εισόδου Λαμβάνει υπόψη της όλες τις δυνατές εισόδους Αξιολογεί έναν αλγόριθμο ανεξάρτητα από το υπολογιστικό εξοπλισμό, την υλοποίηση, το σύνολο εισόδου κ.λπ Μετρά λειτουργίες/εργασίες και όχι πραγματικό χρόνο Δομές Δεδομένων, 3ο Εξάμηνο 31

Τι είναι η Ανάλυση Αλγόριθμου; Ανάλυση αλγόριθμου: Ο χρόνος που απαιτείται για την εκτέλεση ενός αλγόριθμου εξαρτάται από το μέγεθος της εισόδου που πρέπει να επεξεργαστεί. Περισσότερα δεδομένα εισόδου Περισσότερος χρόνος εκτέλεσης προγράμματος Χρόνος εκτέλεσης προγράμματος = F (Input size) Η ακριβής τιμή της συνάρτησης F εξαρτάται από πολλούς παράγοντες: ταχύτητα της μηχανής, ποιότητα μεταγλωττιστή, ποιότητα προγράμματος Δομές Δεδομένων, 3ο Εξάμηνο 32

small inputs moderate inputs Από τις πιο συνηθισμένες συναρτήσεις που συναντώνται στην ανάλυση αλγορίθμων, η γραμμική αντιστοιχεί στον πιο αποδοτικό αλγόριθμο. Δομές Δεδομένων, 3ο Εξάμηνο 33

Μέση vs. Χειρότερη Περίπτωση Χρόνου Εκτέλεσης ενός Αλγορίθμου Ένας αλγόριθμος μπορεί να εκτελείται γρηγορότερα με συγκεκριμένα σύνολα δεδομένων από ότι με κάποια άλλα Η εύρεση της μέσης περίπτωσης μπορεί να είναι πολύ δύσκολη, έτσι οι αλγόριθμοι τυπικά μετρώνται με βάση τη χειρότερη περίπτωση πολυπλοκότητας Σε συγκεκριμένα πεδία εφαρμογής (π.χ. air traffic control, surgery) η γνώση της χειρότερης περίπτωσης πολυπλοκότητας είναι πολύ σημαντική Δομές Δεδομένων, 3ο Εξάμηνο 34

Ασυμπτωτικές προσεγγίσεις: Big-O συμβολισμός Η σύγκριση συναρτήσεων για μικρά σύνολα εισόδου είναι δύσκολη Οι σταθερές φαίνεται να επηρεάζουν σημαντικά τη συνάρτηση Οι διαφορές ανάμεσα στις καμπύλες που αντιπροσωπεύουν την αύξηση της συνάρτησης χρόνου εκτέλεσης αλγορίθμων είναι ευδιάκριτες για μεγάλα σύνολα δεδομένων. Γενικά: Οι δευτεροβάθμιας πολυπλοκότητας (Ο(N 2 )) αλγόριθμοι δεν είναι πρακτικοί για δεδομένα εισόδου που ξεπερνούν τις μερικές χιλιάδες Οι κυβικής πολυπλοκότητας (Ο(N 3 )) αλγόριθμοι γίνονται μη πρακτικοί για μεγέθη δεδομένων εισόδου τόσο μικρά όσο μερικές εκατοντάδες Δομές Δεδομένων, 3ο Εξάμηνο 35

Ασυμπτωτικές προσεγγίσεις: Big-O συμβολισμός Χρειαζόμαστε ένα τυπικό συμβολισμό για να προσδιορίσουμε τον επικρατέστερο όρο σε μία συνάρτηση και να αναπαραστήσουμε το ρυθμό αύξησης Big-O συμβολισμός επιτρέπει να ορίσουμε μια σχετική σειρά ανάμεσα στις συναρτήσεις συγκρίνοντας τους επικρατέστερους όρους Δομές Δεδομένων, 3ο Εξάμηνο 36

Ασυμπτωτικός Συμβολισμός Big-O: εδομένου των: συναρτήσεων f και g οριζόμενων πάνω σε μη-αρνητικούς ακεραίους Ορίζουμε big-o ως ακολούθως: f (N) O(g(N)) such that iff c 0, N 0 1 f(n) c g(n), for N N 0 Δομές Δεδομένων, 3ο Εξάμηνο 37

Παραδείγματα Big-O (Ι) Παράδειγμα: 7n 3 είναι O(n) Τεκμηρίωση: cn, such that 7n 3 cnfor n n. 0 0 Για n0 1, c7 η παραπάνω ανισότητα ικανοποιείται 7n-3 < 7n, n 1 Δομές Δεδομένων, 3ο Εξάμηνο 38

Παραδείγματα Big-O (ΙΙ) Παράδειγμα: 20n 3 10n log n 5O(n 3 ) Τεκμηρίωση: c, n 0 τέτοια ώστε 3 3 20n 10nlog n 5 cn, n n 0. Καθώς ισχύει 3 3 20n 20n for n1, and 3 10nlog n10n for n1, and 3 55n for n1 Μπορούμε να γράψουμε 20n 3 10nlog n 5 35n 3, n 1. Έτσι c = 35 και n 0 = 1. Δομές Δεδομένων, 3ο Εξάμηνο 39

Ασυμπτωτικός Συμβολισμός: Ορίζοντας το Big-O Παρότι αληθεύει ότι 7n-3 είναι O(n 5 ), ο big-o χαρακτηρισμός πρέπει να είναι όσο το δυνατό πιο μικρής τάξης. Απλοί κανόνες αγνόησε τις σταθερές επέλεξε την τιμή n που αυξάνεται ταχύτερα Παράδειγμα: Έστω ότι ένας αλγόριθμος έχει την ακόλουθη συνάρτηση αύξησης: f(n) = 16n 2 + 3n + 7 = n 2 + n - σβήσε τις σταθερές = n 2 - σβήσε τις μικρότερες τιμές του n Έστω f(n) = 8n 2 logn + 5n 2 +n O(n 2 logn) Σημείωση: Κάθε πολυώνυμο του n είναι O(n k ) δεδομένου ότι κάθε όρος του πολυωνύμου έχει εκθέτη k ή μικρότερο. Δομές Δεδομένων, 3ο Εξάμηνο 40

Γιατί Χρησιμοποιούμε το Συμβολισμό Big-O; Για να φράξουμε το σφάλμα που κάνουμε όταν αγνοούμε μικρούς όρους στους μαθηματικούς τύπους Για να φράξουμε το σφάλμα που κάνουμε όταν αγνοούμε μέρη ενός προγράμματος τα οποία συμβάλλουν κατά ένα μικρό ποσοστό στο συνολικό πρόγραμμα που αναλύουμε Για να μπορούμε να ταξινομήσουμε τους αλγορίθμους με βάση τα άνω φράγματα των συνολικών χρόνων εκτέλεσής τους Δομές Δεδομένων, 3ο Εξάμηνο 41

Ασυμπτωτικός Συμβολισμός Ειδικές κατηγορίες αλγορίθμων: σταθερού χρόνου (constant time) O(1) λογαριθμικός (logarithmic) O(log n) γραμμικός (linear) O(n) n log n O(n log n) δευτεροβάθμιος (quadratic) O(n 2 ) πολυωνυμικός (polynomial) O(n k ), k > 1 εκθετικός (exponential) O(a n ), n > 1 O(1) < O(logn) < O(n) < O(nlogn) < O(n 2 ) < O(n 3 ) < O(2 n ) Δομές Δεδομένων, 3ο Εξάμηνο 42

Παραδείγματα Πολυπλοκότητα Δομές Δεδομένων, 3ο Εξάμηνο 43

Παράδειγμα 1: Υπολογισμός χρόνου εκτέλεσης Ανάλυση H βασική πράξη k+=i; χρειάζεται Ο(1) χρόνο Ο αλγόριθµος εκτελεί τη βασική πράξη n φορές O αλγόριθµος έχει πολυπλοκότητα της τάξης O(n) Δομές Δεδομένων, 3ο Εξάμηνο 44

Παράδειγμα 2: Υπολογισμός χρόνου εκτέλεσης int sum=0; for (i=0; i<n; i++) for (j=0; j<n; j++) sum++; Εσωτερικός βρόχος Εξωτερικός βρόχος Δομές Δεδομένων, 3ο Εξάμηνο 45

Παράδειγμα 3: Υπολογισμός χρόνου εκτέλεσης for (i=1; i<=n; i++) for (j=1; j<=i*i; j++) sum++; Εσωτερικός βρόχος : Εξωτερικός βρόχος: Εκτελείται n φορές Συνολικά: Δομές Δεδομένων, 3ο Εξάμηνο 46

Παράδειγμα 4: Υπολογισμός χρόνου εκτέλεσης int sum=0; for (i=0; i<n; i++) if ((n mod 2) == 0) // n άρτιος for (j=0; j<n; j++) sum++ else // n περιττός sum--; Ανάλυση (Βασική πράξη πρόσθεση/αφαίρεση) α) N περιττός: β) N άρτιος: Δομές Δεδομένων, 3ο Εξάμηνο 47

Παράδειγμα Ασυμπτωτικής Ανάλυσης Αλγόριθμος για τον υπολογισμό των προθεματικών μέσων: Algorithm prefixaverages1(x) Input: An n-element array X of numbers. Output: An n-element array A of numbers such that A[i] is the average of elements X[0],, X[i]. Let A be an array of n numbers. for i 0 to n-1 do a 0 for j 0 to i do a a + X[j] A[i] a/(i+1) return array A Ανάλυση O(n 2 ) Δομές Δεδομένων, 3ο Εξάμηνο 48