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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Συναρτήσεις Κατακερματισμού και Πίνακες Κατακερματισμού

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

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

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

Advanced Data Indexing

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

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

Προηγμένη Ευρετηρίαση Δεδομένων (ΠΜΣ) Ενδεικτικές ερωτήσεις-θέματα για την εξέταση της θεωρίας

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

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

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

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

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

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

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

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

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

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

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

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

Advanced Data Indexing

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

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

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Λύσεις 4ης Σειράς Ασκήσεων

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

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

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

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

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

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

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

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

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

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


Ψευδοκώδικας. November 7, 2011

Να το ξαναγράψετε χρησιμοποιώντας αντί για την εντολή Για Τέλος_επανάληψης: α. την εντολή Όσο Τέλος_επανάληψης

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2019 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

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

Μελέτη Περίπτωσης : 2.1

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

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

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

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

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

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Μάθημα 7: Μικροϋπολογιστικό Σύστημα και Μνήμες

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

Στο Κεφάλαιο 5 µελετώντας την προβολή του τρισδιάστατου χώρου στο επίπεδο της κάµερας εξετάστηκε

Ο χρήστης συμπληρώνει όνομα χρήστη και κωδικό και επιλέγει Είσοδος. Εάν δεν έχει κάνει εγγραφή στο σύστημα θα πρέπει να επιλέξει πρώτα Εγγραφή.

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

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

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

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού

Μάριος Αγγελίδης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Βάσεις Περιβαλλοντικών Δεδομένων

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

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

Detecting Duplicates over Distributed Data Sources. Δημήτρης Σουραβλιάς

Κεφ.11: Ευρετήρια και Κατακερματισμός

Ανάκτηση Πληροφορίας

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Κρυπτογραφικές Συναρτήσεις. Χρήστος Ξενάκης

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

Transcript:

Ο ΑΤΔ Λεξικό Σύνολο στοιχείων με βασικές πράξεις: Δημιουργία Εισαγωγή Διαγραφή Μέλος Υλοποιήσεις Πίνακας με στοιχεία bit (0 ή 1) (bit vector) Λίστα ακολουθιακή (πίνακας) ή συνδεδεμένη

Είναι γνωστό το μέγιστο πλήθος N των στοιχείων του συνόλου; Είναι γνωστή μια αμφιμονοσήμαντη αντιστοιχία των στοιχείων του συνόλου με κάποιο σύνολο {0, 1,..., r}, όπου r ένας θετικός ακέραιος; Η επιλογή μιας υλοποίησης έτσι ώστε οι βασικές πράξεις να εκτελούνται όσο το δυνατόν γρηγορότερα εξαρτάται από τις απαντήσεις στις παραπάνω ερωτήσεις.

Υλοποίηση με bit vector Είναι δυνατή εφόσον είναι γνωστά τα N και r. Τότε οι βασικές πράξεις εκτελούνται σε χρόνο O(1) (ανεξάρτητο από το μέγεθος του συνόλου). Επιπλέον μειονέκτημα: αν r >> 0 τότε η αποθήκευση λίγων στοιχείων του λεξικού σπαταλά πολύ χώρο. Υλοποίηση με ακολουθιακή λίστα Είναι δυνατή εφόσον είναι γνωστό το N. Τότε οι βασικές πράξεις χρειάζονται χρόνο O(Ν).

Υλοποίηση με συνδεδεμένη λίστα Δεν απαιτεί γνώση των N, r. Οι βασικές πράξεις χρειάζονται χρόνο O(N). Παρατήρηση: Στις υλοποιήσεις με ακολουθιακή ή συνδεδεμένη λίστα η χειρότερη περίπτωση (για την οποία η χρονική πολυπλοκότητα είναι O(N)) δεν είναι καθόλου σπάνια. Πιο συγκεκριμένα, αν υποθέσουμε ότι θέλουμε να εκτελέσουμε κάποια βασική πράξη που αφορά ένα τυχαίο στοιχείο ενός δεδομένου λεξικού, τότε η πιθανότητα να χρειαστούμε O(N) χρόνο είναι πολύ μεγάλη.

Κατακερματισμός (Hashing) Εάν δεν είναι γνωστά τα N, r, είναι δυνατή μια υλοποίηση στην οποία οι βασικές πράξεις απαιτούν λίγο χρόνο; Ο στόχος είναι η χρονική πολυπλοκότητα να είναι ανεξάρτητη του N. Με τη μέθοδο του κατακερματισμού χρειαζόμαστε χρόνο O(N) στη χειρότερη περίπτωση, αλλά στις περισσότερες περιπτώσεις ο χρόνος που απαιτείται είναι πολύ μικρότερος. Πιο συγκεκριμένα, μπορούμε να σχεδιάσουμε τη δομή μας έτσι ώστε η πιθανότητα της σπατάλης περισσότερου χρόνου από O(1) να είναι πολύ μικρή.

