αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών"

Transcript

1 ΕΝΟΤΗΤΑ ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό και µια λέξη, κ.ο.κ.). Αν S είναι ένα σύνολο και x είναι ένα αντικείµενο του χώρου από όπου το S προέρχεται, είτε x S ή x S. Ένα σύνολο δεν µπορεί να περιέχει το ίδιο στοιχείο 2 ή περισσότερες φορές. Σύνολα που περιέχουν πολλαπλά στιγµιότυπα του ίδιου στοιχείου λέγονται πολυ-σύνολα (multi-sets). Χρησιµότητα Πολλές εφαρµογές χρησιµοποιούν σύνολα και απαιτούν να είναι δυνατή η απάντηση ερωτήσεων του στυλ «Είναι το στοιχείο x S»; Παραδείγµατα Υπάρχει αυτός ο εργαζόµενος στη βάση δεδοµένων των εργαζοµένων; Υπάρχει αυτό το τηλέφωνο στον ηλεκτρονικό τηλεφωνικό κατάλογο; Υπάρχει αυτή η κράτηση στη βάση δεδοµένων µιας αεροπορικής ή ακτοπλοϊκής εταιρείας; ΗΥ24 - Παναγιώτα Φατούρου 2

2 Λειτουργίες Συνόλων MakeEmptySet(): Επιστρέφει το κενό σύνολο. IsEmptySet(S): Επιστρέφει true αν S είναι το κενό σύνολο και false διαφορετικά. Insert(x,S): Προσθέτει το στοιχείο x στο σύνολο S ή δεν πραγµατοποιεί καµία ενέργεια αν x S. Delete(x,S): ιαγράφει το στοιχείο x από το S. εν πραγµατοποιεί καµία αν x S. Member(x,S): επιστρέφει true αν το x είναι µέλος του συνόλου S και false διαφορετικά. Size(S): Επιστρέφει S, δηλαδή τον αριθµό των στοιχείων του S. Union(S,T): επιστρέφει S T, δηλαδή το σύνολο που αποτελείται από τα στοιχεία εκείνα που είναι µέλη είτε του S ή του Τ. Intersection(S,T): επιστρέφει S T, δηλαδή το σύνολο που αποτελείται από τα στοιχεία εκείνα που είναι µέλη και του S και του Τ. Difference(S,T): Επιστρέφει S \ T, δηλαδή το σύνολο των στοιχείων που ανήκουν στο S αλλά δεν ανήκουν στο Τ. Equal(S,T): Επιστρέφει true αν S=T και false διαφορετικά. Iterate(S,F): Εφαρµόζει τη λειτουργία F σε κάθε στοιχείο του S. Για χώρους στοιχείων στους οποίους ορίζεται η ιδιότητα της γραµµικής διάταξης: Min(S) (Μax(S)): επιστρέφει το µικρότερο (µεγαλύτερο) στοιχείο του S. ΗΥ24 - Παναγιώτα Φατούρου 3 Σύνολα Λεξικά Θεωρούµε ότι κάθε στοιχείο του συνόλου είναι ένα ζεύγος <K,I> όπου Κ είναι το κλειδί που χαρακτηρίζει µοναδικά στοιχείου, και Ι είναι πληροφορίες (δεδοµένα, data) που συνοδεύουν το στοιχείο µε κλειδί Κ. Θα επικεντρωθούµε στην υλοποίηση του αφηρηµένου τύπου δεδοµένων που υποστηρίζει κύρια τις παρακάτω λειτουργίες σε σύνολα: MakeEmptySet() IsEmptySet() Insert(K,I,S) Delete(K,S) LookUp(K,S): εδοµένου ενός κλειδιού Κ, επιστρέφει τα δεδοµένα Ι, τέτοια ώστε <Κ,Ι> S. Αν δεν υπάρχει στοιχείο µε κλειδί Κ στο S, επιστρέφει nill. Λεξικά Ο αφηρηµένος τύπος δεδοµένων που υποστηρίζει µόνο τις παραπάνω λειτουργίες (MakeEmptySet, IsEmptySet, Insert, Delete, και LookUp) λέγεται λεξικό. ΗΥ24 - Παναγιώτα Φατούρου 4

3 Υλοποίηση Λεξικών µε Λίστες Αποθήκευση των στοιχείων του συνόλου σε µια (µη-ταξινοµηµένη) λίστα: Στατική λίστα (χρήση πίνακα) Συνδεδεµένη Λίστα (απλά ή διπλά συνδεδεµένη). Τα στοιχεία βρίσκονται στη λίστα διατεταγµένα βάσει της σειράς εισαγωγής τους. Υλοποίηση Λειτουργιών Συνδεδεµένη Λίστα Χρονική Πολυπλοκότητα LookUp(): Θ(n) Στη χειρότερη περίπτωση το στοιχείο είναι το τελευταίο στη λίστα! Χρονική Πολυπλοκότητα Insert(): Θ(n) Θα πρέπει να προηγηθεί αναζήτηση και αν το στοιχείο υπάρχει να µην εισαχθεί ξανά στη λίστα. Χρονική Πολυπλοκότητα Delete(): Θ(n) Αναζήτηση του στοιχείου και διαγραφή του -> Η αναζήτηση κοστίζει Ο(n). Στατική Λίστα Το µέγιστο πλήθος στοιχείων του συνόλου πρέπει να είναι γνωστό εξ αρχής. Ποια είναι η χρονική πολυπλοκότητα των LookUp, Insert, Delete; ΗΥ24 - Παναγιώτα Φατούρου Υλοποίηση Λεξικών µε Λίστες - Αναµενόµενο Κόστος Υποθέτουµε πως η πιθανότητα p j η LookUp() να ψάχνει για το στοιχείο x j είναι η ίδια για κάθε j, 1 j n. Έτσι, αν έχουµε n στοιχεία, η πιθανότητα είναι 1/n. Έστω ότι c j είναι το κόστος που πληρώνουµε για να βρούµε το στοιχείο x j c j = j. Το αναµενόµενο κόστος είναι το άθροισµα των (c j *p j ) για κάθε j: Αναµενόµενο Κόστος = 1*1/n+2*1/n+ +n*1/n = (1+2+ +n)/n = n(n+1)/(2n) = (n+1)/2 = Θ(n)!! ιαφορετικές Πιθανότητες για διαφορετικά κλειδιά Κ 1,..., Κ n : τα κλειδιά στο σύνολο σε φθίνουσα διάταξη ως προς τη συχνότητα µε την οποία αναζητούνται µέσω της LookUp(). p 1 p 2... p n : πιθανότητα µια LookUp() να ψάχνει για το Κ 1, Κ 2,...,Κ n, αντίστοιχα. Ο αναµενόµενος χρόνος αναζήτησης ελαχιστοποιείται όταν τα στοιχεία έχουν τη διάταξη Κ 1, Κ 2,..., Κ n στη λίστα: Γιατί αυτό είναι βέλτιστο; C opt = n ip i i= 1 ΗΥ24 - Παναγιώτα Φατούρου 6

4 Αναµενόµενο Κόστος Ας υποθέσουµε, για να καταλήξουµε σε άτοπο, ότι η διάταξη των κλειδιών που οδηγεί στο ελάχιστο αναµενόµενο πλήθος συγκρίσεων είναι Km 1, Km 2,, Km n, όπου η ακολουθία m 1,, m n, αποτελεί µετάθεση της 1,, n και ότι pm i < pm j για κάποιo i < j. Τότε, ανταλλάσοντας τις θέσεις των Km i και Km j στην ακολουθία θα µείωνε το αναµενόµενο πλήθος συγκρίσεων κατά ipm i + jpm j ipm j jpm i = (j-i)(pm j -pm i ) > Άρα, η διάταξη Km 1, Km 2,, Km n δεν οδηγεί στο ελάχιστο αναµενόµενο πλήθος συγκρίσεων, το οποίο αντιτίθεται στην υπόθεση. ΗΥ24 - Παναγιώτα Φατούρου 7 Ευριστικά Η πραγµατική κατανοµή πιθανότητας συνήθως δεν είναι γνωστή. Το λεξικό µπορεί να αλλάζει µέγεθος κατά τη χρήση του. Η µελέτη πιθανοτικών µοντέλων κάποιες φορές απέχει αρκετά από το τι γίνεται στην πράξη! Ευριστικό Move-To-Front (Ευριστικό «Μετακίνησης στην Αρχή») «Μετά από κάθε επιτυχηµένη αναζήτηση, το στοιχείο που βρέθηκε µετακινείται στην αρχή της λίστας.» Χρονική Πολυπλοκότητα; (α) Συνδεδεµένη Λίστα; (β) Στατική Λίστα; Ευριστικό «Αλληλοµετάθεσης» (Transpose) «Μετά από κάθε επιτυχηµένη αναζήτηση, το στοιχείο που βρέθηκε µετακινείται µια θέση προς την αρχή της λίστας (δηλαδή ανταλλάσσεται µε το προηγούµενό του στη λίστα)». Σύγκριση µεταξύ Ευριστικών Το ευριστικό Transpose αποδεικνύεται ότι έχει καλύτερο αναµενόµενο κόστος από το MoveToFront. Ωστόσο, το Transpose σταθεροποιείται σε µια σταθερή καλή κατάσταση πιο αργά από το MoveToFront. ΗΥ24 - Παναγιώτα Φατούρου 8

5 Ευριστικό «Μετακίνησης στην Αρχή» - Αναµενόµενο Κόστος Ας υποθέσουµε ότι η διαδικασία αναζήτησης κλειδιών έχει πραγµατοποιηθεί για αρκετά µεγάλο χρονικό διάστηµα, ώστε όλα τα κλειδιά να έχουν αναζητηθεί αρκετές φορές και η λίστα να βρίσκεται σε κάποιου είδους «σταθερή» κατάσταση. p(i,j): πιθανότητα ότι το κλειδί K i προηγείται του K j στη λίστα Ποια είναι η τιµή της p(i,j) συναρτήσει των p i και p j ; Προκειµένου το K i να βρίσκεται πριν το K j στη λίστα θα πρέπει η τελευταία LookUp(K i,s) να έχει συµβεί πιο πρόσφατα από την τελευταία LookUp(K j,s). Αν επικεντρωθούµε στην τελευταία LookUp που πραγµατοποιείται για κάποιο από τα κλειδιά K i και K j και αγνοήσουµε τις υπόλοιπες, τότε p(i,j) είναι η πιθανότητα αυτή η LookUp να αναζητά το K i. Άρα, p(i,j) = p i / (p i +p j ). ΗΥ24 - Παναγιώτα Φατούρου 9 Ευριστικό «Μετακίνησης στην Αρχή» - Αναµενόµενο Κόστος Το αναµενόµενο πλήθος κλειδιών που προηγούνται του K j στη λίστα είναι εποµένως p( i, j). Άρα, το αναµενόµενο πλήθος συγκρίσεων για να βρεθεί το κλειδί K j είναι 1 + p( i, j). i j Καταλήγουµε πως το αναµενόµενο πλήθος συγκρίσεων που απαιτούνται για την εύρεση ενός κλειδιού είναι: C MTF = i j n n n p (1 + p( i, j)) = p + p p( i, j) = 1 + p p( i, j) j j j j j= 1 i j j= 1 j= 1 i j i j p p p p = 1+ i j = 1+ 2 i j p + p p + p Πως συγκρίνεται το C MFT µε το C OPT ; i j i j i< j i j p n n i p j pi pi j j i< j pi + p j j= 1 1 i< j pi + p j j= 1 pi + p j n σ = = p p ( j 1), since 1, i, j = C 1, since p = 1. OPT j= 1 j Άρα, C MFT /C OPT (1+2σ)/(1+σ) = 2 1/(1+σ) < 2. Το αναµενόµενο κόστος του ευριστικού MoveToFront είναι το πολύ 2 φορές χειρότερο από εκείνο του βέλτιστου αλγόριθµου! ΗΥ24 - Παναγιώτα Φατούρου 1

