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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

Εισαγωγή στους Αλγόριθμους

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επίλυση προβλημάτων με αναζήτηση

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

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

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Δυναµικός Προγραµµατισµός (ΔΠ)

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

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

Κατανεμημένα Συστήματα Ι

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

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Transcript:

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης

Αφηρημένες Δομές Δεδομένων Abstract Data Types (ADTs) Αφηρημένα μοντέλα δομών δεδομένων Χωρίς τις λεπτομέρειες υλοποίησης! Προσδιορίζονται μόνο από τις λειτουργίες που εφαρμόζονται σε αυτά Στη συνέχεια μια γλώσσα προγραμματισμού χρησιμοποιώντας συγκεκριμένες δομές όπως οι πίνακες ή οι διασυνδεδεμένες λίστες προσφέρει υλοποιήσεις των αφηρημένων δομών δεδομένων Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 2

Στοίβα (Stack) Μια βοηθητική αφηρημένη δομή δεδομένων Ακολουθία δεδομένων Με τη γνωστή λειτουργία LIFO (Last-In-First- Out): θα πάρουμε πρώτο ό,τι βάλαμε στη στοίβα τελευταίο Λειτουργίες Ώθηση (push) εισαγωγή στοιχείου στην κορυφή Απώθηση (pop) εξαγωγή στοιχείου από την κορυφή push και pop από την ίδια άκρη! Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 3

Υλοποίηση στοίβας Με τη χρήση πίνακα (array) Αποδοτικό σχήμα όταν Η ώθηση και η απώθηση γίνεται στο τέλος του πίνακα Η πολυπλοκότητα είναι O(1) και στις δύο περιπτώσεις! Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 4

Ουρά (Queue) Μια άλλη βοηθητική αφηρημένη δομή δεδομένων Πρόκειται επίσης για ακολουθία δεδομένων Με λειτουργία FIFO (First-In-First-Out): θα πάρουμε πρώτο ό,τι βάλαμε στην ουρά πρώτο Λειτουργίες Εισαγωγή (enqueue) εισαγωγή στοιχείου στη μία άκρη Εξαγωγή (dequeue) εξαγωγή στοιχείου από την άλλη άκρη enqueue και dequeue από διαφορετικές άκρες! Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 5

εισαγωγή Η φυσική υλοποίηση είναι με διπλά διασυνδεδεμένη λίστα Ξέρουμε και τις δύο άκρες και μπορούμε να διασχίσουμε τη λίστα και προς τις δύο κατευθύνσεις Εισαγωγή και εξαγωγή με O(1) Όμως Υλοποίηση ουράς Σε πολλά συστήματα η ουρά υλοποιείται ως κυκλικός πίνακας πεπερασμένο μέγεθος, η άκρη εξαγωγής κυνηγά την άκρη εισαγωγής και οι δύο άκρες, στο τέλος του πίνακα εξαγωγή επιστρέφουν στην αρχή! Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 6

Γράφοι (Graphs) Ένα από τα βασικότερα αλγοριθμικά εργαλεία Πάρα πολλά προβλήματα ανάγονται σε γράφους και στη συνέχεια επιλύονται με αλγορίθμους γράφων! Έννοιες γράφων Ένα σύνολο κορυφών (κόμβων - nodes) που διασυνδέονται μέσω ακμών (edges). Οι ακμές μπορούν να έχουν κατεύθυνση ή όχι Προσανατολισμένοι και μη γράφοι (directed & undirected graphs) Οι ακμές μπορούν να έχουν βάρη ή όχι Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 7

Γράφοι (Graphs) Έννοιες γράφων Οι κορυφές που ενώνει μια ακμή ονομάζονται γειτονικές (adjacent) Διαδρομή (path) είναι μία ακολουθία κορυφών, η μία γειτονική με την επόμενη Χωρίς να επισκεφτούμε ξανά κάποια από τις κορυφές αυτές Αν η διαδρομή τελειώνει στην αρχική κορυφή, πρόκειται για κύκλο (cycle) Τυπικά, τουλάχιστον τρεις κορυφές Ένας γράφος είναι συνδεδεμένος αν μπορούμε από κάθε κορυφή να μεταβούμε σε κάθε άλλη Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 8

Υλοποίηση γράφων (1) Λίστα γειτνίασης (adjacency list) Για κάθε κορυφή του γράφου Διατηρούμε μια λίστα με όλες τις γειτονικές κορυφές Ενδεχομένως και το βάρος της ακμής (αν υπάρχει) Α Β, Γ Α Ε Γ Β Δ Β Γ Δ Ε Α, Γ, Δ Α, Β, Δ, Ε Β, Γ Γ Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 9

