Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

Σχετικά έγγραφα
Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

ιαφάνειες παρουσίασης #11

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

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

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

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Στοιχεία Θεωρίας Γράφων (Graph Theory)

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

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

Διάλεξη 29: Γράφοι. Διδάσκων: Παναγιώτης Ανδρέου

1 Διάσχιση κατευθυνόμενων γραφημάτων

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ

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

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

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

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

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Εισαγωγή στην Επιστήμη των Υπολογιστών

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Διδάσκων: Κωνσταντίνος Κώστα

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

Κεφάλαιο 3. Γραφήματα. v1.3 ( ) Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Γράφοι: κατευθυνόμενοι και μη

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

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

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

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

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

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

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

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Κεφάλαιο 3 : εδοµένα. Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση. Προγράµµατα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

Οντοκεντρικός Προγραμματισμός

Αλγόριθµοι + οµές εδοµένων = Προγράµµατα

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

Αλγόριθμοι Γραφημάτων

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

Κεφάλαιο 3. Γραφήματα. ver. 21/12/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

Ενότητα 10 Γράφοι (ή Γραφήµατα)

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

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

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

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

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

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

Οι δομές δεδομένων στοίβα και ουρά

Προγραμματισμός Η/Υ. Δομές Δεδομένων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Συλλογές, Στοίβες και Ουρές

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

Επίλυση Προβλημάτων 1

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου

Αναζήτηση στους γράφους. - Αναζήτηση η κατά βάθος Συνεκτικές Συνιστώσες - Αλγόριθμος εύρεσης συνεκτικών συνιστωσών

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

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

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

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

Βασικές Δομές Δεδομένων

Transcript:

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής ισαγωγή στην πιστήμη των Υπολογιστών 2015-16 λγόριθμοι και ομές εδομένων (IΙ) (γράφοι και δένδρα) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης φηρημένες ομές εδομένων Abstract Data Types (ADTs) φηρημένα μοντέλα δομών δεδομένων Χωρίς τις λεπτομέρειες υλοποίησης! Προσδιορίζονται μόνο από τις λειτουργίες που εφαρμόζονται σε αυτά Στη συνέχεια μια γλώσσα προγραμματισμού χρησιμοποιώντας συγκεκριμένες δομές όπως οι πίνακες ή οι διασυνδεδεμένες λίστες προσφέρει υλοποιήσεις των αφηρημένων δομών δεδομένων ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 2 Στοίβα (Stack) Υλοποίηση στοίβας Μια βοηθητική αφηρημένη δομή δεδομένων κολουθία δεδομένων Με τη γνωστή λειτουργία LIFO (Last-In-First- Out): θα πάρουμε πρώτο ό,τι βάλαμε στη στοίβα τελευταίο Λειτουργίες Ώθηση (push) εισαγωγή στοιχείου στην κορυφή πώθηση (pop) εξαγωγή στοιχείου από την κορυφή push και pop από την ίδια άκρη! Με τη χρήση πίνακα (array) ποδοτικό σχήμα όταν Η ώθηση και η απώθηση γίνεται στο τέλος του πίνακα Η πολυπλοκότητα είναι O(1) και στις δύο περιπτώσεις! ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 3 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 4

Ουρά (Queue) Μια άλλη βοηθητική αφηρημένη δομή δεδομένων Πρόκειται επίσης για ακολουθία δεδομένων Με λειτουργία FIFO (First-In-First-Out): θα πάρουμε πρώτο ό,τι βάλαμε στην ουρά πρώτο Λειτουργίες ισαγωγή (enqueue) εισαγωγή στοιχείου στη μία άκρη ξαγωγή (dequeue) εξαγωγή στοιχείου από την άλλη άκρη enqueue και dequeue από διαφορετικές άκρες! εισαγωγή Υλοποίηση ουράς Η φυσική υλοποίηση είναι με διπλά διασυνδεδεμένη λίστα Ξέρουμε και τις δύο άκρες και μπορούμε να διασχίσουμε τη λίστα και προς τις δύο κατευθύνσεις ισαγωγή και εξαγωγή με O(1) Όμως Σε πολλά συστήματα η ουρά υλοποιείται ως κυκλικός πίνακας πεπερασμένο μέγεθος, η άκρη εξαγωγής κυνηγά την άκρη εισαγωγής και οι δύο άκρες, στο τέλος του πίνακα εξαγωγή επιστρέφουν στην αρχή! ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 5 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 6 ράφοι (Graphs) ράφοι (Graphs) Ένα από τα βασικότερα αλγοριθμικά εργαλεία Πάρα πολλά προβλήματα ανάγονται σε γράφους και στη συνέχεια επιλύονται με αλγορίθμους γράφων! Έννοιες γράφων Ένα σύνολο κορυφών (κόμβων - nodes) που διασυνδέονται μέσω ακμών (edges). Οι ακμές μπορούν να έχουν κατεύθυνση ή όχι Προσανατολισμένοι και μη γράφοι (directed & undirected graphs) Οι ακμές μπορούν να έχουν βάρη ή όχι Έννοιες γράφων Οι κορυφές που ενώνει μια ακμή ονομάζονται γειτονικές (adjacent) ιαδρομή (path) είναι μία ακολουθία κορυφών, η μία γειτονική με την επόμενη Χωρίς να επισκεφτούμε ξανά κάποια από τις κορυφές αυτές ν η διαδρομή τελειώνει στην αρχική κορυφή, πρόκειται για κύκλο (cycle) Τυπικά, τουλάχιστον τρεις κορυφές Ένας γράφος είναι συνδεδεμένος αν μπορούμε από κάθε κορυφή να μεταβούμε σε κάθε άλλη ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 7 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 8

