Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

Σχετικά έγγραφα
Πίνακες Συμβόλων. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

Δομές Αναζήτησης. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

Κεφα λαιο 9 Κατακερματισμός

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

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

Δυναμική Διατήρηση Γραμμικής Διάταξης

Ο ΑΤΔ Λεξικό. Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος. Υλοποιήσεις

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING)

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

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

ΚΕΦΑΛΑΙΟ 4 Η ΑΡΧΗ ΕΓΚΛΕΙΣΜΟΥ ΑΠΟΚΛΕΙΣΜΟΥ

Αριθμοθεωρητικοί Αλγόριθμοι

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

Τυχαιοκρατικοί Αλγόριθμοι

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n

Κατακερματισμός (Hashing)

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

10. Πίνακες Κατακερματισμού

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

Δομές Δεδομένων. Κατακερματισμός. Δομές Δεδομένων & Αλγόριθμοι. Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 1

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

viii 20 Δένδρα van Emde Boas 543

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

Advanced Data Indexing

Advanced Data Indexing

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing)

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

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι

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

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Υπολογιστικά & Διακριτά Μαθηματικά

Φροντιστήριο Αποθήκευση σε δίσκο, βασικές οργανώσεις αρχείων κατακερματισμός και δομές ευρετηρίων για αρχεία

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΚΑΤΑΚΕΡΜΑΤΙΣΜΟΣ HASHING

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

Διάλεξη 18: Τεχνικές Κατακερματισμού I (Hashing)

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 7 και 8: Αναπαραστάσεις. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Αριθμητική Ανάλυση & Εφαρμογές

Αντισταθμιστική ανάλυση

Πρόλογος 1. 1 Μαθηµατικό υπόβαθρο 9

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

2. ΑΡΙΘΜΗΤΙΚΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. 2.1 Αριθμητικά συστήματα

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΠΙΝΑΚΕΣ

Αριθμητική Ανάλυση και Εφαρμογές

Ανάπτυξη και Σχεδίαση Λογισμικού

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Συμπίεση Δεδομένων

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

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

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

Εύρεση ν-στού πρώτου αριθμού

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

P(n, r) = n r. (n r)! n r. n+r 1

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Διατάξεις με επανάληψη: Με πόσους τρόπους μπορώ να διατάξω r από n αντικείμενα όταν επιτρέπονται επαναληπτικές εμφανίσεις των αντικειμένων; Στην αρχή

Επιµέλεια Θοδωρής Πιερράτος

Προσομοίωση Συστημάτων

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

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

Βάσεις Δεδομένων. Αποθήκευση σε δίσκο, βασικές οργανώσεις αρχείων, κατακερματισμός και δομές ευρετηρίων για αρχεία. Φροντιστήριο 7 o

Άσκηση 1: Λύση: Για το άθροισμα ισχύει: κι επειδή οι μέσες τιμές των Χ και Υ είναι 0: Έτσι η διασπορά της Ζ=Χ+Υ είναι:

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 5 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

Γ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι

Κεφάλαιο 13. Αποθήκευση σε ίσκους, Βασικές οµέςαρχείων, και Κατακερµατισµός. ιαφάνεια 13-1

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ - ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΕΙΣΑΓΩΓΙΚΕΣ ΜΕΤΑΠΤΥΧΙΑΚΕΣ ΕΞΕΤΑΣΕΙΣ 26 ΙΟΥΛΙΟΥ 2009 ΕΥΤΕΡΟ ΜΕΡΟΣ :

Διακριτά Μαθηματικά. Άγγελος Κιαγιάς. aggelos. Τμήμα Πληροφορικής & Τηλεπικοινωνιών. π.

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

α n z n = 1 + 2z 2 + 5z 3 n=0

Transcript:

Δυναμικά Σύνολα Δυναμικό σύνολο Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής διαγραφή εισαγωγή

Δυναμικά Σύνολα Δυναμικό σύνολο Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής Βασικές λειτουργίες αναζήτηση(s,k): εισαγωγή(s,x): διαγραφή(s,x): επιστρέφει το στοιχείο με κλειδί k αν υπάρχει στο S θέτει θέτει

