Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ ΔΕΝΔΡΑ.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ ΔΕΝΔΡΑ."— Μεταγράφημα παρουσίασης:

1 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ ΔΕΝΔΡΑ

2 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ Μορφές οργάνωσης δεδομένων hierarchical (1 to many) graph (many to many) first ith last sequence/linear (1 to 1) set

3 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 3 Εισαγωγή Αναζητούμε έναν τρόπο οργάνωσης μιας συνδεδεμένης δομής στοιχείων έτσι ώστε … –Η αναζήτηση των στοιχείων να γίνεται ταχύτερα από ότι σε μια γραμμικά συνδεδεμένη δομή –Να παρέχεται η δυνατότητα εύκολης εισαγωγής και διαγραφής στοιχείων –Ο χρόνος πρόσβασης να είναι μικρότερος από O(n) Ένα παράδειγμα γρήγορης στρατηγικής μπορεί να είναι η δυαδική αναζήτηση; (binary search strategy)

4 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ comparative performance data structure Retrieve Insert Delete unordered array ordered array unordered linked list ordered linked list O(n) O(1) O(n) O(log 2 n) O(n) O(n) O(n) O(1) O(n) O(n) O(n) O(n) search trees and hash table both have better performance

5 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 5 ΔΕΝΔΡΑ (TREES) Μη γραμμικές δομές δεδομένων Πολλές πράξεις σε σύνολα δεδομένων εκτελούνται πιο αποτελεσματικά όταν οργανώνονται σε μορφή δένδρων Χρησιμοποιούνται στον σχεδιασμό και στην ανάλυση αλγορίθμων Χρησιμοποιούνται ως μοντέλα για να εκφράσουν ιεραρχικές δομές Εκφράζουν με φυσικό τρόπο τις διαδικασίες ανάλυσης και σύνθεσης

6 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 6 Παράδειγμα

7 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 7 Παράδειγμα

8 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 8 Ορισμοί Ένα δένδρο είναι μια ιεραρχική δομή που τοποθετεί κόμβους (nodes) κατά μήκος κλάδων (branches) που ξεκινούν από τη ρίζα (root).

9 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 9 Οι κόμβοι σε ένα δένδρο υποδιαιρούνται σε επίπεδα (levels), το επίπεδο κορυφής περιλαμβάνει τη ρίζα του δένδρου. Κάθε κόμβος σε ένα δένδρο μπορεί να έχει πολλούς επόμενους (successors) ή απογόνους (childs) στο επόμενο επίπεδο. Μια ακμή (edge) συνδέει έναν πρόγονο (parent) με έναν απόγονο (child). Τα δένδρα που έχουν περισσότερους από δύο απογόνους στο επόμενο επίπεδο έχουν περιορισμένη εφαρμογή. Οι περισσότερες εφαρμογές περιλαμβάνουν μια περιορισμένη κατηγορία, τα δυαδικά δένδρα (binary trees) στα οποία κάθε κόμβος έχει το πολύ δύο απογόνους.

10 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 10 Τύποι Δένδρων General tree – a node can have any number of children Binary tree – a node can have at most two children

11 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 11 Παράδειγμα δυαδικού δένδρου Στην έκφραση a*b + (c-d)/e οι μεταβλητές αποτελούν τερματικούς κόμβους (leafs) ενώ οι τελεστές μη τερματικούς κόμβους (non-leafs).

12 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 12 Ορισμοί (συνέχεια) Κάθε κόμβος σε ένα δένδρο είναι η ρίζα ενός υποδένδρου (subtree) που περιλαμβάνει τον κόμβο και όλους τους απογόνους του (descendants). Ένα μονοπάτι ή δρόμος (path) μεταξύ ενός parent node P και οποιουδήποτε απογόνου του Ν στο υποδένδρο είναι η ακολουθία των κόμβων P=X 0, X 1,…,X k =N, όπου k είναι το μήκος του δρόμου. Επειδή κάθε κόμβος έχει μόνον έναν πρόγονο (parent) υπάρχει ένας μοναδικός δρόμος από κάθε κόμβο προς καθένα από τους απογόνους του. Το μήκος ενός δρόμου από τη ρίζα προς κάθε κόμβο του δένδρου καθορίζει το επίπεδο (level) του κόμβου. Το επίπεδο της ρίζας είναι 0. Κάθε κόμβος-απόγονος της ρίζας έχει επίπεδο 1 κ.ο.κ. Το βάθος (depth) ενός δένδρου είναι το μέγιστο επίπεδο κάθε κόμβου στο δένδρο.