6 Ταξινοµηµένες Στατικές Λίστες Χρήση Πίνακα για αποθήκευση των στοιχείων του συνόλου. Κάθε στοιχείο του πίνακα είναι ένα struct µε πεδία Key και data. Τα στοιχεία του πίνακα είναι ταξινοµηµένα βάσει του κλειδιού τους. Χρήση δυαδικής αναζήτησης για την υλοποίηση της LookUp(). BinarySearch Type BinarySearchLookUp(key K, table T[..n-1]) /* eturn information stored with key K in T, or nill if K is not in T */ left = ; right = n-1; repeat forever if (right < left) then return nill; else middle = (left+right)/2 ; if (K == T[middle]->Key) then return T(middle]->data; else if (K < T[middle]->Key) then right = middle-1; else left = middle+1; ΗΥ24 - Παναγιώτα Φατούρου 11 υνατές Εκτελέσεις BinarySearchLookUp Κυκλικοί κόµβοι: εσωτερικοί Τετραγωνισµένοι κόµβοι: εξωτερικοί Το δένδρο περιγράφει όλες τις δυνατές εκτελέσεις της BinarySearch() σε ένα πίνακα 1 στοιχείων. Θεώρηµα 1 Ο αλγόριθµος δυαδικής αναζήτησης εκτελεί O(logn) συγκρίσεις για κάθε αναζήτηση στοιχείου σε πίνακα µε n στοιχεία. ΗΥ24 - Παναγιώτα Φατούρου 12

7 Ταξινοµηµένα υαδικά ένδρα ( ένδρα υαδικής Αναζήτησης) Είναι δυαδικά δένδρα στα κλειδιά των οποίων είναι ορισµένη µια γραµµική διάταξη. Για κάθε κόµβο η τιµή του κλειδιού του είναι µεγαλύτερη από όλες τις τιµές των κόµβων του αριστερού υποδένδρου του κόµβου και µικρότερη από όλες τις τιµές των κόµβων του δεξιού υποδένδρου του. Κάθε κόµβος είναι ένα struct µε πεδία key, data, LC, C. Το µέγιστο ύψος δυαδικού δένδρου µε n κόµβους είναι n-1. Γιατί; Το ελάχιστο ύψος δυαδικού δένδρου µε n κόµβους είναι logn. Γιατί; Ποια η σχέση ταξινοµηµένων δυαδικών δένδρων και ενδο-διατεταγµένης διάσχισης? ΗΥ24 - Παναγιώτα Φατούρου 13 Ταξινοµηµένα ένδρα Αναδροµική Έκδοση function BinarySearchTreeLookUp( key K, pointer ):Type /* Εύρεση του κλειδιού Κ στο δένδρο µε ρίζα P και επιστροφή του πεδίου data ή nill αν το κλειδί δεν υπάρχει στο δένδρο */ if ( == NULL) return nill; else if (K == ->key) return ->data; else if (K < ->key) return(binarytreelookup(k, ->LC)); else return(binarytreelookup(k, ->C)); Χρονική πολυπλοκότητα; Μη-Αναδροµική Έκδοση function BinarySearchTreeLookUp ( key K, pointer ):Type /* Εύρεση του κλειδιού Κ στο δένδρο µε ρίζα P και επιστροφή του πεδίου data ή nill αν το κλειδί δεν υπάρχει στο δένδρο */ while (!= NULL && K!= ->key) { if (K < ->key) = ->LC; else = ->C; if (!= NULL) return(->data); else return nill; ΗΥ24 - Παναγιώτα Φατούρου 14

8 Ταξινοµηµένα ένδρα µε Κόµβο Φρουρό function BinarySearchTreeLookUp( key K, pointer ):Type while (!= NULL && K!= ->Key) { if (K < ->key) = ->LC; else = ->C; if (!= NULL) return(->data); else return nill; G Ποια η χρησιµότητα του κόµβου φρουρού; function BinarySearchTreeLookUp( key K, pointer ):Type while (K!= ->Key) { if (K < ->key) = ->LC; else = ->C; if (!= G) return(->data); else return nill; ΗΥ24 - Παναγιώτα Φατούρου 1 Ταξινοµηµένα ένδρα - Ελάχιστο και Μέγιστο Στοιχείο function BinarySearchTreeMinimum( pointer ): info /* o είναι δείκτης στη ρίζα του δένδρου */ if ( == NULL) return error; while (->LC!= NULL) = ->LC; return(->data); Επόµενο και Προηγούµενο Στοιχείο Το πρόβληµα είναι ίδιο µε την εύρεση του επόµενου και προηγούµενου κόµβου στην ενδοδιατεταγµένη διάσχιση του δένδρου. function BinarySearchTreeMaximum( q2 pointer ): info /* o είναι δείκτης στη ρίζα του δένδρου */ if ( == NULL) return error; while (->C!= NULL) = ->C; q1 return (->data); Πως θα βρούµε τον επόµενο του κόµβου στον οποίο δείχνει ο q1 στην ενδο-διατεταγµένη διάσχιση; Πολυπλοκότητα; Πως θα βρούµε τον επόµενο του κόµβου στον οποίο δείχνει ο q2 στην ενδο-διατεταγµένη διάσχιση; ΗΥ24 - Παναγιώτα Φατούρου 16

9 Ταξινοµηµένα ένδρα - Εισαγωγή function BinarySearchTreeInsert(key K, Type I, pointer ): pointer /* ο είναι δείκτης στη ρίζα του δένδρου */ pointer P, Q, Prev = NULL; P = ; while (P!= NULL) { if (P->Key == K) { P->data = I; return ; Prev = P; if (K < P->Key) P = P->LC; else P = P->C; /* ηµιουργία & προσθήκη νέου κόµβου */ Q = NewCell(Node); Q->Key = K; Q->data = I; Q->LC = Q->C = NULL; if (Prev == NULL) return Q; else if (K < Prev->Key) Prev->LC = Q; else Prev->C = Q; return ; nill 6 Q Αναζήτηση κόµβου µε κλειδί ίσο µε K. Αν τέτοιος κόµβος δεν βρεθεί, ο δείκτης prev, µετά το πέρας της ανακύκλωσης, θα δείχνει στον κόµβο γονέα του προς εισαγωγή κόµβου! Παράδειγµα Εισαγωγή κόµβου µε κλειδί 6 ΗΥ24 - Παναγιώτα Φατούρου 17 P nill prev Ταξινοµηµένα ένδρα - ιαγραφή Όταν ένας κόµβος διαγράφεται, η ενδο-διατεταγµένη διάσχιση των υπόλοιπων κόµβων πρέπει να διασχίζει τους κόµβους σύµφωνα µε τη διάταξη που είχαν πριν τη διαγραφή. Περιπτώσεις 1) Ο προς διαγραφή κόµβος είναι φύλλο. ιαγράφουµε τον κόµβο χωρίς να εκτελέσουµε κάποια επιπρόσθετη ενέργεια. 2) Ο προς διαγραφή κόµβος είναι εσωτερικός αλλά έχει µόνο ένα παιδί. Αντικαθιστούµε τον κόµβο µε το µοναδικό παιδί του. 3) Ο προς διαγραφή κόµβος είναι εσωτερικός µε δύο παιδιά. Αντικαθιστούµε τον κόµβο µε τον επόµενο ή τον προηγούµενό του στην ενδο-διατεταγµένη διάσχιση. Αυτός είναι κόµβος µε το πολύ ένα παιδί. Γιατί; a) Αρχικό ένδρο, β) ιαγραφή Ν από αρχικό δένδρο, γ) ιαγραφή Μ από αρχικό δένδρο, δ) ιαγραφή F από αρχικό δένδρο ΗΥ24 - Παναγιώτα Φατούρου 18