Δυναμικά Σύνολα Δυναμικό σύνολο Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής Βασικές λειτουργίες αναζήτηση(s,k): εισαγωγή(s,x): διαγραφή(s,x): επιστρέφει το στοιχείο με κλειδί k αν υπάρχει στο S θέτει θέτει Αν το S είναι ολικά διατεταγμένο μπορούμε να έχουμε επιπλέον τις λειτουργίες ελάχιστο(s): μέγιστο(s): διάδοχος(s,x): προκάτοχος(s,x): επιστρέφει το στοιχείο του S με το ελάχιστο κλειδί επιστρέφει το στοιχείο του S με το μέγιστο κλειδί επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Δυναμικά Σύνολα χειρότερη περίπτωση μέση περίπτωση εισαγωγή αναζήτηση εισαγωγή αναζήτηση διατεταγμένος πίνακας διατεταγμένη λίστα μη διατεταγμένος πίνακας μη διατεταγμένη λίστα δένδρο δυαδικής αναζήτησης τυχαιοποιημένο δένδρο δένδρο κόκκινου-μαύρου κατακερματισμός (*) Συμβαίνει με εξαιρετικά μικρή πιθανότητα Με δυαδική αναζήτηση

Πίνακες Διασποράς Δυναμικό σύνολο Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής Βασικές λειτουργίες αναζήτηση(s,k): εισαγωγή(s,x): διαγραφή(s,x): επιστρέφει το στοιχείο με κλειδί k αν υπάρχει στο S θέτει θέτει Οι πίνακες διασποράς (κατακερματισμός) δίνουν μια αποδοτική λύση όταν θέλουμε να υποστηρίξουμε μόνο τις παραπάνω λειτουργίες

Πίνακες Διασποράς Αποδοτική δομή όταν για το S χρειαζόμαστε μόνο τις λειτουργίες: αναζήτηση(s,k): εισαγωγή(s,x): διαγραφή(s,x): επιστρέφει το στοιχείο με κλειδί k αν υπάρχει στο S θέτει θέτει T 0 1 2 k U : χώρος πιθανών κλειδιών Τ : πίνακας μεγέθους m κλειδί k 3 4 5 συνάρτηση διασποράς 6 7

Πίνακες Διασποράς Μετατροπή σε ακέραιο στο διάστημα - για αριθμό κινητής υποδιαστολής στο διάστημα int m, k; float x; k = x*m; π.χ. για m = 67 x =.57641 k = 38 x =.32178 k = 21 x =.58113 k = 38 - για αλφαριθμητικά με χαρακτήρες των 7 bit κάθε χαρακτήρας αντιστοιχεί σε ένα ακέραιο σε κωδικοποίηση ASCII έχουμε a = 97, b = 98, c = 99, κλπ π.χ. για m = 67 char s[3] = now k =(110*128 2 + 111*128 1 + 119*128 0 ) mod 67 = 1816567 mod 67 = 63

Πίνακες Διασποράς Μετατροπή σε ακέραιο στο διάστημα - για αριθμό κινητής υποδιαστολής στο διάστημα int m, k; float x; k = x*m; π.χ. για m = 67 x =.57641 k = 38 x =.32178 k = 21 x =.58113 k = 38 - για αλφαριθμητικά με χαρακτήρες των 7 bit κάθε χαρακτήρας αντιστοιχεί σε ένα ακέραιο σε κωδικοποίηση ASCII έχουμε a = 97, b = 98, c = 99, κλπ π.χ. για m = 67 char s[4] = have k = (104*128 3 + 97*128 2 + 118*128 1 + 101*128 0 ) mod 67 = 219708261 mod 67 = 52

Πίνακες Διασποράς Μετατροπή σε ακέραιο στο διάστημα - για αλφαριθμητικά με χαρακτήρες των 7 bit κάθε χαρακτήρας αντιστοιχεί σε ένα ακέραιο σε κωδικοποίηση ASCII έχουμε a = 97, b = 98, c = 99, κλπ π.χ. για m = 67 char s[4] = have k = (104*128 3 + 97*128 2 + 118*128 1 + 101*128 0 ) mod 67 = 219708261 mod 67 = 52 για μεγάλα αλφαριθμητικά θα προκληθεί υπερχείλιση (overflow) αν ο υπολογισμός γίνει με απλοϊκό τρόπο int w = 1; int k = s[n-1]; for (i=n-2; i>=0; i--){ w *= 128; k += s[i]*w; } k = k % m;

