Λίστες παράλειψης (skip lists)

Σχετικά έγγραφα
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Πίνακες Συµβόλων Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Εξωτερική Αναζήτηση και Β-δέντρα Κεφάλαιο 16. Ε. Μαρκάκης Επίκουρος Καθηγητής

Ουρά Προτεραιότητας (priority queue)

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης

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

Δοµές Δεδοµένων. 13η Διάλεξη Πίνακες Συµβόλων. Ε. Μαρκάκης

Στοιχειώδεις Δομές Δεδομένων

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

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

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

ΔυαδικάΔΕΝΔΡΑΑναζήτησης

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Δέντρα Δυαδικής Αναζήτησης Κεφάλαιο 12 ( ) Ε. Μαρκάκης Επίκουρος Καθηγητής

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

Αναδρομικοί Αλγόριθμοι

Κεφάλαιο 6 Ουρές Προτεραιότητας

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

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Συνδεδεμένη Λίστα (Linked List)

Κεφάλαιο 10 Ψηφιακά Λεξικά

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Συγκρίσιμα Αντικείμενα (comparable)

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

4. Συνδεδεμένες Λίστες

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

AVL-trees C++ implementation

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Δοµές Δεδοµένων. 4η Διάλεξη Στοιχειώδεις Δοµές Δεδοµένων: Πίνακες και Λίστες. Ε. Μαρκάκης

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Λίστες Κεφάλαιο 3 (3.3, 3.4, 3.7) Ε. Μαρκάκης Επικ. Καθηγητής

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

