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

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

Ανω Φράγµα στην Τάξη των Συναρτήσεων. Ρυθµός Αύξησης (Τάξη) των Συναρτήσεων. Παράδειγµα (1/2) O( g(n) ) είναι σύνολο συναρτήσεων:

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

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

Παραδείγµατα. Τάξη των Συναρτήσεων (1) Παράδειγµα (2) Να δειχθεί ότι 7n 2 = O(n 3 ). Ορέστης Τελέλης

Προηγούµενο: Ανω Φράγµα στην Τάξη των Συναρτήσεων. Ρυθµός Αύξησης (Τάξη) των Συναρτήσεων. Σύνοψη Ιδιοτήτων

Αρχή Εγκλεισµού-Αποκλεισµού (3 σύνολα) Αρχή Εκλεισµού-Αποκλεισµού Η Τάξη των Συναρτήσεων. Εφαρµογές. Παράδειγµα 1.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ιακριτά Μαθηµατικά Ορέστης Τελέλης Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Σύνολα 1 / 36

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

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

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

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

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος.

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

Επανάληψη για τις Τελικές εξετάσεις

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

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

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

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

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

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

Θεωρητικό Μέρος. 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); } }

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

Μοντελοποίηση προβληµάτων

Υπολογιστικό Πρόβληµα

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

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

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

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

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

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις

Κλάσεις και Αντικείµενα

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

ΑΕΠΠ Ερωτήσεις θεωρίας

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

Α. Ερωτήσεις Ανάπτυξης

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

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

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

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

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

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

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

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

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 2. Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.1, 12/05/2010

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

5.1. Προσδοκώμενα αποτελέσματα

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

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E.

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

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

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

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

Αριθµητική Ανάλυση 1 εκεµβρίου / 43

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

Wrapper Classes, Abstract Classes and Interfaces

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

Week. 6: Java Collections

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΗΡΕΣΙΩΝ 2005

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι

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

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

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

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

Transcript:

Γνωριµία ιδάσκων: οµές εδοµένων Εισαγωγή Ορέστης Τελέλης e-mail: telelis@unipi.gr Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ωρες γραφείου (502, Γρ.Λαµπράκη 126): Τρίτη 11:00 13:00 Πέµπτη 11:00-13:00 Και κατόπιν συνεννόησης Ηµέρα/ Ωρα µαθήµατος: Πέµπτη 8:15 11:00 Αίθουσα: 108 (Επώνυµα από Α Λ) (Επώνυµα από Μ Ω: Αιθ. 104, Πέµπτη 14:15-17:00, µε τον κ. Χρήστο ουλκερίδη) Ο. Τελέλης οµές εδοµένων 1 / 57 Ο. Τελέλης οµές εδοµένων 2 / 57 Επικοινωνία Βιβλία Μαθήµατος Ιστοσελίδα µαθήµατος: http://evdoxos.ds.unipi.gr/courses/ds100/ Θέµατα και υλικό σχετικά µε το µάθηµα ΙΑΛΕΞΕΙΣ Lafore R. (2005): οµές εδοµένων και Αλγόριθµοι στη JAVA (µεταφρασµένο), Εκδόσεις Μ. Γκιούρδας. ΑΝΑΚΟΙΝΩΣΕΙΣ ΕΚΦΩΝΗΣΕΙΣ ΕΡΓΑΣΙΩΝ ΠΑΡΑ ΟΣΗ ΕΡΓΑΣΙΩΝ ΒΟΗΘΗΤΙΚΟ ΥΛΙΚΟ... Αρα εγγραφείτε στο µάθηµα! M. Goodrich, R. Tamassia (2013): οµές εδοµένων και Αλγόριθµοι σε Java, (µεταφρ. Μ. Χατζόπουλος), Εκδόσεις ίαυλος. ιαβάστε το βιβλίο, οι διαφάνειες δεν αρκούν! Ο. Τελέλης οµές εδοµένων 3 / 57 Ο. Τελέλης οµές εδοµένων 4 / 57

Επιπλέον Πηγές Βαθµολογία ύο (2) Προγραµµατιστικές Εργασίες ( Π1, Π2 ). ( 20% έκαστη ) Γραπτή Εξέταση ( Ε ). ( 70% ) Sedgewick R. (2005): Αλγόριθµοι σε Java,Τόµοι 1-4, 3η αµερικάνικη έκδοση (µεταφρασµένο), Εκδόσεις Κλειδάριθµος. T. H. Cormen, C. E. Leiserson, R. Rivest, C. Stein. Εισαγωγή στους Αλγορίθµους. Τόµος Ι (Μεταφρασµένος). Πανεπιστηµιακές Εκδόσεις Κρήτης, 2006. Βαθµολογία ( Β ): Τελικός Βαθµός: Β = B 0 = 0.7 Ε + 0.2 (Π1 + Π2) { min{ 10, B0, αν Ε 4 min{ 4, B 0, αν Ε < 4 ηλαδή: η (ϐαθµολογική) επιτυχία στο µάθηµα απαιτεί Ε 4. ΠΡΟΣΟΧΗ!!! Οι εργασίες του µαθήµατος παραδίδονται ΜΟΝΟ στην περίοδο της διδασκαλίας του. ΟΧΙ το Σεπτέµβριο (ΟΧΙ τον Ιούνιο, αν υπάρξει εξέταση). Ο. Τελέλης οµές εδοµένων 5 / 57 Ο. Τελέλης οµές εδοµένων 6 / 57 Εργαστήρια Σκοπός Μαθήµατος ιδάσκουσα: ρ. Βασιλική Κούφη. 3-4 διαφορετικά (ανάλογα µε τη διαθεσιµότητα ϕυσικών χώρων). Προαιρετικά. Για την ενίσχυση της κατανόησης των δοµών και των σχετικών αλγορίθµων. Παρουσίαση ϐασικών δοµών δεδοµένων. Η χρήση τους στην ανάπτυξη προγραµµάτων. Για την εµπειρία υλοποίησης αλγοριθµικών κατασκευών. Σας µένει ο κώδικας που ϑα γράψουµε στα εργαστήρια. Υλοποίηση δοµών µε χρήση της γλώσσας προγραµµατισµού Java. 4 Τµήµατα ( 2 για καθένα από τα τµήµατα Α-Λ, Μ-Ω ) ϑα ανακοινωθούν. Βασικές γνώσεις της Java θεωρούνται προαπαιτούµενο. Ωρες και Τόπος: ϑα ανακοινωθούν. Απευθύνονται κατά προτεραιότητα στους φοιτητές του 2ου Ετους Ο. Τελέλης οµές εδοµένων 7 / 57 Ο. Τελέλης οµές εδοµένων 8 / 57

Περιεχόµενα Μαθήµατος Ανάλυση Αλγορίθµων. 1 Πίνακες. 2 Ουρές και Στοίβες. 3 Συνδεδεµένες Λίστες. Αναδροµή. Ταξινόµηση. Απλά Συνδεδεµένες. ιπλά Συνδεδεµένες. Κυκλικά Συνδεδεµένες. οµές ένδρων 1 υαδικά ένδρα Αναζήτησης. 2 ένδρα AVL. 3 Κοκκινό-µαυρα ένδρα. 4 ένδρα 2 3 4. 5 ένδρα B. Σωροί και Ουρές Προτεραιότητας. Πίνακες Κατακερµατισµού. Γραφήµατα. Εισαγωγικές Εννοιες Ο. Τελέλης οµές εδοµένων 9 / 57 Ο. Τελέλης οµές εδοµένων 10 / 57 οµές εδοµένων & Αλγόριθµοι οµές εδοµένων ιευθέτηση ή οργάνωση δεδοµένων στη µνήµη (ή στο δίσκο). Πίνακες, Συνδεδεµένες Λίστες, Ουρές, Στοίβες. υαδικά ένδρα, Σωροί. Πίνακες Κατακερµατισµού, Γράφοι. Αλγόριθµοι ιαδικασία εκτέλεσης µιας συγκεκριµένης εργασίας Χειρίζονται τα δεδοµένα που ϐρίσκονται αποθηκευµένα στις δοµές δεδοµένων µε διάφορους τρόπους Αναζήτηση, εισαγωγή, διαγραφή, ταξινόµηση Χρησιµότητα οµών εδοµένων Αποθήκευση πραγµατικών δεδοµένων Παραδείγµατα: Σύστηµα κράτησης εισιτηρίων Βάση δεδοµένων αδειών οδήγησης... Προγραµµατιστικά Εργαλεία: Χρησιµοποιούνται εργαλεία για τη διεκπεραίωση µιας µεγαλύτερης λειτουργίας Μοντελοποίηση πραγµατικού κόσµου Παράδειγµα: Γραφήµατα για αναπαράσταση δροµολογίων αεροπλάνων µεταξύ πόλεων Γραφήµατα για αναπαράσταση σχέσεων σε ένα κοινωνικό δίκτυο Σωστή επιλογή δοµής δεδοµένων δηµιουργεί προϋποθέσεις σηµαντικών ϐελτιώσεων στην αποτελεσµατικότητα ενός προγράµµατος Ο. Τελέλης οµές εδοµένων 11 / 57 Ο. Τελέλης οµές εδοµένων 12 / 57

Αλγόριθµοι Παραδείγµατα Πολλοί αλγόριθµοι «εργάζονται» απευθείας σε συγκεκριµένες δοµές. Για τις δοµές δεδοµένων, πρέπει να γνωρίζουµε πώς υλοποιούνται τρεις ϐασικές λειτουργίες. οµή δεδοµένων Πίνακας 45 23 28 95 71 19 οµή δεδοµένων Συνδεδεµένη λίστα a b c Εισαγωγή νέων δεδοµένων Αναζήτηση συγκεκριµένου στοιχείου ιαγραφή συγκεκριµένου στοιχείου Αλγόριθµος Αναζήτηση Εισαγωγή ιαγραφή Αλγόριθµος Αναζήτηση Εισαγωγή ιαγραφή Ο. Τελέλης οµές εδοµένων 13 / 57 Ο. Τελέλης οµές εδοµένων 14 / 57 Υπόλοιπο Σηµερινού Μαθήµατος... Αντικειµενοστρεφής Προγραµµατισµός Αντικειµενοστρεφής Προγραµµατισµός (Object-Oriented Programming) Ανάλυση & Πολυπλοκότητα Αλγορίθµων Ο. Τελέλης οµές εδοµένων 15 / 57 Ο. Τελέλης οµές εδοµένων 16 / 57

Αντικειµενοστρεφής Προγραµµατισµός Κλάσεις (Classes) Αντικείµενα (αντιδιαστολή µε διαδικαστικές γλώσσες προγραµµατισµού). Πιο κοντά στα πραγµατικά αντικείµενα. Ανάγκη ύπαρξης πολλών αντικειµένων του ίδιου τύπου Κλάση: προδιαγραφή για ένα ή περισσότερα αντικείµενα Αντιµετώπιση προβληµάτων που δηµιουργούνται από καθολικά δεδοµένα Αντικείµενο thermostat: Μεταβλητές currenttemp, desiredtemp µπορούν να προσπελαστούν µόνο από τις µεθόδους f_on(), f_off() Το αντικείµενο περιέχει: class Thermostat { private float currenttemp; private float desiredtemp; // Variable // Variable Μεθόδους public void f_on(){... // Method Μεταβλητές public void f_off(){... // Method Ο. Τελέλης οµές εδοµένων 17 / 57 Ο. Τελέλης οµές εδοµένων 18 / 57 ηµιουργία Αντικειµένων Για δηµιουργία αντικειµένων χρησιµοποιείται η εντολή new: Thermostat therm1, therm2; // Declaration of References therm1 = new Thermostat(); // Object creation therm2 = new Thermostat(); // Object creation Προσπέλαση µεθόδων αντικειµένων: class List { // Variables // store the items in an array private Object [] items; // the current # of items in the list private int numitems; // Methods public List() { // constructor function items = new Object[10]; numitems = 0; therm1.f_on(); Μέθοδοι κατασκευής (constructor): Καλείται αυτόµατα κάθε ϕορά που δηµιουργείται ένα νέο αντικείµενο. // AddToEnd: add a given item to the end of the list public void AddToEnd(Object ob) {... Ο. Τελέλης οµές εδοµένων 19 / 57 Ο. Τελέλης οµές εδοµένων 20 / 57

Κληρονοµικότητα (Inheritance) Πολυµορφισµός Η αντιµετώπιση αντικειµένων που ανήκουν σε διαφορετικές κλάσεις µε τον ίδιο τρόπο Προϋπόθεση: οι κλάσεις αυτές να παράγονται από την ίδια base class class Employee {......... class Secretary extends Employee {......... class Manager extends Employee {......... private Collection<Employee> emps; emps = new ArrayList<Employee>(); class MountainBike extends Bicycle { // new fields and methods defining a mountain bike would go here emps.add(new Secretary("X")); emps.add(new Manager("Y")); for (Employee e : emps) { System.out.println(e.display()); Ο. Τελέλης οµές εδοµένων 21 / 57 Ο. Τελέλης οµές εδοµένων 22 / 57 Περίγραµµα Ανάλυση Αλγορίθµων Τι είναι η ανάλυση αλγόριθµου; Κριτήρια ανάλυσης αλγορίθµων. Πως εκτιµούµε το χρόνο εκτέλεσης ενός αλγόριθµου; Ο. Τελέλης οµές εδοµένων 23 / 57 Ο. Τελέλης οµές εδοµένων 24 / 57

Ανάλυση Αλγορίθµων: Ορισµοί Ανάλυση Αλγορίθµων: Κριτήρια Αλγόριθµος: Αλγόριθµος είναι µια πεπερασµένη ακολουθία σαφών οδηγιών (ϐηµάτων) για την εκτέλεση ενός υπολογισµού ή την επίλυση ενός προβλήµατος. Πρόγραµµα (Υλοποίηση): Τυπική περιγραφή αλγόριθµου σε µία γλώσσα προγραµµατισµού. Ροή Εργασίας: Πρόβληµα = Αλγόριθµος = Ελεγχος ορθότητας = Καθορισµός Πόρων Ορθότητα. Απαιτεί σαφή διατύπωση της αναµενόµενης λειτουργίας. Περιγραφή συνθηκών που πρέπει να πληρούν τα δεδοµένα εισόδου. Αναµενόµενα αποτελέσµατα. Οταν τα δεδοµένα εισόδου ικανοποιούν τις αναγκαίες συνθήκες: ο αλγόριθµος τερµατίζει παράγοντας τα αναµενόµενα αποτελέσµατα. Απαιτήσεις σε µνήµη. δεδοµένα εισόδου, Μνήµη που απαιτείται για να αποθηκευτούν: επιπλέον ενδιάµεσα δεδοµένα που δηµιουργεί/χρησιµοποιεί ο αλγόριθµος Χρόνος εκτέλεσης. Ταχύτητα εκτέλεσης των λειτουργιών για την ολοκλήρωση υπολογισµών. Ο. Τελέλης οµές εδοµένων 25 / 57 Ο. Τελέλης οµές εδοµένων 26 / 57 Ανάλυση Αλγορίθµων: Εισαγωγή Προσεγγίσεις Ανάλυσης Αλγόριθµου Η ανάγκη επεξεργασίας µεγάλου όγκου δεδοµένων απαιτεί τη χρήση υπολογιστή. Οταν ένα πρόγραµµα «τρέχει» σε µεγάλο όγκο δεδοµένων πρέπει να ϐεβαιωθούµε ότι ϑα τερµατίσει µέσα σε αποδεκτά χρονικά πλαίσια. Ο χρόνος εκτέλεσης, για δεδοµένο υλικό εξαρτάται από: Πειραµατική Θεωρητική 1 Γλώσσα προγραµµατισµού / Μεταγλωττιστή / ιερµηνευτή. 2 Μεθοδολογία (διαδικαστική vs. αντικειµενοστρεφή). 3 Επιλογή αλγορίθµου και δοµών δεδοµένων. Ο. Τελέλης οµές εδοµένων 27 / 57 Ο. Τελέλης οµές εδοµένων 28 / 57

Πειραµατική Μελέτη Περιορισµοί Πειραµατικής Μελέτης Γράψε ένα πρόγραµµα που να υλοποιεί τον αλγόριθµο. «Τρέξε» τον αλγόριθµο χρησιµοποιώντας δεδοµένα εισόδου διαφορετικού µεγέθους και σύνθεσης. Μέτρησε το χρόνο εκτέλεσης (runtime). Σχεδίασε τη γραφική παράσταση των αποτελεσµάτων. Απαραίτητη η (τυπική) υλοποίηση του αλγόριθµου: µπορεί να έχει τεχνικές δυσκολίες (σε σχέση µε την άτυπη περιγραφή), µπορεί να είναι χρονοβόρα (π.χ., πολλαπλές µικρότερες διαδικασίες) Καλή κλιµάκωση των δεδοµένων εισόδου; Σύγκριση δύο αλγορίθµων απαιτεί: Ιδιο µηχανικό εξοπλισµό (hardware) Ιδιο λογισµικό (software). Τα αποτελέσµατα πρέπει να είναι αναπαράξιµα! Ο. Τελέλης οµές εδοµένων 29 / 57 Ο. Τελέλης οµές εδοµένων 30 / 57 Θεωρητική Ανάλυση Τι είναι η Ανάλυση Αλγόριθµου Χρήση υψηλού επιπέδου περιγραφής του αλγορίθµου: και όχι της τυπικής υλοποίησης σε κάποια γλώσσα προγραµµατισµού. Χρόνος εκτέλεσης ως συνάρτηση του µεγέθους της εισόδου ( n ). Ανάλυση αλγόριθµου: Ο χρόνος που απαιτείται για την εκτέλεση ενός αλγόριθµου εξαρτάται από το µέγεθος της εισόδου που πρέπει να επεξεργαστεί. Περισσότερα δεδοµένα εισόδου = Μεγαλύτερος χρόνος εκτέλεσης. Ενδιαφέρει η συµπεριφορά της συνάρτησης καθώς το n αυξάνει αυθαίρετα. Χρόνος εκτέλεσης προγράµµατος = F(Input Size) Ανω ϕράγµα χρόνου «χειρότερης περίπτωσης» (για οποιαδήποτε είσοδο). Η ακριβής τιµή της συνάρτησης F εξαρτάται από πολλούς παράγοντες: Αξιολόγηση αλγορίθµου ανεξάρτητα από εξοπλισµό, υλοποίηση, κ.λ.π. Μετρά στοιχειώδεις λειτουργίες (ϐήµατα) και όχι πραγµατικό χρόνο. ταχύτητα της µηχανής, ποιότητα µεταγλωττιστή, ποιότητα προγράµµατος. Ο. Τελέλης οµές εδοµένων 31 / 57 Ο. Τελέλης οµές εδοµένων 32 / 57

100 90 Linear O(NlogN) Quadratic Cubic 100 90 Linear O(NlogN) Quadratic Cubic 80 80 70 70 Running Time 60 50 40 Running Time 60 50 40 30 30 20 20 10 10 2 4 6 8 10 12 14 16 18 20 Input Size N 5 10 15 20 25 30 35 40 Input Size N Ο. Τελέλης οµές εδοµένων 33 / 57 Ο. Τελέλης οµές εδοµένων 33 / 57 Μέση vs. Χειρότερη Περίπτωση Χρόνου Εκτέλεσης Ασυµπτωτικές προσεγγίσεις: συµβολισµός O( ) Από τις πιο συνηθισµένες συναρτήσεις που συναντώνται στην ανάλυση αλγορίθµων, η γραµµική αντιστοιχεί στον πιο αποδοτικό αλγόριθµο (γιατί;) Ενας αλγόριθµος µπορεί να εκτελείται γρηγορότερα µε συγκεκριµένα σύνολα δεδοµένων από ότι µε κάποια άλλα. Η εύρεση της µέσης περίπτωσης µπορεί να είναι πολύ δύσκολη, έτσι οι αλγόριθµοι τυπικά µετρώνται µε ϐάση τη χειρότερη περίπτωση πολυπλοκότητας. Σε συγκεκριµένα πεδία εφαρµογής (π.χ. air traffic control, surgery) η γνώση της χειρότερης περίπτωσης πολυπλοκότητας είναι πολύ σηµαντική.. Η σύγκριση συναρτήσεων για µικρά σύνολα εισόδου είναι δύσκολη. Οι σταθερές ϕαίνεται να επηρεάζουν σηµαντικά τη συνάρτηση. Οι διαφορές ανάµεσα στις καµπύλες που αντιπροσωπεύουν την αύξηση της συνάρτησης χρόνου εκτέλεσης αλγορίθµων είναι ευδιάκριτες για µεγάλα σύνολα δεδοµένων. Γενικά: Οι δευτεροβάθµιας πολυπλοκότητας ( O(N 2 ) ) αλγόριθµοι δεν είναι πρακτικοί για δεδοµένα εισόδου που ξεπερνούν τις µερικές χιλιάδες. Οι κυβικής πολυπλοκότητας ( O(N 3 ) ) αλγόριθµοι γίνονται µη πρακτικοί για µεγέθη δεδοµένων εισόδου τόσο µικρά, όσο µερικές εκατοντάδες. Ο. Τελέλης οµές εδοµένων 34 / 57 Ο. Τελέλης οµές εδοµένων 35 / 57

Ασυµπτωτικές προσεγγίσεις: συµβολισµός O( ) Ασυµπτωτικός Συµβολισµός Ορισµός: Για συναρτήσεις: f : N R + και g : N R + ορίζουµε: Χρειαζόµαστε ένα τυπικό συµβολισµό για να προσδιορίσουµε τον επικρατέστερο όρο σε µία συνάρτηση και να αναπαραστήσουµε το ϱυθµό αύξησης. O( ) συµβολισµός επιτρέπει να ορίσουµε µια σχετική σειρά ανάµεσα στις συναρτήσεις συγκρίνοντας τους επικρατέστερους όρους. f(n) O( g(n) ) αν υπάρχουν σταθερές C R +, n 0 N + τέτοιες ώστε: f(n) C g(n), για κάθε n n 0 ( ) O( g(n) ) είναι το το σύνολο όλων των συναρτήσεων f, για τις οποίες ισχύει η σχέση ( ) (µε κατάλληλα C και n 0 για κάθε διαφορετική f). Εχει επικρατήσει να γράφουµε απλώς f(n) = O( g(n) ). Οµως εννοούµε, και όχι ισότητα!!! Το «=» αυτό δεν είναι συµµετρικό δε γράφουµε O( g(n) ) = f(n). Ο. Τελέλης οµές εδοµένων 36 / 57 Ο. Τελέλης οµές εδοµένων 37 / 57 Φυσική Ερµηνεία Παράδειγµα (1α) cg(n) Παράδειγµα: η f(n) = n 2 + 2n + 1 είναι O(n 2 ). f(n) Παρατηρούµε ότι για n 1 έχουµε n n 2, 1 n 2, εποµένως: f(n) = n 2 + 2n + 1 < n 2 + 2n 2 + n 2 = 4n 2 n 0 f = O(g) Η f(n) µεγαλώνει το πολύ τόσο γρήγορα όσο ένα σταθερό πολλαπλάσιο της g(n), καθώς το n πηγαίνει στο άπειρο. Εποµένως, µπορούµε να ϑέσουµε n 0 = 1 και C = 4. Εναλλακτικά, ϑα µπορούσαµε να ϑέσουµε επίσης n 0 = 2 και C = 3. Ο. Τελέλης οµές εδοµένων 38 / 57 Ο. Τελέλης οµές εδοµένων 39 / 57

Παράδειγµα (1β) Παραδείγµατα (2) 8 6 n 2 + 2n + 1 4n 2 n 2 Παράδειγµα: 7n 3 O(n) Τεκµηρίωση: 4 2 0 0 1 2 3 4 5 Ο. Τελέλης οµές εδοµένων 40 / 57 Ο. Τελέλης οµές εδοµένων 41 / 57 Παραδείγµατα (2) Παράδειγµα (3) Παράδειγµα: 20n 3 + 10n log n + 5 O(n 3 ) Παράδειγµα: 7n 3 O(n) Τεκµηρίωση: Τεκµηρίωση: Υπάρχουν c, n 0 τέτοια ώστε 7n 3 c n, για κάθε n n 0. Θέτουµε c = 7, n 0 = 1. Τότε: 7n 3 7n, για κάθε n 1. Ο. Τελέλης οµές εδοµένων 41 / 57 Ο. Τελέλης οµές εδοµένων 42 / 57

Παράδειγµα (3) Υπολογισµός O( ) Παράδειγµα: 20n 3 + 10n log n + 5 O(n 3 ) Τεκµηρίωση: Υπάρχουν c, n 0 τέτοια ώστε: 20n 3 + 10n log n + 5 c n 3, για κάθε n n 0 Ισχύουν: 20n 3 20 n 3 για κάθε n 1 10n log n 10 n 3 για κάθε n 1 5 5 n 3 για κάθε n 1 Εποµένως: 20n 3 + 10n log n + 5 (20 + 10 + 5) n 3 = 35 n 3 Αρα, c = 35 και n 0 = 1. Παρότι αληθεύει ότι 7n 3 είναι O(n 5 ), ο O( ) χαρακτηρισµός πρέπει να είναι όσο το δυνατό πιο µικρής τάξης. Απλοί κανόνες Παράδειγµα: αγνόησε τις σταθερές. επίλεξε τη συνάρτηση του n που αυξάνεται ταχύτερα. Εστω ότι ένας αλγόριθµος έχει την ακόλουθη συνάρτηση αύξησης: f(n) = 16n 2 + 3n + 7 = n 2 + n - σβήσε τις σταθερές = n 2 - σβήσε τις µικρότερες τιµές του n Εστω f(n) = 8n 2 log n + 5n 2 + n = O(n 2 log n) Ο. Τελέλης οµές εδοµένων 42 / 57 Ο. Τελέλης οµές εδοµένων 43 / 57 O( )-Ιεραρχία Απλών Συναρτήσεων O( )-Ιεραρχία Απλών Συναρτήσεων Ενδεικτικοί Χρόνοι Εκτέλεσης Αλγορίθµων σταθερού χρόνου (constant time) λογαριθµικός (logarithmic) O(1) O(logn) Στον άξονα y απεικονίζεται η τιµή log[f(n)], για κάθε συνάρτηση f(n) 10 5 n! n 10 2 10 4 γραµµικός (linear) O(n) nlogn O(nlogn) τετραγωνικός (quadratic) O(n 2 ) πολυωνυµικός (polynomial) O(n k ), k > 1 10 3 10 2 10 1 10 0 2 n n 2 n log n n log n 1 10 1 10 0 n log n log log n 1 εκθετικός (exponential) O(a n ), n > 1 2 4 6 8 10 50 100 150 200 O(1) O(log n) O(n) O(n log n) O(n 2 ) O(n 3 ) O(2 n ) O(1) O(log log n) O(log n) O((log n) 2 ) O( n) O(n) O(n 2 ) O(2 n ) O(n!) Ο. Τελέλης οµές εδοµένων 44 / 57 Ο. Τελέλης οµές εδοµένων 45 / 57

Βασικές Ιδιότητες του O( ) Παραδείγµατα Πολυώνυµα f(n) = a p n p + + a 1 n + a 0, για p N, = f(n) = O(n p ). f 1 (n) = O( g 1 (n) ) f 2 (n) = O( g 2 (n) ) ( { ) = (f 1 + f 2 )(n) = O max g 1 (n), g 2 (n) Να δοθεί εκτίµηση O(g(n)) για καθεµία από τις παρακάτω συναρτήσεις, µε χρήση µιας απλής συνάρτησης g(n) της µικρότερης δυνατής τάξης. f(n) = (n 3 + n 2 log n)(log n + 1) + (17 log n + 19)(n 3 + 2) f 1 (n) = O( g(n) ) f 2 (n) = O( g(n) ) = (f 1 + f 2 )(n) = O( g(n) ) f(n) = (2 n + n 2 )(n 3 + 3 n ) f(n) = (n n + n2 n + 5 n )(n! + 5 n ) f 1 (n) = O( g 1 (n) ) f 2 (n) = O( g 2 (n) ) = (f 1 f 2 )(n) = O( g 1 (n)g 2 (n) ) f(n) = (n log n + 1) 2 + (log n + 1)(n 2 + 1) Ο. Τελέλης οµές εδοµένων 46 / 57 Ο. Τελέλης οµές εδοµένων 47 / 57 Γιατί Χρησιµοποιούµε το Συµβολισµό O( ); Για να ϕράξουµε το σφάλµα που κάνουµε όταν αγνοούµε µικρούς όρους στους µαθηµατικούς τύπους. Για να ϕράξουµε το σφάλµα που κάνουµε όταν αγνοούµε µέρη ενός προγράµµατος τα οποία συµβάλλουν κατά ένα µικρό ποσοστό στο συνολικό πρόγραµµα που αναλύουµε. Παραδείγµατα Ανάλυσης Πολυπλοκότητας Για να µπορούµε να ταξινοµήσουµε τους αλγορίθµους µε ϐάση τα άνω ϕράγµατα των συνολικών χρονων εκτέλεσής τους. Ο. Τελέλης οµές εδοµένων 48 / 57 Ο. Τελέλης οµές εδοµένων 49 / 57

Παράδειγµα 1 Παράδειγµα 1 int k = 0; for (int i = 0; i < n; i++) k += i; int k = 0; for (int i = 0; i < n; i++) k += i; Ανάλυση Ανάλυση Η στοιχειώδης πράξη k+=i; αποτελεί ένα (1) ϐήµα (χρόνου O(1) ). Ο αλγόριθµος εκτελεί τη ϐασική πράξη n ϕορές. 1 = n 0 i<n Ο αλγόριθµος έχει πολυπλοκότητα O(n). Ο. Τελέλης οµές εδοµένων 50 / 57 Ο. Τελέλης οµές εδοµένων 50 / 57 Παράδειγµα 2 Παράδειγµα 2 int sum=0; for (i = 0; i < n; i++) for (j = 0; j < n; j++) sum++; // External Loop // Internal Loop int sum=0; for (i = 0; i < n; i++) for (j = 0; j < n; j++) sum++; // External Loop // Internal Loop Ανάλυση Ανάλυση Εξωτερικός Βρόχος: ( ) χρόνος εσωτερικού ϐρόχου 0 j<n Εσωτερικός Βρόχος: 0 i<n 1 = n ( ) = n χρόνος εσωτερικού ϐρόχου Ολικός χρόνος εκτέλεσης: n 1 n 1 1 = n n = O(n 2 ) j=0 i=0 Ο. Τελέλης οµές εδοµένων 51 / 57 Ο. Τελέλης οµές εδοµένων 51 / 57

Παράδειγµα 3 Παράδειγµα 3 for (i = 1; i <= n; i++) for (j = 1; j <= i*i; j++) sum++; for (i = 1; i <= n; i++) for (j = 1; j <= i*i; j++) sum++; Ανάλυση Ανάλυση Εξωτερικός Βρόχος: n ( ) χρόνος εσωτερικού ϐρόχου(i) i=1 i i Εσωτερικός ϐρόχος: 1 = i 2. j=1 Συνολικά: n i i 1 = i=1 j=1 n i 2 = i=1 n(n + 1)(2n + 1) 6 = O(n 3 ) Ο. Τελέλης οµές εδοµένων 52 / 57 Ο. Τελέλης οµές εδοµένων 52 / 57 Παράδειγµα 4 Παράδειγµα 4 int sum=0; for (i=0; i<n; i++) if ((n mod 2) == 0) // n even for (j=0; j<n; j++) sum++; else // n odd sum--; Ανάλυση int sum=0; for (i=0; i<n; i++) if ((n mod 2) == 0) // n even for (j=0; j<n; j++) sum++; else // n odd sum--; Ανάλυση 1 Εξωτερικός ϐρόχος: n επαναλήψεις 2 Εσωτερικός ϐρόχος: n επαναλήψεις εκτελείται µόνο αν n άρτιος!..., αλλιώς (αν n περιττός), O(1) χρόνος. 3 Εποµένως, ολικός χρόνος: αν n άρτιος O(n 2 ), αν n περιττός, O(n). 4 Χρόνος Χειρότερης Περίπτωσης: O(n 2 ). Ο. Τελέλης οµές εδοµένων 53 / 57 Ο. Τελέλης οµές εδοµένων 53 / 57

Παράδειγµα 5 Αλγόριθµος υπολογισµού προθεµατικών µέσων Είσοδος: πίνακας n αριθµητικών στοιχείων. Εξοδος: πίνακας n αριθµών όπου ο A[i] είναι ο µέσος όρος των X[0],..., X[i]. for (int i = 0; i < n; i++) { int a = 0; for (int j = 0; j < i; j++) { a = a + X[j]; A[i] = a/(i+1); return A; Στοιχειώδεις πράξεις: πρόσθεση, διαίρεση, ανάθεση τιµής, ανάγνωση τιµής. Ο. Τελέλης οµές εδοµένων 54 / 57 Παράδειγµα 5 (Ανάλυση) Εντός του Εξωτερικού και Εκτός του Εσωτερικού) Βρόχου: c = O(1), d = O(1) Στοιχειώδεις Πράξεις. n 1 ( ) Εξωτερικός Βρόχος: c + χρόνος εσωτερικού ϐρόχου(i) i=0 i Εσωτερικός ϐρόχος: d = d (i + 1), d = O(1). j=0 ( ) n 1 i n 1 Συνολικά: c + d c n + d (i + 1) = c n + d i=0 j=0 i=0 n i = c n + d 2 n(n + 1) = O(n2 ) i=1 Ο. Τελέλης οµές εδοµένων 55 / 57 Πιο Απλή Ανάλυση Παράδειγµα 6 Ο εξωτερικός ϐρόχος εκτελείται n ϕορές (για i = 0,..., n 1). Εντός του (και εκτός του εσωτερικού): O(1) στοιχειώδες πράξεις. Ο εσωτερικός ϐρόχος εκτελείται i + 1 ϕορές, για i = 0,..., n 1. Αρα, (ο εσωτερικός) εκτελείται το πολύ n ϕορές, για i = 0,..., n 1. Εντός του εωτερικού ϐρόχου συµβαίνουν O(1) στοιχειώδεις πράξεις. Συνολικά: n (O(1) + n O(1)) = O(n 2 ). Βελτιωµένος Αλγόριθµος υπολογισµού προθεµατικών µέσων Είσοδος: πίνακας n αριθµητικών στοιχείων. Εξοδος: πίνακας n αριθµών όπου ο A[i] είναι ο µέσος όρος των X[0],..., X[i]. int s = 0; for(int i = 0; i < n; i++) { s = s + X[i]; A[i] = s/(i+1); return A; Πολυπλοκότητα; Ο. Τελέλης οµές εδοµένων 56 / 57 Ο. Τελέλης οµές εδοµένων 57 / 57