Πίνακες Διασποράς Μετατροπή σε ακέραιο στο διάστημα - για αλφαριθμητικά με χαρακτήρες των 7 bit κάθε χαρακτήρας αντιστοιχεί σε ένα ακέραιο σε κωδικοποίηση ASCII έχουμε a = 97, b = 98, c = 99, κλπ π.χ. για m = 67 char s[4] = have k = (104*128 3 + 97*128 2 + 118*128 1 + 101*128 0 ) mod 67 = 219708261 mod 67 = 52 για να αποφύγουμε το πρόβλημα της υπερχείλισης χρησιμοποιούμε τον αλγόριθμο του Horner και τις αριθμητικές ιδιότητες της συνάρτησης mod 104*128 3 + 97*128 2 + 118*128 1 + 101*128 0 = ((104*128 + 97)*128 + 118)*128 + 101

Πίνακες Διασποράς Μετατροπή σε ακέραιο στο διάστημα - για αλφαριθμητικά με χαρακτήρες των 7 bit κάθε χαρακτήρας αντιστοιχεί σε ένα ακέραιο σε κωδικοποίηση ASCII έχουμε a = 97, b = 98, c = 99, κλπ π.χ. για m = 67 char s[4] = have k = (((104*128 + 97)*128 + 118)*128 + 101) mod 67 = 52 int w = 128; int k = 0; for (i=0; i<n; i++){ k = (k*w + s[i]) % m; }

Πίνακες σταθερών διευθύνσεων Απλή λύση όταν το U είναι μικρό: όπου 5 3 K 1 7 2 0 4 T 0 1 2 3 4 5 6 7 1 4 7 U : χώρος πιθανών κλειδιών K : χώρος ενεργών κλειδιών Τ : πίνακας μεγέθους m συνάρτηση διασποράς 6 U

Πίνακες σταθερών διευθύνσεων Απλή λύση όταν το U είναι μικρό: όπου Δίνει Ο(1) χρόνο ανά πράξη. 5 3 K 1 7 2 0 4 T 0 1 2 3 4 5 6 7 1 4 7 U : χώρος πιθανών κλειδιών K : χώρος ενεργών κλειδιών Τ : πίνακας μεγέθους m συνάρτηση διασποράς 6 U

Πίνακες σταθερών διευθύνσεων Απλή λύση όταν το U είναι μικρό: όπου Δίνει Ο(1) χρόνο ανά πράξη. Τι γίνεται όμως αν ; 5 3 K 1 7 2 0 4 T 0 1 2 3 4 5 6 7 1 4 7 U : χώρος πιθανών κλειδιών K : χώρος ενεργών κλειδιών Τ : πίνακας μεγέθους m συνάρτηση διασποράς 6 U

Πίνακες Διασποράς Επιθυμητές ιδιότητες: χώρος χρόνος ανά λειτουργία (αναμενόμενη περίπτωση) T 0 U : χώρος πιθανών κλειδιών K : χώρος ενεργών κλειδιών U K k 2 k 4 k 1 Τ : πίνακας μεγέθους m συνάρτηση διασποράς k 3 m-1

Πίνακες Διασποράς Επιθυμητές ιδιότητες: χώρος χρόνος ανά λειτουργία (αναμενόμενη περίπτωση) Σύμπτωση: για κλειδιά T 0 U : χώρος πιθανών κλειδιών K : χώρος ενεργών κλειδιών U K k 2 k 4 k 1 Τ : πίνακας μεγέθους m συνάρτηση διασποράς k 3 m-1

Πίνακες Διασποράς Επιθυμητές ιδιότητες: χώρος χρόνος ανά λειτουργία (αναμενόμενη περίπτωση) Σύμπτωση: για κλειδιά T 0 Η h πρέπει να δίνει τυχαιόμορφη κατανομή U : χώρος πιθανών κλειδιών K : χώρος ενεργών κλειδιών U K k 2 k 4 k 1 Τ : πίνακας μεγέθους m συνάρτηση διασποράς k 3 m-1

Πίνακες Διασποράς Ποιά συνάρτηση διασποράς είναι καλύτερη;

Πίνακες Διασποράς Σύμπτωση: για κλειδιά Άρση των συμπτώσεων μέσω αλυσιδωτής σύνδεσης κάθε Τ[i] δείχνει σε μία αλυσίδα για τα κλειδιά k με διασπορά h[k]=i T 0 k 2 U K k 2 k 3 k 4 k 1 m-1 k 1 k 3 k 4

