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

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

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

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

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Διαδικαστικός Προγραμματισμός

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Μοντελοποίηση Λογικών Κυκλωμάτων

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

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

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

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων Ι Σύνολο- Περιεχόμενο Μαθήματος

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

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

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

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

Θεωρία Πιθανοτήτων & Στατιστική

Αυτοματοποιημένη χαρτογραφία

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 3 : Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

Αλγόριθμοι και Δομές Δεδομένων(Θ) Ευάγγελος Γ. Ούτσιος

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

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

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

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

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

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

Ψηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 2: Μοντελο Συσχετίσεων Οντοτήτων, Μελέτη Περίπτωσης: Η βάση δεδομένων των CD

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

Επιχειρησιακή Έρευνα

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

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

Θεωρία Πιθανοτήτων & Στατιστική

Μαθηματικά. Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ. ΕΝΟΤΗΤΑ: Γραμμικές Συναρτήσεις Διάκρισης. ΔΙΔΑΣΚΟΝΤΕΣ: Βλάμος Π. Αυλωνίτης Μ. ΙΟΝΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Δομημένος Προγραμματισμός

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

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Μαθηματικά και Φυσική με Υπολογιστές

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

Αλγόριθμοι Αναζήτησης

Λογιστικές Εφαρμογές Εργαστήριο

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Οικονομικά Μαθηματικά

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

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

Στατιστική Επιχειρήσεων Ι

Μαθηματικά. Ενότητα 2: Δεκαδικοί αριθμοί, κλάσματα, δυνάμεις, ρίζες και ποσοστά. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

Στατιστική Ι. Ενότητα 2: Στατιστικά Μέτρα Διασποράς Ασυμμετρίας - Κυρτώσεως. Δρ. Γεώργιος Κοντέος Τμήμα Διοίκησης Επιχειρήσεων Γρεβενών

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

Διαχείριση Πολιτισμικών Δεδομένων

ΔΙΑΧΕΙΡΙΣΗ ΥΔΑΤΙΚΩΝ ΠΟΡΩΝ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Οικονομικά Μαθηματικά

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Βάσεις Δεδομένων. Ενότητα 5: ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Οργάνωση Υπολογιστών

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Αυτοματοποιημένη χαρτογραφία

ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ. Ενότητα 7: Τέλεια ισορροπία Nash για υποπαίγνια. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Transcript:

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας Σκοπός της ενότητας είναι να εισάγει το φοιτητή στην έννοια του κατακερματισμού. Στα πλεονεκτήματα και μειονεκτήματα αυτής της ΑΔΔ καθώς και την αντιμετώπιση των συγκρούσεων συνωνύμων με συγκεκριμένες τεχνικές. 4

Περιεχόμενα ενότητας Εισαγωγή Πίνακας κατακερματισμού Συνάρτηση κατακερματισμού Συνάρτηση κατακερματισμού: διαίρεση Συνάρτηση κατακερματισμού: παράδειγμα Κλειδί κατακερματισμού Μη ακέραιες τιμές κλειδιών Τεχνικές συναρτήσεων κατακερματισμού Συνώνυμα κλειδιά Σύγκρουση Τεχνικές χειρισμού συγκρούσεων 5

Εισαγωγή -1- Στην γραμμική αναζήτηση και στην δυαδική αναζήτηση, για να εντοπιστεί ένα στοιχείο απαιτείται μια σειρά από συγκρίσεις, όπου το ζητούμενο στοιχείο συγκρίνεται επανειλημμένα με τα στοιχεία της λίστας. Αν τα στοιχεία είναι n, τότε κατά μέσο όρο απαιτούνται n συγκρίσεις στην γραμμική αναζήτηση και log2n στη δυαδική. Οι αλγόριθμοι γραμμικής και δυαδικής αναζήτησης μπορεί να είναι αργοί σε ορισμένες περιπτώσεις. Για παράδειγμα, ένας πίνακας συμβόλων, που κατασκευάζεται από έναν compiler, χρησιμοποιείται για την αποθήκευση αναγνωριστικών και πληροφοριών σχετικών μ' αυτά. Η ταχύτητα κατασκευής και αναζήτησης ενός τέτοιου πίνακα εξαρτάται από την ταχύτητα μεταγλώττισης. 6

Πίνακας κατακερματισμού Για ταχύτερη αναζήτηση, χρησιμοποιείται συνήθως μια δομή δεδομένων που ονομάζεται πίνακας κατακερματισμού (hash table). Η θέση ενός στοιχείου μέσα σε ένα πίνακα κατακερματισμού (hash table) ορίζεται απευθείας ως συνάρτηση του ίδιου του στοιχείου και όχι ύστερα από μια σειρά συγκρίσεων. Σε ιδανικές συνθήκες, για τον εντοπισμό ενός στοιχείου σε ένα πίνακα κατακερματισμού απαιτείται μία μόνο σύγκριση κι επομένως ο χρόνος αναζήτησης είναι σταθερός και δεν εξαρτάται από τον αριθμό των αποθηκευμένων στοιχείων. 7

Συνάρτηση κατακερματισμού -1- Παράδειγμα: έστω ότι σε ένα πίνακα κατακερματισμού πρόκειται να αποθηκευτούν 10 ακέραιοι αριθμοί με τιμές μεταξύ 0 και 99: Ο πίνακας αυτός μπορεί να υλοποιηθεί με έναν πίνακα ακεραίων Table με δείκτες 0..99, όπου κάθε στοιχείο του πίνακα έχει αρχικά μια εικονική τιμή, π.χ. -1. Αν αποθηκεύουμε κάθε ακέραιο i στη θέση Table[i], τότε για να καθορίσουμε αν ένας συγκεκριμένος ακέραιος Ν είναι αποθηκευμένος στον πίνακα, αρκεί να εξετάσουμε αν Table[Ν]=Ν. Μια συνάρτηση h, όπως η h(i)=i, που καθορίζει τη θέση ενός στοιχείου i στον πίνακα κατακερματισμού, ονομάζεται συνάρτηση κατακερματισμού (hash function). 8

Συνάρτηση κατακερματισμού -2- Η συνάρτηση κατακερματισμού του παραπάνω παραδείγματος δουλεύει τέλεια, αφού ο χρόνος αναζήτησης του πίνακα για μια συγκεκριμένη τιμή είναι σταθερός και χρειάζεται να εξετάσουμε μόνο μία θέση του πίνακα. Από άποψη χρόνου, δηλαδή, η αποδοτικότητα είναι μεγάλη, όχι όμως και από άποψη χώρου. Από τις 100 διαθέσιμες θέσεις του πίνακα μόνο οι 10 χρησιμοποιούνται για τη αποθήκευση των στοιχείων, ενώ οι υπόλοιπες 90 παραμένουν αχρησιμοποίητες. Αυτό σημαίνει ότι χρησιμοποιείται μόνο το 10% του διαθέσιμου χώρου και έχουμε σπατάλη 90%. Προκειμένου, λοιπόν, να αποφύγουμε τη σπατάλη χώρου, αφού για την αποθήκευση 10 τιμών απαιτούνται 10 θέσεις, μπορούμε να χρησιμοποιήσουμε έναν πίνακα HashTable 10 θέσεων με δείκτες 0..9. 9

Συνάρτηση κατακερματισμού: διαίρεση Προφανώς, η αρχική συνάρτηση κατακερματισμού h(i)=i δεν μπορεί πλέον να χρησιμοποιηθεί, γι' αυτό καταφεύγουμε στη μέθοδο της διαίρεσης (division). Διαιρούμε, δηλαδή την τιμή του στοιχείου με τον αριθμό των θέσεων του πίνακα και το υπόλοιπο αυτής της διαίρεσης μας δίνει τη θέση στην οποία θα αποθηκευτεί το στοιχείο. Με λίγα λόγια, η συνάρτηση κατακερματισμού που χρησιμοποιείται είναι η: h(i) = i % 10 Επειδή, όμως, είναι συνήθως πιο βολικό οι τιμές κατακερματισμού να ξεκινούν από 1, αυξάνουμε το υπόλοιπο της διαίρεσης κατά 1, ώστε να προκύπτουν αριθμοί μεταξύ 1 και 10. Επομένως, για να βρούμε την τιμή κατακερματισμού για μια τιμή ακεραίου χρησιμοποιούμε τη συνάρτηση: h(i) = (i % 10) + 1 10

Συνάρτηση κατακερματισμού: παράδειγμα Η συνάρτηση h(i) = (i % 10) + 1 δίνει πάντα έναν ακέραιο μεταξύ 1 και 10. Παράδειγμα: ο ακέραιος 34 θα αποθηκευτεί στη θέση HashTable[5] αφού h(34)=34 % 10 + 1=5 ο ακέραιος 21 θα αποθηκευτεί στη θέση HashTable[2] επειδή h(21)=21 % 10 + 1=2, κ.ο.κ. Δίπλα φαίνεται ο πίνακας HashTable, ύστερα από την αποθήκευση των 34, 21, 79, 18, 5 και 56 στις θέσεις 5, 2, 10, 9, 6 και 7 αντίστοιχα. HashTable Θέση Αριθμός 1-1 2 21 3-1 4-1 5 34 6 5 7 56 8-1 9 18 10 79 11

Κλειδί κατακερματισμού Συνήθως, όταν χρησιμοποιείται η τεχνική του κατακερματισμού, τα στοιχεία που αποθηκεύονται είναι εγγραφές. Ένα από τα πεδία κάθε τέτοιας εγγραφής χρησιμοποιείται για τον κατακερματισμό και γι' αυτό ονομάζεται πεδίο κατακερματισμού (hash field). Κι, επειδή, συνήθως, το πεδίο αυτό είναι το πεδίο-κλειδί της εγγραφής, ονομάζεται κλειδί κατακερματισμού (hash key). 12