13 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 13 Επίπεδα δένδρου There is a unique path from the root to each node. Root is a level 0, child is at level(parent) + 1. Depth/height of a tree is the length of the longest path. level 0 1 2 3 4

14 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 14 Ορισμοί (περιληπτικά) A is the root node. B is the parent of D and E. A is ancestor of D and E. D and E are descendants of A. C is the sibling of B D and E are the children of B. D, E, F, G, I are leaves.

15 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 15 Ορισμοί (περιληπτικά) (2) A, B, C, H are internal nodes The depth (level) of E is 2 The height of the tree is 3 The degree of node B is 2

16 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 16 Δυαδικά δένδρα (Binary Trees)

17 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 17 Χαρακτηριστικά δυαδικών δένδρων Κάθε γονέας έχει το πολύ δύο απογόνους Κάθε κόμβος είναι η ρίζα ενός δυαδικού δένδρου για τους απογόνους του. Ένα δυαδικό δένδρο έχει μια μοναδική δομή που επιτρέπει να δοθεί μια απλή περιγραφή κάθε κόμβου και να αναπτυχθούν αλγόριθμοι διαχείρισης των δεδομένων που αποθηκεύονται στους κόμβους. Το πλήθος των πιθανών απογόνων ενός κόμβου δεν αποτελεί πρόβλημα κατά τη μοντελοποίηση ενός προβλήματος με δυαδικά δένδρα διότι για τα περισσότερα γενικά δένδρα υπάρχει μια ισοδύναμη αναπαράσταση με δυαδικό δένδρο. Οι απόγονοι κάθε κόμβου δυαδικού δένδρου ονομάζονται left και right.

18 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 18 Ορισμός δυαδικού δένδρου (recursive) Ένα δυαδικό δένδρο Τ είναι ένα πεπερασμένο σύνολο κόμβων με μια από τις παρακάτω ιδιότητες: 1.T είναι δένδρο αν το σύνολο των κόμβων του είναι κενό (ένα κενό δένδρο είναι δένδρο) 2.Το σύνολο αποτελείται από μια ρίζα R και ακριβώς δύο διακεκριμένα δυαδικά δένδρα, το αριστερό (left) υποδένδρο T L και το δεξιό (right) υποδένδρο T R. –Οι κόμβοι του δένδρου περιλαμβάνουν τη ρίζα και τους κόμβους των T L και T R.

19 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 19 Παράδειγμα δυαδικού δένδρου

20 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 20

21 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 21 Πυκνότητα (density) Η πυκνότητα αναφέρεται στο πλήθος κόμβων που υπάρχουν ανά επίπεδο. Εκφράζει ένα μέτρο για το πλήθος των κόμβων σε σχέση με τα επίπεδα του δένδρου. Γενικά σε κάθε επίπεδο n μπορούν να υπάρξουν από 1 έως 2 n κόμβοι. Τα δένδρα με μεγάλη πυκνότητα παρουσιάζουν περισσότερο ενδιαφέρον ως δομές δεδομένων διότι μπορούν να συγκεντρώσουν περισσότερους κόμβους κοντά στη ρίζα. Η πρόσβαση σε κόμβους κοντά στη ρίζα είναι συντομότερη. Ένα δένδρο με ακριβώς έναν απόγονο από κάθε κόμβο λέγεται degenerate tree και είναι ισοδύναμο με μια συνδεδεμένη λίστα (linked list). Τα degenerate trees είναι από άποψη πυκνότητας μια ακραία περίπτωση.