Πίνακες Διασποράς Σύμπτωση: για κλειδιά Άρση των συμπτώσεων μέσω αλυσιδωτής σύνδεσης κάθε Τ[i] δείχνει σε μία αλυσίδα για τα κλειδιά k με διασπορά h[k]=i εισαγωγή(τ,x): εισαγωγή του x στη λίστα του Τ[h(κλειδί[x])] T 0 k 2 U K k 2 k 3 k 4 k 1 m-1 k 1 k 3 k 4

Πίνακες Διασποράς Σύμπτωση: για κλειδιά Άρση των συμπτώσεων μέσω αλυσιδωτής σύνδεσης κάθε Τ[i] δείχνει σε μία αλυσίδα για τα κλειδιά k με διασπορά h[k]=i εισαγωγή(τ,x): εισαγωγή του x στη λίστα του Τ[h(κλειδί[x])] k 5 k 5 k 2 T 0 U K k 2 k 4 k 1 k 1 k 3 k 4 k 3 m-1

Πίνακες Διασποράς Σύμπτωση: για κλειδιά Άρση των συμπτώσεων μέσω αλυσιδωτής σύνδεσης κάθε Τ[i] δείχνει σε μία αλυσίδα για τα κλειδιά k με διασπορά h[k]=i εισαγωγή(τ,x): εισαγωγή του x στη λίστα του Τ[h(κλειδί[x])] αναζήτηση(τ,k): αναζήτηση στοιχείου με κλειδί k στην αλυσίδα T[h(k)] T 0 διαγραφή(τ,x): διαγραφή του x από την αλυσίδα του Τ[h(κλειδί[x])] k 5 k 5 k 2 U K k 2 k 4 k 1 k 1 k 3 k 4 k 3 m-1

Πίνακες Διασποράς Σύμπτωση: για κλειδιά Άρση των συμπτώσεων μέσω αλυσιδωτής σύνδεσης κάθε Τ[i] δείχνει σε μία αλυσίδα για τα κλειδιά k με διασπορά h[k]=i εισαγωγή(τ,x): εισαγωγή του x στη λίστα του Τ[h(κλειδί[x])] αναζήτηση(τ,k): αναζήτηση στοιχείου με κλειδί k στην αλυσίδα T[h(k)] T 0 διαγραφή(τ,x): διαγραφή του x από την αλυσίδα του Τ[h(κλειδί[x])] k 5 k 5 k 2 U K k 2 k 3 k 4 k 1 m-1 k 1 k 3 k 4 Εισαγωγή και διαγραφή παίρνουν Ο(1) χρόνο Για την αναζήτηση πρέπει να υπολογίσουμε το αναμενόμενο μήκος μιας αλυσίδας.

Πίνακες Διασποράς Συντελεστής πληρότητας πλήθος των ενεργών κλειδιών Στη χειρότερη περίπτωση η διασπορά h(k) είναι ίδια για όλα τα χρόνος αναζήτησης στη χειρότερη περίπτωση Ο αναμενόμενος χρόνος αναζήτησης εξαρτάται από την επιλογή της h k 5 k 5 k 2 T 0 U K k 2 k 4 k 1 k 1 k 3 k 4 k 3 m-1

Πίνακες Διασποράς Συντελεστής πληρότητας πλήθος των ενεργών κλειδιών Έστω το μήκος της αλυσίδας του Έχουμε είναι T και επομένως το μέσο μήκος μιας αλυσίδας Υπόθεση απλής ομοιόμορφης διασποράς: κάθε νέο στοιχείο έχει ίση πιθανότητα να διασπαρεί σε οποιαδήποτε από τις m θέσεις. 0 U K k 5 k 5 k 2 k 2 k k 1 k 4 4 k 1 k 3 k m-1 3 Αναμενόμενος χρόνος ανεπιτυχούς αναζήτησης: Αναμενόμενος χρόνος επιτυχούς αναζήτησης:

Συναρτήσεις Διασποράς Πότε είναι μία συνάρτηση διασποράς καλή; Επιθυμητή ιδιότητα: να ικανοποιεί την υπόθεση της απλής ομοιόμορφης διασποράς (δηλ. κάθε νέο στοιχείο έχει ίση πιθανότητα να διασπαρεί σε οποιαδήποτε από τις m θέσεις). Παράδειγμα: Τα κλειδιά είναι ανεξάρτητοι και ομοιόμορφα κατανεμημένοι αριθμοί στο διάστημα [0,1]. Επιλέγοντας ικανοποιούμε την υπόθεση της απλής ομοιόμορφης διασποράς. Η παραπάνω ιδιότητα απαιτεί γνώση της κατανομής των κλειδιών, που συνήθως δεν είναι γνωστή.

Συναρτήσεις Διασποράς Πότε είναι μία συνάρτηση διασποράς καλή; Επιθυμητή ιδιότητα: να ικανοποιεί την υπόθεση της απλής ομοιόμορφης διασποράς (δηλ. κάθε νέο στοιχείο έχει ίση πιθανότητα να διασπαρεί σε οποιαδήποτε από τις m θέσεις). Διαιρετική μέθοδος (συνήθως) κακή επιλογή : m = δύναμη του 2 καλύτερη επιλογή : m = πρώτος αριθμός Πολλαπλασιαστική μέθοδος

Καθολική Διασπορά Για κάθε καθορισμένη συνάρτηση διασποράς μπορούμε να επιλέξουμε κλειδιά που θα δίνουν τη χειρότερη δυνατή επίδοση. Προκειμένου να βελτιώσουμε την κατάσταση μπορούμε να βασιστούμε σε τυχαιοκρατικούς αλγόριθμους: Ορίζουμε μία οικογένεια συναρτήσεων και κατά τη διάρκεια της εκτέλεσης επιλέγουμε τυχαία μία από αυτές τις συναρτήσεις ως συνάρτηση διασποράς. Περιορίζουμε την πιθανότητα εμφάνισης παθολογικών περιπτώσεων.

Καθολική Διασπορά πεπερασμένη συλλογή συναρτήσεων Η συλλογή είναι καθολική αν για κάθε ζεύγος διαφορετικών κλειδιών υπάρχουν το πολύ συναρτήσεις με

Καθολική Διασπορά πεπερασμένη συλλογή συναρτήσεων Η συλλογή είναι καθολική αν για κάθε ζεύγος διαφορετικών κλειδιών υπάρχουν το πολύ συναρτήσεις με Συνεπώς

Καθολική Διασπορά πεπερασμένη συλλογή συναρτήσεων Η συλλογή είναι καθολική αν για κάθε ζεύγος διαφορετικών κλειδιών υπάρχουν το πολύ συναρτήσεις με Συνεπώς Πιθανότητα σύμπτωσης όταν επιλέγονται τυχαία και ανεξάρτητα. και

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

Καθολική Διασπορά Θεώρημα Έστω ότι επιλέγουμε τυχαία και κάνουμε εισαγωγή κλειδιών σε πίνακα μεγέθους. Έστω. Τότε Πόρισμα Ο αναμενόμενος χρόνος εκτέλεσης μίας ακολουθίας πράξεων με πράξεις εισαγωγής είναι Συνεπάγεται από το παραπάνω θεώρημα και την παρατήρηση ότι

Μια Καθολική Οικογένεια Συναρτήσεων Διασποράς πρώτος αριθμός, μεγαλύτερος από κάθε κλειδί Για και Παράδειγμα