Υλοποίηση γράφων (1) Υλοποίηση γράφων (2) Λίστα γειτνίασης (adjacency list) ια κάθε κορυφή του γράφου ιατηρούμε μια λίστα με όλες τις γειτονικές κορυφές νδεχομένως και το βάρος της ακμής (αν υπάρχει),,,,,,, Πίνακας γειτνίασης (adjacency matrix) NxN πίνακας, πληροφορία για κάθε ζεύγος κορυφών ν ο γράφος είναι μη προσανατολισμένος, ο πίνακας είναι συμμετρικός 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 1 0 0 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 9 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 10 ιάσχιση ράφου (Graph Traversal) ιάσχιση με προτεραιότητα βάθους Πολύ συχνά η επίλυση ενός προβλήματος απαιτεί την εύρεση μιας σωστής διαδρομής μεταξύ δύο κορυφών Σωστή : με τα κριτήρια του εκάστοτε προβλήματος ναζητώντας τη διαδρομή αυτή πρέπει αλγοριθμικά να διασχίσουμε τον γράφο Ξεκινώντας από μία κορυφή πισκεπτόμενοι διάφορες άλλες κορυφές (ενδεχομένως όλες) ν ο γράφος έχει κύκλους Πρέπει να εξασφαλιστεί ότι δεν θα επισκεφθούμε ξανά τον ίδιο κόμβο! Depth-First Search (DFS) Η ιδέα της αναδρομικής επίσκεψης των γειτόνων: visit(node) { } if not_visited(node) { for each neighbor visit(neighbor) } Μπορεί να υλοποιηθεί επαναληπτικά με τη βοήθεια στοίβας Όταν επισκεφθούμε μια κορυφή, αν δεν την έχουμε ήδη επισκεφτεί, ωθούμε στη στοίβα όλους τους γείτονές της πό τη στοίβα παίρνουμε τον στόχο της επόμενής μας επίσκεψης, έως ότου δεν υπάρχουν άλλοι ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 11 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 12

Παράδειγμα διάσχισης DFS ιάσχιση με προτεραιότητα εύρους ια τον γράφο του σχήματος Και την εικονιζόμενη λίστα γειτνίασης Η σειρά επίσκεψης ξεκινώντας από τον είναι Τι θα συμβεί αν αντικαταστήσουμε τη στοίβα του προηγούμενου αλγορίθμου με μια ουρά; Breadth-First Search (BFS),,,,,,, Πρακτικά: πισκεπτόμαστε πρώτα τις κορυφές που βρίσκονται κοντύτερα στην αρχή σε ζώνες (επίπεδα) απόστασης από εκεί που ξεκινήσαμε Η BFS θα βρει λύσεις με συντομότερες διαδρομές (shortest paths) απαιτεί μεγαλύτερο χώρο αποθήκευσης ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 13 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 14 Παράδειγμα διάσχισης BFS ένδρα (Trees) ια τον γράφο του σχήματος Και την εικονιζόμενη λίστα γειτνίασης Η σειρά επίσκεψης ξεκινώντας από τον είναι,,,,,,, ένδρα ρίζα φύλλα Υποκατηγορία γράφων Συνδεδεμένοι και χωρίς κύκλους γράφοι Με πολλές αλγοριθμικές εφαρμογές, ιδίως στην Έννοιες δένδρων: ιασυνδεδεμένοι κόμβοι (nodes), με προγόνους και απογόνους στην κορυφή η ρίζα (root) και στο τέλος τα φύλλα (leaves) siblings: κόμβοι με τον ίδιο πατέρα πίπεδο κόμβου: η απόστασή του από τη ρίζα Ύψος δένδρου: το μήκος (σε κόμβους) της μέγιστης διαδρομής ρίζα-φύλλο ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 15 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 16