10 Ταξινοµηµένα ένδρα - ιαγραφή Υποθέτουµε πως το δένδρο είναι διπλά συνδεδεµένο, δηλαδή κάθε κόµβος έχει ένα δείκτη p που δείχνει στο γονικό κόµβο. pointer BinaryTreeDelete(pointer, Key K) { /* Ο είναι η διεύθυνση ενός δείκτη στη ρίζα του δένδρου */ /* Το Κ είναι το κλειδί του προς διαγραφή κόµβου */ if (z->lc == NULL z->c == NULL) y = z; else y = TreeSuccessor(z); if (y->lc!= NULL) x = y->lc; else x = y->c; y x=null y x if (x!= NULL) x->p = y->p; if (y->p == NULL) return x; // διαγραφή ρίζας else if (y == y->p->lc) y->p->lc = x; else y->p->c = x; if (y!= z) z->key = y->key; if y has other fields copy them two; return y; x ΗΥ24 - Παναγιώτα Φατούρου 19 x y x z Ταξινοµηµένα ένδρα Θεώρηµα Η χρονική πολυπλοκότητα των λειτουργιών Insert(), Delete() και LookUp() σε ταξινοµηµένα δυαδικά δένδρα είναι O(h), όπου h το ύψος του δένδρου. Ποιο πρόβληµα µπορεί να προκύψει µε συνεχή αντικατάσταση του κόµβου µε τον επόµενό του στην ενδο-διατεταγµένη διάσχιση? Στατικά Ταξινοµηµένα υαδικά ένδρα Υπάρχουν κλειδιά που αναζητούνται πιο συχνά και άλλα που αναζητούνται πιο σπάνια. Σε µια λίστα συχνά αναζητούµενα κλειδιά κρατούνται όσο το δυνατόν πιο κοντά στην αρχή της λίστας. Ποιο είναι το ανάλογο του ευριστικού Μετακίνησης στην Αρχή» σε ένα ταξινοµηµένο δυαδικό δένδρο? Κάθε φορά που αναζητείται ένα κλειδί µεταφέρεται στη ρίζα. Ωστόσο, αυτό θα πρέπει να γίνει προσεκτικά ώστε να µην καταστρέφεται η ιδιότητα ταξινόµησης του δένδρου. ΗΥ24 - Παναγιώτα Φατούρου 2

11 ΕΝΟΤΗΤΑ 6 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ΗΥ24 - Παναγιώτα Φατούρου 21 Ισοζυγισµένα ένδρα Χρονική Πολυπλοκότητα δοµών που έχουν διδαχθεί µέχρι τώρα: Στατική Μη-Ταξινοµηµένη Λίστα -> Ο(n), όπου n το πλήθος των κόµβων Στατική Ταξινοµηµένη Λίστα -> Ο(n) υναµική µη-ταξινοµηµένη λίστα -> O(n) υναµική ταξινοµηµένη λίστα -> O(n) Μη-ταξινοµηµένα ένδρα -> O(n), όπου n το πλήθος των κόµβων Ταξινοµηµένα ένδρα - > O(h), όπου h το ύψος του δένδρου Τι τιµές µπορεί να πάρει το h; Γραµµική πολυπλοκότητα Αναζητούνται δοµές δεδοµένων για την υλοποίηση δυναµικών λεξικών που να παρουσιάζουν καλύτερη χρονική πολυπλοκότητα από αυτή που παρέχουν οι παραπάνω δοµές (π.χ., όλες οι λειτουργίες να έχουν χρονική πολυπλόκοτητα Ο(logn)). ΗΥ24 - Παναγιώτα Φατούρου 22

12 ένδρα AVL Ένα ταξινοµηµένο δυαδικό δένδρο Τ ονοµάζεται AVL (ή ισοζυγισµένο κατ ύψος) αν και µόνο αν τα ύψη των δύο υποδένδρων κάθε κόµβου v διαφέρουν το πολύ κατά ένα. Για κάθε κόµβο v ενός δυαδικού δένδρου Τ, ορίζουµε το αριστερό ύψος του v (LeftHeight(v)) ως εξής: if v->lc == NULL LeftHeight( v) = 1 + Height( v > LC) otherwise Οµοίως, ορίζουµε το δεξιό ύψος του v (ightheight(v)) ως εξής: if v->c == NULL ightheight( v) = 1 + Height( v > C) otherwise Το LeftHeight(T) (ightheight(t)) του δένδρου ισούται µε το LeftHeight() (ightheight(), αντίστοιχα), όπου είναι ο κόµβος ρίζα του Τ. ΗΥ24 - Παναγιώτα Φατούρου 23 ένδρα AVL Το balance (ισοζύγιο) του κόµβου v ορίζεται ως εξής: balance(v) = ightheight(v) LeftHeight(v). Σε ένα δένδρο AVL, κάθε κόµβος πρέπει να έχει balance, +1 ή -1. Πρόταση 1 Κάθε υποδένδρο ενός δένδρου AVL είναι επίσης δένδρο AVL. Θεώρηµα Το ύψος h ενός δένδρου AVL, n στοιχείων, είναι Ο(logn). Μπορούµε να συµπεράνουµε κάτι για την πολυπλοκότητα της AVLTreeLookUp()? Τα δένδρα (α), (b) και (c) είναι δένδρα AVL, ενώ τα (d) και (e) δεν είναι. ΗΥ24 - Παναγιώτα Φατούρου 24

13 ένδρα AVL Απόδειξη Θεωρήµατος Αναζητούµε ένα πάνω φράγµα στο µήκος h του µακρύτερο µονοπατιού οποιουδήποτε δένδρου AVL µε n κόµβους. Έστω ένας οποιοσδήποτε ακέραιος h. Θα εστιάσουµε στο ερώτηµα «Ποιος είναι ο µικρότερος ακέραιος n τ.ω. να υπάρχει ένα δένδρο AVL ύψους h µε n κόµβους;» W h : σύνολο όλων των δένδρων AVL ύψους h µε ελάχιστο πλήθος κόµβων. w h : πλήθος κόµβων σε οποιoδήποτε από αυτά τα δένδρα. Προφανώς w = 1 και w 1 = 2. Έστω ότι Τ είναι οποιοδήποτε δένδρο AVL στο W h και έστω T L και T το αριστερό και το δεξιό υποδένδρο του Τ, αντίστοιχα. Αφού το T έχει ύψος h, είτε το T L ή το T έχει ύψος h-1 (ας υποθέσουµε χωρίς βλάβη της γενικότητας ότι το T έχει ύψος h-1). Το T είναι δένδρο AVL ύψους h-1 και µάλιστα θα πρέπει να έχει το µικρότερο πλήθος κόµβων µεταξύ των δένδρων AVL ύψους h-1 (αφού στην αντίθετη περίπτωση, θα µπορούσε να αντικατασταθεί από κάποιο δένδρο AVL ύψους h-1 µε λιγότερους κόµβους και να οδηγηθούµε έτσι σε ένα δένδρο AVL ύψους h µε λιγότερους κόµβους από ότι το Τ, το οποίο αντιτίθεται στον ορισµό του Τ). ΗΥ24 - Παναγιώτα Φατούρου 2 ένδρα AVL Απόδειξη Θεωρήµατος Άρα, T W h-1. Αφού το T είναι δένδρο AVL, το T L έχει ύψος είτε h-1 ή h-2. Εφόσον το Τ είναι δένδρο µε ελάχιστο πλήθος κόµβων µεταξύ εκείνων µε ύψος h, θα πρέπει να ισχύει T L W h-2. Εποµένως: w h = 1 + w h-2 + w h-1 Μπορεί να αποδειχθεί (επαγωγικά) ότι w h = F h+3-1, όπου F i είναι ο i-οστός όρος της ακολουθίας Fibonacci, για τον οποίο ισχύει ότι F i > φ i / -1, όπου φ = (1+ )/2. Εποµένως, n w h > φ h+3 / -2. Από την παραπάνω ανίσωση προκύπτει ότι h = Ο(logn). ΗΥ24 - Παναγιώτα Φατούρου 26

14 ένδρα AVL Εισαγωγή Πως µπορούµε να υλοποιήσουµε την Insert()? Που διαφέρει από την Insert() σε δυαδικό δένδρο αναζήτησης? 1η Προσπάθεια Σχεδίασης Αλγορίθµου Εισαγωγής Ακολουθώντας το γνωστό αλγόριθµο εισαγωγής σε ταξινοµηµένο δένδρο (δένδρο δυαδικής αναζήτησης), βρίσκουµε το µονοπάτι από τη ρίζα προς τον κατάλληλο κόµβο (έστω v) στον οποίο θα γίνει η εισαγωγή. Το µονοπάτι αυτό αποθηκεύεται σε στοίβα. Ακολουθώντας το µονοπάτι από τον v προς τη ρίζα (εκτελώντας επαναληπτικά pop() στη στοίβα), υπολογίζουµε τα νέα balances για κάθε κόµβο του µονοπατιού αυτού. Αν το balance όλων των κόµβων του µονοπατιού εξακολουθεί να είναι, +1 ή -1, η διαδικασία εισαγωγής τερµατίζει. Αν, ωστόσο, το balance κάποιου κόµβου αλλάζει σε +2 ή σε 2, θα πρέπει να ακολουθηθεί διαδικασία προσαρµογής του balance στο κατάλληλο εύρος. Η διαδικασία αυτή θα έχει ως αποτέλεσµα το δένδρο να εξακολουθεί να είναι ταξινοµηµένο δυαδικό δένδρο µε τους ίδιους κόµβους και κλειδιά, αλλά µε όλους τους κόµβους να έχουν balance, 1, ή -1. ΗΥ24 - Παναγιώτα Φατούρου 27 ένδρα AVL Περιστροφές Μια περιστροφή είναι µια τοπική λειτουργία σε ένα ταξινοµηµένο δένδρο η οποία διατηρεί την ιδιότητα της ταξινόµησης. Αριστερή Περιστροφή γύρω από έναν κόµβο x (ο οποίος έχει δεξιό θυγατρικό κόµβο y!= nill) Η αριστερή περιστροφή στρέφει τους x και y κατά αντίστροφη φορά αυτής των δεικτών του ρολογιού. Καθιστά τον y νέα ρίζα του υποδένδρου, µετατρέποντας τον x σε αριστερό παιδί του y και το αριστερό παιδί του y σε δεξιό παιδί του x. ΗΥ24 - Παναγιώτα Φατούρου 28

15 ένδρα AVL Περιστροφές Procedure Leftotate(pointer, pointer x) { y = x->c; // ορισµός του y // µετατροπή αριστερού υποδένδρου y σε δεξιό υποδένδρο x x->c = y->lc; if (y->lc!= NULL) y->lc->p = x; /* νέος πατρικός κόµβος του y γίνεται ο πρώην πατρικός κόµβος του x και αν δεν υπάρχει τέτοιος κόµβος, νέα ρίζα του δένδρου γίνεται το y */ y->p = x->p; if (x->p == NULL) return y; else if (x == x->p->lc) // αν ο x είναι αριστερό παιδί του πατέρα του x->p->lc = y; else x->p->c = y; y->lc = x; // αριστερό παιδί του y γίνεται το x x->p = y; // πατέρας του x γίνεται το y Μια δεξιά περιστροφή γίνεται µε συµµετρικό τρόπο και ο κώδικας της είναι απολύτως συµµετρικός µε τον παραπάνω. Χρονική Πολυπλοκότητα µιας περιστροφής; Ο(1) ΗΥ24 - Παναγιώτα Φατούρου 29 w ένδρα AVL Εισαγωγή Ο πρώτος κόµβος στο µονοπάτι από τον κόµβο v (που εισήχθη στο δένδρο) προς τη ρίζα, του οποίου το balance ήταν +1 ή -1 (πριν την εισαγωγή) ονοµάζεται κρίσιµος κόµβος. Αν ο κόµβος αυτός αποκτά balance +2 ή -2 µετά την εισαγωγή, τότε είναι ο πρώτος κόµβος στο µονοπάτι από τον v στη ρίζα για τον οποίο θα πρέπει να γίνουν κατάλληλες ενέργειες ώστε να διορθωθεί το balance του. ιακρίνουµε περιπτώσεις ανάλογα µε το είδος των δύο πρώτων ακµών του µονοπατιού από τον κρίσιµο κόµβο w προς τον εισαχθέντα κόµβο v. Περίπτωση (ight-ight) Και οι δύο ακµές οδηγούν δεξιά. Εκτελούµε µια αριστερή περιστροφή γύρω από τον κρίσιµο κόµβο Εισαγωγή 8 w ΗΥ24 - Παναγιώτα Φατούρου κρίσιµος κόµβος (w) T 1 T 2 T 3 v v

16 ένδρα AVL Εισαγωγή Περίπτωση Παρατήρηση: Έστω x ο πατρικός κόµβος του w και έστω ότι ο w είναι δεξιό παιδί του x. Το ύψος του δεξιού παιδιού του x πριν την εισαγωγή και µετά την περιστροφή είναι το ίδιο (στο παράδειγµα h+2)! x x πριν την εισαγωγή +1, +1 +1, µετά την εισαγωγή +1,+1 x 3 Μία περιστροφή γύρω από τον κρίσιµο κόµβο αρκεί!!!! , πριν την εισαγωγή, +1, +1 +1, +1 µετά την εισαγωγή 2, , +2 11,,, x Μετά περιστροφής,, +1, +1 +1,+2 3 T 2 κρίσιµος κόµβος 3 7, +1, +1 +1, +1, 9 Εισαγωγή 8 +1, +2,+1 6 Όλοι οι κόµβοι στο µονοπάτι από τον κρίσιµο κόµβο προς τη ρίζα έχουν το ίδιο balance µετά την περιστροφή µε αυτό που είχαν πριν την εισαγωγή του v στο δένδρο!, 1 2 T 1 4,, T 2 7,+1, 8 v T 3 ΗΥ24 - Παναγιώτα Φατούρου 31 T 1 T 3 εν χρειάζονται περιστροφές γύρω από κόµβους που βρίσκονται πιο ψηλά από τον κρίσιµο κόµβο στο µονοπάτι από τον v προς τη ρίζα!!!!! ένδρα AVL Εισαγωγή Περίπτωση LL Περίπτωση LL Και οι δύο ακµές οδηγούν αριστερά. Είναι συµµετρική της περίπτωσης! Μία δεξιά περιστροφή γύρω από τον κρίσιµο κόµβο αρκεί για να επιλυθεί το πρόβληµα µε το balance του! -1-2 C C -1 T 3 h T 3 h h h T 1 T 2 h T 1 h T 2 C T 1 h h T 2 T 3 ΗΥ24 - Παναγιώτα Φατούρου 32

17 ένδρα AVL Εισαγωγή Περίπτωση L Περίπτωση L Η πρώτη ακµή οδηγεί δεξιά και η δεύτερη αριστερά. Απαιτούνται δύο περιστροφές, µια δεξιά περιστροφή γύρω από τον επόµενο του κρίσιµου κόµβου στο µονοπάτι που οδηγεί στον v και µια αριστερή περιστροφή γύρω από τον κρίσιµο κόµβο. πριν την εισαγωγή +1, µετά την εισαγωγή +1, +1 +1,+2 3 κρίσιµος κόµβος (Α) , +2, +1, +1 +1, +1, ,,, L 7 Εισαγωγή 8, T 1, +1 8 nill, T 4 T 2 T 3 ΗΥ24 - Παναγιώτα Φατούρου 33 ένδρα AVL Εισαγωγή Περίπτωση L πριν την εισαγωγή µετά την εισαγωγή +1, , +1 +1,+2 3 Περιστροφή 3 κρίσιµος κόµβος (Α) κρίσιµος κόµβος (Α) , +2, +1, +1 +1, +1, ,,, L 7 Εισαγωγή 8, T 1, +1 8 nill, T Περιστροφή L T 2 T 3 πριν την εισαγωγή µετά την εισαγωγή +1, ύψος πριν την εισαγωγή = ύψος µετά την εισαγωγή = 2 +1, +1 +1,+1 3 Ίδιες περιστροφές θα πραγµατοποιούνταν αν , είχαµε εισαγωγή του 3, +1, +1 +1, +1 στο αρχικό δένδρο (το οποίο θα ήταν αριστερό,, 4 7 παιδί του ). 8, ΗΥ24 - Παναγιώτα Φατούρου 34

18 ένδρα AVL Εισαγωγή Περίπτωση L Περίπτωση L Η πρώτη ακµή οδηγεί αριστερά και η δεύτερη δεξιά. Είναι συµµετρική της περιπτώσεως L. Απαιτούνται δύο περιστροφές, µια αριστερή περιστροφή γύρω από τον επόµενο του κρίσιµου κόµβου στο µονοπάτι που οδηγεί στον v και µια δεξιά περιστροφή γύρω από τον κρίσιµο κόµβο. Άσκηση για το σπίτι Φτιάξτε τα αντίστοιχα συµµετρικά σχήµατα εκείνων που παρουσιάστηκαν στις δύο τελευταίες διαφάνειες και µελετήστε τις ενέργειες που πρέπει να πραγµατοποιηθούν στην περίπτωση L. ΗΥ24 - Παναγιώτα Φατούρου 3 ένδρα AVL Εισαγωγή Περιπτώσεις που δεν απαιτούν περιστροφές +1, , +1 +1,+1 3 κρίσιµος κόµβος ,, +1, +1 +1, +1, -1, ,, 38 Εισαγωγή 38,, 7,, -1 11, +1, ,, +1,, 9, Εισαγωγή 9 ΗΥ24 - Παναγιώτα Φατούρου 36

19 Εισαγωγές κόµβων σε AVL δένδρο Παράδειγµα ιαδοχικές εισαγωγές των κλειδιών µε τιµές 9, 71, 1, 4, 12,, 19, 2 και L κρίσιµος κόµβος -2 9 L κρίσιµος κόµβος L -1 L ΗΥ24 - Παναγιώτα Φατούρου 37 Εισαγωγές κόµβων σε AVL δένδρο Παράδειγµα ιαδοχικές εισαγωγές των κλειδιών µε τιµές 9, 71, 1, 4, 12,, 19, 2 και L κρίσιµος κόµβος κρίσιµος κόµβος κρίσιµος κόµβος ΗΥ24 - Παναγιώτα Φατούρου 38

20 ένδρα AVL Εισαγωγή - Παρατηρήσεις Κάθε κόµβος στο µονοπάτι από τον εισαχθέντα κόµβο v µέχρι τον κρίσιµο κόµβο w είχε balance πριν την εισαγωγή. Άρα, θα έχει balance +1 ή 1 µετά την εισαγωγή. Τι καθορίζει το αν κάποιος τέτοιος κόµβος θα έχει balance +1 ή 1; Το αν η πρώτη ακµή στο µονοπάτι από τον κόµβο αυτό προς τον εισαχθέντα κόµβο οδηγεί αριστερά ή δεξιά. To balance του κρίσιµου κόµβου w γίνεται είτε ή +2 (ή 2, αντίστοιχα) µετά την τοποθέτηση του νέου κόµβου στην κατάλληλη θέση στο δένδρο. Γιατί; Πότε το balance γίνεται και πότε +2 (ή 2); Αν το balance ήταν +1 (-1) και η πρώτη ακµή στο µονοπάτι από τον w στον v οδηγεί δεξιά (αριστερά, αντίστοιχα), ο w θα έχει balance +2 (-2, αντίστοιχα) µετά την τοποθέτηση του v, ενώ αν το µονοπάτι οδηγεί αριστερά (δεξιά, αντίστοιχα), τότε ο w θα έχει balance µετά την τοποθέτηση του v. Παρατήρηση Οι περιστροφές γίνονται γύρω από το πολύ δύο κόµβους στο δένδρο ανάλογα µε την περίπτωση που πρέπει να εφαρµοστεί (µία περιστροφή γύρω από τον κρίσιµο κόµβο για τις περιπτώσεις LL, και δύο περιστροφές, η πρώτη γύρω από τον επόµενο του κρίσιµου κόµβου στο µονοπάτι που ακολουθήθηκε κατά την τοποθέτηση του εισαχθέντα κόµβου και η δεύτερη γύρω από τον κρίσιµο κόµβο για τις περιπτώσεις L, L). ΗΥ24 - Παναγιώτα Φατούρου 39 ένδρα AVL Εισαγωγή - Παρατηρήσεις Καθώς η αναζήτηση του πατρικού κόµβου του v εξελίσσεται, αρκεί να αποθηκεύεται ο τελευταίος κόµβος µε balance +1 ή -1 στο µονοπάτι που ακολουθείται. Μετά την τοποθέτηση του v στο δένδρο (και πριν τις περιστροφές), ξεκινώντας από τον κρίσιµο κόµβο w µπορεί να ακολουθηθεί και πάλι το ίδιο µονοπάτι προς τον εισερχόµενο κόµβο ώστε να διορθωθούν τα balances. Τέλος, αν χρειάζεται πραγµατοποιούνται περιστροφές. Γιατί µπορούµε να βρούµε και πάλι αυτό το µονοπάτι? Ακολουθούµε την ίδια διαδικασία αναζήτησης (ξεκινώντας από τον w), δηλαδή αν το κλειδί του προς εισαγωγή κόµβου είναι µικρότερο από εκείνο του τρέχοντος ο επόµενος κόµβος στο µονοπάτι είναι στα αριστερά του τρέχοντος, ενώ διαφορετικά στα δεξιά. Πως διορθώνουµε τα balances? Έστω ένας οποιοσδήποτε κόµβος x στο µονοπάτι από τον w στον v. Ο κόµβος αυτός είχε balance. Αν η πρώτη ακµή στο µονοπάτι από τον x στον v οδηγεί αριστερά του x, τότε το balance του x γίνεται -1, διαφορετικά η νέα τιµή του balance θα είναι +1. Ποια είναι η πολυπλοκότητα της AVLInsert()? Ο(ύψος δένδρου). Θεώρηµα ύψος δένδρου AVL = O(logn) Χρονική Πολυπλοκότητα = O(logn) ΗΥ24 - Παναγιώτα Φατούρου 4

21 ένδρα AVL ιαγραφή Αρχικά ακολουθούµε το γνωστό αλγόριθµο διαγραφής σε δυαδικό δένδρο: 1) ιαγραφή του ίδιου του κόµβου v αν είναι φύλλο. 2) Αντικατάστασή του από το παιδί του αν έχει µόνο ένα παιδί. 3) Αντικατάστασή του από τον επόµενό του στην ενδοδιατεταγµένη διάταξη αν έχει δύο παιδιά. (α) Αρχικό δένδρο, (b) ιαγραφή του Β, (c) ιαγραφή του F, (d) ιαγραφή του M, (e) ιαγραφή του Balance Αν 1) ή 2), το balance του γονικού κόµβου w του v αλλάζει. Αν 3), το balance του γονικού κόµβου w του εποµένου του v στην ενδοδιατεταγµένη διάσχιση αλλάζει. ΗΥ24 - Παναγιώτα Φατούρου 41 ένδρα AVL ιαγραφή Αλγόριθµος 1. Εξετάζουµε όλο το µονοπάτι (ας το συµβολίσουµε µε P1) από τον w ως τη ρίζα και για κάθε κόµβο του µονοπατιού αυτού που έχει balance +2 ή -2 µετά τη διαγραφή, ίσως χρειαστεί να γίνουν περιστροφές ως ακολούθως. νέος u 2. Έστω u ο πρώτος τέτοιος κόµβος στο P1. 3. Καθορίζουµε το µονοπάτι P2 µε το µεγαλύτερο µήκος από τον u προς οποιοδήποτε φύλλο του υποδένδρου του και εξετάζουµε τις δύο πρώτες ακµές σε αυτό το µονοπάτι. Αν αυτές είναι τύπου LL (ή ) πραγµατοποιούµε µια περιστροφή (ή L, αντίστοιχα) γύρω από τον u. Αν αυτές είναι τύπου L (ή L) πραγµατοποιούµε δύο περιστροφές, την πρώτη τύπου (L, αντίστοιχα) γύρω από τον επόµενο του u στο µονοπάτι P2 και τη δεύτερη τύπου L (, αντίστοιχα) γύρω από τον u. 4. Επαναπροσδιορίζουµε τα balances των κόµβων στο µονοπάτι P1 και αν εξακολουθούν να υπάρχουν κόµβοι µε µη-επιτρεπτό balance σε αυτό: Θέτουµε u = πρώτος κόµβος στο µονοπάτι από τον u στη ρίζα µε µη επιτρεπτό balance; Πηγαίνουµε στο Βήµα 3; ΗΥ24 - Παναγιώτα Φατούρου 42 w,u