Μια Καθολική Οικογένεια Συναρτήσεων Διασποράς πρώτος αριθμός, μεγαλύτερος από κάθε κλειδί Για και Περιλαμβάνει συναρτήσεις

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Η συνάρτηση διασποράς αντιστοιχεί σε κάθε κλειδί μία ακολουθία από διευθύνσεις του πίνακα Τ βολιδοσκοπική ακολουθία Συνάρτηση Διασποράς μετάθεση του

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Η συνάρτηση διασποράς αντιστοιχεί σε κάθε κλειδί μία ακολουθία από διευθύνσεις του πίνακα Τ βολιδοσκοπική ακολουθία Συνάρτηση Διασποράς μετάθεση του T 0 αναζήτηση (Τ,k): βολιδοσκοπεί τις θέσεις T[h(k,i)] για i=0,1,,m-1 μέχρι να βρει το αντικείμενο με κλειδί k ή μία κενή θέση. m-1

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Η συνάρτηση διασποράς αντιστοιχεί σε κάθε κλειδί μία ακολουθία από διευθύνσεις του πίνακα Τ βολιδοσκοπική ακολουθία Συνάρτηση Διασποράς μετάθεση του T 0 αναζήτηση (Τ,k): βολιδοσκοπεί τις θέσεις T[h(k,i)] για i=0,1,,m-1 μέχρι να βρει το αντικείμενο με κλειδί k ή μία κενή θέση. εισαγωγή (Τ,k): βολιδοσκοπεί τις θέσεις Τ[h(κλειδί[x],i)] για i=0,1,,m-1 μέχρι να βρει την πρώτη κενή θέση και τοποθετεί το αντικείμενο εκεί. m-1

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Η συνάρτηση διασποράς αντιστοιχεί σε κάθε κλειδί μία ακολουθία από διευθύνσεις του πίνακα Τ βολιδοσκοπική ακολουθία Συνάρτηση Διασποράς μετάθεση του T x k 0 m-1 αναζήτηση (Τ,k): βολιδοσκοπεί τις θέσεις T[h(k,i)] για i=0,1,,m-1 μέχρι να βρει το αντικείμενο με κλειδί k ή μία κενή θέση. εισαγωγή (Τ,k): βολιδοσκοπεί τις θέσεις Τ[h(κλειδί[x],i)] για i=0,1,,m-1 μέχρι να βρει την πρώτη κενή θέση και τοποθετεί το αντικείμενο εκεί. διαγραφή (Τ,x): ;

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Η συνάρτηση διασποράς αντιστοιχεί σε κάθε κλειδί μία ακολουθία από διευθύνσεις του πίνακα Τ βολιδοσκοπική ακολουθία Συνάρτηση Διασποράς T x k 0 m-1 Ο χρόνος εκτέλεσης δεν εξαρτάται από τον συντελεστή πληρότητας! μετάθεση του αναζήτηση (Τ,k): βολιδοσκοπεί τις θέσεις T[h(k,i)] για i=0,1,,m-1 μέχρι να βρει το αντικείμενο με κλειδί k ή μία κενή θέση. εισαγωγή (Τ,k): βολιδοσκοπεί τις θέσεις Τ[h(κλειδί[x],i)] για i=0,1,,m-1 μέχρι να βρει την πρώτη κενή θέση και τοποθετεί το αντικείμενο εκεί. διαγραφή (Τ,x): σήμανση της θέσης του x ως διαγεγραμμένης. Η αναζήτηση αντιπαρέρχεται τέτοιες θέσεις.

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Η συνάρτηση διασποράς αντιστοιχεί σε κάθε κλειδί μία ακολουθία από διευθύνσεις του πίνακα Τ βολιδοσκοπική ακολουθία Συνάρτηση Διασποράς μετάθεση της Υπόθεση της ομοιόμορφης διασποράς : η βολιδοσκοπική ακολουθία κάθε κλειδιού είναι μία τυχαία μετάθεση της

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Η συνάρτηση διασποράς αντιστοιχεί σε κάθε κλειδί μία ακολουθία από διευθύνσεις του πίνακα Τ βολιδοσκοπική ακολουθία Συνάρτηση Διασποράς μετάθεση της Υπόθεση της ομοιόμορφης διασποράς : η βολιδοσκοπική ακολουθία κάθε κλειδιού είναι μία τυχαία μετάθεση της Δύσκολο να υλοποιηθεί!

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Γραμμική Βολιδοσκόπιση βοηθητική συνάρτηση διασποράς

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Γραμμική Βολιδοσκόπιση βοηθητική συνάρτηση διασποράς Δίνει μόνο m ακολουθίες Αν i διαδοχικές θέσεις είναι κατειλημμένες τότε η πιθανότητα να συμπληρωθεί η επόμενη είναι Πρωτεύουσα ομαδοποίηση : οι μακριές αλληλουχίες τείνουν να επεκτείνονται

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Τετραγωνική Βολιδοσκόπιση βοηθητική συνάρτηση διασποράς σταθερές Δίνει μόνο m ακολουθίες Δευτερεύουσα ομαδοποίηση : πιο ήπιας μορφής ομαδοποίηση

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Διπλή Διασπορά βοηθητικές συναρτήσεις διασποράς

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Διπλή Διασπορά βοηθητικές συναρτήσεις διασποράς μετάθεση της Πρέπει και να είναι αμοιβαία πρώτοι π.χ. μπορούμε να έχουμε ίσο με μία δύναμη του 2 και περιττό

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

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Υπόθεση της ομοιόμορφης διασποράς : η βολιδοσκοπική ακολουθία κάθε κλειδιού είναι μία τυχαία μετάθεση της Συντελεστής πληρότητας έχουμε. Για τη μέθοδο των μεταβλητών διευθύνσεων Θεώρημα Το αναμενόμενο πλήθος βολιδοσκοπήσεων είναι : σε μία ανεπιτυχή αναζήτηση σε μία επιτυχή αναζήτηση