Υλοποίηση δένδρων ιάσχιση δένδρων ένδρα εν υπάρχει ένας και μοναδικός τρόπος νάλογα με το είδος του δένδρου Υπάρχουν πολλοί τύποι δένδρων νάλογα με το πρόβλημα που καλούνται να λύσουν Σε γενικές γραμμές Σύνολο διασυνδεδεμένων πινάκων (arrays) αποθηκεύουν τα δεδομένα κάθε κόμβου, τις διασυνδέσεις με τα παιδιά του κόμβου, και όποιες άλλες πληροφορίες διαχείρισης του δένδρου ένδρα Τα δένδρα είναι υποκατηγορία γράφων Συνεπώς μπορούμε να εφαρμόσουμε οποιαδήποτε τεχνική διάσχισης (π.χ. DFS ή BFS) Σε κάθε κόμβο μπορούμε να εφαρμόσουμε κάποια μορφή επεξεργασίας πεξεργασία κατά τη διάσχιση DFS Preorder: πριν προχωρήσουμε στα παιδιά του Postorder: αφού επιστρέψουμε από την επεξεργασία των παιδιών ιδικά για δυαδικά δένδρα (όχι πάνω από δύο παιδιά): inorder επεξεργασία, αριστερό παιδί - κόμβος - δεξί παιδί ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 17 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 18 Παράδειγμα επεξεργασίας σε διάσχιση DFS Η δυαδική (ξανά) ένδρα * + - 8 2 3 Preorder: * + 8 2-3 Postorder: 8 2 + 3 - * Inorder: 8 + 2 * 3 - Ποια σειρά επεξεργασίας αποδίδει το αριθμητικό νόημα του δένδρου; ένδρα υαδική Έχουμε ήδη δει την ισχύ της δυαδικής ς Η δύναμη του log 2 n στη γρήγορη εύρεση σε μεγάλο αριθμό δεδομένων Όμως Χρειαζόμαστε ταξινομημένους πίνακες Πόσο εύκολο αν τα δεδομένα αλλάζουν συνεχώς; Και οι διασυνδεδεμένες λίστες δεν αποτελούν λύση πώλεια του O(1) για την εύρεση (ή μη) ενός στοιχείου Τι άλλο μπορούμε να κάνουμε; ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 19 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 20

Πρώτη λύση: αποφυγή ς! εύτερη λύση: δένδρα δυαδικής ς ένδρα υαδική Μέθοδος κατακερματισμού (hashing) ια εύρεση κλειδιού (membership test) ή αντιστοίχιση κλειδιού-τιμής (mapping) χωρίς Πώς γίνεται; Κάθε κλειδί μετατρέπεται σε έναν αριθμό μέσω συνάρτησης κατακερματισμού (hash function) ο αριθμός αυτός (ή κάποια bits αυτού) χρησιμοποιούνται ως δείκτης i σε έναν πίνακα ιαλέγουμε συναρτήσεις που κατανέμουν ομοιόμορφα τα κλειδιά στις θέσεις του πίνακα ναλλακτικές θέσεις σε περίπτωση σύγκρουσης (collision) Πολυπλοκότητα (σχεδόν) O(1)! ένδρα υαδική υαδικά δένδρα με τοποθέτηση των κλειδιών σε κάθε κόμβο Με τη σημαντική ιδιότητα: όλα τα κλειδιά στο αριστερό υποδένδρο είναι μικρότερα (ή ίσα) από το κλειδί του κόμβου Και όλα τα κλειδιά στο δεξί υποδένδρο είναι μεγαλύτερα από το κλειδί του κόμβου ναζήτηση Σε κάθε βήμα, συγκρίνουμε την επιθυμητή τιμή με το κλειδί του τρέχοντος κόμβου και στη συνέχεια προχωράμε ανάλογα στο αριστερό ή στο δεξί υποδένδρο από τη ρίζα προς τα φύλλα σε λογαριθμικό χρόνο ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 21 ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 22 εύτερη λύση: δένδρα δυαδικής ς ένδρα υαδική νέου στοιχείου ναζητούμε το σημείο όπου θα έπρεπε να είναι το νέο στοιχείο Και το εισάγουμε στην κατάλληλη θέση Προσοχή: η μορφή του δένδρου εξαρτάται από τη σειρά εισαγωγής των στοιχείων Ισορροπία (balance( balance) ) δένδρου Το απλό δυαδικό δένδρο μετά από εισαγωγή νέων στοιχείων μπορεί να πάψει να έχει ισορροπία (να είναι ομοιόμορφα επεκταμένο) Η απόδοση της ς μειώνεται Υπάρχουν εξελιγμένες μορφές δένδρων που φροντίζουν για τη διατήρηση της ισορροπίας τους κατά την εισαγωγή ή διαγραφή στοιχείων ισαγωγή στην πιστήμη των Υπολογιστών λγόριθμοι και ομές εδομένων (IΙ) 23