Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε χρόνο εκτέλεσης Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος μετά από κάθε εισαγωγή ή διαγραφή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Περιστροφές αριστερή περιστροφή από το x x y α γ y x δεξιά περιστροφή β γ α β link rotL(link x) { link y = x->r; x->r = y->l; y->l = x; return y; } link rotR(link y) { link x = y->l; y->l = x->r; x->r = y; return x; } Η περιστροφή παίρνει χρόνο Ο(1) αριστερή περιστροφή δεξιά περιστροφή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Περιστροφές 17 14 21 10 16 19 23 7 12 15 20 17 3 δεξιά περιστροφή από το 14 10 21 14 7 19 23 3 12 16 20 15 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Ισορροπημένα Δένδρα Μερικοί τύποι ισορροπημένων δένδρων Τυχαιοποιημένα δένδρα (*) Αρθρωτά δένδρα (splay trees) Δένδρα AVL Δένδρα κόκκινου-μαύρου (a,b) δένδρα Όλα τα παραπάνω χρησιμοποιούν περιστροφές για να παραμείνουν ισορροπημένα (*) Τα τυχαιοποιημένα δένδρα είναι ισορροπημένα με μεγάλη πιθανότητα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εκτελούμε τον αλγόριθμο εισαγωγής όπως σε ένα απλό δυαδικό δένδρο. Μεταφέρουμε το νέο στοιχείο στη ρίζα του δένδρου με τη χρήση περιστροφών. link insertT(link h, Item item) { Key v = key(item); if (h == z) return NEW(item, z, z, 1); if (less(v, key(h->item)) { h->l = insertT(h->l, item); h = rotR(h); } else { h->r = insertT(h->r, item); h = rotL(h); } return h; } void STinsert(Item item) { head = insertT(root, item); } TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 17 6 12 21 4 7 13 15 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Περιστροφή 15 10 8 17 6 12 21 4 7 13 15 14 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Περιστροφή 13 10 8 17 6 12 21 4 7 13 14 15 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Περιστροφή 12 10 8 17 6 12 21 4 7 14 13 15 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Περιστροφή 17 10 8 17 6 14 21 4 7 12 15 13 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Περιστροφή 10 10 8 14 6 12 17 4 7 13 15 21 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα 14 10 17 8 12 15 21 6 13 4 7 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Επιλογή Βρίσκει το στοιχείο με το k-οστο μικρότερο κλειδί. Item selectR(link h, int k) { int t = h->l->N; if (h == z) return NULLitem; if (t > k) return selectR(h->l, k); if (t < k) return selectR(h->r, k-t-1); return h->item; } Item STselect(int k) { return selectR(head, k); } TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Διαμέριση Τοποθετεί τον κόμβο με το k-οστο μικρότερο κλειδί στη θέση της ρίζας του δένδρου. Η μεταφορά του κόμβου γίνεται με τη χρήση περιστροφών. link partR(link h, int k) { int t = h->l->N; if (t > k) { h->l = partR(h->l, k); h = rotR(h); } if (t < k) { h->r = partR(h->r, k-t-1); h = rotL(h); } } TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Διαμέριση 21 14 27 8 16 25 32 6 19 26 7 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Διαμέριση 21 14 27 8 19 25 32 6 16 26 7 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Διαμέριση 21 19 27 14 25 32 8 16 26 6 7 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Διαμέριση 19 14 21 8 16 27 6 25 32 7 26 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Τυχαιοποιημένα δένδρα Εισαγωγή ενός νέου στοιχείου x σε δένδρο με Ν στοιχεία Εκτελούμε τον αλγόριθμο εισαγωγής στη ρίζα με πιθανότητα Διαφορετικά εισάγουμε αναδρομικά το νέο στοιχείο στο κατάλληλο υποδένδρο: Αν το x < κλειδί της ρίζας καλούμε αναδρομικά την εισαγωγή για το αριστερό υποδένδρο Αν το x > κλειδί της ρίζας καλούμε αναδρομικά την εισαγωγή για το δεξιό υποδένδρο link insertR(link h, Item item) { Key v = key(item), t = key(h->item); if (h == z) return NEW(item, z, z, 1); if ( rand() < RAND_MAX/(h->N+1) ) return insertT(h,item); if less(v,t) h->l = insertR(h->l, item); else h->r = insertR(h->r, item); (h->N)++; return h; } void STinsert(Item item) { head = insertR(head, item); } TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 6 4 7 17 με πιθανότητα 1/11 10 8 6 4 7 17 14 13 21 15 12 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 6 4 7 17 διαφορετικά 10 8 6 4 7 17 12 13 15 21 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 17 14 13 με πιθανότητα 1/6 10 8 17 14 13 21 15 12 6 4 7 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 6 4 7 17 διαφορετικά 10 8 6 4 7 17 12 13 15 21 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 17 6 14 με πιθανότητα 1/4 10 8 17 6 14 13 15 12 21 4 7 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 6 4 7 17 διαφορετικά 10 8 6 4 7 17 12 13 15 21 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 17 6 12 με πιθανότητα 1/3 10 8 17 6 12 21 4 7 14 13 15 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 6 4 7 17 διαφορετικά 10 8 6 4 7 17 12 13 15 21 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 17 6 12 με πιθανότητα 1/2 10 8 17 6 12 21 4 7 13 14 15 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 6 4 7 17 διαφορετικά 10 8 6 4 7 17 12 13 15 21 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Εισαγωγή στη ρίζα Εισαγωγή 14 10 8 6 4 7 17 12 13 15 21 10 8 17 6 12 με πιθανότητα 1 10 8 17 6 12 21 4 7 13 15 14 TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA
Τυχαιοποιημένα δένδρα Εισαγωγή ενός νέου στοιχείου x σε δένδρο με Ν στοιχεία Εκτελούμε τον αλγόριθμο εισαγωγής στη ρίζα με πιθανότητα Διαφορετικά εισάγουμε αναδρομικά το νέο στοιχείο στο κατάλληλο υποδένδρο: Αν το x < κλειδί της ρίζας καλούμε αναδρομικά την εισαγωγή για το αριστερό υποδένδρο Αν το x > κλειδί της ρίζας καλούμε αναδρομικά την εισαγωγή για το δεξιό υποδένδρο Ιδιότητα: Η κατασκευή ενός τυχαιοποιημένου ΔΔΑ ισοδυναμεί με την κατασκευή ενός καθιερωμένου ΔΔΑ από τυχαίο αρχικό συνδυασμό κλειδιών. Για την κατασκευή ενός τυχαιοποιημένου ΔΔΑ με Ν στοιχεία απαιτούνται περίπου συγκρίσεις. Μια αναζήτηση κάνει περίπου συγκρίσεις. Ιδιότητα: Η πιθανότητα το κόστος κατασκευής ενός τυχαιοποιημένου ΔΔΑ να είναι μεγαλύτερο από τη μέση τιμή κατά ένα παράγοντα είναι TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAA