Δομές Δεδομένων και Αλγόριθμοι Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAAAAAAA
Στόχοι Μαθήματος Η σχεδίαση και ανάλυση αλγορίθμων και δομών δεδομένων αποτελεί σημαντικό τμήμα της πληροφορικής. Οι δομές δεδομένων συμβάλλουν στη σχεδίαση αποδοτικών αλγορίθμων. Το μάθημα καλύπτει σημαντικά αποτελέσματα, τεχνικές και εφαρμογές αλγορίθμων και δομών δεδομένων.
Περιεχόμενα Τεχνικές σχεδίασης αλγορίθμων και δομών δεδομένων για στατικά και δυναμικά προβλήματα. Αντισταθμιστική ανάλυση Αλγόριθμοι σε στατικά και δυναμικά γραφήματα και δίκτυα Διαχρονικές δομές δεδομένων Κινητικές δομές δεδομένων Ψηφιακά ευρετήρια Περιεκτικές δομές δεδομένων Αλγόριθμοι και δομές δεδομένων εξωτερική μνήμης Αλγόριθμοι για ρεύματα δεδομένων
Επισκόπηση Αντισταθμιστική ανάλυση αλγορίθμων Πολλές φορές ένας αλγόριθμος πραγματοποιεί μία ακολουθία πράξεων. Κάθε πράξη μπορεί να έχει διαφορετικό κόστος ανάλογα με την στιγμή που εκτελείται. Το κόστος μίας πράξης στη χειρότερη περίπτωση μπορεί να είναι πολύ μεγάλο. Το κόστος ανά πράξη σε μία ακολουθία πράξεων μπορεί να είναι κατά μέσο όρο αρκετά μικρότερο. Αντισταθμιστική ανάλυση: λαμβάνουμε το μέσο κόστος εκτέλεσης μίας πράξης όταν εκτελούμε μία ακολουθία πράξεων χειρότερης περίπτωσης
Επισκόπηση Αλγόριθμοι σε στατικά και δυναμικά γραφήματα και δίκτυα Πολλά σημαντικά προβλήματα μπορούν να μοντελοποιηθούν ως προβλήματα σε γραφήματα και δίκτυα Επιλογή κοντινότερων ή συντομότερων διαδρομών Μεταφορά υλικών σε οδικό δίκτυο ή δεδομένων σε τηλεπικοινωνιακό δίκτυο Χρονοπρογραμματισμός – Κατανομή πόρων Έλεγχος ροής προγραμμάτων και βελτιστοποιήσεις Στατικό πρόβλημα: Το γράφημα ή δίκτυο παραμένει αμετάβλητο 10/19 4/8 6/6 0/7 2/3 8/10 6/10 0/5 0/2 10/11 Δυναμικό πρόβλημα: Το γράφημα ή δίκτυο μεταβάλλεται (εισαγωγές ή διαγραφές ακμών, αλλαγή παραμέτρων βάρους, κόστους κλπ.)
Επισκόπηση Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής 52 52 Αποκατάσταση ισορροπίας εισαγωγή 20 39 73 39 73 21 46 62 80 20 46 62 80 18 18 21 20 Μια τέτοια δομή είναι εφήμερη: Δεν έχουμε πρόσβαση στις προηγούμενες καταστάσεις (εκδοχές) της δομής. Π.χ. δεν μπορούμε να απαντήσουμε σε ερωτήματα όπως «ήταν ο Χ μέλος του οργανισμού μας το 2005;» Διαχρονική δομή: Επιτρέπει την πρόσβαση σε όλες τις εκδοχές της δομής.
Επισκόπηση Κινητικές δομές δεδομένων Σε πολλές εφαρμογές θέλουμε να διατηρήσουμε πληροφορίες για ένα σύνολο κινούμενων αντικειμένων Παράδειγμα: Έχουμε Ν αντικείμενα που κινούνται κατακόρυφα με σταθερές αλλά ενδεχομένως διαφορετικές ταχύτητες. Θέλουμε να γνωρίζουμε σε κάθε χρονική στιγμή ποιο αντικείμενο βρίσκεται ψηλότερα
Επισκόπηση Ψηφιακά ευρετήρια Τα ισορροπημένα δυαδικά δένδρα επιτυγχάνουν λογαριθμικό χρόνο αναζήτησης, εισαγωγής και διαγραφής. Μπορούμε να επιτύχουμε πολύ ταχύτερους χρόνους αν εκμεταλλευτούμε την αναπαράσταση των κλειδιών ως ακολουθίες χαρακτήρων από ένα πεπερασμένο αλφάβητο (π.χ. δυαδικό). 000 011
Επισκόπηση Περιεκτικές δομές δεδομένων Τυπικοί τρόποι αναπαράστασης δομών, όπως π.χ. η αναπαράσταση δυαδικών δένδρων με 2 ή 3 δείκτες ανά κόμβο (για αριστερό παιδί, δεξί παιδί και γονέα), επιτρέπουν γρήγορη πρόσβαση αλλά σπαταλούν πολύ χώρο για την αποθήκευση βοηθητικών δεδομένων (π.χ. δεικτών). 11 α 01 11 β γ = [ 1101110001100000] 01 10 00 δ ε ζ 00 η θ 00 Μια περιεκτική δομή είναι οικονομική σε χώρο (π.χ. Ο(N) bits)
Επισκόπηση Αλγόριθμοι και δομές δεδομένων εξωτερικής μνήμης Πολλές σημαντικές εφαρμογές διαχειρίζονται ένα μεγάλο όγκο δεδομένων που είναι αποθηκευμένα σε εξωτερική μνήμη. Στις περιπτώσεις αυτές πρέπει να λάβουμε υπόψη το χρόνο που απαιτείται για τη μεταφορά δεδομένων από/προς την εξωτερική μνήμη. εξωτερική μνήμη Μοντέλο Εξωτερικής Μνήμης Απλοποιημένο μοντέλο ανάλυσης αλγορίθμων : Η εξωτερική μνήμη διαιρείται σε σελίδες και μία σελίδα περιέχει ένα μεγάλο αριθμό δεδομένων. Θεωρούμε ότι ο χρόνος των λειτουργιών εισόδου/εξόδου που απαιτείται για την ανάγνωση μιας σελίδας από την εξωτερική μνήμη είναι πολύ μεγαλύτερος από το χρόνο επεξεργασίας των δεδομένων της σελίδας. … … εσωτερική μνήμη CPU
Επισκόπηση Αλγόριθμοι για ρεύματα δεδομένων Η μετάδοση μεγάλου όγκου δεδομένων δημιουργεί την ανάγκη σχεδίασης αλγορίθμων, ικανών να αντιμετωπίσουν καταστάσεις όπου μπορεί να είναι δύσκολο να: μεταδοθούν όλα τα δεδομένα εισόδου, υπολογιστούν περίπλοκες συναρτήσεις πάνω σε πολλά δεδομένα, στο ρυθμό με τον οποίο γίνεται η μετάδοση, αποθηκευτεί (μόνιμα ή προσωρινά) ένα μεγάλο μέρος των δεδομένων.
Αξιολόγηση (~) 3 ατομικά σετ ασκήσεων 1 ομαδική εργασία - παρουσίαση Πληροφορίες και ανακοινώσεις μέσω της ιστοσελίδας του μαθήματος