Δεν απαιτείται η γνώση του r. Κατακερματισμός (Hashing) Ανοιχτός κατακερματισμός (open hashing). Δεν απαιτείται ούτε η γνώση του N. Κλειστός κατακερματισμός (closed hashing). Απαιτείται η γνώση του N. Χρειάζεται η επιλογή μιας συνάρτησης h (συνάρτηση κατακερματισμού) η οποία απεικονίζει τα στοιχεία του συνόλου στο διάστημα των ακεραίων [0, 1,..., Β-1], όπου το B μπορεί (κατ αρχήν) να επιλεγεί αυθαίρετα.

0 1 2.. Β-1 Κατακερματισμός (Hashing) Για την υλοποίηση χρησιμοποιούμε εκτός από την συνάρτηση h, έναν πίνακα και συνδεδεμένες λίστες. Α 10 20 30 2 12 9 19 29 40

Κατακερματισμός (Hashing) Κάθε στιγμή ισχύει η εξής ιδιότητα: Ένα στοιχείο x ανήκει στο λεξικό αν και μόνο αν έχει αποθηκευτεί στην λίστα που δείχνει ο δείκτης A[h(x)]. Για παράδειγμα ας υποθέσουμε ότι το σύνολο αποτελείται από θετικούς ακέραιους. Θεωρείστε τη συνάρτηση h = x mod B και πάρτε B = 10. Τότε η δομή με κάποια στοιχεία είναι αυτή που φαίνεται στο προηγούμενο σχήμα.

Κατακερματισμός (Hashing) Η συνάρτηση h πρέπει να έχει επιπλέον τις εξής ιδιότητες: Να υπολογίζεται γρήγορα (O(1)). Να κατανέμει τα στοιχεία του συνόλου όσο το δυνατόν ομοιόμορφα στις λίστες (δηλαδή να τα κατακερματίζει!). Ας υποθέσουμε ότι η h έχει τις παραπάνω ιδιότητες. Αν επιπλέον μπορούμε να εκτιμήσουμε την τιμή του N και επιλέξουμε B ~ N, τότε το πλήθος των κόμβων κάθε λίστας είναι N/B ~ 1.

Κατακερματισμός (Hashing) Για την εισαγωγή, διαγραφή ή μέλος ενός στοιχείου x θα χρειαστεί να επεξεργαστούμε μόνο την λίστα στην οποία δείχνει ο δείκτης A[h(x)]. Η χρονική πολυπλοκότητα είναι ανάλογη του μεγέθους αυτής της λίστας. Δηλαδή: O(1 + N/B) ~ O(1), αφού N/B ~ 1 Αυτό το είδος κατακερματισμού ονομάζεται ανοιχτός κατακερματισμός (open hashing).

Κατακερματισμός (Hashing) Η μέθοδος στην οποία δεν υπάρχουν οι λίστες, αλλά ένα στοιχείο του συνόλου αποθηκεύεται κατ ευθείαν σε μια θέση του πίνακα καλείται κλειστός κατακερματισμός (closed hashing). Σε αυτή την περίπτωση, είναι δυνατό κατά την προσπάθεια εισαγωγής του στοιχείου x στη θέση A[h(x)], αυτή η θέση να είναι κατειλημμένη. Αυτό μπορεί να συμβεί αν πριν την εισαγωγή του x έχει γίνει η εισαγωγή κάποιου y x τέτοιο ώστε h(x) = h(y). Αυτό το ενδεχόμενο ονομάζεται σύγκρουση (collision).

Κατακερματισμός (Hashing) Για την αντιμετώπιση των συγκρούσεων χρησιμοποιείται η μέθοδος του re-hashing. Σύμφωνα με αυτή τη μέθοδο, αν η θέση A[h(x)] είναι κατειλημμένη, τότε ο αλγόριθμος εισαγωγής δοκιμάζει τη θέση A[h 2 (x)]. Αν η A[h 2 (x)] δεν είναι κενή τότε δοκιμάζει την A[h 3 (x)], κ.ο.κ. Οι συναρτήσεις h i ορίζονται συνήθως σαν συναρτήσεις της h, του i και του x. Το ενδεχόμενο της σύγκρουσης (δηλαδή όταν χρησιμοποιείται closed hashing), έχει σαν συνέπεια η πολυπλοκότητα των βασικών πράξεων να εξαρτάται όχι μόνο από την επιλογή της h αλλά και από το πώς γίνεται rehashing.

Κατακερματισμός (Hashing) Για παράδειγμα θεωρείστε την ακόλουθη μέθοδο που μας δίνει τις συναρτήσεις h i (γραμμικό rehashing): h i (x) = (h(x) + i) mod B Για κάθε x y τέτοια ώστε h(x) = h(y), ισχύει ότι: h i (x) = h i (y), για κάθε i Αυτό έχει σαν συνέπεια η πολυπλοκότητα της εισαγωγής του x να είναι ανάλογη του πλήθους όλων των στοιχείων y τα οποία έχουν εισαχθεί στο λεξικό πριν το x και για τα οποία ισχύει h(x) = h(y).