22 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 22 Ορισμοί Ένα γεμάτο δυαδικό δένδρο (full binary tree) είναι ένα δυαδικό δένδρο, κάθε κόμβος του οποίου είναι είτε τερματικός είτε έχει δύο παιδιά. Ένα πλήρες δυαδικό δένδρο (complete binary tree) βάθους n είναι ένα δένδρο στο οποίο κάθε επίπεδο από 0 έως n-1 διαθέτει όλους τους πιθανούς κόμβους και στο επίπεδο n όλοι οι τερματικοί κόμβοι (leaf nodes) καταλαμβάνουν τις αριστερές θέσεις. Το μεγαλύτερο δυνατό πλήρες δυαδικό δένδρο με βάθος n είναι εκείνο που έχει 2 n κόμβους στο επίπεδο n.

23 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 23

24 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 24 Binary Tree density a binary tree of depth n is complete if –levels 1.. n have all possible nodes filled-in level 1: 1 level 2: 2 level 3: 4 level n: ? –nodes at level n occupy the leftmost positions max nodes level at n: 2 n-1 max nodes in binary tree of depth n: 2 n -1 depth of binary tree with k nodes: >floor[log 2 k] depth of binary tree with k nodes: <ceil[log 2 k] longest path is O(log 2 k)

25 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 25 Ιδιότητες των δυαδικών δένδρων

26 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 26 Properties of Binary Trees Notation n number of nodes e number of external nodes i number of internal nodes h height Properties: e  i  1 n  2e  1 h  i h  (n  1)  2 e  2 h h  log 2 e h  log 2 (n  1)  1

27 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 27 Υπολογισμός της πυκνότητας Θέλουμε να αποθηκεύσουμε n στοιχεία σε ένα complete binary tree. Ποιο θα είναι το βάθος του δένδρου; Σε ένα δένδρο βάθους d τα d-1 επίπεδα περιλαμβάνουν 2 d -1 κόμβους. Το τελευταίο επίπεδο μπορεί να περιλαμβάνει από 1 κόμβο (το ελάχιστο) μέχρι κατά μέγιστο 2 d. Άρα πλήθος κόμβων n: 2 d <= n <= 2 d+1 -1 < 2 d+1 d <= log 2 n < d+1 Βάθος k = int(log 2 n)

28 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 28 Παραδείγματα Βάθος πλήρους δυαδικού δένδρου με 5 κόμβους =2 Βάθος πλήρους δυαδικού δένδρου με n=1,000,000 στοιχεία ; int(log 2 1000000)=int(19.931..)=19

29 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 29 Ερωτήσεις 1.Ένα δυαδικό δένδρο με όλους τους πιθανούς κόμβους έχει βάθος 8. Πόσους κόμβους έχει; 2.Ένα πλήρες δυαδικό δένδρο έχει 5125 κόμβους. Ποιο είναι το βάθος του; 3.Ποιος είναι ο ελάχιστος αριθμός τερματικών (leaf) κόμβων σε δυαδικό δένδρο με 63 κόμβους; 4.Ποιος είναι ο μέγιστος αριθμός τερματικών (leaf) κόμβων σε δυαδικό δένδρο με 63 κόμβους;

30 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 30 Απαντήσεις 1.2 8+1 -1 = 2 9 -1 = 512-1 = 511 κόμβοι 2.Βάθος = int(log 2 5125) = int(12.323..) = 12 3.1 (degenarate tree) 4.Ένα δένδρο βάθους 5 με όλους τους πιθανούς κόμβους έχει 2 5+1 -1=2 6 -1=63 κόμβους. Το τελευταίο επίπεδο έχει 2 5 =32 κόμβους.

31 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 31 Κόμβοι δυαδικών δένδρων Στις εφαρμογές των δυαδικών δένδρων οι κόμβοι (tree nodes) είναι αντικείμενα (δηλ. στιγμιότυπα μιας βασικής κλάσης). Ένας tree node περιλαμβάνει τα δεδομένα (data values) και δύο δείκτες, left και right. Μια τιμή NULL δείχνει ένα κενό υποδένδρο. Ο root node δείχνει το σημείο εισαγωγής σε δυαδικό δένδρο. Ένας pointer αναφέρεται σε απόγονο κόμβο σε επόμενο επίπεδο. Ένας leaf node έχει NULL left και right pointers.

32 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 32 Παράδειγμα