22 Παράδειγµα ιαγραφής που Οδηγεί σε Πολλαπλές Περιστροφές Αν υπάρχουν περισσότερα του ενός µονοπάτια από έναν κόµβο µε προβληµατικό balance προς φύλλα του υποδένδρου του που έχουν το ίδιο µήκος και το µήκος αυτό είναι το µεγαλύτερο, µπορεί να γίνει επιλογή εκείνου του µονοπατιού που οδηγεί στις λιγότερες και πιο απλές περιστροφές! Κόµβος µε µηεπιτρεπτό balance Μακρύτερο µονοπάτι από αυτόν προς οποιοδήποτε φύλλο τύπου απαιτείται µία περιστροφή τύπου L γύρω από τον κόµβο Κόµβος µε µηεπιτρεπτό balance Μακρύτερο µονοπάτι από αυτόν προς οποιοδήποτε φύλλο τύπου απαιτείται µία περιστροφή τύπου L γύρω από τον κόµβο ΗΥ24 - Παναγιώτα Φατούρου 43 ένδρα AVL ιαγραφή Παράδειγµα ιαδοχική διαγραφή των κλειδιών 12, 71, 2, 1, 19, 4, και 6. κρίσιµος κόµβος Aντικατάσταση από 1 και µια αριστερή περιστροφή γύρω από το 1 Ποια είναι η πολυπλοκότητα της AVLDelete()? Ο(ύψος δένδρου) για τους ακόλουθους λόγους: Για τη διαγραφή του κόµβου το κόστος είναι Ο(ύψος δένδρου) (αφού το δένδρο είναι ταξινοµηµένο). Για κάθε κόµβο u στο P1, θα γίνει εύρεση των δύο πρώτων ακµών του µονοπατιού που καθορίζει το ύψος του u (αυτό γίνεται βάσει του balance του u και του balance του εποµένου του u στο µοναπάτι αυτό). Θα γίνουν Ο(ύψος δένδρου) περιστροφές και κάθε µια κοστίζει Ο(1). Τα balances αλλάζουν µόνο για τους κόµβους P1 και τους κόµβους που «εµπλέκονται» στις περιστροφές. Θεώρηµα ύψος δένδρου AVL = O(logn) Χρονική Πολυπλοκότητα = O(logn) ΗΥ24 - Παναγιώτα Φατούρου 44