Πλήρης Διασπορά Όταν το σύνολο των κλειδιών είναι στατικό μπορούμε να πετύχουμε άριστη επίδοση : χρόνο χειρότερης περίπτωσης ανά πράξη

Πλήρης Διασπορά Όταν το σύνολο των κλειδιών είναι στατικό μπορούμε να πετύχουμε άριστη επίδοση : χρόνο χειρότερης περίπτωσης ανά πράξη T 0 Ιδέα: Διασπορά δύο επιπέδων με χρήση k 5 k 2 k 5 καθολικής διασποράς ανά επίπεδο K k 2 k 1 k 4 k 1 k 3 k 4 k 3 m-1

Πλήρης Διασπορά Όταν το σύνολο των κλειδιών είναι στατικό μπορούμε να πετύχουμε άριστη επίδοση : χρόνο χειρότερης περίπτωσης ανά πράξη T 0 Ιδέα: Διασπορά δύο επιπέδων με χρήση k 5 k 2 k 5 καθολικής διασποράς ανά επίπεδο K k 2 k 1 k 4 k 1 k 3 k 4 k 3 m-1 2 ο επίπεδο : δευτερογενής πίνακας διασποράς για κάθεt[i] 1 ο επίπεδο

Πλήρης Διασπορά Όταν το σύνολο των κλειδιών είναι στατικό μπορούμε να πετύχουμε άριστη επίδοση : χρόνο χειρότερης περίπτωσης ανά πράξη T 0 Ιδέα: Διασπορά δύο επιπέδων με χρήση k 5 k 2 k 5 καθολικής διασποράς ανά επίπεδο K k 2 k 1 k 4 k 1 k 3 k 4 k 3 m-1 2 ο επίπεδο : δευτερογενής πίνακας διασποράς για κάθεt[i] 1 ο επίπεδο Στο 2 ο επίπεδο αποφεύγουμε τις συμπτώσεις

Δυναμικοί Πίνακες Διασποράς Συντελεστής πληρότητας Η απόδοση του κατακερματισμού επιδεινώνεται όσο αυξάνει ο συντελεστής Επιπλέον στην μέθοδο των μεταβλητών διευθύνσεων πρέπει

Δυναμικοί Πίνακες Διασποράς Συντελεστής πληρότητας Η απόδοση του κατακερματισμού επιδεινώνεται όσο αυξάνει ο συντελεστής Επιπλέον στην μέθοδο των μεταβλητών διευθύνσεων πρέπει Για να αντιμετωπίσουμε το παραπάνω ζήτημα μπορούμε να διπλασιάσουμε το μέγεθος του πίνακα διασποράς κάθε φορά που ο συντελεστής φθάνει μία συγκεκριμένη τιμή (π.χ. 50% για τη μέθοδο των μεταβλητών διευθύνσεων) T T

Δυναμικοί Πίνακες Διασποράς Συντελεστής πληρότητας Η απόδοση του κατακερματισμού επιδεινώνεται όσο αυξάνει ο συντελεστής Επιπλέον στην μέθοδο των μεταβλητών διευθύνσεων πρέπει Για να αντιμετωπίσουμε το παραπάνω ζήτημα μπορούμε να διπλασιάσουμε το μέγεθος του πίνακα διασποράς κάθε φορά που ο συντελεστής φθάνει μία συγκεκριμένη τιμή (π.χ. 50% για τη μέθοδο των μεταβλητών διευθύνσεων) T T Παίρνει (αναμενόμενο) χρόνο γιατί όλα τα στοιχεία πρέπει να εισαχθούν στο νέο πίνακα. Ευτυχώς ο διπλασιασμός δε συμβαίνει συχνά, αποτελεί καλή λύση όταν μας ενδιαφέρει να είναι χαμηλό το μέσο κόστος ανά πράξη (σε αντίθεση με το κόστος χειρότερης περίπτωσης)