33 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 33 representing a binary tree have to store items and relationships (predecessor and successors information) array representation –each item has a position number (0.. n-1) –use the position number as an array index O(1) access to parent and children of item at position i wastes space unless binary tree is complete linked representation –each item stored in a node which contains: the item a pointer to the left subtree a pointer to the right subtree

34 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 34 array representation each item has a position number –root is at position 0 –root's left child is at position 1 –root's right child is at position 2 in general: –left child of i is at 2i + 1 –right child of i is at 2i + 2 –parent of i is at (i-1)/2 0 1 2 3 4 5 6 0 1 2 3 4 5 6 - - - - - - - 0 1 2 6 13 works well if n is known in advance and there are no "missing" nodes

35 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 35 Array Implementation

36 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 36 A sparse, unbalanced tree

37 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 37 linked representation class binTreeNode { public: T item; binTreeNode * left; binTreeNode * right; binTreeNode (const T & value) { item = value; left = NULL; right = NULL; } }; binTreeNode * root; root left child of *p? right child of *p? parent of *p? p

38 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 38 Αλγόριθμοι ανίχνευσης δυαδικών δένδρων Η φύση των δυαδικών δένδρων δεν επιτρέπει τη χρήση των τεχνικών ανίχνευσης των γραμμικών δομών. Σε κάθε κόμβο έχουμε να επιλέξουμε μεταξύ αριστερού και δεξιού απόγονου. Η συνέχεια της διαδικασίας, αν δεν οργανωθεί σωστά ενέχει τον κίνδυνο να αγνοηθούν κατά την αναζήτηση κάποιοι κόμβοι. Όλοι οι αλγόριθμοι ανίχνευσης θεωρούν τον κάθε κόμβο ως τη ρίζα ενός δένδρου (αναδρομική-recursive θεώρηση) και καθορίζουν ορισμένες διεργασίες στον κόμβο. Οι διαφορετικές στρατηγικές ανίχνευσης εξαρτώνται από τη σειρά με την οποία υλοποιούνται οι διεργασίες σε κάθε κόμβο. Το ζητούμενο για κάθε κόμβο είναι η εμφάνιση (ή η απόκτηση) της τιμής που έχουν τα δεδομένα του κόμβου.

39 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 39 Διάσχιση (traversal) δένδρων Είναι η πράξη με την οποία οι κόμβοι του δένδρου εξετάζονται με συστηματικό τρόπο, ώστε κάθε κόμβος να επισκέπτεται μόνο μια φορά.

40 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 40 Recursive tree traversals Ένα δυαδικό δένδρο είναι μια αναδρομική δομή στην οποία κάθε κόμβος προσδιορίζεται από την τιμή του και τα αριστερό και δεξιό υποδένδρα. Μπορούν να σχεδιαστούν τρεις βασικές δράσεις σε κάθε κόμβο. Οι δράσεις περιλαμβάνουν : –την επίσκεψη του κόμβου και την υλοποίηση κάποιας διεργασίας –Την αναδρομική επίσκεψη του αριστερού υποδένδρου του κόμβου –Την αναδρομική επίσκεψη του δεξιού υποδένδρου του κόμβου –Οι επισκέψεις στο αριστερό και το δεξιό υποδένδρο συνεχίζονται αναδρομικά σε επόμενα επίπεδα μέχρις ότου βρεθεί ένα κενό δένδρο (δηλ. ο pointer =NULL).

41 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 41 Τρόποι διάσχισης δυαδικού δένδρου Η σειρά με την οποία υλοποιούνται οι επισκέψεις καθορίζουν τρεις διαφορετικούς τρόπους ανίχνευσης με ονόματα: –Pre-order (NLR) –In-order (LNR) –Post-order (LRN)

42 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 42 PreOrder

43 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 43 InOrder

44 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 44 PostOrder

45 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 45 Αλγόριθμοι σε δυαδικά δένδρα Ανίχνευση κατά επίπεδα Υπολογισμός του βάθους του δένδρου Αντιγραφή δυαδικού δένδρου Διαγραφή κόμβων Εμφάνιση

46 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 46 Δυαδικά Δένδρα Ανίχνευσης (Binary Search Trees) Ένα δυαδικό δένδρο που : –σχεδιάζεται ως δομή αποθήκευσης που μπορεί να αποθηκεύσει μεγάλη ποσότητα δεδομένων –τα στοιχεία του διατάσσονται με συγκεκριμένο τρόπο που παρέχει αποτελεσματική πρόσβαση καθώς και διαδικασίες ενημέρωσης. Διαδικασίες σε ΔΔΑ: –Εισαγωγή κόμβου –Διάσχιση δένδρου –Διαγραφή κόμβου

47 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 47 Ορισμοί ΔΔΑ Ένα δυαδικό δένδρο ανίχνευσης (ΔΔΑ) είναι μια δομή δεδομένων που αποτελείται από κόμβους που βρίσκονται σε μοναδικούς δρόμους από τη ρίζα. Η σχεδίαση ενός ΔΔΑ ως αποτελεσματικής δομής αποθήκευσης εισάγει μια σχέση διάταξης για την τιμή κάθε στοιχείου ως προς τον δρόμο που βρίσκεται. Η διάταξη αυτή επιτρέπει την αναζήτηση μιας τιμής εκτελώντας μια αναζήτηση σε ένα δρόμο για την εύρεση της τιμής. Ένα ΔΔΑ διατάσσει τα στοιχεία του με χρήση του τελεστή < για κάθε τύπο δεδομένων. Η σχέση διάταξης συγκρίνει κάθε κόμβο με τα στοιχεία που βρίσκονται στο υποδένδρο του.

48 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 48 ΔΔΑ Για κάθε κόμβο οι τιμές των δεδομένων που βρίσκονται στο αριστερό υποδένδρο του είναι όλες μικρότερες από την τιμή του κόμβου, ενώ οι τιμές των δεδομένων που βρίσκονται στο δεξιό υποδένδρο είναι όλες μεγαλύτερες από την τιμή του κόμβου.

49 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 49 Παράδειγμα ΔΔΑ με αλφαριθμητικά

50 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 50 Παραδείγματα ΔΔΑ

51 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 51 ΕΙΣΑΓΩΓΗ ΣΕ ΔΔΑ Τα στοιχεία σε ένα ΔΔΑ εισάγονται με καθορισμένη στρατηγική: –Το 1ο στοιχείο γίνεται η ρίζα του δένδρου –Όλα τα υπόλοιπα στοιχεία εισάγονται στο τέλος ενός συγκεκριμένου δρόμου. –Ο προσδιορισμός του δρόμου είναι μια επαναληπτική διαδικασία που ξεκινά από τη ρίζα. –Σε κάθε βήμα συγκρίνεται η τιμή του νέου στοιχείου με την τιμή που είναι αποθηκευμένη στον τρέχοντα κόμβο.

52 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 52 –Αν η τιμή του νέου στοιχείου είναι μικρότερη από την τιμή του τρέχοντα κόμβου η σύγκριση μεταφέρεται στο αριστερό υποδένδρο μέχρι να βρεθεί κενό υποδένδρο (left child==NULL). Το νέο στοιχείο εισάγεται σε ένα νέο κόμβο που δημιουργείται ως αριστερός απόγονος και ο δρόμος περιλαμβάνει πλέον και το νέο στοιχείο. –Η ίδια διαδικασία ισχύει και για το δεξιό υποδένδρο, αν το νέο στοιχείο έχει τιμή μεγαλύτερη από αυτήν του τρέχοντα κόμβου. –Αν η τιμή του νέου στοιχείου είναι ίση με αυτήν του τρέχοντα κόμβου η διαδικασία σταματά, τα ΔΔΑ δεν επιτρέπουν διπλές τιμές.

53 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 53 ΣΤΟΙΧΕΙΑ : 35, 18, 25, 48, 72, 60

54 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 54 Εύρεση στοιχείου σε ΔΔΑ Χρησιμοποιείται ο ίδιος δρόμος όπως για την εισαγωγή μιας τιμής σε ένα κόμβο. Ο τύπος δεδομένων του κόμβου πρέπει να είναι εφοδιασμένος με τον τελεστή ==. Αναζήτηση του αριθμού 59