23 2-3 ένδρα Ιδέα: Το δένδρο είναι τέλεια εξισορροπηµένο (όλα τα φύλλα έχουν το ίδιο βάθος) αλλά δεν είναι δυαδικό. Σε ένα 2-3 δένδρο ένας κόµβος που δεν είναι φύλλο έχει δύο παιδιά και σε αυτόν αποθηκεύεται ένα στοιχείο του συνόλου (ένας τέτοιος κόµβος λέγεται 2-κόµβος), ή έχει τρία παιδιά και σε αυτόν αποθηκεύονται δύο στοιχεία του συνόλου (τότε ο κόµβος λέγεται 3-κόµβος). Κάθε φύλλο που αποθηκεύει ένα στοιχείο του συνόλου είναι 2-κόµβος, ενώ κάθε φύλλο που αποθηκεύει δύο στοιχεία του συνόλου είναι 3-κόµβος. Με κατάλληλη διευθέτηση κόµβων και των δύο ειδών, µπορούµε να φτιάξουµε δένδρο στο οποίο όλα τα φύλλα έχουν το ίδιο βάθος και το οποίο αποθηκεύει οποιοδήποτε επιθυµητό πλήθος κλειδιών. Ιδιότητες 2-3 ένδρων 1. Όλα τα φύλλα έχουν το ίδιο βάθος και αποθηκεύουν 1 ή 2 στοιχεία. 2. Κάθε εσωτερικός κόµβος: είτε αποθηκεύει ένα στοιχείο και έχει δύο παιδιά, ή αποθηκεύει δύο στοιχεία και έχει τρία παιδιά. 3. Το δένδρο είναι ταξινοµηµένο. ΗΥ24 - Παναγιώτα Φατούρου ένδρα Ένα 2-3 δένδρο είναι ταξινοµηµένο αν για κάθε κόµβο v ισχύουν τα εξής. Αν ο v είναι 2-κόµβος, τα κλειδιά όλων των στοιχείων που βρίσκονται στο αριστερό υποδένδρο του v πρέπει να είναι µικρότερα από το κλειδί του v, ενώ εκείνα των στοιχείων που βρίσκονται στο δεξί υποδένδρο του v πρέπει να είναι µεγαλύτερα από εκείνα του v. Αν ο v είναι 3-κόµβος, το κλειδί (έστω Κ1) του πρώτου στοιχείου του v πρέπει να είναι µικρότερο από το κλειδί (έστω K2) του δέυτερου στοιχείου του v. Επίσης, τα κλειδιά όλων των στοιχείων στο πρώτο υποδένδρο του v πρέπει να είναι µικρότερα από K1, τα κλειδιά όλων των στοιχείων στο δεύτερο υποδένδρο του v πρέπει να είναι µεταξύ του Κ1 και του Κ2, ενώ τα κλειδιά του τρίτου υποδένδρου του v πρέπει να είναι µεγαλύτερα από K2. Μεταξύ όλων των 2-3 δένδρων ύψους h, ποιο είναι εκείνο µε τους λιγότερους κόµβους; Εκείνο του οποίου όλοι οι εσωτερικοί κόµβοι είναι 2-κόµβοι. Ποιο είναι το ύψος αυτού του δένδρου? log 2 n Μεταξύ όλων των 2-3 δένδρων ύψους h, ποιο είναι εκείνο µε τους περισσότερους κόµβους; Εκείνο του οποίου όλοι οι εσωτερικοί κόµβοι είναι 3-κόµβοι. Ποιο είναι το ύψος αυτού του δένδρου? log 3 n Πως θα υλοποιήσουµε την LookUp() σε ένα 2-3 δένδρο? Το δένδρο είναι ταξινοµηµένο!!! Το ύψος ενός 2-3 δένδρου µε n κόµβους είναι Θ(logn)! Πολυπλοκότητα LookUp; O(logn) ΗΥ24 - Παναγιώτα Φατούρου 46

24 2-3 ένδρα Εισαγωγή 1. Εύρεση του φύλλου w στο οποίο θα έπρεπε σύµφωνα µε την ιδιότητα της ταξινόµησης να εισαχθεί το νέο στοιχείο (όπως στα ταξινοµηµένα δυαδικά δένδρα). 2. ιατήρηση των κόµβων του µονοπατιού που ακολουθήθηκε σε στοίβα Μη επιτρεπτός κόµβος Παράδειγµα: Εισαγωγή Ο w Μη επιτρεπτός κόµβος Μη επιτρεπτός κόµβος 3. Αν το w είναι 2-κόµβος, προσθήκη του νέου στοιχείου στο w και τερµατισµός. 3. Αν το w είναι 3-κόµβος, µετατρέπεται σε κόµβο που πρέπει να αποθηκεύσει 3 στοιχεία (σε αύξουσα διάταξη) το οποίο είναι µη επιτρεπτό. Αντικαθιστούµε το w µε δύο 2-κόµβους, έναν που αποθηκεύει το πρώτο και έναν που αποθηκεύει το τρίτο στοιχείο του w και το µεσαίο στοιχείο του w µεταφέρεται στον πατρικό του κόµβο. Αν δεν υπάρχει πατρικός κόµβος πηγαίνουµε στο βήµα. 4. Αν ο πατρικός κόµβος είναι 2-κόµβος, µετατρέπεται σε 3-κόµβο και ο αλγόριθµος τερµατίζει. ιαφορετικά, θέτουµε w = <πατρικός κόµβος του w> και επιστρέφουµε στο βήµα 3 για να αντικαταστήσουµε τον πατρικό κόµβο του w µε τον ίδιο τρόπο.. Η διαδικασία αυτή επαναλαµβάνεται µέχρι να βρούµε χώρο για το κλειδί σε κάποιο κόµβο στο µονοπάτι προς τη ρίζα ή να φτάσουµε στη ρίζα. Αν συµβεί το δεύτερο, η ρίζα χωρίζεται σε 2 κόµβους και ένας νέος κόµβος που αποτελεί τον πατρικό κόµβο αυτών των δύο κόµβων αποθηκεύει το µεσαίο στοιχείο που θα έπρεπε να αποθηκευθεί στη ρίζα. Έτσι, το ύψος του δένδρου αυξάνεται κατά 1. w ΗΥ24 - Παναγιώτα Φατούρου 47 w 2-3 ένδρα - ιαγραφή Μπορεί να προκύψει το αντίστροφο πρόβληµα: µετά τη διαγραφή, κάποιος κόµβος µπορεί να έχει ένα µόνο παιδί. µη επιτρεπτός κόµβος Παράδειγµα ιαγραφή Ε ΗΥ24 - Παναγιώτα Φατούρου 48

25 2-3 ένδρα - ιαγραφή 1. Αν το προς διαγραφή κλειδί (έστω Κ) περιέχεται σε κόµβο φύλλο, το διαγράφουµε. ιαφορετικά, το κλειδί (έστω Κ ) που είναι επόµενο του K στην ενδο-διατεταγµένη διάσχιση περιέχεται σε φύλλο, οπότε αντικαθιστούµε το Κ µε το Κ και διαγράφουµε το Κ. 2. Έστω Ν ο κόµβος από τον οποίο διαγράφεται το κλειδί. Αν ο Ν εξακολουθεί να έχει ένα κλειδί, ο αλγόριθµος τερµατίζει. 3. Αν ο Ν είναι η ρίζα, τον διαγράφουµε. Σε αυτή την περίπτωση, ο Ν µπορεί να έχει ένα ή κανένα παιδί. Αν δεν έχει κανένα παιδί, το δένδρο µετά τη διαγραφή είναι άδειο. ιαφορετικά, το παιδί του Ν είναι η νέα ρίζα του δένδρου. 4. ιαφορετικά, ο Ν έχει τουλάχιστον έναν αδελφικό κόµβο Ν. Έστω P ο πατέρας των Ν, Ν και έστω ότι S είναι το κλειδί του P που χωρίζει τα δύο υπο-δένδρα (που οδηγούν από τον P στους Ν και Ν ). a. Ο Ν είναι 3-κόµβος ακριβώς στα αριστερά (ακριβώς στα δεξιά) του Ν. Μετακινούµε το S στο Ν και αντικαθιστούµε το S στον πατέρα του µε το δεξιότερο (αριστερότερο) κλειδί του Ν. Αν οι Ν και Ν είναι εσωτερικοί κόµβοι, µετατρέπουµε το δεξιότερο (αριστερότερο) παιδί του Ν σε αριστερότερο (δεξιότερο) παιδί του Ν. Οι Ν, Ν έχουν πλέον ένα κλειδί ο καθένας και ο αλγόριθµος τερµατίζει. b. Ο Ν είναι 2-κόµβος. Συνενώνουµε το S και το κλειδί του Ν σε έναν νέο 3-κόµβο, ο οποίος αντικαθιστά τους Ν, Ν και απoτελεί το µοναδικό παιδί του P (ο οποίος αποµένει τώρα χωρίς κλειδί). Θέτουµε Ν = P και επαναλαµβάνουµε το βήµα 2. S Ν Ν Ν S Ν ΗΥ24 - Παναγιώτα Φατούρου ένδρα - ιαγραφή Ένα ακόµη παράδειγµα S N S N N H L B,D J M N N H L B,D J M Πολυπλοκότητα Insert(); Πολυπλοκότητα Delete(); Πολυπλοκότητα LookUp(); Ο(logn) Ο(logn) Ο(logn) ΗΥ24 - Παναγιώτα Φατούρου

26 Κοκκινόµαυρα ένδρα Ένα κοκκινόµαυρο δένδρο είναι ένα ταξινοµηµένο δυαδικό δένδρο, στο οποίο κάθε κόµβος περιέχει ένα επιπλέον στοιχείο πληροφορίας, το χρώµα του, το οποίο µπορεί να είναι είτε µαύρο ή κόκκινο. Αν κάποιο παιδί κάποιου κόµβου δεν υφίσταται, ο αντίστοιχος δείκτης είναι nill. Θεωρούµε ότι δείκτες µε τιµή nill είναι δείκτες προς εξωτερικούς κόµβους (φύλλα) του δυαδικού δένδρου, ενώ οι συνήθεις κόµβοι που αποθηκεύουν κλειδιά αποτελούν τους εσωτερικούς κόµβους του δένδρου. Ιδιότητες Κοκκινόµαυρων ένδρων 1. Κάθε κόµβος έχει είτε κόκκινο είτε µαύρο χρώµα. 2. Το χρώµα της ρίζας είναι πάντα µαύρο. 3. Κάθε NIL κόµβος έχει µαύρο χρώµα. 4. Αν ένας κόµβος έχει κόκκινο χρώµα, τότε και τα δύο παιδιά του έχουν µαύρο χρώµα.. Κάθε µονοπάτι από οποιονδήποτε κόµβο προς οποιοδήποτε εξωτερικό κόµβο φύλλο που είναι απόγονός του περιέχει το ίδιο πλήθος µαύρων κόµβων. ΗΥ24 - Παναγιώτα Φατούρου 1 Ύψος Κοκκινόµαυρου ένδρου Πρόταση: Ένα κόκκινο µαύρο δένδρο µε n εσωτερικούς κόµβους έχει ύψος το πολύ 2log(n+1). ιαίσθηση: Τουλάχιστον οι µισοί κόµβοι σε κάθε µονοπάτι από τη ρίζα σε φύλλο είναι µαύροι. Γιατί; Απόδειξη Ορίζουµε το µαύρο ύψος ενός κόµβου v, το οποίο συµβολίζουµε µε bh(v), να είναι το πλήθος των µαύρων κόµβων σε κάθε µονοπάτι από τον κόµβο v σε οποιοδήποτε φύλλο (εξωτερικό κόµβο nill), χωρίς να συµπεριλαµβάνουµε τον v. Αποδεικνύουµε επαγωγικά ότι το υπο-δένδρο µε ρίζα κάποιο κόµβο v περιέχει τουλάχιστον 2 bh(v) -1 εσωτερικούς κόµβους (η επαγωγή ως προς το ύψος του v). Βάση επαγωγής: αν ο v έχει ύψος τότε είναι φύλλο (δηλαδή εξωτερικός κόµβος), οπότε ο αριθµός των εσωτερικών κόµβων στο υποδένδρο που εκφύεται από τον v είναι όπως απαιτείται. Επαγωγική Υπόθεση: οθέντος ενός οποιουδήποτε κόµβου v, υποθέτουµε ότι ο ισχυρισµός ισχύει για τα παιδιά του v. ΗΥ24 - Παναγιώτα Φατούρου 2

