Ενότητα 7 Κατακερµατισµός

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Ενότητα 7 Κατακερµατισµός"

Transcript

1 Ενότητα 7 Κατακερµατισµός ΗΥ24 - Παναγιώτα Φατούρου Κατακερµατισµός - Αρχές ειτουργίας Type LookUp(set S, Key k) { Έστω S U το προς αποθήκευση σύνολο κλειδιών. return(h[k]); Βασική Ιδέα «Αν το κλειδί k S ενός στοιχείου s ήταν ακέραιος αριθµός, τότε θα ήταν δυνατό το k να αποτελεί δείκτη σε έναν πίνακα Α, όπου το στοιχείο s είναι αποθηκευµένο, δηλαδή να ισχύει Α[k] = s». Αν υπήρχε άπειρος αποθηκευτικός χώρος, η εύρεση ενός στοιχείου στο σύνολο θα είχε χρονική πολυπλοκότητα Ο()!! Η υπόθεση αυτή είναι ανέφικτη: Πάντα υπάρχει ένα πάνω όριο m στο διαθέσιµο χώρο. Η σπατάλη σε µνήµη είναι µεγάλη όταν το σύνολο έχει λίγα στοιχεία ενώ ο χώρος U των κλειδιών είναι τεράστιος. Ας υποθέσουµε πως ο χώρος των κλειδιών είναι το σύνολο των φυσικών αριθµών. Ιδέα Αποθηκεύουµε τα στοιχεία του συνόλου S σε έναν πίνακα m θέσεων, που ονοµάζεται πίνακας κατακερµατισµού και χρησιµοποιούµε µια συνάρτηση h η οποία απεικονίζει το σύνολο {,, U στο σύνολο {, m. Η συνάρτηση αυτή λέγεται συνάρτηση κατακερµατισµού. Το στοιχείο µε κλειδί k αποθηκεύεται στη θέση A[h[k]] του πίνακα. ΗΥ24 - Παναγιώτα Φατούρου 2

2 Κατακερµατισµός Συγκρούσεις (collisions) Όταν για δύο κλειδιά K i και K j µε K i K j ισχύει ότι h(k i ) = h(kj) λέµε πως συµβαίνει σύγκρουση. Όταν συµβαίνουν συγκρούσεις, θα πρέπει να γίνει ανακατανοµή κλειδιών µε κατάλληλο τρόπο ώστε να επιλυθεί η σύγκρουση και τα κλειδιά να µπορούν να βρεθούν (µέσω της LookUp()) σε λογικό χρόνο µετά την ανακατανοµή. Καλές Συναρτήσεις Κατακερµατισµού Κάνουν καλή διασκόρπιση των κλειδιών στον πίνακα. Αρχή Απλής Οµοιόµορφης Κατανοµής των Κλειδιών «Αν ένα κλειδί Κ επιλέγεται τυχαία από το χώρο κλειδιών, η πιθανότητα να ισχύει h(k) = j, θα πρέπει να είναι /m, ίδια για όλα τα j, j m (δηλαδή ίδια για όλες τις θέσεις του πίνακα)». Παράδειγµα Συνάρτησης Κατακερµατισµού h(k) = k mod m ΗΥ24 - Παναγιώτα Φατούρου 3 Μέθοδοι ιαχείρισης Συγκρούσεων Μέθοδος ξεχωριστών αλυσίδων Η θέση Α[j] του πίνακα κατακερµατισµού δεν περιέχει ένα στοιχείο αλλά ένα δείκτη σε µια δυναµική δοµή, (που υλοποιεί ένα λεξικό), π.χ., µια λίστα, η οποία περιέχει κάθε στοιχείο µε κλειδί Κ τέτοιο ώστε h(k) = j. Παράδειγµα ιαδοχική εισαγωγή των κλειδιών 6, 9, 4, 7, 5, 7, 6, 2, 8, 9, 4, σε έναν πίνακα κατακερµατισµού 7 θέσεων βάσει της µεθόδου της αλυσίδας χρησιµοποιώντας τη συνάρτηση κατακερµατισµού: h(k) = k mod 7 ΗΥ24 - Παναγιώτα Φατούρου 4 2

3 Μέθοδος ιαχείρισης Συγκρούσεων των Ξεχωριστών Αλυσίδων (separate chaining) Insert(HashTable A, Key K) { int pos; pos = h(κ); (εισαγωγή του στοιχείου µε κλειδί Κ στην αλυσίδα εκείνη στης οποίας το πρώτο στοιχείο δείχνει ο δείκτης Α[pos]); // εύρεση του κλειδιού του στοιχείου e του U βάσει συναρτήσεως κατακερµατισµού LookUp(HashTable A, Key k) { pointer p; int pos; pos = h(κ); p = A[pos]; while (p!= NULL AND p->key!= K) p = p->next; // η εισαγωγή µπορεί να γίνει είτε στην αρχή ή στο τέλος της αλυσίδας // εύρεση του κλειδιού του στοιχείου e βάσει της συναρτήσεως κατακερµατισµού // ο p είναι δείκτης στο πρώτο στοιχείο της αλυσίδας // διάσχιση της αλυσίδας µέχρι είτε να βρεθεί το κλειδί ή να φθάσουµε στο τέλος της return p; Delete(HashTable A, Key K) { int pos = h(κ); (εύρεση και διαγραφή του στοιχείου Κ από την αλυσίδα εκείνη στης οποίας το πρώτο στοιχείο δείχνει ο δείκτης Α[pos]); // εύρεση του κλειδιού του στοιχείου e του U βάσει συναρτήσεως κατακερµατισµού ΗΥ24 - Παναγιώτα Φατούρου 5 Μέθοδοι ιαχείρισης Συγκρούσεων - Μέθοδος Ξεχωριστών Αλυσίδων - Ανάλυση Πολυπλοκότητας Συµβολίζουµε µε n το µέγεθος του λεξικού και µε m το µέγεθος του πίνακα κατακερµατισµού. ήµµα Σε µια δοµή κατακερµατισµού µε αλυσίδες, n στοιχείων, το µέσο πλήθος στοιχείων που είναι αποθηκευµένα σε µια αλυσίδα είναι a = n/m (και µάλιστα µε πιθανότητα που τείνει στο ). Το α είναι γνωστό ως παράγοντας φόρτου (load fator). Ποια είναι η αναµενόµενη χρονική πολυπλοκότητα µιας LookUp() σε πίνακα κατακερµατισµού οργανωµένου µε τη µέθοδο των αλυσίδων; ΗΥ24 - Παναγιώτα Φατούρου 6 3

4 Μέθοδοι ιαχείρισης Συγκρούσεων - Μέθοδος Ξεχωριστών Αλυσίδων - Ανάλυση Πολυπλοκότητας Συµβολίζουµε µε S(α) το αναµενόµενο πλήθος προσβάσεων στη µνήµη που απαιτούνται για την εκτέλεση µιας επιτυχηµένης LookUp() (δηλαδή µιας LookUp() σε κλειδί που υπάρχει στην δοµή). Συµβολίζουµε µε U(α) το αναµενόµενο πλήθος προσβάσεων στη µνήµη που απαιτούνται για την εκτέλεση µιας αποτυχηµένης LookUp() (δηλαδή µιας LookUp() σε κλειδί που δεν υπάρχει στην δοµή). U(α) = + α. S(α) Ποιος είναι ο µέσος αριθµός προσβάσεων στη µνήµη που απαιτούνται για µια επιτυχηµένη αναζήτηση, αν: το µέγεθος της αλυσίδας είναι ; το µέγεθος της αλυσίδας είναι 2; το µέγεθος της αλυσίδας είναι κ; (+2)/2 ( κ)/κ=(κ+)/2 Αν όλες οι αλυσίδες ήταν µη-άδειες, το αναµενόµενο µήκος κάθε αλυσίδας θα ήταν α, οπότε S(α) = + (+α)/2 = 3/2 +α/2. Μια επιτυχηµένη LookUp ποτέ δεν εξετάζει άδειες αλυσίδες. Γιατί? Ωστόσο, το µήκος της αλυσίδας µπορεί να είναι λίγο µεγαλύτερο από α: S(α) 2 + α/2 (αυτό έχει αποδειχθεί πειραµατικά). ΗΥ24 - Παναγιώτα Φατούρου 7 Μέθοδοι ιαχείρισης Συγκρούσεων - Μέθοδος Ξεχωριστών Αλυσίδων - Ανάλυση Πολυπλοκότητας Χειρότερη περίπτωση; Τα n κλειδιά έχουν την ίδια τιµή κατακερµατισµού και έτσι τοποθετούνται όλα στην ίδια αλυσίδα µήκους n. Χρόνος LookUp() στη χειρότερη περίπτωση είναι Ο(n) + χρόνο υπολογισµού της συνάρτησης κατακερµατισµού. Η επίδοση της µεθόδου του κατακερµατισµού εξαρτάται από το πόσο καλά η συνάρτηση κατακερµατισµού κατανέµει το σύνολο των προς εισαγωγή κλειδιών στις m θέσεις του πίνακα κατακερµατισµού. Ποια είναι η κατάλληλη επιλογή για το m; Είναι επιθυµητό το α να είναι µια σταθερά, άρα θα θέλαµε το m να επιλεγεί έτσι ώστε n/m O(). Πόσο εύκολα µπορούµε να υλοποιήσουµε διαγραφή; Είναι εφικτό να υλοποιηθεί η διαγραφή µε εύκολο τρόπο. Βρίσκουµε µέσω της συνάρτησης κατακερµατισµού την κατάλληλη αλυσίδα στην οποία θα πρέπει να είναι αποθηκευµένο το προς διαγραφή κλειδί και το αναζητούµε σε αυτήν. Αν το κλειδί βρεθεί, διαγράφεται. ΗΥ24 - Παναγιώτα Φατούρου 8 4

5 Μέθοδος Μικτών Αλυσίδων (coalesced chaining) Η αλυσίδα αποθηκεύεται µέσα στον πίνακα που είναι σταθερού µεγέθους (δεν απαιτείται δυναµική παραχώρηση µνήµης) ο πίνακας εκτός της αποθήκευσης των άλλων δεδοµένων πρέπει να περιέχει και µια στήλη για την αποθήκευση των δεικτών (έστω ότι αυτό είναι το πεδίο next κάθε στοιχείου του πίνακα). Όταν συµβεί σύγκρουση και το πεδίο next του στοιχείου που προκαλεί τη σύγκρουση είναι, αναζητείται η πρώτη διαθέσιµη θέση ξεκινώντας από τη θέση του πίνακα. Έστω ότι η θέση αυτή είναι η p. Το πεδίο next του στοιχείου που προκαλεί τη σύγκρουση ενηµερώνεται να δείχνει στην p. ΗΥ24 - Παναγιώτα Φατούρου 9 Μέθοδος Μικτών Αλυσίδων (coalesced chaining) Παράδειγµα: ιαδοχική εισαγωγή των κλειδιών 7,, 2,,,, 9, 9 σε έναν πίνακα κατακερµατισµού θέσεων χρησιµοποιώντας τη συνάρτηση κατακερµατισµού h(k) = k mod Μπορεί να διαπλέκονται διαφορετικές αλυσίδες, δηλαδή µια αλυσίδα 9 µπορεί να περιέχει κλειδιά που έχουν διαφορετική τιµή κατακερµατισµού (σε αντίθεση µε τη βασική µέθοδο της αλυσίδας όπου µια αλυσίδα περιέχει µόνο κλειδιά µε την ίδια τιµή κατακερµατισµού). Πρόβληµα: Μια θέση στην οποία έχει τοποθετηθεί ένα κλειδί για το οποίο η συνάρτηση κατακερµατισµού καθορίζει άλλη θέση εισαγωγής, µπορεί να πρέπει να αποθηκεύσει αργότερα το πρώτο κλειδί µιας νέας αλυσίδας. ύση: Το κλειδί τοποθετείται στην πρώτη διαθέσιµη θέση και συνδέεται στο τέλος της αλυσίδας του κλειδιού που κατέχει την αρχική θέση. 7 3 ΗΥ24 - Παναγιώτα Φατούρου

6 Μέθοδος Μικτών Αλυσίδων LookUp: Ίδια µε εκείνη της βασικής µεθόδου της αλυσίδας:. Βρίσκουµε την τιµή κατακερµατισµού h(κ) του προς αναζήτηση στοιχείου (που έστω ότι έχει κλειδί Κ). 2. Αν το κλειδί βρίσκεται στον πίνακα θα είναι σε µια από τις θέσεις που καταλαµβάνουν τα στοιχεία της αλυσίδας που ξεκινά από τη θέση h(κ) του πίνακα. Ακολουθούµε την αλυσίδα αυτή µέχρι είτε να βρούµε το κλειδί που αναζητάµε ή να φθάσουµε στην τελευταία θέση της αλυσίδας. Παρατηρήση: H κάθε αλυσίδα ίσως περιέχει κλειδιά για τα οποία η συνάρτηση κατακερµατισµού δίνει διαφορετικές τιµές. Insert: Όπως στη βασική µέθοδο µε αλυσίδες:. Βρίσκουµε την τιµή κατακερµατισµού h(κ) του προς εισαγωγή στοιχείου (που έστω ότι έχει κλειδί K). 2. Εξετάζουµε την θέση h(κ) του πίνακα. Αν είναι κατειληµµένη, και το πεδίο next της θέσης αυτής είναι, αναζητούµε την πρώτη διαθέσιµη θέση στον πίνακα, ξεκινώντας από τη θέση του πίνακα. ιαφορετικά, ακολουθούµε την αλυσίδα που ξεκινά από αυτή τη θέση και όταν φθάσουµε στην τελευταία θέση της αλυσίδας, ξεκινώντας από εκεί βρίσκουµε την εποµένη ελεύθερη θέση στον πίνακα. ΗΥ24 - Παναγιώτα Φατούρου Μέθοδος Μικτών Αλυσίδων Κελάρι (cellar): Κρατάµε τις πρώτες θέσεις του πίνακα µόνο για την επίλυση συγκρούσεων. ηλαδή, αν ο πίνακας έχει m θέσεις, οι πρώτες c αποτελούν το κελάρι. Η συνάρτηση κατακερµατισµού έχει πεδίο τιµών {c,, m-, ενώ για την επίλυση των συγκρούσεων χρησιµοποιείται όλος ο πίνακας Πειραµατική και θεωρητική δουλειά έχει αποδείξει ότι αν το κελάρι είναι το 4% του συνολικού πίνακα, η απόδοση είναι καλή ΗΥ24 - Παναγιώτα Φατούρου Παράδειγµα: ιαδοχική εισαγωγή των κλειδιών 7,, 2,,,, 9, 9 σε έναν πίνακα κατακερµατισµού θέσεων χρησιµοποιώντας τη συνάρτηση κατακερµατισµού h(k) = (k mod ) mod c = 2 6

7 Κατακερµατισµός µε Ανοικτή ιευθυνσιοδότηση (Open Addressing Strategies) Η µέθοδος στοχεύει στην ορθή διαχείριση του ελεύθερου χώρου του ίδιου του πίνακα κατακερµατισµού. Όλα τα κλειδιά αποθηκεύονται στον πίνακα χωρίς ωστόσο να σχηµατίζονται αλυσίδες (δεν χρησιµοποιούνται δείκτες). Για κάθε κλειδί ελέγχεται µια ακολουθία από θέσεις του πίνακα, που ονοµάζεται ακολουθία εξέτασης. Η πρώτη διαθέσιµη θέση του πίνακα µε τη σειρά που καθορίζεται από την ακολουθία αυτή θα στεγάσει το κλειδί. Η ακολουθία καθορίζεται βάσει κάποιου κανόνα (που συνήθως λαµβάνει υπόψη του και το ίδιο το κλειδί). Συµβολίζουµε µε Η(K,i) την i-οστή θέση του πίνακα που ελέγχουµε αν είναι διαθέσιµη για το κλειδί K, i =, (δηλαδή, H(K,i) είναι το i-οστό στοιχείο της ακολουθίας αναζήτησης του κλειδιού K). LookUp(HashTable A, Key K) Ψάξε τις διαδοχικές θέσεις στην ακολουθία εξέτασης του K, µέχρι είτε να βρεθεί το κλειδί, ή να βρεθεί µια κενή θέση στον πίνακα. Στη δεύτερη περίπτωση, το κλειδί δεν υπάρχει στον πίνακα. Insert(HashTable A, Key K) Εκτέλεση της LookUp(Α,Κ). Αν το κλειδί βρεθεί, ο αλγόριθµος τερµατίζει. ιαφορετικά, το νέο κλειδί εισάγεται στην κενή θέση που επιστρέφεται από την LookUp(A,K). ΗΥ24 - Παναγιώτα Φατούρου 3 Κατακερµατισµός µε Ανοικτή ιευθυνσιοδότηση Γραµµική Αναζήτηση Ακολουθία εξέτασης Η(Κ,) = h(k); // η πρώτη θέση στην ακολουθία καθορίζεται από // την τιµή κατακερµατισµού H(K,i+) = (H(K,i)+) mod m; // η (i+) θέση είναι η επόµενη της θέσης i (mod m, // δηλαδή µε κυκλικό τρόπο). 7 7 Παράδειγµα ιαδοχική εισαγωγή των κλειδιών 7,, 2,,,, 9, 9 σε έναν πίνακα κατακερµατισµού θέσεων χρησιµοποιώντας τη συνάρτηση κατακερµατισµού h(k) = k mod Η απόδοση της µεθόδου είναι ικανοποιητική όταν ο πίνακας δεν έχει πολλά στοιχεία. Πρόβληµα: Φαινόµενο Πρωταρχικής Συγκέντρωσης (primary clustering) Όταν ένα µπλοκ (cluster) µε συνεχόµενες κατειληµµένες θέσεις δηµιουργηθεί, αποτελεί προορισµό για περαιτέρω συγκρούσεις, ενώ νέες τέτοιες συγκρούσεις οδηγούν στην αύξηση του µεγέθους του µπλοκ. 2 7 ΗΥ24 - Παναγιώτα Φατούρου

8 Κατακερµατισµός µε Ανοικτή ιευθυνσιοδότηση Αριθµός απαιτούµενων προσπελάσεων στη µνήµη για µη επιτυχηµένη αναζήτηση; αν η συνάρτηση κατακερµατισµού επιστρέφει µια κενή θέση του πίνακα; Μία µόνο προσπέλαση απαιτείται! αν η συνάρτηση κατακερµατισµού επιστρέφει µια κατειληµµένη θέση του πίνακα; Η αναζήτηση θα τερµατίσει µόνο αφού εξετάσει και το τελευταίο στοιχείο του cluster. Προσπάθεια βελτίωσης Ακολουθία εξέτασης Η(Κ,) = h(k); // η πρώτη θέση στην ακολουθία καθορίζεται από την τιµή κατακερµατισµού H(K,i+) = (H(K,i)+c) mod m; // η (i+) θέση προς εξέταση είναι c θέσεις µετά τη θέση i (mod m). Τι αποτέλεσµα θα έχει αυτό το σχήµα; Θα οδηγούσε σε καλύτερη απόδοση; Και το σχήµα αυτό υποφέρει από τα φαινόµενο δηµιουργίας µακρών ακολουθιών κατειληµµένων θέσεων, γνωστό ως φαινόµενο δευτερεύουσας συγκέντρωσης (secondary clustering). ΗΥ24 - Παναγιώτα Φατούρου 5 Κατακερµατισµός µε Ανοικτή ιευθυνσιοδότηση ιπλός Κατακερµατισµός (Double Hashing) Χρησιµοποιούνται δύο συναρτήσεις κατακερµατισµού, h και h 2. H h ονοµάζεται πρωτεύουσα συνάρτηση κατακερµατισµού, ενώ η h 2 δευτερεύουσα. Ακολουθία Εξέτασης H(Κ,) = h (K); // η πρώτη θέση στην ακολουθία εξέτασης καθορίζεται // από την πρωταρχική συνάρτηση κατακερµατισµού h H(Κ, i+) = (H(K, i) + h 2 (K)) mod m; // η επόµενη της θέσης i στην ακολουθία εξέτασης είναι η θέση // που βρίσκεται h 2 (K) θέσεις µετά τη θέση i στον πίνακα (mod m) Η ακολουθία εξέτασης που προκύπτει βάσει της µεθόδου της γραµµικής αναζήτησης είναι ίδια µε εκείνη που προκύπτει βάσει της µεθόδου του διπλού κατακερµατισµού όταν h 2 (K) =, κλειδί K. Η ακολουθία εξέτασης πρέπει να περιέχει όλες τις θέσεις του πίνακα. Πρέπει να ισχύει ότι h 2 (K) >. Τα h 2 (K) και m δεν πρέπει να έχουν κοινούς διαιρέτες. Έστω ότι ένας αριθµός d αποτελεί κοινό διαιρέτη του h 2 (K) και του m. Τότε: [(m/d)h 2 (K)] mod m = [m(h 2 (K)/d)] mod m =, Άρα, η (m/d)-οστή θέση στην ακολουθία θα είναι η ίδια όπως η πρώτη. Για το λόγο αυτό, διαλέγουµε τον m να είναι πρώτος αριθµός. ΗΥ24 - Παναγιώτα Φατούρου 6 8

9 Κατακερµατισµός µε Ανοικτή ιευθυνσιοδότηση ιπλός Κατακερµατισµός Παράδειγµα Έστω ότι h (K) = k mod m και h 2 (K) = K mod 3 +. ιαδοχική εισαγωγή των κλειδιών 7,, 2,,,, 9, 9 σε έναν πίνακα κατακερµατισµού θέσεων. Είναι αξιοσηµείωτο το τι συµβαίνει όταν γίνεται η εισαγωγή του. Η ακολουθία εξέτασης είναι, +2=3, 3+2=5, 5+2=7, 9, κ.ο.κ., αφού h 2 () = mod 3 + = Η θέση του πίνακα είναι κατειληµµένη, οπότε εξετάζεται το 2ο στοιχείο στην ακολουθία (δηλαδή η θέση 3 του πίνακα) η οποία είναι επίσης κατειληµµένη. Το 3ο στοιχείο της ακολουθίας είναι η θέση 5 του πίνακα, η οποία είναι διαθέσιµη. Άρα, το στοιχείο αποθηκεύεται στην θέση 5 του πίνακα. ΗΥ24 - Παναγιώτα Φατούρου 7 Κατακερµατισµός µε Ανοικτή ιευθυνσιοδότηση ιπλός Κατακερµατισµός Υπόθεση Κάθε θέση που εξετάζεται στον πίνακα κατακερµατισµού είναι ανεξάρτητη από τις υπόλοιπες θέσεις του πίνακα, και η πιθανότητα να επιλεγεί µια κατειληµµένη θέση είναι ίση µε τον παράγοντα φόρτου (a). Η υπόθεση αυτή δεν είναι σωστή για τους ακόλουθους λόγους: ιαδοχικές θέσεις µπορεί να εξαρτώνται µε κάποιο τρόπο. Είναι αδύνατο να εξεταστεί η ίδια θέση 2 φορές. Ωστόσο, πολλές φορές τέτοιες υποθέσεις µας επιτρέπουν να πραγµατοποιούµε µαθηµατικές αναλύσεις που περιγράφουν ικανοποιητικά τη συµπεριφορά του συστήµατος (όπως αυτή καθορίζεται από πειραµατική µελέτη). Εισαγωγή n κλειδιών σε πίνακα κατακερµατισµού µεγέθους m, δεδοµένου ότι η υπόθεση είναι σωστή α i = i/m, i n: η πιθανότητα σύγκρουσης µετά την εισαγωγή i κλειδιών είναι α i ΗΥ24 - Παναγιώτα Φατούρου 8 9

10 Κατακερµατισµός µε Ανοικτή ιευθυνσιοδότηση ιπλός Κατακερµατισµός Πλήθος προσπελάσεων στη µνήµη για την εκτέλεση µη επιτυχηµένης αναζήτησης Το αναµενόµενο πλήθος προσπελάσεων στη µνήµη για την εκτέλεση µιας µη επιτυχηµένης αναζήτησης αν n- κλειδιά έχουν ήδη εισαχθεί στον πίνακα κατακερµατισµού είναι: U n- = *( a n- ) + 2*a n- *(-a n- )+3a n-2 (-a n- ) + = + a n- + a n-2 + = /( - a n- ) Πλήθος προσπελάσεων στη µνήµη για την εκτέλεση επιτυχηµένης αναζήτησης Ισούται µε το αναµενόµενο πλήθος προσπελάσεων στη µνήµη για την εκτέλεση της εισαγωγής κάθε ενός από τα n κλειδιά. Το αναµενόµενο πλήθος προσπελάσεων στη µνήµη για την εισαγωγή του i-οστού κλειδιού = αναµενόµενο πλήθος προσπελάσεων στη µνήµη για την εκτέλεση µιας µη επιτυχηµένης αναζήτησης. Εποµένως: S n n n n (m/n) (ln m ln (m-n)) S n = (/n) Ui i = = (/n) = (m/n) / ( m i+ ) i= = (m/n) ln(m/(m-n)) i= ai = (m/n) (H m H m-n ), όπου H i = + ½ + + /i ln i. = (/a n ) ln (/(-a n )). ΗΥ24 - Παναγιώτα Φατούρου 9 Ταξινοµηµένος Κατακερµατισµός (Ordered Hashing) Μέθοδος Αλυσίδων «Τα κλειδιά διατηρούνται ταξινοµηµένα σε κάθε αλυσίδα». Βελτιωµένη Έκδοση LookUp(Α,e): Αν ένα µεγαλύτερο κλειδί από το e προσπελαστεί τερµατίζει η αναζήτηση. Μέθοδος Ανοικτής ιεύθυνσης Τα κλειδιά θα πρέπει να εισαχθούν στον πίνακα κατακερµατισµού έτσι ώστε: «Τα κλειδιά που προηγούνται του K στην ακολουθία εξέτασης (του Κ), θα πρέπει να είναι µικρότερα από το Κ». Ιδέα Αν στην ακολουθία εξέτασης για το κλειδί Κ προσπελάσουµε κάποιο στοιχείο e µε κλειδί Κ > Κ, τότε αντικαθιστούµε το e µε το e και συνεχίζουµε µε την εισαγωγή του e βάσει της ακολουθίας εξέτασης του κλειδιού Κ του e. ΗΥ24 - Παναγιώτα Φατούρου 2

11 Ταξινοµηµένος Κατακερµατισµός Ανοικτής ιευθυνσιοδότησης procedure OrderedHashTableInsert( HashTable A, Key K, Type I) { int pos = h (K); while (A[pos]!= NULL) { if (A[pos]->Key > K) { swap(k, A[pos]->Key); swap(i, A[pos]->Info); else if (K == A[pos]->Key) { A[pos]->Info = I; return; pos = (pos + h 2 (K)) mod m; A[pos]->Key = K; A[pos]->Info = I; Παρατηρήστε τις ενέργειες που εκτελούνται κατά την εισαγωγή του κλειδιού 2, του ή του! 7 7 Παράδειγµα: Έστω ότι [h (K) = k mod ] και [h 2 (K) = K mod 3 + ]. ιαδοχική εισαγωγή των κλειδιών 7,, 2,,, 9,, 9 σε έναν πίνακα κατακερµατισµού θέσεων. 2 7 ΗΥ24 - Παναγιώτα Φατούρου Ταξινοµηµένος Κατακερµατισµός Ανοικτής ιευθυνσιοδότησης Type OrderedHashTableLookUp(HashTable A, Key K) { int pos = h (K); while (A[pos]!= NULL && A[pos]->Key < K) do pos = (pos + h 2 (K)) mod m; if (A[pos]!= NULL && A[pos]->Key == K) return A[pos]->Info; else return NIL; Άσκηση για το σπίτι Ιχνηλατίστε την εκτέλεση της OrderedHashTableLookUp(A,7), όπου Α ο πίνακας του σχήµατος. Ιχνηλατίστε την εκτέλεση της OrderedHashTableLookUp(A,9), όπου Α ο πίνακας του σχήµατος ΗΥ24 - Παναγιώτα Φατούρου 22

12 Ταξινοµηµένος Κατακερµατισµός Ανοικτής ιευθυνσιοδότησης Η τελική µορφή του πίνακα κατακερµατισµού, µετά την εισαγωγή σε αυτόν (βάσει της τεχνικής του ταξινοµηµένου κατακερµατισµού) ενός συνόλου κλειδιών, θα είναι η ίδια ανεξαρτήτως της σειράς µε την οποία τα κλειδιά αυτά εισάγονται στον πίνακα. Υπόθεση Η πιθανότητα να επιλεγεί ένα συγκεκριµένο κλειδί από το χώρο κλειδιών είναι η ίδια για όλα τα κλειδιά του χώρου. Τότε: Ο αναµενόµενος χρόνος S n για µια επιτυχηµένη αναζήτηση δεν αλλάζει. Ο αναµενόµενος χρόνος U n για µια µη επιτυχηµένη αναζήτηση µειώνεται. Γίνεται περίπου ίδιος µε S n. Άρα: S n U n (/a n ) ln(/( a n )). ΗΥ24 - Παναγιώτα Φατούρου 23 Κατακερµατισµός - ιαγραφές Μέθοδος αλυσίδων Υλοποιείται εύκολα. Πως? Μέθοδος Ανοικτής ιευθυνσιοδότησης Ένα κλειδί δεν µπορεί να διαγραφεί αφήνοντας απλά τη θέση που κατείχε άδεια. Γιατί? Παράδειγµα Έστω ότι χρησιµοποιούµε τη µέθοδο της γραµµικής αναζήτησης. Έστω ότι δύο κλειδιά µε την ίδια βασική/πρωταρχική τιµή κατακερµατισµού εισάγονται στις θέσεις j και j+ ενός πίνακα κατακερµατισµού και στη συνέχεια αυτό στη θέση j διαγράφεται. Το άλλο θα µείνει στη θέση j+, αλλά η LookUp() θα σταµατήσει όταν βρει τη θέση j κενή. Αυτό θα οδηγήσει την εν λόγω LookUp() σε λάθος απόκριση! Ιδέα Για κάθε θέση του πίνακα υπάρχει ένα bit, που ονοµάζεται Deleted και µπορεί να είναι είτε ή. Αρχικά όλα αυτά τα bits είναι. Αν διαγράψουµε κάτι από µια θέση του πίνακα, θέτουµε το bit της θέσης αυτής σε. H LookUp() δεν τερµατίζει σε άδειες θέσεις για τις οποίες το Deleted bit είναι. ΗΥ24 - Παναγιώτα Φατούρου 24 2

13 Επεκτάσιµος Κατακερµατισµός (Extendible Hashing) Η µέθοδος ενδείκνυται για την αποθήκευση στοιχείων σε δευτερεύουσα µνήµη δίσκου. Οι δίσκοι είναι πολύ πιο αργές µονάδες αποθήκευσης συγκριτικά µε την κύρια µνήµη. Για το λόγο αυτό, τα δεδοµένα οργανώνονται σε σελίδες (pages), δηλαδή αποθηκεύονται σε οµάδες συνεχόµενων θέσεων αποθήκευσης, τα περιεχόµενα των οποίων µεταφέρονται στην κύρια µνήµη όταν ζητηθεί η ανάκτηση ή η τροποποίηση κάποιων εξ αυτών. Ολικό βάθος D(S) ενός συνόλου S καλείται το µικρότερο µήκος προθέµατος των τιµών κατακερµατισµού των στοιχείων του S, που απαιτείται για να χωρισθούν τα στοιχεία αυτά σε οµάδες των b στοιχείων το πολύ σε κάθε µια, όπου όλα τα στοιχεία µιας οµάδας έχουν κοινό πρόθεµα µήκους D(S) bits. Παράδειγµα Έστω ότι b=4 και ότι: S = {6 () 2, 9 () 2, 4 () 2, 7 () 2, 5 () 2, 7 () 2, 6 () 2, 2 () 2, 8 () 2, 9 () 2, 4 () 2, () 2. Είναι D(S) = 3 και οι οµάδες που δηµιουργούνται είναι οι εξής: {,,,, {,, {, {,,,, {. ΗΥ24 - Παναγιώτα Φατούρου 25 Επεκτάσιµος Κατακερµατισµός Κάθε οµάδα αποθηκεύεται σε διαφορετική σελίδα της δοµής του επεκτάσιµου κατακερµατισµού. Μπορούµε να χρησιµοποιήσουµε έναν πίνακα µεγέθους 2 D(S) για τη δεικτοδότηση των σελίδων (Σχήµα ). Είναι δυνατό να συνενωθούν σελίδες µε συνολικό πλήθος στοιχείων b και µικρότερο κοινό πρόθεµα. Το πρόθεµα αυτό καλείται βάθος σελίδας. Παράδειγµα {,, { = {,,, (Σχήµα 2). Τέτοιου είδους σελίδες χαρακτηρίζονται ως φιλικές σελίδες (buddies). D(S) = 3 Σχήµα 2 Τα στοιχεία φιλικών σελίδων διαφέρουν στο τελευταίο ψηφίο του προθέµατός τους. Αν για µια σελίδα ισχύει ότι το βάθος της d είναι µικρότερο από το ολικό βάθος D, τότε 2 D-d δείκτες σε συνεχόµενες θέσεις του πίνακα θα δείχνουν στη σελίδα αυτή. {,,, {, { {,,, { Σχήµα {,,, 3 {,, 2 {,,, 3 { 3 ΗΥ24 - Παναγιώτα Φατούρου 26 3

14 Επεκτάσιµος Κατακερµατισµός Ένας επεκτάσιµος πίνακας κατακερµατισµού είναι δοµή δύο επιπέδων. Αποτελείται από έναν κατάλογο (directory) που δηµιουργεί τη δοµή υψηλού επιπέδου και ένα σύνολο από σελίδες (pages) στις οποίες αποθηκεύονται τα δεδοµένα. Ο κατάλογος είναι ένας πίνακας από δείκτες στις σελίδες όπου αποθηκεύονται τα δεδοµένα. Οι σελίδες είναι σταθερού µεγέθους, π.χ., χωράει b στοιχεία/δεδοµένα η κάθε µια. Μια συνάρτηση κατακερµατισµού απεικονίζει κάθε κλειδί Κ σε µια ακολουθία από bits µήκους L. Η ακολουθία αυτή ονοµάζεται τιµή κατακερµατισµού του Κ. Για κάθε d L, συµβολίζουµε µε h d (K) τα πρώτα d bits του h(k). Το µέγιστο βάθος µεταξύ όλων των σελίδων ονοµάζεται βάθος του πίνακα κατακερµατισµού και συµβολίζεται µε το D. Ο κατάλογος είναι ένας πίνακας µε 2 D δείκτες σε σελίδες. Εύρεση σελίδας που περιέχει το κλειδί Κ. Υπολογισµός του h D (K); 2. Ο δείκτης που περιέχεται στο Α[h D (K)] οδηγεί στην σελίδα στην οποία θα πρέπει να είναι αποθηκευµένο το δεδοµένο; {,,, 3 {,, 2 {,,, 3 { 3 D(S) = 3 ΗΥ24 - Παναγιώτα Φατούρου 27 Επεκτάσιµος Κατακερµατισµός Εισαγωγές. Εκτελούµε µια αναζήτηση, ώστε να εντοπιστεί η σελίδα τοποθετήσεως p η οποία έστω ότι έχει βάθος d. (Αρχικά D= και υπάρχει µια µόνο σελίδα στον πίνακα που περιέχει όλα τα δεδοµένα. Ο κατάλογος περιέχει έναν µόνο δείκτη στη σελίδα αυτή και όλες οι αναζητήσεις καταλήγουν εκεί. ) 2. Αν τα πλήθος των στοιχείων που είναι αποθηκευµένα στην p είναι < b, το νέο στοιχείο τοποθετείται στην p και ο αλγόριθµος τερµατίζει. 3. ιαφορετικά, συµβαίνει υπερχείλιση και η p θα πρέπει να χωριστεί σε δύο σελίδες. Ο χωρισµός γίνεται µε αύξηση του βάθους της p στην τιµή d+ και µε τη δηµιουργία µιας νέας φιλικής σελίδας p βάθους επίσης d+. 4. Ta (b+) κλειδιά της p κατανέµονται στις p, p βάσει των d+ πρώτων ψηφίων τους. 5. Αν αυτό δεν επιλύσει το πρόβληµα (δηλαδή όλα τα b+ κλειδιά ανήκουν και πάλι σε µια από τις p, p, έστω στην p ), θέτω p = p και d = d+ και επαναλαµβάνω το Βήµα Αν µετά από D-d επαναλήψεις, η υπερχείλιση δεν έχει αντιµετωπιστεί, είναι αναγκαίος ο διπλασιασµός του καταλόγου (δηλαδή το ολικό βάθος αλλάζει σε D+). Ο νέος κατάλογος δεικτοδοτείται από δείκτες της µορφής xx..xx ή xx..xx. 7. Περισσότεροι του ενός διπλασιασµοί του καταλόγου µπορεί να απαιτούνται αν το πρόβληµα δεν επιλυθεί. D = D = D {,,, Εισαγωγή του {, {,, D ΗΥ24 - Παναγιώτα Φατούρου 28 4

15 Επεκτάσιµος Κατακερµατισµός Εισαγωγή Παράδειγµα ιαδοχικές εισαγωγές των 6 (), 9 (), 4 (), 7 (), 5 (), 7 (), 6 (), 2 (), 8 (), 9 (), 4 (), () σε επεκτάσιµο πίνακα κατακερµατισµού. ΗΥ24 - Παναγιώτα Φατούρου 29 Επεκτάσιµος Κατακερµατισµός - ιαγραφή Οι ενέργειες που πραγµατοποιούνται είναι «συµµετρικές» της λειτουργίας της εισαγωγής.. Εκτελούµε µια αναζήτηση, ώστε να εντοπιστεί η σελίδα p στην οποία είναι αποθηκευµένο το προς διαγραφή κλειδί. Έστω ότι η σελίδα αυτή έχει βάθος d. 2. Το στοιχείο διαγράφεται από την p. 3. Προσπελάζεται η φιλική σελίδα, έστω p, της p (εάν υπάρχει). 4. Εάν το συνολικό πλήθος στοιχείων των p,p είναι b, τα αποθηκεύουµε όλα στην p µειώνοντας το βάθος της σε d-. 5. Εάν µετά τη µείωση, όλες οι σελίδες έχουν βάθος < D, τότε υποδιπλασιάζουµε τον κατάλογο και τα αποθηκευµένα στοιχεία κατανέµονται στις σελίδες λαµβάνοντας υπ όψιν το πολύ D- ψηφία. 6. Ο κατάλογος υποδιπλασιάζεται, διατηρώντας για κάθε ζεύγος θέσεων της µορφής xx..xx και xx xx, µια θέση της µορφής xx xx. D- D- D- ΗΥ24 - Παναγιώτα Φατούρου 3 5

16 Επεκτάσιµος Κατακερµατισµός ιαγραφή Παράδειγµα ιαδοχικές διαγραφές των 6 (), 9 (), 4 () από επεκτάσιµο πίνακα κατακερµατισµού. ΗΥ24 - Παναγιώτα Φατούρου 3 Συναρτήσεις Κατακερµατισµού Αποδοτικές Συναρτήσεις Κατακερµατισµού Ικανοποιούν την παραδοχή του απλού οµοιόµορφου κατακερµατισµού: «Θα πρέπει να είναι εξίσου πιθανό η τιµή κατακερµατισµού του κάθε κλειδιού να είναι οποιαδήποτε από τις τιµές {,, m-, ανεξάρτητα από τις τιµές κατακερµατισµού των υπολοίπων κλειδιών.» Συνήθως δεν είναι δυνατό να ελέγξουµε αν ισχύει αυτή η παραδοχή: Σπανίως γνωρίζουµε την κατανοµή πιθανότητας που ακολουθούν τα κλειδιά. Μπορεί αυτά να µην είναι ανεξάρτητα µεταξύ τους. Σε ορισµένες περιπτώσεις, η κατανοµή των κλειδιών είναι γνωστή. Παράδειγµα Αν γνωρίζουµε ότι τα κλειδιά είναι πραγµατικοί αριθµοί κατανεµηµένοι ανεξάρτητα και οµοιόµορφα στο διάστηµα [,), τότε η συνάρτηση κατακερµατισµού h(k) = km ικανοποιεί τη συνθήκη του απλού οµοιόµορφου κατακερµατισµού. Στην πράξη, συχνά δηµιουργούµε συναρτήσεις κατακερµατισµού µε καλή συµπεριφορά βασιζόµενοι σε ευριστικές τεχνικές. ΗΥ24 - Παναγιώτα Φατούρου 32 6

17 Ερµηνεία των κλειδιών ως Φυσικών Αριθµών Οι περισσότερες συναρτήσεις κατακερµατισµού προϋποθέτουν ότι ο χώρος των κλειδιών είναι το σύνολο N των φυσικών αριθµών. Συχνά αυτό δεν ισχύει θα πρέπει να βρεθεί τρόπος να µετατραπεί το εκάστοτε κλειδί σε φυσικό αριθµό. Παράδειγµα Έστω ότι ένα κλειδί Κ είναι αλφαριθµητικό (string). p i Υπολογίζουµε το cir, όπου i = p: µήκος του αλφαριθµητικού r: το πλήθος χαρακτήρων στον κώδικα (συνήθως 28 ή 2) c i : ο κωδικός (ASCII) του χαρακτήρα i (όπου ο χαρακτήρας είναι ο δεξιότερος και ο χαρακτήρας p- είναι ο αριστερότερος). Η συµβολοσειρά εκφράζεται ως ακέραιος στο αριθµητικό σύστηµα µε βάση το 28 (αφού ο πληθικός αριθµός του συνόλου χαρακτήρων ASCII είναι το 28). ΗΥ24 - Παναγιώτα Φατούρου 33 Συναρτήσεις Κατακερµατισµού Κατακερµατισµός βάσει της πράξης της ιαίρεσης Συνάρτηση κατακερµατισµού: h(k) = K mod m, Όπου m είναι το µέγεθος του πίνακα κατακερµατισµού και K ένα κλειδί στο U. Σκοπός: Αποφυγή συστηµατικών συγκρούσεων σε περιπτώσεις που τα κλειδιά επιλέγονται µε ένα συστηµατικά µη τυχαίο τρόπο. Παραδείγµατα. Αν το m είναι r ή r 2, το αποτέλεσµα της διαίρεσης είναι ο κωδικός του ενός ή των δύο τελευταίων χαρακτήρων. Όµως, από τα γράµµατα του αλφάβητου είναι πολύ λίγα αυτά που συνήθως συναντούνται ως τελευταίοι χαρακτήρες λέξεων. 2. Αν το m είναι άρτιος, η τιµή h(k) θα είναι άρτια ή περιττή ανάλογα µε το αν ο τελευταίος χαρακτήρας στο αλφαριθµητικό έχει περιττό ή άρτιο κωδικό. ΗΥ24 - Παναγιώτα Φατούρου 34 7

18 Συναρτήσεις Κατακερµατισµού Κατακερµατισµός βάσει της πράξης της ιαίρεσης Το m επιλέγεται να είναι πρώτος αριθµός. Επίσης, είναι καλύτερο το m να µην διαιρεί τους r k +a, r k - για µικρές σταθερές k και a. Παράδειγµα Έστω m = r- και έστω ότι ο r- είναι πρώτος. Τότε: p p p i i i i i i= i= i= c r mod( r ) = ( ( c r mod( r ))) mod( r ) = ( c ) mod( r ) Μπορεί να αποδειχθεί επαγωγικά πως, για κάθε i, i j r i mod (r-) = ( + (r-) j = r ) mod (r-) =. Άρα, αν m = r-, όλες οι µεταθέσεις του ίδιου συνόλου χαρακτήρων (π.χ., ABC, BCA, CBA, κλπ.) έχουν την ίδια τιµή κατακερµατισµού. ΗΥ24 - Παναγιώτα Φατούρου 35 Συναρτήσεις Κατακερµατισµού Κατακερµατισµός βάσει της πράξης του Πολλαπλασιασµού. Πολλαπλασιάζουµε το κλειδί K µε µια άρρητη σταθερά Α στο διάστηµα < Α < και κρατάµε το δεκαδικό µέρος του γινοµένου KΑ. 2. Πολλαπλασιάζουµε αυτή την ποσότητα µε m και παίρνουµε το κάτω ακέραιο µέρος του αποτελέσµατος. Συνάρτηση Κατακερµατσµού h(k) = m(ka - KA ) Η ποσότητα KA - KA είναι το δεκαδικό µέρος της ποσότητας ΚΑ. Η µέθοδος µπορεί να εφαρµοστεί µε οποιαδήποτε τιµή της σταθεράς Α δεδοµένου ότι το Α είναι άρρητος αριθµός. Αποδεικνύεται ότι αν το Α είναι οποιοσδήποτε άρρητος αριθµός τότε για αρκετά µεγάλο n, τa δεκαδικά µέρη των αριθµών A, 2A, 3A, na κατανέµονται σχεδόν οµοιόµορφα στο διάστηµα µεταξύ και. Για παράδειγµα, η τιµή Α = ( 5 -)/2 =, (golden ratio) θεωρείται µια καλή επιλογή. Πλεονέκτηµα της µεθόδου. Η τιµή του m δεν έχει καθοριστική σηµασία. Το m µπορεί να είναι ακόµη και δύναµη του 2. ΗΥ24 - Παναγιώτα Φατούρου 36 8

19 Συναρτήσεις Κατακερµατισµού Τέλειος Κατακερµατισµός Στατικών εδοµένων Αν γνωρίζαµε εξ αρχής τα κλειδιά που θέλουµε να αποθηκευτούν, ίσως να µπορούσαµε να σχεδιάσουµε µια συνάρτηση κατακερµατισµού που να αποφεύγει εντελώς τις συγκρούσεις. Έχουν αναπτυχθεί διάφορες τεχνικές για την εύρεση τέλειων συναρτήσεων κατακερµατισµού για δεδοµένα σύνολα κλειδιών. Η µέθοδος έχει περιορισµένη εφαρµογή, αφού συνήθως το σύνολο των κλειδιών δεν είναι γνωστό και τα δεδοµένα αλλάζουν δυναµικά. ΗΥ24 - Παναγιώτα Φατούρου 37 Καθολικές Κλάσεις Συναρτήσεων Κατακερµατισµού Πρόβληµα Ένας κακόβουλος αντίπαλος (adversary) που γνωρίζει τη συνάρτηση κατακερµατισµού που χρησιµοποιεί ένας αλγόριθµος µπορεί να επιλέξει τα προς αποθήκευση κλειδιά έτσι ώστε να έχουν όλα την ίδια τιµή κατακερµατισµού. Σε αυτή την περίπτωση η χρονική πολυπλοκότητα της LookUp() είναι γραµµική στο n. Επίλυση Προβλήµατος Επιλέγουµε τη συνάρτηση κατακερµατισµού µε τυχαίο τρόπο, ανεξάρτητο από τα κλειδιά που πρόκειται να αποθηκευθούν τελικά στη δοµή κατακερµατισµού, από µια προσεχτικά σχεδιασµένη κλάση συναρτήσεων κατά την εκκίνηση της εκτέλεσης. Η προσέγγιση αυτή ονοµάζεται καθολικός κατακερµατισµός (universal hashing). όγω της τυχαιότητας, ο αλγόριθµος µπορεί να συµπεριφέρεται διαφορετικά σε κάθε εκτέλεση, ακόµη και για την ίδια είσοδο. Με τον τρόπο αυτό εξασφαλίζεται καλή αναµενόµενη επίδοση για οποιαδήποτε είσοδο. ΗΥ24 - Παναγιώτα Φατούρου 38 9

20 Καθολικές Κλάσεις Συναρτήσεων Κατακερµατισµού Ορισµός Έστω H µια πεπερασµένη συλλογή συναρτήσεων κατακερµατισµού οι οποίες απεικονίζουν ένα δεδοµένο χώρο κλειδιών U στο διάστηµα {,,,m-. Μια τέτοια συλλογή λέγεται καθολική εάν για κάθε ζεύγος διαφορετικών κλειδιών k,l U, το πλήθος των συναρτήσεων κατακερµατισµού h H για τις οποίες h(k) = h(l) είναι µικρότερο ή ίσο του H /m. Παρατήρηση Με µια συνάρτηση κατακερµατισµού που επιλέγεται τυχαία από µια καθολική κλάση συναρτήσεων Η, η πιθανότητα να συµβεί µια σύγκρουση µεταξύ δύο διαφορετικών κλειδιών k και l είναι µικρότερη ή ίση της πιθανότητας /m να συνέβαινε µια σύγκρουση αν τα h(k) και h(l) επιλέγονταν τυχαία και ανεξάρτητα µεταξύ τους από το σύνολο {,,m-. ΗΥ24 - Παναγιώτα Φατούρου 39 Καθολικές Κλάσεις Συναρτήσεων Κατακερµατισµού (universal hashing) Θεώρηµα: Έστω ότι επιλέγουµε µια συνάρτηση κατακερµατισµού h από µια καθολική κλάση συναρτήσεων Η και έστω ότι χρησιµοποιούµε την h για να αποθηκεύσουµε n κλειδιά σε έναν πίνακα κατακερµατισµού A των m θέσεων επιλύοντας τις συγκρούσεις µε τη µέθοδο των ξεχωριστών αλυσίδων.. Αν ένα κλειδί k δεν βρίσκεται στον πίνακα, τότε το αναµενόµενο µήκος E[n h(k) ] της αλυσίδας στην οποία αποθηκεύεται το k είναι µικρότερο ή ίσο του α. 2. Αν το κλειδί k βρίσκεται στον πίνακα κατακερµατισµού, τότε το αναµενόµενο µήκος Ε[n h(k) ] της αλυσίδας που περιέχει το k είναι µικρότερο ή ίσο του +α. Παρατήρηση - Συµβολογραφία Οι αναµενόµενες τιµές αναφέρονται στις διάφορες συναρτήσεις κατακερµατισµού. εν έχει γίνει κάποια παραδοχή όσον αφορά την κατανοµή των κλειδιών. Συµβολίζουµε µε n h(k) το µήκος της αλυσίδας που δεικτοδοτεί ο δείκτης της θέση h(k) του Α, όπου k είναι ένα οποιοδήποτε κλειδί στο U. ΗΥ24 - Παναγιώτα Φατούρου 4 2

21 Καθολικές Κλάσεις Συναρτήσεων Κατακερµατισµού Απόδειξη Θεωρήµατος Για κάθε ζεύγος διαφορετικών κλειδιών k και l, ορίζουµε την (δείκτρια) τυχαία µεταβλητή εδοµένου ότι η πιθανότητα σύγκρουσης δύο οποιονδήποτε κλειδιών είναι εξ ορισµού µικρότερη ή ίση του /m, έχουµε Pr{h(k) = h(l) /m. Άρα, Ε[Χ kl ] = * Pr{h(k)=h(l) + * (-Pr{h(k)=h(l)) /m. Για κάθε κλειδί k, ορίζουµε την τυχαία µεταβλητή Y k η οποία ισούται µε το πλήθος των διαφορετικών κλειδιών από το k που αποθηκεύονται στην ίδια θέση του πίνακα κατακερµατισµού µε το k. Ισχύει ότι Yk X kl Εποµένως: X kl if h(k) = h(l) = otherwise = l A l k E[ Y ] E[ X ] = E[ X ] = k kl kl l A l A l A l k l k l k Αν k A, n h(k) = Y k και {l A και l k = n. Εποµένως, Ε[n h(k) ] = E[Y k ] n /m = a. Αν k A, επειδή το k ανήκει στην αλυσίδα Α[h(k)] και το πλήθος Υκ δεν περιλαµβάνει το k, έχουµε n h(k) = Y k + και {l A και l k = n-. Εποµένως, Ε[n h(k) ] = E[Y k ] + (n-) /m + = + a /m < +a. m ΗΥ24 - Παναγιώτα Φατούρου 4 Καθολικές Κλάσεις Συναρτήσεων Κατακερµατισµού Πόρισµα Η µέθοδος του καθολικού κατακερµατισµού σε συνδυασµό µε τη µέθοδο επίλυσης συγκρούσεων των ξεχωριστών αλυσίδων σε πίνακα µε m θέσεις εξασφαλίζει ότι ο αναµενόµενος χρόνος διεκπεραίωσης οποιασδήποτε ακολουθίας n λειτουργιών Insert(), LookUp() και Delete() οι οποίες περιλαµβάνουν Ο(m) λειτουργίες Insert() είναι Θ(n) (δεδοµένου ότι η χρονική πολυπλοκότητα υπολογισµού οποιασδήποτε συνάρτησης κατακερµατισµού της οικογένειας Η είναι Ο()). Απόδειξη Αφού το πλήθος των λειτουργιών εισαγωγής είναι Ο(m) ισχύει ότι n = O(m) και εποµένως a = O(). Βάσει του Θεωρήµατος, ο αναµενόµενος χρόνος για κάθε αναζήτηση είναι Ο() (αφού α=ο()). Εποµένως, ο αναµενόµενος χρόνος για την εκτέλεση όλων των λειτουργιών είναι Ο(n). Το κάτω φράγµα Ω(n) προκύπτει από το ότι κάθε λειτουργία απαιτεί χρόνο Ω(). ΗΥ24 - Παναγιώτα Φατούρου 42 2

22 ηµιουργία µιας Καθολικής Κλάσης Συναρτήσεων Κατακερµατισµού Επιλέγουµε έναν πρώτο αριθµό p αρκετά µεγάλο ώστε όλα τα δυνατά κλειδιά K να βρίσκονται στο διάστηµα {,.., p-. Θεώρηµα Για κάθε αριθµό a {,,p- και b {,,p- έστω h a,b (x) = ((ax+b) mod p) mod m. Τότε, το σύνολο συναρτήσεων H = {h a,b : a < p και b < p είναι µια καθολική κλάση συναρτήσεων κατακερµατισµού. Απόδειξη Χρησιµοποιεί επιχειρήµατα από τη θεωρία αριθµών. Παρατηρήσεις Το µέγεθος m του πίνακα µπορεί να είναι οποιοσδήποτε ακέραιος και όχι απαραίτητα πρώτος, ούτε καν περιττός. Π.χ., το m µπορεί να είναι µια δύναµη του 2. Η µέθοδος µπορεί να χρησιµοποιηθεί σε συνδυασµό µε τη µέθοδο του επεκτάσιµου κατακερµατισµού. ΗΥ24 - Παναγιώτα Φατούρου 43 Ενότητα 8 Ουρές Προτεραιότητας ΗΥ24 - Παναγιώτα Φατούρου 44 22

23 Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω επίσης ότι έχει ορισθεί µια διάταξη στα στοιχεία του U έτσι ώστε για κάθε ζεύγος στοιχείων x,y U, να ισχύει είτε x = y ή x < y ή x > y. Τα στοιχεία που είναι επιθυµητό να αποθηκευθούν στη δοµή είναι ζεύγη της µορφής <Κ,Ι>. Ορισµός Μια ουρά προτεραιότητας είναι ένας αφηρηµένος τύπος δεδοµένων για ένα σύνολο µε στοιχεία ζεύγη <Κ,Ι>, που υποστηρίζει τις ακόλουθες λειτουργίες: MakeEmptySet(): επιστρέφει το κενό σύνολο. IsEmptySet(S): Επιστρέφει true αν S =, false διαφορετικά Insert(K,I,S): Εισάγει το ζεύγος <Κ,Ι> στο S. FindMin(S): επιστρέφει το info πεδίο I του ζεύγους <Κ,Ι>, όπου Κ είναι το µικρότερο κλειδί στο σύνολο. DeleteMin(S): ιαγράφει το ζεύγος <Κ,Ι>, όπου Κ είναι το µικρότερο κλειδί στο σύνολο, και επιστρέφει Ι. ΗΥ24 - Παναγιώτα Φατούρου 45 Ουρές Προτεραιότητας Υλοποίηση µε Ισοζυγισµένα ένδρα Μπορούµε να υλοποιήσουµε µια ουρά προτεραιότητας µε ισοζυγισµένα δένδρα; AVL δένδρα, 2-3 δένδρα, Red-black δένδρα, B-δένδρα: όλα παρέχουν αποτελεσµατικές υλοποιήσεις ουρών προτεραιοτήτων. εδοµένου ενός ισοζυγισµένου δένδρου, πως θα µπορούσαµε να υλοποιήσουµε µια ουρά προτεραιότητας; Ποια είναι η χρονική πολυπλοκότητα για τις λειτουργίες Insert(), FindMin() και DeleteMin(); Υπάρχουν άλλες λειτουργίες που να υποστηρίζονται αποδοτικά; () LookUp; (2) Delete; (3) FindMax DeleteMax; Ασκήσεις για το σπίτι! Μια ουρά προτεραιότητας που υποστηρίζει και τις λειτουργίες FindMax() και DeleteMax() ονοµάζεται διπλή ουρά προτεραιότητας (ή ουρά προτεραιότητας µε δύο άκρα). ΗΥ24 - Παναγιώτα Φατούρου 46 23

24 Ουρές Προτεραιότητας Ένα µερικώς διατεταγµένο δένδρο είναι ένα δυαδικό δένδρο του οποίου τα στοιχεία έχουν την εξής ιδιότητα: Το κλειδί κάθε κόµβου είναι µικρότερο ή ίσο εκείνου των παιδιών του κόµβου. Θεωρούµε ότι η προτεραιότητα ενός κόµβου καθορίζεται από το κλειδί του ως εξής µικρό κλειδί -> µεγάλη προτεραιότητα και το αντίστροφο. Έτσι, η διάταξη των κόµβων του σχήµατος από µεγαλύτερες προς µικρότερες προτεραιότητες είναι 5, 8, 9,, 2, 3, 6, 8, 2, 22, 44,. Ποιος είναι ο κόµβος µε τη µεγαλύτερη προτεραιότητα σε ένα µερικώς διατεταγµένο δένδρο; Σε κάθε µονοπάτι από τη ρίζα προς οποιοδήποτε κόµβο, οι κόµβοι που διατρέχουµε είναι φθίνουσας προτεραιότητας. Πως υλοποιούµε την FindMin() σε µερικώς διατεταγµένο δένδρο; ΗΥ24 - Παναγιώτα Φατούρου 47 Ουρές Προτεραιότητας Προκειµένου οι λειτουργίες αυτές να υλοποιηθούν αποδοτικά, θα ήταν επιθυµητό το ύψος του δένδρου να είναι O(log n). DeleteMin() εν διαγράφουµε τη ρίζα, αλλά το δεξιότερο φύλλο του τελευταίου επιπέδου του δένδρου, αφού πρώτα αντιγράψουµε τα δεδοµένα του στη ρίζα. Πρόβληµα που µπορεί να προκύψει Το προκύπτον δένδρο µπορεί να µην είναι µερικώς διατεταγµένο δένδρο. Παρατήρηση Η µερική διάταξη καταστρέφεται µόνο στη ρίζα. ΗΥ24 - Παναγιώτα Φατούρου 48 24

25 Μερικώς ιατεταγµένα ένδρα ιαγραφή DeleteMin() - Επανόρθωση διάταξης. Έστω u η ρίζα του δένδρου και w o θυγατρικός κόµβος του u µε τη µεγαλύτερη προτεραιότητα. 2. Αν (w == nill OR κλειδί του u < κλειδί του w) ο αλγόριθµος τερµατίζει; 3. Ανταλλάσσουµε τα δεδοµένα του u µε τα δεδοµένα του w; 4. Θέτουµε (u = w) και (w = θυγατρικός κόµβος του u µε τη µεγαλύτερη προτεραιότητα); 5. Επιστρέφουµε στο βήµα 2; Ποια είναι πολυπλοκότητα της DeleteMin(); O(ύψος δένδρου) ΗΥ24 - Παναγιώτα Φατούρου 49 Μερικώς ιατεταγµένα ένδρα Insert() Εισάγουµε το νέο στοιχείο ως δεξιότερο φύλλο του δένδρου. Η ιδιότητα της µερικής διάταξης ίσως καταστρέφεται άλλα µόνο για τον πατέρα του φύλλου αυτού. Insert() - Επανόρθωση διάταξης. Έστω u ο κόµβος φύλλο στον οποίο γίνεται η εισαγωγή και w o πατρικός κόµβος του u. 2. Αν (w == nill OR κλειδί του w < κλειδί του u) ο αλγόριθµος τερµατίζει; 3. Ανταλλάσσουµε τα δεδοµένα του u µε τα δεδοµένα του w; 4. Θέτω (u = w) και (w = πατρικός κόµβος του u); 5. Επιστρέφουµε στο βήµα 2; Ποια είναι η χρονική πολυπλοκότητα της Insert(); Ο(ύψος δένδρου) ΗΥ24 - Παναγιώτα Φατούρου 5 25

26 Μερικώς ιατεταγµένα ένδρα Υλοποίηση ως Πλήρη υαδικά ένδρα Υλοποιούµε το µερικώς διατεταγµένο δένδρο χρησιµοποιώντας πλήρη δυαδικά δένδρα. Το δεξιότερο φύλλο µε µέγιστο βάθος στο δένδρο είναι το τελευταίο στοιχείο του πίνακα. Η θέση του πίνακα που περιέχει αυτό τον κόµβο µπορεί να καθοριστεί αν γνωρίζουµε το πλήθος των στοιχείων και τη διεύθυνση του πρώτου στοιχείου του πίνακα. Η διαγραφή του φύλλου αυτού δεν επηρεάζει την µερική διάταξη του δένδρου, ενώ 2 το δένδρο εξακολουθεί να είναι πλήρες. Ένα µερικώς διατεταγµένο δένδρο υλοποιηµένο µε στατικό τρόπο (δηλαδή µε πίνακα), ονοµάζεται σωρός. Το ύψος οποιουδήποτε πλήρους δυαδικού δένδρου είναι O(logn) Πολυπλοκότητα HeapInsert() και HeapDeleteMin() = O(logn). Ο σωρός είναι µια εξαιρετικά αποδοτική δοµή για την υλοποίηση ουρών προτεραιότητας ΗΥ24 - Παναγιώτα Φατούρου Υλοποίηση Πλήρων υαδικών ένδρων A Υπάρχει µόνο ένα πλήρες δυαδικό δένδρο µε n κόµβους και το υλοποιούµε µε ένα πίνακα N στοιχείων. Αριθµούµε τους κόµβους µε αριθµούς στο διάστηµα {,...,n- και αποθηκεύουµε τον κόµβο i στο στοιχείο Τ[i] του πίνακα. Θέλουµε να κάνουµε την αρίθµηση µε τέτοιο τρόπο ώστε να πετύχουµε την εκτέλεση χρήσιµων λειτουργιών στο δένδρο σε σταθερό χρόνο. Αρίθµηση Η ρίζα είναι ο κόµβος. ΗΥ24 - Παναγιώτα Φατούρου 3 G D 4 5 K i 2i+ Το αριστερό παιδί του κόµβου i αριθµείται ως κόµβος 2i+, ενώ το δεξί παιδί του ως κόµβος 2i+2. Υλοποίηση ειτουργιών IsLeaf(i): return (2i+>n); LeftChild(i): if (2i+ < n); return (2i+) else return nill; RightChild(i): if (2i+2<n) return(2i+2); else return nill; LeftSibling(i): if (i!= and i not odd) return (i-); RightSibling(i): if (i!= n- and i not even) return(i+); Parent(i): if (i!= ) return( (i-)/2 ); Α C 2 E 3 G 4 D C B O M Y S 5 K 6 X 7 B 8 O 9 M E Y 2 X Χρονική πολυπλοκότητα κάθε λειτουργίας: Θ() s 26

27 Τα στοιχεία του σωρού είναι structs µε δύο πεδία, ένα κλειδί Κ τύπου Key και τα δεδοµένα data τύπου Type που έχουν συσχετισθεί µε το κλειδί. Ο σωρός υλοποιείται από έναν πίνακα A (τύπου HeapTable) και έναν ακέραιο size που υποδηλώνει το πλήθος των στοιχείων του σωρού. procedure HeapInsert(Key K, Type I, HeapTable A, int size) { /* Εισαγωγή του ζεύγους <K,I> στο σωρό <A,size> */ if (size == N) then error; /* Heap is full */ m = size; // o m είναι ακέραιος που χρησιµοποιείται ως δείκτης στους κόµβους ενός Σωροί Ψευδοκώδικας για HeapInsert() // µονοπατιού του δένδρου. Αρχικά, δείχνει στη θέση που θα εισαχθεί το νέο στοιχείο while (m > and K < Α[ (m-)/2 ]->Key) { // όσο δεν έχω φθάσει στη ρίζα και // o πατρικός κόµβος του m έχει µικρότερο κλειδί από το K Α[m]->key = Α[ (m-)/2 ]->Key; // το κλειδί και τα δεδοµένα του πατρικού κόµβου Α[m]->data = Α[ (m-)/2 ]->data; // του m αντιγράφονται στον m m = (m-)/2 ; // η διαδικασία επαναλαµβάνεται µε m = πατρικός κόµβος του m 5 9 Α[m]->Key = K; Α[m]->data = I; size++; Παράδειγµα: Εισαγωγή ΗΥ24 - Παναγιώτα Φατούρου m =, 5, 2, 53 Σωροί Ψευδοκώδικας για HeapDeleteMin() Type HeapDeleteMin(HeapTable A, int size) { // διαγραφή του στοιχείου µε τη µεγαλύτερη προτεραιότητα και επιστροφή της τιµής του if (size == ) then error; // Κενός σωρός I = A[]->data; // Στοιχείο που θα επιστραφεί K = A[size-]->Key; // τιµή κλειδιού που θα µετακινηθεί προς τη ρίζα size--; // νέο µέγεθος σωρού if (size == ) then return; // ο σωρός περιέχει µόνο τη ρίζα µετά τη διαγραφή m = ; /* ο m είναι ακέραιος που δεικτοδοτεί τους κόµβους ενός µονοπατιού προς τη ρίζα while ((2m+ < size AND K > A[2m+]->Key) OR // αν υπάρχει αριστερό παιδί και έχει µικρότερο κλειδί (2m+2 < size AND K > A[2m+2]->Key)) { // ή αν υπάρχει δεξιό παιδί και έχει µικρότερο κλειδί if (2m +2 < size) { // o m έχει δύο θυγατρικούς κόµβους if (A[2m+]->Key < A[2m+2]->Key) p = 2m+; // ο p δείχνει στο θυγατρικό του m µε τη µεγαλύτερη προτεραιότητα else p = 2m+2; else p = size-; A[m]->Key = A[p]->Key; A[m]->data = A[p]->data; m = p; A[m]->Key = K; A[m]->data = A[size]->data; return I; Παράδειγµα: DeleteMin() ΗΥ24 - Παναγιώτα Φατούρου 54 m =,, 4, 9 27

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

Διαβάστε περισσότερα

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type).

Διαβάστε περισσότερα

Ενότητα 6 Κατακερµατισµός

Ενότητα 6 Κατακερµατισµός Ενότητα 6 Κατακερµατισµός ΗΥ24 - Παναγιώτα Φατούρου Κατακερµατισµός - Αρχές ειτουργίας Έστω S U ένα σύνολο κλειδιών προς αποθήκευση. Βασική Ιδέα «Αν το κλειδί k S ενός στοιχείου s ήταν ακέραιος Type LookUp(array

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ενότητα 6 Κατακερµατισµός

Ενότητα 6 Κατακερµατισµός Ενότητα 6 Κατακερµατισµός ΗΥ240 - Παναγιώτα Φατούρου Κατακερµατισµός - Αρχές ειτουργίας Έστω U το σύνολο των φυσικών αριθµών και S U ένα σύνολο κλειδιών προς αποθήκευση. Βασική Ιδέα «Αφού το κλειδί k S

Διαβάστε περισσότερα

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

ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING) ΕΝΟΤΗΤΑ 8 KATAKEΡΜΑΤΙΣΜΟΣ (HASHING) Κατακερµατισµός Στόχος Έχουµε ένα σύνολο από κλειδιά {Κ 0,, Κ n-1 } και θέλουµε να υλοποιήσουµε Insert() και LookUp() (ίσως και Delete()) απλά και γρήγορα στην πράξη.

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ Ουρές Προτεραιότητας (Priority Queues) Θεωρούµε ότι τα προς αποθήκευση στοιχεία έχουν κάποια διάταξη (καθένα έχει µια προτεραιότητα). Τα προς αποθήκευση στοιχεία είναι

Διαβάστε περισσότερα

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

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος HY240 : Δομές Δεδομένων Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος Εισαγωγή Στο 2 ο μέρος της εργασίας θα πρέπει να γίνουν τροποποιήσεις στο πρόγραμμα που προέκυψε κατά την υλοποίηση του

Διαβάστε περισσότερα

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

Διαβάστε περισσότερα

Insert(K,I,S) Delete(K,S)

Insert(K,I,S) Delete(K,S) ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ & ΛΕΞΙΚΑ Φατούρου Παναγιώτα 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό και

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δομές Αναζήτησης. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση Δομές Αναζήτησης χειρότερη περίπτωση μέση περίπτωση εισαγωγή αναζήτηση επιλογή εισαγωγή αναζήτηση διατεταγμένος πίνακας διατεταγμένη λίστα μη διατεταγμένος πίνακας μη διατεταγμένη λίστα δένδρο αναζήτησης

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Κατακερματισμός 1 Αποθήκευση εδομένων (σύνοψη) Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Παραδοσιακά, μία σχέση (πίνακας/στιγμιότυπο) αποθηκεύεται σε ένα αρχείο Αρχείο δεδομένων

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ

ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ ΕΝΟΤΗΤΑ ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Ισοζυγισµένα Δένδρα Χρονική Πολυπλοκότητα αναζήτησης σε δοµές που έχουν ήδη διδάχθει: q Στατική Μη-Ταξινοµηµένη Λίστα -> Ο(n),

Διαβάστε περισσότερα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή

Διαβάστε περισσότερα

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

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις ΗΥ2, Ενότητα : Ασκήσεις και Λύσεις Ενότητα : Κατακερματισμός Ασκήσεις και Λύσεις Άσκηση 1 Χρησιμοποιήστε τη συνάρτηση κατακερματισμού της διαίρεσης ως πρωτεύουσα συνάρτηση κατακερματισμού και τη συνάρτηση

Διαβάστε περισσότερα

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (path) o Πρόγονος απόγονος (ancestor, descendant)

Διαβάστε περισσότερα

ΗΥ240 - Παναγιώτα Φατούρου 2

ΗΥ240 - Παναγιώτα Φατούρου 2 ΕΝΟΤΗΤΑ ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Ισοζυγισµένα ένδρα Χρονική Πολυπλοκότητα αναζήτησης σε δοµές που έχουν ήδη διδάχθει: Στατική Μη-Ταξινοµηµένη Λίστα -> Ο(n), όπου

Διαβάστε περισσότερα

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

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης Δοµές Δεδοµένων 16η Διάλεξη Κατακερµατισµός Ε. Μαρκάκης Περίληψη Συναρτήσεις κατακερµατισµού Χωριστή αλυσίδωση Γραµµική διερεύνηση Διπλός κατακερµατισµός Δυναµικός κατακερµατισµός Προοπτική Δοµές Δεδοµένων

Διαβάστε περισσότερα

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα? Κόκκινα-Μαύρα ένδρα (Red-Black Trees) Ένα κόκκινο-µαύρο δένδρο είναι ένα δυαδικό δένδρο αναζήτησης στο οποίο οι κόµβοι µπορούν να χαρακτηρίζονται από ένα εκ των δύο χρωµάτων: µαύρο-κόκκινο. Το χρώµα της

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενων από έναν

Διαβάστε περισσότερα

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Κατακερματισμός. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Κατακερματισμός Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Λεξικό Dictionary Ένα λεξικό (dictionary) είναι ένας αφηρημένος τύπος δεδομένων (ΑΤΔ) που διατηρεί

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή (ως τρόπος οργάνωσης αρχείου) μέγεθος

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή

Διαβάστε περισσότερα

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Τεχνικές Κατακερµατισµού Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Τεχνικές Κατακερµατισµού ιαχείριση Συγκρούσεων µε Αλυσίδωση ιαχείριση Συγκρούσεων µε Ανοικτή ιεύθυνση ιπλός Κατακερµατισµός,

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2017-2018 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ενδρικές οµές για Υλοποίηση υναµικών Λεξικών υναµικά λεξικά λειτουργίες LookUp( ), Insert( ) και Delete( ) Αναζητούµε δένδρα για την αποτελεσµατική υλοποίηση

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2018-2019 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

Διαβάστε περισσότερα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει

Διαβάστε περισσότερα

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

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1 Κατακερματισμός 4/3/2009 Μ.Χατζόπουλος 1 H ιδέα που βρίσκεται πίσω από την τεχνική του κατακερματισμού είναι να δίνεται μια συνάρτησης h, που λέγεται συνάρτηση κατακερματισμού ή παραγωγής τυχαίων τιμών

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1 ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

Διαβάστε περισσότερα

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

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing) Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ανασκόπηση Προβλήματος και Προκαταρκτικών Λύσεων Bit Διανύσματα Τεχνικές Κατακερματισμού & Συναρτήσεις

Διαβάστε περισσότερα

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1 Σωροί Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθµος ταξινόµησης HeapSort Παραλλαγές Σωρών ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι

Διαβάστε περισσότερα

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

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών

αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών ΕΝΟΤΗΤΑ ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 / ένδρα Ενα δένδρο είναι

Διαβάστε περισσότερα

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } } Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ. ΗΥ240 - Παναγιώτα Φατούρου 1 ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση Πίνακες Διασποράς Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση κλειδί k T 0 1 2 3 4 5 6 7 U : χώρος πιθανών κλειδιών Τ : πίνακας μεγέθους

Διαβάστε περισσότερα

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 1 Σύνολα (Sets) q Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U (universe) αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών σύνολα

Διαβάστε περισσότερα

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς A n O(1) (στην πρώτη ελέυθερη θέση στο τέλος του πίνακα).

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ ΜΑΘΗΜΑ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΑΚΑ. ΕΤΟΣ 2012-13 Ι ΑΣΚΟΝΤΕΣ Ιωάννης Βασιλείου Καθηγητής, Τοµέας Τεχνολογίας

Διαβάστε περισσότερα

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,...

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,... KΕΦΑΛΑΙΟ ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ Βασικές έννοιες διαιρετότητας Θα συµβολίζουµε µε, τα σύνολα των φυσικών αριθµών και των ακεραίων αντιστοίχως: {,,3,,, } { 0,,,,, } = = ± ± ± Ορισµός Ένας φυσικός αριθµός

Διαβάστε περισσότερα

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

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS) ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS) Ταχεία Αναζήτηση Σε πίνακα: δυαδική αναζήτηση (binary search) σε ταξινοµηµένο πίνακα O(log n) Σε δένδρο: αναζήτηση σε ισοζυγισµένο δένδρο O(log n) Σε λίστα: Μπορούµε

Διαβάστε περισσότερα

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

Κατακερματισμός (Hashing) Κατακερματισμός (Hashing) O κατακερματισμός είναι μια τεχνική οργάνωσης ενός αρχείου. Είναι αρκετά δημοφιλής μέθοδος για την οργάνωση αρχείων Βάσεων Δεδομένων, καθώς βοηθάει σημαντικά στην γρήγορη αναζήτηση

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και

Διαβάστε περισσότερα

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: υαδικά έντρα Αναζήτησης (Binary Search Trees) Ορισµός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόµενα στο αριστερό υποδέντρο του t είναι

Διαβάστε περισσότερα

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

Διαβάστε περισσότερα

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 2 Σύνολα (Sets) Τα

Διαβάστε περισσότερα

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

10. Πίνακες Κατακερματισμού Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 10. Πίνακες Κατακερματισμού 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 16/12/2016 Πίνακες

Διαβάστε περισσότερα

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

Διαβάστε περισσότερα

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ 1 ένδρα εσωτερικός κόµβος u το δένδρο έχει ύψος 4 u έχει ύψος 3 w έχει βάθος 2 κόµβος ένδρο: γράφηµα χωρίς κύκλους o Ρίζα (root) o Κόµβος (node) o Ακµή (edge) o Γονέας (parent) Παιδί (child)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) Ένωση Ξένων Συνόλων (Disjoint Sets with Union) S 1,, S k : ξένα υποσύνολα ενός συνόλου U δηλ., S i S j =, αν i j, και S 1 S k = U. Λειτουργίες που θέλουµε

Διαβάστε περισσότερα

5. Γεννήτριες Τυχαίων Αριθµών.

5. Γεννήτριες Τυχαίων Αριθµών. 5. Γεννήτριες Τυχαίων Αριθµών. 5.1. Εισαγωγή. Στο Κεφάλαιο αυτό θα δούµε πώς µπορούµε να δηµιουργήσουµε τυχαίους αριθµούς από την οµοιόµορφη κατανοµή στο διάστηµα [0,1]. Την κατανοµή αυτή, συµβολίζουµε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

Διαβάστε περισσότερα

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

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα στα οποία κάθε κόμβος μπορεί να αποθηκεύει ένα ή περισσότερα κλειδιά. Κόμβος με d διακλαδώσεις : k 1 k 2 k 3 k 4 d-1 διατεταγμένα κλειδιά d διατεταγμένα παιδιά

Διαβάστε περισσότερα

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

Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διαχείριση Συγκρούσεων με Ανοικτή Διεύθυνση a) Linear

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

Διαβάστε περισσότερα

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap Ουρά Προτεραιότητας: Heap ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ομές εδομένων (Αναπαράσταση,) οργάνωση και διαχείριση συνόλων αντικειμένων για

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Δοµές Δεδοµένων. 15η Διάλεξη Δέντρα Δυαδικής Αναζήτησης και Κατακερµατισµός. Ε. Μαρκάκης Δοµές Δεδοµένων 15η Διάλεξη Δέντρα Δυαδικής Αναζήτησης και Κατακερµατισµός Ε. Μαρκάκης Περίληψη Υλοποιήσεις άλλων λειτουργιών σε ΔΔΑ: Επιλογή k-οστού µικρότερου Διαµέριση Αφαίρεση στοιχείου Ένωση 2 δέντρων

Διαβάστε περισσότερα

3 Αναδροµή και Επαγωγή

3 Αναδροµή και Επαγωγή 3 Αναδροµή και Επαγωγή Η ιδέα της µαθηµατικής επαγωγής µπορεί να επεκταθεί και σε άλλες δοµές εκτός από το σύνολο των ϕυσικών N. Η ορθότητα της µαθηµατικής επαγωγής ϐασίζεται όπως ϑα δούµε λίγο αργότερα

Διαβάστε περισσότερα

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως

Διαβάστε περισσότερα

Advanced Data Indexing

Advanced Data Indexing Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Κατακερματισμός Hashing (1ο Μέρος) Η Αναζήτηση απαιτεί Δομές Λύσεις Για να υποστηριχθεί η αποδοτική αναζήτηση απαιτείται η χρήση κατάλληλων δομών-ευρετηρίων

Διαβάστε περισσότερα

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

Κεφάλαιο 10 Ψηφιακά Λεξικά Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή... 213 10.2 Ψηφιακά Δένδρα... 214 10.3 Υλοποίηση σε Java... 222 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα... 223 Ασκήσεις... 225 Βιβλιογραφία...

Διαβάστε περισσότερα

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap Ουρά Προτεραιότητας: Heap Επιμέλεια διαφανειών: Δ. Φωτάκης (λίγες τροποποιήσεις: Α. Παγουρτζής) Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Δομές Δεδομένων (Αναπαράσταση,)

Διαβάστε περισσότερα

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

Διάλεξη 18: Τεχνικές Κατακερματισμού I (Hashing) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 18: Τεχνικές Κατακερματισμού I (Hashing) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ανασκόπηση Προβλήματος και Προκαταρκτικών Λύσεων Bit-Διανύσματα

Διαβάστε περισσότερα

9. Κόκκινα-Μαύρα Δέντρα

9. Κόκκινα-Μαύρα Δέντρα Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 9. Κόκκινα-Μαύρα Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 9/12/2016 Δέντρα,

Διαβάστε περισσότερα

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

Διαβάστε περισσότερα

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

Άσκηση 1. με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι Άσκηση 1 α) Παρουσιάστε τα AVL δέντρα που προκύπτουν από τις εισαγωγές των κλειδιών 1, 4, 9,, 7,,, 1, 4 και σε ένα αρχικά άδειο AVL δέντρο με κόκκινο χρώμα σημειώνονται οι κρίσιμοι κόμβοι +4 +9 + 1 1 1

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΕΠΛ 035 - ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΓΙΑ ΗΛΕΚΤΡΟΛΟΓΟΥΣ ΜΗΧΑΝΙΚΟΥΣ ΚΑΙ ΜΗΧΑΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΩΝ Ακαδηµαϊκό έτος 2017-2018 Υπεύθυνος εργαστηρίου: Γεώργιος

Διαβάστε περισσότερα

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v. ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος

Διαβάστε περισσότερα

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

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, ορισμοί, πράξεις και αναπαράσταση στη μνήμη ΔυαδικάΔένδρακαιΔυαδικάΔένδραΑναζήτησης ΕΠΛ 231 Δομές

Διαβάστε περισσότερα

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε: Συµβολισµός Ω( ) Τάξη των Συναρτήσεων () Εκτίµηση Πολυπλοκότητας Αλγορίθµων Ορέστης Τελέλης telelis@unipi.gr Ορισµός. Εστω συναρτήσεις: f : N R και g : N R η f(n) είναι Ω( g(n) ) αν υπάρχουν σταθερές C

Διαβάστε περισσότερα

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap Ουρά Προτεραιότητας: Heap ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα

Διαβάστε περισσότερα