55 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 55 Ιδιότητα των ΔΔΑ Η ενδο-διατεταγμένη (inorder) διάσχιση ενός ΔΔΑ επισκέπτεται τους κόμβους έτσι ώστε οι τιμές που είναι αποθηκευμένες στους κόμβους να διατάσσονται ταξινομημένες κατά αύξουσα διάταξη.

56 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 56 Διαγραφή ρίζας σε ΔΔΑ

57 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 57 Διαγραφή τερματικού κόμβου σε ΔΔΑ

58 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 58 Διαγραφή κόμβου μόνο με αριστερό απόγονο

59 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 59 Διαγραφή κόμβου μόνο με δεξιό απόγονο

60 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 60 Διαγραφή κόμβου με δύο απογόνους

61 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 61 complexity of BST operations measured by length of the search path –depends on the height of the BST –height determined by order of insertion height of a BST containing n items is –minimum: floor (log 2 n) –maximum: n - 1 –average: ?

62 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 62 Πολυπλοκότητα διαδικασιών σε ΔΔΑ Σε ένα πλήρες δένδρο οι διαδικασίες αναζήτησης, εισαγωγής και διαγραφής έχουν πολυπλοκότητα O(log 2 n) στις περιπτώσεις : best-case και average-case. Σε worst-case το δένδρο είναι degenerate (δηλ. συνδεδεμένη λίστα) με πολυπλοκότητα O(n)

63 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 63 ΑΣΚΗΣΗ Να γίνει εισαγωγή των παρακάτω τιμών, με την σειρά που δίνονται, σε ένα ΔΔΑ: 73 14 1 9 11 22 10 Ποιο είναι το ύψος (height) του δένδρου που δημιουργείται; Ποιο είναι το ελάχιστο πιθανό ύψος δένδρου που μπορεί να δημιουργηθεί με το ίδιο πλήθος κόμβων; Να σχεδιάσετε το δένδρο που προκύπτει, μετά από τη διαγραφή του 3, καθώς και μετά τη διαγραφή του 14.

64 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 64 Λύση 7 / \ 3 14 / / \ 1 9 22 \ 11 / 10

65 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 65 Για 8 κόμβους, το ελάχιστο ύψος είναι : 4 (= ceil(log2(8+1)))

66 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 66 Μετά από τη διαγραφή του 3 7 / \ 1 14 / \ 9 22 \ 11 / 10

67 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 67 Μετά από τη διαγραφή του 14 7 7 / \ / \ 1 11 1 22 / \ είτε / / \ / 9 22 9 \ \ 10 11 / 10

68 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 68 faster searching "balanced" search trees guarantee O(log 2 n) search path by controlling height of the search tree –AVL tree –2-3-4 tree –red-black tree (used by STL associative container classes) hash table allows for O(1) search performance –search time does not increase as n increases

69 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 69 Trees and Balance A binary tree can degenerate into a linear list, depending on the order of insertion. For example, if keys are entered in ascending or descending order.

70 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 70 Balanced Trees Definition - A binary tree is balanced if and only if for every node, the heights of its two subtrees differ by a most 1. A balanced binary tree is also called an AVL tree, after its inventors, Adelson, Velskii, and Landis (1962).

71 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 71 Balanced tree example 1 50 33 82 75 4412 39

72 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 72 Balanced tree examples 2 50 3382 75 99 67

73 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 73 Balanced tree example 3 50 33 62 75 4412 3

74 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 74 AVL Trees Need to balance at the time of insertion What happens when a new node is inserted into a balanced tree? 3 Cases to consider: –1. Height of left subtree = height of right subtree –2. Height of left subtree < height of right subtree –3. Height of left subtree > height of right subtree Depending on the case, the balance may be broken.

75 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 75 AVL Tree Insertion CASE 2: 4 5 5 47

76 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 76 AVL Tree Insertion CASE 1: 5 47 5 47 2

77 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 77 AVL Tree Insertion CASE 3: 5 47 2 5 27 14

78 ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 78 AVL Tree Insertion CASE 3: 5 47 2 4 25 137


Κατέβασμα ppt "ΔΠΘ-ΤΜΗΜΑ ΜΠΔ:ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ 1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΡΧΕΙΩΝ ΔΕΝΔΡΑ."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google