27 Ύψος Κοκκινόµαυρου ένδρου Απόδειξη (συνέχεια) Επαγωγικό Βήµα: Αποδεικνύουµε τον ισχυρισµό για τον κόµβο v. Έστω w ένα οποιοδήποτε παιδί του v. Τότε, bh(w) bh(v) 1 (αν ο w είναι κόκκινος τότε bh(w) = bh(v), ενώ αν ο w είναι µαύρος τότε bh(w) bh(v) -1. Σε κάθε περίπτωση, bh(w) bh(v) -1. Αφού το ύψος του w είναι πιο µικρό από εκείνο του v, από επαγωγική υπόθεση, το υποδένδρο που εκφύεται από τον w έχει 2 bh(w) -1 2 bh(v)-1-1 εσωτερικούς κόµβους. Άρα, το υποδένδρο που εκφύεται από τον v έχει τουλάχιστον 2* (2 bh(v)-1-1 ) + 1 = 2 bh(v) -1 εσωτερικούς κόµβους, όπως απαιτείται. Άρα, το υπο-δένδρο που εκφύεται από οποιονδήποτε κόµβο v περιέχει τουλάχιστον 2 bh(v) -1 εσωτερικούς κόµβους. (1) Έστω h το ύψος του δένδρου και r η ρίζα. Είναι bh(r) h/2, αφού βάσει της ιδιότητας 4, σε οποιοδήποτε µονοπάτι από τη ρίζα προς οποιονδήποτε εξωτερικό κόµβο, τουλάχιστον οι µισοί κόµβο (εξαιρουµένης της ίδιας της ρίζας) θα πρέπει να είναι µαύροι. Πως υλοποιείται η LookUp(); Άρα, από (1), n 2 h/2-1 h 2log(n+1). Ποια είναι η πολυπλοκότητα της; ΗΥ24 - Παναγιώτα Φατούρου 3 Κοκκινόµαυρα ένδρα - Εισαγωγή Αλγόριθµος Εισαγωγή του νέου στοιχείου µε τον ίδιο τρόπο όπως σε ταξινοµηµένο δυαδικό δένδρο. Το µονοπάτι που ακολουθείται για την εισαγωγή του νέου κόµβου αποθηκεύεται σε στοίβα. Ο νέος κόµβος χαρακτηρίζεται κόκκινος. Αν οι ιδιότητες χρωµατισµού εξακολουθούν να ισχύουν, ο αλγόριθµος τερµατίζεται. ιαφορετικά, εκτελούνται ενέργειες που αποσκοπούν στην αποκατάσταση των ιδιοτήτων του δένδρου (οι οποίες περιγράφονται στη συνέχεια). Για να απαιτείται η εκτέλεση ενεργειών αποκατάστασης του δένδρου θα πρέπει: Ο πατρικός κόµβος του νέο-εισαχθέντα κόµβου να είναι κόκκινος. Γιατί; Ο πατρικός αυτός κόµβος δεν µπορεί να είναι η ρίζα. Ο παππούς του νέο-εισαχθέντα κόµβου να είναι µαύρος. Γιατί; ΗΥ24 - Παναγιώτα Φατούρου 4

28 Κοκκινόµαυρα ένδρα - Εισαγωγή Περιγραφή Ενεργειών Αποκατάστασης 1. Υποθέτουµε ότι ο πατέρας του x είναι αριστερό παιδί του παππού του x (η περίπτωση που ο πατέρας του x είναι δεξιό παιδί του παππού του x είναι συµµετρική). Αν ο x και ο πατέρας του x είναι και οι δύο κόκκινοι κόµβοι, απαιτούνται ενέργειες αποκατάστασης των ιδιοτήτων του δένδρου. ιακρίνουµε περιπτώσεις: 2. Περίπτωση 1: Ο αδελφικός κόµβος y του πατέρα του x είναι κόκκινος. Τότε, αλλάζουµε το χρώµα του πατέρα του x και του αδελφικού του κόµβου y σε µαύρο και το χρώµα του παππού του x σε κόκκινο. Εκτελούµε την εντολή x = παππούς του x. Επαναλαµβάνουµε ξεκινώντας από το Βήµα 1. ΗΥ24 - Παναγιώτα Φατούρου Κοκκινόµαυρα ένδρα - Εισαγωγή Περιγραφή Ενεργειών Αποκατάστασης (συνέχεια) 3. Περίπτωση 2: Ο y (αδελφικός κόµβος του πατέρα του x) είναι µαύρος και ο x είναι δεξί παιδί του πατέρα του. Ανάγουµε την περίπτωση αυτή στην περίπτωση 3 µε την εκτέλεση µιας αριστερής περιστροφής γύρω από τον πατέρα του x. (Η περίπτωση που ο x είναι αριστερό παιδί του πατέρα του είναι συµµετρική). 4. Περίπτωση 3: Ο x είναι αριστερό παιδί του πατέρα του. Το χρώµα του πατέρα του x αλλάζει σε µαύρο και του παππού σε κόκκινο. Εκτελείται µια δεξιά περιστροφή γύρω από τον παππού του x. ΗΥ24 - Παναγιώτα Φατούρου 6

29 Κοκκινόµαυρα ένδρα Εισαγωγή Κάποιες από τις Συµµετρικές Περιπτώσεις y y x y y νέο x νέο x x Περίπτωση 1: Ο αδελφικός κόµβος y του πατρικού κόµβου του x είναι κόκκινος. (Συµµετρική περίπτωση που ο πατρικός κόµβος του x είναι δεξιό παιδί του παππού του x.) ΗΥ24 - Παναγιώτα Φατούρου 7 Κοκκινόµαυρα ένδρα Εισαγωγή Κάποιες από τις Συµµετρικές Περιπτώσεις a Περίπτωση 2 a Περίπτωση 3 x δ β x a β γ δ β γ γ δ Περίπτωση 2: Ο y (αδελφικός κόµβος του πατέρα του x) είναι µαύρος και ο x είναι αριστερό παιδί του πατέρα του. Ανάγουµε την περίπτωση αυτή στην περίπτωση 3 µε την εκτέλεση µιας δεξιάς περιστροφής. Περίπτωση 3: Ο x είναι δεξιό παιδί του πατέρα του. Το χρώµα του πατέρα του x αλλάζει σε µαύρο και του παππού σε κόκκινο. Εκτελείται µια αριστερή περιστροφή. ΗΥ24 - Παναγιώτα Φατούρου 8

30 Κοκκινόµαυρα ένδρα Εισαγωγή - Ψευδοκώδικας edblacktree-insert(pointer, Key k) { /* Ο είναι δείκτης στη ρίζα του δένδρου και το K είναι το προς-εισαγωγή κλειδί. Θεωρώ ότι το δένδρο είναι διπλά συνδεδεµένο */ y = nill; z = ; while (z!= null) { // αγνοώ ελέγχους για το αν το κλειδί K βρίσκεται ήδη στο δένδρο y = z; if (K < z->key) z = z->lc; else z = z->c; x = newcell(); x->key = K; x->lc = x->c = null; x->color = ED; x->p = y; if (y == null) (κάνε το x ρίζα του δένδρου); else if (x->key < y->key) y->lc = x; // τοποθέτηση του x ως else y->rc = x; // κατάλληλου παιδιού του y ColorPropertiesInsert(,x) ΗΥ24 - Παναγιώτα Φατούρου 9 (1) Κοκκινόµαυρα ένδρα Εισαγωγή ColorPropertiesInsert(pointer, pointer x) { while (x->p->color == ED) { //αν το χρώµα του πατέρα του x είναι επίσης κόκκινο if (x->p == x->p->p->lc) { // αν o πατέρας του x είναι αριστερό παιδί του παππού του x y = x->p->p->c; // o y είναι ο αδελφικός κόµβος του πατέρα του x if (y->color == ED) { x->p->color = BLACK; // πατέρας και αδελφικός κόµβος πατέρα y->color = BLACK; // γίνονται και οι δυο µαύροι x->p->p->color = ED; // ο παππούς γίνεται κόκκινος x = x->p->p; // (νέο x = παππούς x); και επαναλαµβάνουµε else { if (x == x->p->c) { // o x είναι δεξιό παιδί του πατέρα του Περίπτωση 2 x = x->p; // ο πατέρας του x θα παίξει το ρόλο του x (δείτε σχήµατα) Leftotate(, x); // αριστερή περιστροφή γύρω από τον πατέρα του x x->p->color = BLACK; x->p->p->color = ED; ightotate(, x->p->p); else ( (1) µε εναλλαγή του LC µε C και το αντίστροφο, καθώς και του Leftotate µε ightotate και το αντίστροφο); ΗΥ24 - Παναγιώτα Φατούρου 6

31 Κοκκινόµαυρα ένδρα Εισαγωγή Παράδειγµα (a) Κόµβος x αµέσως µετά την εισαγωγή του. Ο πατέρας του x και ο αδελφικός κόµβος y του πατέρα του x είναι κόκκινοι Περίπτωση 1 (b) Το ρόλο του x θα παίξει τώρα ο κόµβος µε κλειδί 7. Ο πατέρας του x είναι κόκκινος κα ο αδελφικός κόµβος y του πατέρα του x είναι µαύρος. Αφού o x είναι δεξιό παιδί του πατέρα του ενώ ο πατέρας του x αριστερό παιδί του δικού του πατέρα Περίπτωση 2 (c) Περίπτωση 3, (d) Τελικό δένδρο ΗΥ24 - Παναγιώτα Φατούρου 61 Κοκκινόµαυρα ένδρα ιαγραφή Η διαγραφή γίνεται µε παρόµοιο τρόπο όπως σε ταξινοµηµένο δυαδικό δένδρο και στη συνέχεια ελέγχεται αν οι ιδιότητες των κοκκινόµαυρων δένδρων ισχύουν ή όχι και γίνονται κατάλληλες ενέργειες. Έστω y ο κόµβος που θα διαγραφεί από το δένδρο. Αν το χρώµα του y είναι κόκκινο, ο y διαγράφεται και ο αλγόριθµος τερµατίζει. Γιατί δεν προκύπτει πρόβληµα µε τις ιδιότητες χρωµατισµού του δένδρου σε αυτή την περίπτωση? εν υπάρχουν κόµβοι των οποίων το µαύρο ύψος έχει µεταβληθεί στο δένδρο εν έχει πραγµατοποιηθεί καµία απευθείας σύνδεση µεταξύ δύο κόκκινων κόµβων εδοµένου ότι, αν ο y ήταν κόκκινος, δεν µπορεί να είναι ο ριζικός κόµβος, ο ριζικός κόµβος παραµένει µαύρος. Αν το χρώµα του y είναι µαύρο, η διαγραφή του µπορεί να δηµιουργήσει τα εξής προβλήµατα: Αν ο y ήταν ο ριζικός κόµβος και τεθεί ως νέος ριζικός κάποιος κόκκινος κόµβος, έχει παραβιαστεί η ιδιότητα 2. Αν ο µοναδικός θυγατρικός κόµβος x του y και ο πατρικός κόµβος p του y ήταν και οι δυο κόκκινοι, έχει παραβιαστεί η ιδιότητα 4. Λόγω της διαγραφής του y, όλα τα µονοπάτια που περιείχαν τον y (πριν τη διαγραφή) έχουν ένα µαύρο κόµβο λιγότερο (µετά τη διαγραφή) µετά τη διαγραφή, όλοι οι πρόγονοι του y στο δένδρο παραβιάζουν την ιδιότητα. ΗΥ24 - Παναγιώτα Φατούρου 62

32 Κοκκινόµαυρα ένδρα ιαγραφή Υποθέτουµε ότι η µαύρη ιδιότητα του y µεταφέρεται στο παιδί του x, το οποίο αν είναι µαύρο γίνεται διπλά µαύρο (που είναι µη επιτρεπτό). Φανταζόµαστε πως κάθε κόµβος έχει ένα και µοναδικό κουπόνι που καθορίζει το χρώµα του (µαύρο ή κόκκινο). Τότε, ένας διπλά-µαύρος κόµβος είναι σαν να έχει δύο κουπόνια µε µαύρο χρώµα. Αυτό είναι µη επιτρεπτό και ο κόµβος πρέπει να απαλλαγεί από το extra µαύρο κουπόνι. Προκειµένου να επιτευχθεί αυτό, το extra µαύρο κουπόνι µεταφέρεται προς τα πάνω (ακολουθώντας το µονοπάτι από τον κόµβο προς τη ρίζα) µέχρι είτε: να φθάσουµε στη ρίζα, ή να βρούµε έναν κόκκινο κόµβο που τον επαναχρωµατίζουµε µαύρο και ο αλγόριθµος τερµατίζει, ή να µπορούν να εκτελεστούν κατάλληλες περιστροφές και επαναχρωµατισµοί κάποιων κόµβων ώστε να επιλυθεί το πρόβληµα. Παρατήρηση Το πεδίο χρώµα του x εξακολουθεί να είναι είτε κόκκινο ή µαύρο (ανεξάρτητα του επιπρόσθετου µαύρου κουπονιού). Το πρόσθετο κουπόνι ενός κόµβου επισυνάπτεται στον δείκτη προς τον κόµβο αυτό και όχι στο πεδίο χρώµα του κόµβου (αυτή η υπόθεση απαιτείται για να λειτουργεί σωστά ο ψευδοκώδικας που θα παρουσιαστεί σε επόµενες διαφάνειες). ΗΥ24 - Παναγιώτα Φατούρου 63 Κοκκινόµαυρα ένδρα ιαγραφή Θεωρώ ότι το δένδρο υλοποιείται µε κόµβο φρουρό. Έτσι, όλοι οι nill δείκτες δείχνουν στον κόµβο φρουρό. (Αυτό εξυπηρετεί στη µείωση των ελέγχων που απαιτούνται στον κώδικα που θα παρουσιαστεί σε επόµενες διαφάνειες). ΗΥ24 - Παναγιώτα Φατούρου 64

33 Έστω x το παιδί του κόµβου που διαγράφεται. Έστω w ο αδελφικός κόµβος και p ο πατέρας του x. Αν ο x είναι διπλά µαύρος, ο w δεν µπορεί να είναι ο κόµβος φρουρός. Γιατί; Αν συνέβαινε αυτό, το πλήθος των µαύρων κόµβων στο µονοπάτι από τον πατρικό κόµβο του x µέχρι τον κόµβο w (που είναι µαύρος αφού υποθέσαµε ότι είναι ο κόµβος φρουρός) θα ήταν µικρότερο από το αντίστοιχο πλήθος µαύρων κόµβων στο µονοπάτι από τον πατρικό κόµβο του x µέχρι τον x. Υποθέτουµε ότι ο x είναι αριστερό παιδί του πατρικού του κόµβου. (Η περίπτωση που ο x είναι δεξιό παιδί του πατρικού του κόµβου είναι συµµετρική. ) Οι τέσσερις περιπτώσεις, στις οποίες πραγµατοποιούνται κατάλληλες ενέργειες επαναχρωµατισµού των κόµβων και περιστροφές παρουσιάζονται στο Σχήµα. Κοκκινόµαυρα ένδρα- ιαγραφή p ΗΥ24 - Παναγιώτα Φατούρου 6 Κοκκινόµαυρα ένδρα - ιαγραφή p ιακρίνουµε περιπτώσεις ως προς το χρώµα του w. Βασική Ιδέα Σε όλες τις περιπτώσεις, ο µετασχηµατισµός διατηρεί το πλήθος των µαύρων κόµβων (συµπεριλαµβανοµένου και του extra µαύρου κουπονιού του x) από τον ριζικό κόµβο του εικονιζόµενου υποδένδρου (συµπεριλαµβανοµένου του ριζικού) µέχρι καθένα από τα υποδένδρα α,β,γ,δ,ε και ζ. 1. Περίπτωση 1: Ο w είναι κόκκινος. Αλλάζουµε το χρώµα του w σε µαύρο και του p σε κόκκινο και εκτελούµε µια αριστερή περιστροφή γύρω από τον πατέρα του x. Έτσι, µεταπίπτουµε στην περίπτωση 2, 3, ή 4. ΗΥ24 - Παναγιώτα Φατούρου 66

34 2. Ο w είναι µαύρος κόµβος. α. Περίπτωση 2: Και τα δύο παιδιά του w είναι µαύρα. Αλλάζουµε το χρώµα του w σε κόκκινο, του x σε µαύρο (από διπλά µαύρο) και µεταφέρουµε το µαύρο που αφαιρέσαµε από τους w, x στον p. Αν ο p ήταν κόκκινος γίνεται µαύρος και ο αλγόριθµος τερµατίζει. ιαφορετικά, ο p γίνεται διπλά µαύρος και ο αλγόριθµος επαναλαµβάνεται µε x = p. β. Περίπτωση 3: Το w->lc είναι κόκκινο και το w->rc µαύρο. Αλλάζω το χρώµα του w σε κόκκινο και του w->lc σε µαύρο και εκτελώ µια περιστροφή γύρω από το w Μεταπίπτουµε στην περίπτωση 2c. γ. Περίπτωση 4: Το w->rc είναι κόκκινο. Αλλάζω το χρώµα του w- >rc σε µαύρο, του w σε ότι ήταν το χρώµα του p και του p σε µαύρο και εκτελώ µια περιστροφή γύρω από τον p. Ο αλγόριθµος τερµατίζει. Κοκκινόµαυρα ένδρα - ιαγραφή p ΗΥ24 - Παναγιώτα Φατούρου 67 Κοκκινόµαυρα ένδρα ιαγραφή - Ψευδοκώδικας edblack-delete(pointer, pointer z) { if (z->c == NULL O z->lc == NULL) y = z; // αν z έχει ένα ή κανένα παιδί, διαγράφεται το ίδιο το z else y = TreeSuccessor(,z); // διαφορετικά, διαγράφεται ο επόµενος κόµβος στην ενδ/γµένη διάσχιση if (y->lc!= NULL) x = y->lc; // ο x δείχνει στο µοναδικό παιδί του y else x = y->c; x->p = y->p; if (y->p == NULL) (κάνε το x ρίζα του δένδρου); else if (y == y->p->lc) y->p->lc = x; // αν ο y είναι αριστερό παιδί του πατέρα του else y->p->c = x; if (y!= z) { // αν ο προς διαγραφή κόµβος είναι ο επόµενος στην ενδ/γµένη διάσχιση z->key = y->key; // αντιγραφή όλων των πεδίων δεδοµένων (αντιγραφή των υπολοίπων πεδίων δεδοµένων του y στο z); if (y->color == BLACK) ColorPropertiesDelete(,x); return y; // αν η διαγραφή αφορούσε κόµβο µε χρώµα µαύρο, εκτέλεση κατάλληλων // ενεργειών για την επαναφορά των ιδιοτήτων χρωµατισµού του δένδρου ΗΥ24 - Παναγιώτα Φατούρου 68

35 Κοκκινόµαυρα ένδρα ιαγραφή - Ψευδοκώδικας ColorPropertiesDelete(pointer, pointer x) { while (x!= AND x->color == BLACK) { if (x == x->p->lc) { // αν ο x είναι αριστερό παιδί (2) w = x->p->c; if (w->color == ED) { w->color = BLACK; // Περίπτωση 1 x->p->color = ED; // Περίπτωση 1 Leftotation(, x->p); // Περίπτωση 1 w = x->p->c; // Περίπτωση 1 // αν αδελφικός του x κόκκινος if (w->lc->color == BLACK AND w->c->color == BLACK) { w->c->color = BLACK;//Περίπτωση 4 // αν και τα δύο παιδιά του w είναι µαύρα Leftotation(, x->p);//περίπτωση 4 w->color = ED; // Περίπτωση 2 x = ; // Περίπτωση 4 x = x->p; // Περίπτωση 2 /* else */ /* if */ else { else (ίδια µε (2) µε εναλλαγή του LC µε C if (w->c->color == BLACK) { και το αντίστροφο, καθώς και του // αν δεξιό παιδί του x µαύρο Leftotate µε ightotate και το w->lc->color = BLACK; // Περίπτωση 3 αντίστροφο); w->color = ED; // Περίπτωση 3 ightotation(,w); // Περίπτωση 3 x->color = BLACK; w = x->p->c; // Περίπτωση 3 w->color = x->p->color; // Περίπτωση 4 x->p->color = BLACK; // ΗΥ24 Περίπτωση - Παναγιώτα 4 Φατούρου 69

ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ. ΗΥ240 - Παναγιώτα Φατούρου 1 ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ

ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ ΕΝΟΤΗΤΑ ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Ισοζυγισµένα Δένδρα Χρονική Πολυπλοκότητα αναζήτησης σε δοµές που έχουν ήδη διδάχθει: q Στατική Μη-Ταξινοµηµένη Λίστα -> Ο(n),

Διαβάστε περισσότερα

Insert(K,I,S) Delete(K,S)

Insert(K,I,S) Delete(K,S) ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ & ΛΕΞΙΚΑ Φατούρου Παναγιώτα 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό και

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) q Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U (universe) αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών σύνολα

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενων από έναν

Διαβάστε περισσότερα

ΗΥ240 - Παναγιώτα Φατούρου 2

ΗΥ240 - Παναγιώτα Φατούρου 2 ΕΝΟΤΗΤΑ ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Ισοζυγισµένα ένδρα Χρονική Πολυπλοκότητα αναζήτησης σε δοµές που έχουν ήδη διδάχθει: Στατική Μη-Ταξινοµηµένη Λίστα -> Ο(n), όπου

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 2 Σύνολα (Sets) Τα

Διαβάστε περισσότερα

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ

Διαβάστε περισσότερα

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα? Κόκκινα-Μαύρα ένδρα (Red-Black Trees) Ένα κόκκινο-µαύρο δένδρο είναι ένα δυαδικό δένδρο αναζήτησης στο οποίο οι κόµβοι µπορούν να χαρακτηρίζονται από ένα εκ των δύο χρωµάτων: µαύρο-κόκκινο. Το χρώµα της

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ενδρικές οµές για Υλοποίηση υναµικών Λεξικών υναµικά λεξικά λειτουργίες LookUp( ), Insert( ) και Delete( ) Αναζητούµε δένδρα για την αποτελεσµατική υλοποίηση

Διαβάστε περισσότερα

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

Διαβάστε περισσότερα

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type).

Διαβάστε περισσότερα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή

Διαβάστε περισσότερα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου 2 Ουρές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ Ουρές Προτεραιότητας (Priority Queues) Θεωρούµε ότι τα προς αποθήκευση στοιχεία έχουν κάποια διάταξη (καθένα έχει µια προτεραιότητα). Τα προς αποθήκευση στοιχεία είναι

Διαβάστε περισσότερα

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ

Διαβάστε περισσότερα

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

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v. ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος

Διαβάστε περισσότερα

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

Διαβάστε περισσότερα

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

Διαβάστε περισσότερα

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

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

9. Κόκκινα-Μαύρα Δέντρα

9. Κόκκινα-Μαύρα Δέντρα Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 9. Κόκκινα-Μαύρα Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 9/12/2016 Δέντρα,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ 1 ένδρα εσωτερικός κόµβος u το δένδρο έχει ύψος 4 u έχει ύψος 3 w έχει βάθος 2 κόµβος ένδρο: γράφηµα χωρίς κύκλους o Ρίζα (root) o Κόµβος (node) o Ακµή (edge) o Γονέας (parent) Παιδί (child)

Διαβάστε περισσότερα

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική και τη συµµετρική ιδιότητα του Θ. Λύση Μεταβατική Ιδιότητα (ορισµός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)). Για

Διαβάστε περισσότερα

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης Περιεχόμενα 8.1 Κατηγορίες ισορροπημένων δένδρων αναζήτησης... 155 8.1.1 Περιστροφές... 156 8.2 Δένδρα AVL... 157 8.2.1 Αποκατάσταση συνθήκης ισορροπίας... 158

Διαβάστε περισσότερα

Ισοζυγισμένα υαδικά έντρα Αναζήτησης

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (path) o Πρόγονος απόγονος (ancestor, descendant)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων Ενότητα 13: B-Δέντρα/AVL-Δέντρα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε

Διαβάστε περισσότερα

Εκτενείς Δομές Δεδομένων

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

Διαβάστε περισσότερα

Εκτενείς Δομές Δεδομένων

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

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 1 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1 ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος

Διαβάστε περισσότερα

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 14 Μαΐου 2018, ώρα 23:59 Τρόπος Παράδοσης: Χρησιμοποιώντας

Διαβάστε περισσότερα

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: υαδικά έντρα Αναζήτησης (Binary Search Trees) Ορισµός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόµενα στο αριστερό υποδέντρο του t είναι

Διαβάστε περισσότερα

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα στα οποία κάθε κόμβος μπορεί να αποθηκεύει ένα ή περισσότερα κλειδιά. Κόμβος με d διακλαδώσεις : k 1 k 2 k 3 k 4 d-1 διατεταγμένα κλειδιά d διατεταγμένα παιδιά

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και

Διαβάστε περισσότερα

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1 Σωροί Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθµος ταξινόµησης HeapSort Παραλλαγές Σωρών ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) Ένωση Ξένων Συνόλων (Disjoint Sets with Union) S 1,, S k : ξένα υποσύνολα ενός συνόλου U δηλ., S i S j =, αν i j, και S 1 S k = U. Λειτουργίες που θέλουµε

Διαβάστε περισσότερα

Red-black δέντρα (Κεφ. 5)

Red-black δέντρα (Κεφ. 5) Red-black δέντρα (Κεφ. ) Δομές Δεδομένων Παπαγιαννόπουλος Δημήτριος 30 Μαρτίου 07 30 Μαρτίου 07 papagianno@ceid.upatras.gr . Εισαγωγή Περιεχόμενα. Ορισμός red-black δέντρων 3. Αναζήτηση σε red-black δέντρα

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS) ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS) Ταχεία Αναζήτηση Σε πίνακα: δυαδική αναζήτηση (binary search) σε ταξινοµηµένο πίνακα O(log n) Σε δένδρο: αναζήτηση σε ισοζυγισµένο δένδρο O(log n) Σε λίστα: Μπορούµε

Διαβάστε περισσότερα

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1 Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 / ένδρα Ενα δένδρο είναι

Διαβάστε περισσότερα

Στοίβες Ουρές - Λίστες

Στοίβες Ουρές - Λίστες Ενότητα 3 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους L 1,..., L n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

Διαβάστε περισσότερα

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα Ορέστης Τελέλης tllis@unipi.r Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς έντρα 1 / 27 έντρα έντρο είναι απλό συνδεδεµένο µη

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι

Διαβάστε περισσότερα

υαδικά δέντρα αναζήτησης

υαδικά δέντρα αναζήτησης υαδικά δέντρα αναζήτησης οµές εδοµένων 3 ο εξάµηνο Ορισµός δυαδικού δέντρου αναζήτησης Σ ένα δυαδικό δέντρο αναζήτησης, για κάθε κόµβο Χ, Όλα τα κλειδιά(αντικείµενα) στο αριστερό υποδέντρο του Χ έχουν

Διαβάστε περισσότερα

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως

Διαβάστε περισσότερα

Red- black δέντρα Εκτενείς Δομές Δεδομένων (Κεφ. 5)

Red- black δέντρα Εκτενείς Δομές Δεδομένων (Κεφ. 5) ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Red- black δέντρα Εκτενείς Δομές Δεδομένων (Κεφ. ) Δομές Δεδομένων Μπαλτάς Αλέξανδρος 4 Μαρτίου 0 ampaltas@ceid.upatras.gr Περιεχόμενα. Εισαγωγή. Ορισμός red- black

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 16 Δένδρα (Trees) 1 / 42 Δένδρα (Trees) Ένα δένδρο είναι ένα συνδεδεμένο γράφημα χωρίς κύκλους Για κάθε

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος

Διαβάστε περισσότερα

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ισοζυγισμένα Δέντρα Υλοποίηση AVL δέντρων Εισαγωγή Κόμβων και Περιστροφές σε AVL δέντρα

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2 Πρόβληµα (ADT) Λεξικού Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2 Πρόβληµα (ADT) Λεξικού Δυναµικά µεταβαλλόµενη συλλογή αντικειµένων που αναγνωρίζονται µε κλειδί (π.χ. κατάλογοι,

Διαβάστε περισσότερα

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

Διαβάστε περισσότερα

1o Φροντιστήριο ΗΥ240

1o Φροντιστήριο ΗΥ240 1o Φροντιστήριο ΗΥ240 Άσκηση 1 Αποδείξτε τη μεταβατική και τη συμμετρική ιδιότητα του Θ Μεταβατική Ιδιότητα (ορισμός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)) Για να ισχύει f(n)= Θ(h(n))

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

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

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, ορισμοί, πράξεις και αναπαράσταση στη μνήμη ΔυαδικάΔένδρακαιΔυαδικάΔένδραΑναζήτησης ΕΠΛ 231 Δομές

Διαβάστε περισσότερα

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Γιάννης Κουτσονίκος Επίκουρος Καθηγητής Οργάνωση Δεδομένων Δομή Δεδομένων: τεχνική οργάνωσης των δεδομένων με σκοπό την

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ισοζυγισµένο έντρο (AVL Tree)

Ισοζυγισµένο έντρο (AVL Tree) Εργαστήριο 7 Ισοζυγισµένο έντρο (AVL Tree) Εισαγωγή Εκτός από τα δυαδικά δέντρα αναζήτησης (inry serh trees) που εξετάσαµε σε προηγούµενο εργαστήριο, υπάρχουν αρκετά είδη δέντρων αναζήτησης µε ξεχωριστό

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

Διαβάστε περισσότερα

Ενότητα 2 Στοίβες Ουρές - Λίστες

Ενότητα 2 Στοίβες Ουρές - Λίστες Ενότητα 2 Στοίβες Ουρές - Λίστες ΗΥ240 - Παναγιώτα Φατούρου 1 Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 στοιχεία ή κόµβους e 1,..., e n, τα οποία είναι διατεταγµένα µε γραµµική σειρά.

Διαβάστε περισσότερα

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ισοζυγισμένα Δέντρα Υλοποίηση AVL δέντρων Εισαγωγή Κόμβων και Περιστροφές σε AVL δέντρα

Διαβάστε περισσότερα

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

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής ισαγωγή στην πιστήμη των Υπολογιστών 2015-16 λγόριθμοι και ομές εδομένων (IΙ) (γράφοι και δένδρα) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης φηρημένες

Διαβάστε περισσότερα

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t) Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 18: ιασυνδεµένες οµές - Λίστες ιασυνδεδεµένες δοµές δεδοµένων Η µνήµη ενός πίνακα δεσµεύεται συνεχόµενα. Η πρόσβαση στο i-οστό στοιχείο είναι άµεσηκαθώς η διεύθυνση του