Μη ακέραιες τιμές κλειδιών -1- Όταν οι τιμές των κλειδιών δεν είναι ακεραίου τύπου, όπως υποθέσαμε παραπάνω, τότε μπορούν να μετασχηματιστούν σε ακεραίους και μετά να εκτελεστεί η διαίρεση. Μια συμβολοσειρά μπορεί να μετασχηματιστεί σε ακέραιο, αν πάρουμε τον αριθμητικό κωδικό που της αντιστοιχεί. Αν, δηλαδή, το κλειδί είναι τύπος αλφαριθμητικού, μπορούμε να το μετατρέψουμε σε έναν ακέραιο χρησιμοποιώντας κάποια αριθμητική αναπαράσταση των χαρακτήρων του κλειδιού, π.χ τους κώδικες ASCII ή EBCDIC. Παράδειγμα: αν η τιμή ενός κλειδιού είναι C1, τότε μπορούμε να το μετατρέψουμε σε 6749, γιατί 67 είναι ο ASCII κωδικός του C και 49 ο αντίστοιχος του 1. 13

Μη ακέραιες τιμές κλειδιών -2- Ένας άλλος τρόπος είναι να επιλέξουμε ένα σταθερό τμήμα του κλειδιού και να το διαιρέσουμε, όμως, σ' αυτήν την περίπτωση πρέπει να είμαστε πολύ προσεκτικοί το τμήμα του κλειδιού που θα διαλέξουμε να περιέχει όσο γίνεται λιγότερες επαναλαμβανόμενες τιμές για την πλειοψηφία των κλειδιών. 14

Τεχνικές συναρτήσεων κατακερματισμού Έχουν αναπτυχθεί αρκετές τεχνικές για τον προσδιορισμό ικανοποιητικών συναρτήσεων κατακερματισμού, όπως: η διαίρεση, που περιγράψαμε παραπάνω και η οποία θεωρείται η καλύτερη γενικού σκοπού μέθοδος μέχρι στιγμής, η μετατροπή της ρίζας (radix conversion), η μέση του τετραγώνου (mid square), η αναδίπλωση (folding) κ.α. 15

Συνώνυμα κλειδιά Η τεχνική κατακερματισμού που θα επιλεγεί καθορίζει τις τιμές κατακερματισμού που παράγονται από τις τιμές των κλειδιών των εγγραφών. Υπάρχει περίπτωση, όμως, διαφορετικά κλειδιά να κατακερματίζονται στην ίδια τιμή κατακερματισμού. Τέτοια κλειδιά ονομάζονται συνώνυμα (synonyms) και πολλές φορές οι εγγραφές των οποίων οι τιμές κλειδιών είναι συνώνυμα ονομάζονται κι αυτές συνώνυμα. Το σύνολο των συνωνύμων εξαρτάται από την τεχνική κατακερματισμού, δηλαδή μια αλλαγή στην τεχνική κατακερματισμού θα αλλάξει και το σύνολο των συνωνύμων. 16

Σύγκρουση Όταν ένα κλειδί κατακερματίζεται σε μια τιμή η οποία έχει ήδη παραχθεί από ένα άλλο κλειδί, δηλαδή όταν κατακερματίζονται συνώνυμα, εμφανίζεται το φαινόμενο της σύγκρουσης (collision). Στο παραπάνω παράδειγμα με τον πίνακα HashTable, αν θελήσουμε να αποθηκεύσουμε τον ακέραιο 26 θα δημιουργηθεί σύγκρουση, γιατί ο αριθμός αυτός πρέπει να μπει στη θέση h(26)=26 % 10 + 1=7 όπου όμως είναι αποθηκευμένος ήδη ο αριθμός 56. 17

Τεχνικές χειρισμού συγκρούσεων -1- Συνήθως, δεν είναι πρακτικό να χρησιμοποιούμε έναν πίνακα με μέγεθος ίσο με το πλήθος των στοιχείων που πρόκειται να αποθηκευτούν. Ακόμα κι όταν το μέγεθος του πίνακα είναι αρκετά μεγάλο και μπορεί να χωρέσει περισσότερα στοιχεία από όσα πρόκειται να αποθηκευτούν σ' αυτόν, οι συγκρούσεις είναι πολύ πιθανές. Για παράδειγμα, για έναν πίνακα κατακερματισμού με 365 θέσεις, στον οποίο πρόκειται να αποθηκευτούν 23 τυχαία επιλεγμένα στοιχεία, η πιθανότητα εμφάνισης σύγκρουσης είναι 0.5! 18

Τεχνικές χειρισμού συγκρούσεων-2- Κατά συνέπεια, είναι παράλογο να περιμένουμε από ένα σχήμα κατακερματισμού να αποτρέπει εντελώς τις συγκρούσεις. Αντιθέτως, θα πρέπει να είμαστε ικανοποιημένοι με πίνακες κατακερματισμού στους οποίους εμφανίζονται λίγες συγκρούσεις. Εμπειρικές μελέτες προτείνουν τη χρήση πινάκων που έχουν μέγεθος περίπου 1,5 με 2 φορές το πλήθος των στοιχείων που θα αποθηκευτούν. Οι πιο συνηθισμένες τεχνικές για το χειρισμό των συγκρούσεων είναι: η αλυσιδωτή σύνδεση (chaining) και η ανοιχτή διευθυνσιοδότηση (open addressing). 19

Τέλος Ενότητας