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

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

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

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

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Advanced Data Indexing

Advanced Data Indexing

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

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

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

Προγραµµατιστικές Τεχνικές

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

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

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

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

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

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

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

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

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

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

Βασικές έννοιες προγραμματισμού

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

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

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

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

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

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

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

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

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

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

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

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

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

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

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

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

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

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

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

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

Προγραμματιστικές Τεχνικές

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

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

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

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

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

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

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

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 6 : Δομές αρχείων. Δρ. Γκόγκος Χρήστος

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

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 θέτει θέτει Οι πίνακες διασποράς (κατακερματισμός) δίνουν μια αποδοτική λύση όταν θέλουμε να υποστηρίξουμε μόνο τις παραπάνω λειτουργίες

Πίνακες Διασποράς Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση T 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

Πίνακες Διασποράς Μετατροπή σε ακέραιο στο διάστημα - για αλφαριθμητικά με χαρακτήρες κάθε χαρακτήρας αντιστοιχεί σε ένα ακέραιο σε κωδικοποίηση ASCII έχουμε a = 97, b = 98, c = 99, κλπ π.χ. για m = 67 char s[4] = have k = (14 + 97 + 118 + 11) mod 67 = 42 mod 67 = 18

Πίνακες Διασποράς Μετατροπή σε ακέραιο στο διάστημα - για αλφαριθμητικά με χαρακτήρες κάθε χαρακτήρας αντιστοιχεί σε ένα ακέραιο σε κωδικοποίηση ASCII έχουμε a = 97, b = 98, c = 99, κλπ π.χ. για m = 67 char s[4] = have k = (14 + 97 + 118 + 11) mod 67 = 42 mod 67 = 18 Αντιστοιχεί στον ίδιο ακέραιο αλφαριθμητικά που προκύπτουν από μεταθέσεις των ίδιων χαρακτήρων. Π.χ. stop tops pots spot, «γραφή» «φραγή» Για να το αποφύγουμε πολλαπλασιάζουμε με ένα συντελεστή βάρους κάθε θέση σε

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

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

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

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

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

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

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

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

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

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

Πίνακες Διασποράς Σύγκρουση (collision): για κλειδιά Πρέπει να οριστεί ένας τρόπος διαχείρισης συγκρούσεων ώστε τα κλειδιά να μπορούν να βρεθούν αρκετά γρήγορα. Χρησιμοποιούνται 2 κύριοι τρόποι: Τοποθέτηση στην ίδια θέση (π.χ., σε αλυσίδα) Τοποθέτηση σε άλλη θέση

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

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

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

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

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

Πίνακες Διασποράς Αλυσιδωτής Σύνδεσης Εισαγωγή zebra key=-13971863 hash = 4 T 1 2 3 seal wolf tiger vulture frog bat 4 5 koala elephant alligator horse 6 octopus dog 7 mouse lion 8 iguana 9 rabbit puma jaguar

Πίνακες Διασποράς Αλυσιδωτής Σύνδεσης Εισαγωγή zebra key=-13971863 hash = 4 T 1 2 3 4 5 6 7 8 seal wolf tiger vulture zebra horse octopus mouse iguana frog bat koala elephant alligator dog lion 9 rabbit puma jaguar

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

Πίνακες Διασποράς Αλυσιδωτής Σύνδεσης Συντελεστής πληρότητας πλήθος των ενεργών κλειδιών Έστω το μήκος της αλυσίδας του. Έχουμε και επομένως το μέσο μήκος μιας αλυσίδας είναι. T Υπόθεση απλής ομοιόμορφης διασποράς: κάθε νέο στοιχείο έχει ίση πιθανότητα να διασπαρεί σε οποιαδήποτε από τις m θέσεις. 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 θέσεις). Παράδειγμα: Τα κλειδιά είναι ανεξάρτητοι και ομοιόμορφα κατανεμημένοι αριθμοί στο διάστημα [,1]. Επιλέγοντας ικανοποιούμε την υπόθεση της απλής ομοιόμορφης διασποράς. Η παραπάνω ιδιότητα απαιτεί γνώση της κατανομής των κλειδιών, που συνήθως δεν είναι γνωστή.

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

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

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

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

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

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

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) T Εισαγωγή zebra κλειδί k 1 seal 2 3 4 5 6 7 8 9 1 11 frog tiger bat dog puma rabbit zebra

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) T Εισαγωγή zebra κλειδί k 1 seal 2 3 4 5 6 7 8 9 1 11 frog tiger bat dog puma rabbit zebra

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) T Εισαγωγή zebra κλειδί k 1 zebra seal 2 3 4 5 6 7 8 9 1 11 frog tiger bat dog puma rabbit zebra

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

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

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

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Γραμμική Βολιδοσκόπηση βοηθητική συνάρτηση διασποράς 1 2 3 4 5 6 7 8 9 1 11 T seal frog tiger bat zebra dog puma rabbit zebra

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

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

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

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

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

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

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Υπόθεση της ομοιόμορφης διασποράς : η βολιδοσκοπική ακολουθία κάθε κλειδιού είναι μία τυχαία μετάθεση της Αν ισχύει η υπόθεση ομοιόμορφης διασποράς, τότε η πιθανότητα η j-οστή βολιδοσκόπηση να βρει κατειλημμένη θέση δεδομένου ότι οι πρώτες (j-1) πράξεις βολιδοσκόπησης βρήκαν κατειλημμένες θέσεις είναι Άρα η πιθανότητα να χρειαστούν τουλάχιστον βολιδοσκοπήσεις είναι Επομένως, το αναμενόμενο πλήθος βολιδοσκοπήσεων σε ανεπιτυχή αναζήτηση είναι

Μέθοδος Μεταβλητών Διευθύνσεων (Ανοιχτή Διευθυνσιοδότηση) Υπόθεση της ομοιόμορφης διασποράς : η βολιδοσκοπική ακολουθία κάθε κλειδιού είναι μία τυχαία μετάθεση της Το αναμενόμενο πλήθος προσπελάσεων σε επιτυχημένη αναζήτηση είναι ίσο με το αναμενόμενο πλήθος προσπελάσεων για την εισαγωγή κάθε ενός από τα n κλειδιά. Το αναμενόμενο πλήθος προσπελάσεων για την εισαγωγή του i-οστού κλειδιού είναι ίσο με το αναμενόμενο πλήθος προσπελάσεων σε μη επιτυχημένη αναζήτηση όταν έχουν ήδη εισαχθεί (i-1) κλειδιά. Επομένως: Ν-οστός αρμονικός αριθμός

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

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

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

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