Διαβάστε περισσότερα

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ισοζυγισμένα Δέντρα - Υλοποίηση AVL-δέντρων

Διαβάστε περισσότερα

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε Οµοφωνία σε σύστηµα µε αϖοτυχίες διεργασιών Παναγιώτα Φατούρου Κατανεµηµένα Συστήµατα 1 Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν

Διαβάστε περισσότερα

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Δέντρα Αναζήτησης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Αναζήτηση Θέλουμε να διατηρήσουμε αντικείμενα με κλειδιά και να μπορούμε εκτός από

Διαβάστε περισσότερα

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

Θεωρητικό Μέρος. 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); } } Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Πτυχιακή Εξεταστική Ιούλιος 2014 Διδάσκων : Ευάγγελος Μαρκάκης 09.07.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες

Διαβάστε περισσότερα

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

ιαφάνειες παρουσίασης #11 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΟΜΕΣ Ε ΟΜΕΝΩΝ T. Σελλής ΑΝΟΙΞΗ 2003 ΑΣΚΗΣΗ #3 Ηµερ. Παράδοσης: 09/05/03

Διαβάστε περισσότερα

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

Διαβάστε περισσότερα

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Αναζήτηση. Σειριακή αναζήτηση. Δυαδική Αναζήτηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης Δοµές Δεδοµένων 18η Διάλεξη Ισορροπηµένα δέντρα Ε. Μαρκάκης Περίληψη Επανάληψη των Τυχαιοποιηµένων ΔΔΑ, Στρεβλών ΔΔΑ, Δέντρων 2-3-4 Δέντρα κόκκινου-µαύρου Λίστες Παράλειψης Χαρακτηριστικά επιδόσεων - συµπεράσµατα

Διαβάστε περισσότερα

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, AVL- ένδρα Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Υλοποίηση ΑVL-δένδρων Εισαγωγή κόµβων και περιστροφές ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 7-1 AVL ένδρα Είναι δυνατό

Διαβάστε περισσότερα

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η διαδικασία PercolateDown, Δημιουργία Σωρού O Αλγόριθμος Ταξινόμησης HeapSort Υλοποίηση, Παραδείγματα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε Οµοφωνία σε σύγχρονο σύστηµα µε αϖοτυχίες κατάρρευσης διεργασιών Παναγιώτα Φατούρου Κατανεµηµένος Υπολογισµός 1 Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

Διαβάστε περισσότερα

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

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Cuckoo Hashing Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο β Πολυτεχνείο Πρόβλημα (ADT) Λεξικού υναμικά μεταβαλλόμενη συλλογή αντικειμένων που αναγνωρίζονται με «κλειδί» (π.χ.

Διαβάστε περισσότερα