public class ArrayStack implements Stack {

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

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

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

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

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

Στοίβες με Δυναμική Δέσμευση Μνήμης

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Κατακερµατισµός Κεφάλαιο 14. Ε. Μαρκάκης Επίκουρος Καθηγητής

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

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

Ουρά Προτεραιότητας (priority queue)

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

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

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

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

Κεφάλαιο 4 Γραφήματα και Δένδρα

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Γραμμικές λίστες. Γκόγκος Χρήστος ΤΕΙ Ηπείρου

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ισορροπηµένα Δέντρα Κεφάλαιο 13. Ε. Μαρκάκης Επίκουρος Καθηγητής

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

4 ΔYNAMIKEΣ ΔOMEΣ ΔEΔOMENΩN

Προγραμματισμός Δομές Δεδομένων

Sheet2. - Άσκηση 1 οκ - Άσκηση 2 οκ. Σκέψου πώς θα µπορούσες να την

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

Δοµές Δεδοµένων. 7η Διάλεξη Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Δοµές Δεδοµένων. 5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθµων. Ε. Μαρκάκης

Από τη UML στον Κώδικα. Μέρος Α

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

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

Transcript:

Χρησιμοποιεί πρόσθετους συνδέσμους στους κόμβους μιας συνδεδεμένης λίστας επιτάχυνση της αναζήτησης με παράλειψη μεγάλων τμημάτων της λίστας Μια λίστα παράλειψης είναι μια διατεταγμένη συνδεδεμένη λίστα της οποίας κάθε κόμβος περιέχει μεταβλητό πλήθος συνδέσμων. Οι σύνδεσμοι του επιπέδου υλοποιούν απλά συνδεδεμένες λίστες οι οποίες παραλείπουν τους κόμβους με λιγότερους από συνδέσμους. - 5 8 12 21 25 32 44 58 60 72

Χρησιμοποιεί πρόσθετους συνδέσμους στους κόμβους μιας συνδεδεμένης λίστας επιτάχυνση της αναζήτησης με παράλειψη μεγάλων τμημάτων της λίστας Μια λίστα παράλειψης είναι μια διατεταγμένη συνδεδεμένη λίστα της οποίας κάθε κόμβος περιέχει μεταβλητό πλήθος συνδέσμων. Οι σύνδεσμοι του επιπέδου υλοποιούν απλά συνδεδεμένες λίστες οι οποίες παραλείπουν τους κόμβους με λιγότερους από συνδέσμους. - 5 8 12 21 25 32 44 58 60 72 Αναζήτηση 58

επίπεδο αναζήτησης private Item searchr(node t, Key v, int k) { if (t==null) return null; if (t!=head) if (v.equals(t.key)) return t.item; if (k>=t.size) k = t.size-1; if (t.next[k]!= null) { if ( v.compareto(t.next[k].key) > 0 ) return searchr(t.next[k], v, k); // επόμενος κόμβος του επιπέδου k return (k==0)? null : searchr(t, v, k-1); // αναζήτηση στο επίπεδο k-1 Item search(key v) { return searchr(head, v, lgn-1); - 5 8 12 21 25 32 44 58 60 72 Αναζήτηση 58

Λίστα παράλειψης με παράμετρο - 5 8 12 21 25 32 44 58

Λίστα παράλειψης με παράμετρο Αν έχουμε κόμβους τότε

Λίστα παράλειψης με παράμετρο Αν έχουμε κόμβους τότε Τυχαιοποιημένη λίστα παράλειψης Ένας κόμβος έχει συνδέσμους με πιθανότητα

Αρχικοποίηση λίστας παράλειψης public class SkipList<Key extends Comparable<Key>, Item> { private class Node { Item item; Key key; Node[] next; // πίνακας συνδέσμων int size; // επίπεδο κόμβου Node(Item u, Key v, int k) { item = u; key = v; size = k; next = new Node[size]; private Node head; private int N, lgn; private static final int L = 50; // μέγιστο πλήθος επιπέδων item key Node next[k-1] next[0] SkipList(int maxn) { N = 0; lgn = 0; head = new Node(null, null, L);

Εισαγωγή σε λίστα παράλειψης Εισαγωγή 44-5 12 21 25 32 58 60

Εισαγωγή σε λίστα παράλειψης Εισαγωγή 44 44-5 12 21 25 32 58 60

Εισαγωγή σε λίστα παράλειψης Εισαγωγή 44-5 12 21 25 32 44 58 60

Εισαγωγή σε λίστα παράλειψης με παράμετρο private int randx() { int i, j; double t = Math.random(); for (i = 1; j = 2; i < L; i++, j += j) if (t*j > 1.0) break; if (i > lgn) lgn = i; return i; τυχαία επιλογή επιπέδου του νέου κόμβου private void insertr(node t, Node x, int k) { Key v = x.key; Node tk = t.next[k]; if ( (tk == null) (v.compareto(tk.key) < 0) ) { if (k < x.size) { x.next[k] = tk; t.next[k]=x; if (k == 0) return; insertr(t, x, k-1); return; // ένα επίπεδο πιο κάτω insertr(tk, x, k); // επόμενος κόμβος, ίδιο επίπεδο public void insert(item u, Key v) { insertr(head, new Node(u, v, randx()), lgn); N++;

Λίστα παράλειψης με παράμετρο Ιδιότητα: Η αναζήτηση και η εισαγωγή σε μια τυχαιοποιημένη λίστα παράλειψης με παράμετρο απαιτούν κατά μέσο όρο περίπου συγκρίσεις Ιδιότητα: Mια τυχαιοποιημένη λίστα παράλειψης με παράμετρο έχει κατά μέσο όρο συνδέσμους

Διαγραφή από λίστα παράλειψης private void deleter(node t, Key v, int k) { Node x = t.next[k]; if ( v.compareto(x.key) <= 0 ) { if ( v.equals(x.key) ) { t.next[k] = x.next[k]; // διαγραφή του κόμβου x if (k == 0) return; deleter(t, v, k-1); return; // ένα επίπεδο πιο κάτω deleter(t.next[k], v, k); // επόμενος κόμβος, ίδιο επίπεδο public void delete(key v) { deleter(head, v, lgn); N--;

Αναπαράσταση (2,4)-δένδρου με λίστα παράλειψης 6 2 9 11 1 3 4 5 7 8 10 12-1 2 3 4 5 6 7 8 9 10 11 12 Κάθε κόμβος έχει αριθμό συνδέσεων ίσο με το ύψος του στο (2,4)-δένδρο