Υλοποίηση γράφων (2) Πίνακας γειτνίασης (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Ι) 10

Διάσχιση Γράφου (Graph Traversal) Πολύ συχνά η επίλυση ενός προβλήματος απαιτεί την εύρεση μιας σωστής διαδρομής μεταξύ δύο κορυφών Σωστή : με τα κριτήρια του εκάστοτε προβλήματος Αναζητώντας τη διαδρομή αυτή πρέπει αλγοριθμικά να διασχίσουμε τον γράφο Ξεκινώντας από μία κορυφή Επισκεπτόμενοι διάφορες άλλες κορυφές (ενδεχομένως όλες) Αν ο γράφος έχει κύκλους Πρέπει να εξασφαλιστεί ότι δεν θα επισκεφθούμε ξανά τον ίδιο κόμβο! Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 11

Διάσχιση με προτεραιότητα βάθους Depth-First Search (DFS) Η ιδέα της αναδρομικής επίσκεψης των γειτόνων: visit(node) { } if not_visited(node) { for each neighbor visit(neighbor) } Μπορεί να υλοποιηθεί επαναληπτικά με τη βοήθεια στοίβας Όταν επισκεφθούμε μια κορυφή, αν δεν την έχουμε ήδη επισκεφτεί, ωθούμε στη στοίβα όλους τους γείτονές της Από τη στοίβα παίρνουμε τον στόχο της επόμενής μας επίσκεψης, έως ότου δεν υπάρχουν άλλοι Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 12

Παράδειγμα διάσχισης DFS Για τον γράφο του σχήματος Και την εικονιζόμενη λίστα γειτνίασης Η σειρά επίσκεψης ξεκινώντας από τον Α είναι Α Γ Ε Δ Β Α Β, Γ Α Ε Γ Β Δ Β Γ Δ Ε Α, Γ, Δ Α, Β, Δ, Ε Β, Γ Γ Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 13

Διάσχιση με προτεραιότητα εύρους Τι θα συμβεί αν αντικαταστήσουμε τη στοίβα του προηγούμενου αλγορίθμου με μια ουρά; Breadth-First Search (BFS) Πρακτικά: Επισκεπτόμαστε πρώτα τις κορυφές που βρίσκονται κοντύτερα στην αρχή σε ζώνες (επίπεδα) απόστασης από εκεί που ξεκινήσαμε Η αναζήτηση BFS θα βρει λύσεις με συντομότερες διαδρομές (shortest paths) απαιτεί μεγαλύτερο χώρο αποθήκευσης Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 14

Παράδειγμα διάσχισης BFS Για τον γράφο του σχήματος Και την εικονιζόμενη λίστα γειτνίασης Η σειρά επίσκεψης ξεκινώντας από τον Α είναι Α Β Γ Δ Ε Α Β, Γ Α Ε Γ Β Δ Β Γ Δ Ε Α, Γ, Δ Α, Β, Δ, Ε Β, Γ Γ Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 15

Δένδρα (Trees) Δένδρα ρίζα φύλλα Υποκατηγορία γράφων Συνδεδεμένοι και χωρίς κύκλους γράφοι Με πολλές αλγοριθμικές εφαρμογές, ιδίως στην αναζήτηση Έννοιες δένδρων: Διασυνδεδεμένοι κόμβοι (nodes), με προγόνους και απογόνους στην κορυφή η ρίζα (root) και στο τέλος τα φύλλα (leaves) siblings: κόμβοι με τον ίδιο πατέρα Επίπεδο κόμβου: η απόστασή του από τη ρίζα Ύψος δένδρου: το μήκος (σε κόμβους) της μέγιστης διαδρομής ρίζα-φύλλο Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 16

Υλοποίηση δένδρων Δένδρα Δεν υπάρχει ένας και μοναδικός τρόπος Ανάλογα με το είδος του δένδρου Υπάρχουν πολλοί τύποι δένδρων Ανάλογα με το πρόβλημα που καλούνται να λύσουν Σε γενικές γραμμές Σύνολο διασυνδεδεμένων πινάκων (arrays) αποθηκεύουν τα δεδομένα κάθε κόμβου, τις διασυνδέσεις με τα παιδιά του κόμβου, και όποιες άλλες πληροφορίες διαχείρισης του δένδρου Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 17

Διάσχιση δένδρων Δένδρα Τα δένδρα είναι υποκατηγορία γράφων Συνεπώς μπορούμε να εφαρμόσουμε οποιαδήποτε τεχνική διάσχισης (π.χ. DFS ή BFS) Σε κάθε κόμβο μπορούμε να εφαρμόσουμε κάποια μορφή επεξεργασίας Επεξεργασία κατά τη διάσχιση DFS Preorder: πριν προχωρήσουμε στα παιδιά του Postorder: αφού επιστρέψουμε από την επεξεργασία των παιδιών Ειδικά για δυαδικά δένδρα (όχι πάνω από δύο παιδιά): inorder επεξεργασία, αριστερό παιδί - κόμβος - δεξί παιδί Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 18

Παράδειγμα επεξεργασίας σε διάσχιση DFS Δένδρα * + - 8 2 3 Preorder: * + 8 2-3 Postorder: 8 2 + 3 - * Inorder: 8 + 2 * 3 - Ποια σειρά επεξεργασίας αποδίδει το αριθμητικό νόημα του δένδρου; Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 19

Η δυαδική αναζήτηση (ξανά) Δένδρα Δυαδική αναζήτηση Έχουμε ήδη δει την ισχύ της δυαδικής αναζήτησης Η ισχύς του log 2 n στη γρήγορη εύρεση σε μεγάλο αριθμό δεδομένων Όμως Χρειαζόμαστε ταξινομημένους πίνακες Πόσο εύκολο αν τα δεδομένα αλλάζουν συνεχώς; Και οι διασυνδεδεμένες λίστες δεν αποτελούν λύση Απώλεια του O(1) για την εύρεση (ή μη) ενός στοιχείου Τι άλλο μπορούμε να κάνουμε; Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 20

Πρώτη λύση: αποφυγή αναζήτησης! Δένδρα Δυαδική αναζήτηση Μέθοδος κατακερματισμού (hashing) Για εύρεση κλειδιού (membership test) ή αντιστοίχιση κλειδιού-τιμής (mapping) χωρίς αναζήτηση Πώς γίνεται; Κάθε κλειδί μετατρέπεται σε έναν αριθμό μέσω συνάρτησης κατακερματισμού (hash function) ο αριθμός αυτός (ή κάποια bits αυτού) χρησιμοποιούνται ως δείκτης i σε έναν πίνακα Διαλέγουμε συναρτήσεις που κατανέμουν ομοιόμορφα τα κλειδιά στις θέσεις του πίνακα Εναλλακτικές θέσεις σε περίπτωση σύγκρουσης (collision) Πολυπλοκότητα (σχεδόν) O(1)! Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 21

Δεύτερη λύση: δένδρα δυαδικής αναζήτησης Δένδρα Δυαδική αναζήτηση Δυαδικά δένδρα με τοποθέτηση των κλειδιών σε κάθε κόμβο Με τη σημαντική ιδιότητα: όλα τα κλειδιά στο αριστερό υποδένδρο είναι μικρότερα (ή ίσα) από το κλειδί του κόμβου Και όλα τα κλειδιά στο δεξί υποδένδρο είναι μεγαλύτερα από το κλειδί του κόμβου Αναζήτηση Σε κάθε βήμα, συγκρίνουμε την επιθυμητή τιμή με το κλειδί του τρέχοντος κόμβου και στη συνέχεια προχωράμε ανάλογα στο αριστερό ή στο δεξί υποδένδρο από τη ρίζα προς τα φύλλα σε λογαριθμικό χρόνο Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 22

Δεύτερη λύση: δένδρα δυαδικής αναζήτησης Δένδρα Δυαδική αναζήτηση νέου στοιχείου Αναζητούμε το σημείο όπου θα έπρεπε να είναι το νέο στοιχείο Και το εισάγουμε στην κατάλληλη θέση Προσοχή: η μορφή του δένδρου εξαρτάται από τη σειρά εισαγωγής των στοιχείων Ισορροπία (balance( balance) ) δένδρου Το απλό δυαδικό δένδρο μετά από εισαγωγή νέων στοιχείων μπορεί να πάψει να έχει ισορροπία (να είναι ομοιόμορφα επεκταμένο) Η απόδοση της αναζήτησης μειώνεται Υπάρχουν εξελιγμένες μορφές δένδρων που φροντίζουν για τη διατήρηση της ισορροπίας τους κατά την εισαγωγή ή διαγραφή στοιχείων Εισαγωγή στην Επιστήμη των Υπολογιστών Αλγόριθμοι και Δομές Δεδομένων (IΙ) 23