Χωρικοί-χρονικοί συμβιβασμοί

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι18/10/2010.
Advertisements

DATA MINING LECTURE 6 Mixture of Gaussians and the EM algorithm
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος δ
Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις
Χωρικοί-χρονικοί συμβιβασμοί
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
Θεωρία Υπολογισμού Χρονική Πολυπλοκότητα και Μοντέλα.
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 Δείκτες σε συναρτήσεις Δείκτης σε συνάρτηση – Περιέχει τη διεύθυνση του κώδικα της συνάρτησης – Ό π ως ένας.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα.
Σχεδίαση ψηφιακών συστημάτων Ενότητα 4: Finite State Machines Algorithmic State Machine (ASM) Charts, and VHDL code Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής.
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό Έλεγχος Ροής - Παραδείγματα Χειμερινό Εξάμηνο 2015.
Αίγυπτος Ένα ταξίδι μέσα από φωτογραφίες και βίντεο.
OI ΜΑΘΗΤΕΣ ΤΟΥ Α2 ΠΑΡΟΥΣΙΑΖΟΥΝ ΤΗΝ ΕΡΕΥΝΗΤΙΚΗ ΕΡΓΑΣΙΑ ΜΕ ΤΙΤΛΟ «ΘΑ ΠΟΥΜΕ ΤΟ ΝΕΡΟ, ΝΕΡΑΚΙ;» Υπεύθυνη Καθηγήτρια Μακαρούνα Μαρία.
1. Γροιλανδία km² - αυτοδιοικούμενη περιοχή που ανήκει στη Δανία ΓροιλανδίαΔανία 2. Νέα Γουινέα km² - το δυτικό τμήμα ανήκει στην.
ΘΕΑΤΡΟΠΑΙΔΑΓΩΓΙΚΟ ΠΡΟΓΡΑΜΜΑ ΣΕ ΣΥΝΕΡΓΑΣΙΑ ΜΕ ΤΟ ΣΥΛΛΟΓΟ ΑΜΕΑ ΑΡΓΟΛΙΔΑΣ.
Διδακτική της Πληροφορικής
ΑΡΧΑΙΑ ΣΠΑΡΤΗ Σιαμπάνο Ηλία Σκουρτσίδη Λεωνίδα Τριανταφυλλόπουλο Σπύρο
10η Διάλεξη Ταξινόμηση E. Μαρκάκης
Ευρετήρια.
Μετασχημάτισε και Κυριάρχησε
Επιμόρφωση Εκπαιδευτικών Μέσης Εκπαίδευσης για τα Νέα Αναλυτικά Προγράμματα Πληροφορικής και Επιστήμης Η/Υ Προγραμματισμός Έτους και Ενότητας (Γ’ Γυμνασίου)
ΓΕΩΓΡΑΦΙΑ Β ΓΥΜΝΑΣΙΟΥ Ενότητες 1.Οι χάρτες
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
ΑΝΔΕΙΣ Χριστοδουλάκη Άννα –Μαρία ΤμήμαΑ3 ΓΥΜΝΑΣΙΟ ΑΡΧΑΝΩΝ
Πίνακες Προγραμματισμός Ι

Εφαρμογές Υπολογιστών
Άθλημα Πετοσφαίρισης Βογιατζή Ίριδα-Βοϊλα Έφη.
Αλγόριθμοι Ταξινόμησης – Μέρος 3
Ενισχυτική διδασκαλία
Θεωρία & Αλγόριθμοι Γράφων Αντιστοιχίσεις και Καλύμματα
Ενότητα 1 : Εισαγωγικά Στοιχεία της Pascal Αλέξανδρος Τζάλλας
ΟΜΑΔΙΚΗ ΕΡΓΑΣΙΑ ΤΟΥ Α2 ΤΜΗΜΑΤΟΣ ΤΟΥ 2ου ΓΕ.Λ. ΘΕΡΜΗΣ
Εισαγωγή στον Προγ/μό Η/Υ
Τεχνολογία και Προγραμματισμός Υπολογιστών
Το φάσμα του λευκού φωτός
Παναγιώτης Αυγουστίδης Γεωγραφία Β΄ Γυμνασίου
EPL231 – Data Structures and Algorithms
Ευρετήρια Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Μερικές δυνάμεις στη φύση
Πρότυπα Προγραμματισμού
Δυναμικός Προγραμματισμός
Πολλαπλασιασμός αλά ρωσικά
Συγχώνευση.
Στοιχεία υδρομετεωρολογίας
ΜΑΘΗΜΑ 8 Η γεωλογική ιστορία της Ελλάδας
Εισαγωγή στην Επεξεργασία Ερωτήσεων
ΟΥΚΡΑΝΙΑ Άρης Λέκκας.
Β 3.5 Τα ποτάμια της Ασίας Ινδία.
Ελλάδα Τα μεγαλύτερα νησιά.
Δυναμικός Κατακερματισμός
Έλξη Μια ιδιότητα της μάζας.
Κινητική θεωρία των αερίων
Οικιακή Οικονομία Α’ Γυμνασίου Μάθημα 6ο. Διδάσκων καθηγητής
ΓΕΛ Καστορείου Πολιτιστικό Πρόγραμμα
Συστάδα 2: Φυσικές Επιστήμες, Τεχνολογία, Φυσική Αγωγή και Υγεία
Κεφάλαιο 7 10/11/2018 Ξένιος Αντωνιάδης.
Πείθουμε τους εαυτούς μας ότι η ζωή μας θα είναι καλύτερη όταν θα παντρευτούμε, θα αποκτήσουμε ένα μωρό, μετά ένα ακόμα. Μετά αγχωνόμαστε διότι τα παιδιά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΝΔΟΣΧΟΛΙΚΗ ΒΙΑ & ΕΚΦΟΒΙΣΜΟΣ
ΔΕΣΚΕΙΟ ΓΕΝΙΚΟ ΛΥΚΕΙΟ ΠΑΡΓΑΣ Α’ ΤΑΞΗ 2007
THIẾT KẾ VÀ ĐÁNH GIÁ THUẬT TOÁN
Δομές Δεδομένων (Data Structures)
Δομές ροής προγράμματος
Πείθουμε τους εαυτούς μας ότι η ζωή μας θα είναι καλύτερη όταν θα παντρευτούμε, θα αποκτήσουμε ένα μωρό, μετά ένα ακόμα. Μετά αγχωνόμαστε διότι τα παιδιά.
ΙΝΣΤΙΤΟΥΤΟ ΕΛΛΗΝΙΚΟΥ ΓΑΛΑΚΤΟΣ
Πείθουμε τους εαυτούς μας ότι η ζωή μας θα είναι καλύτερη όταν θα παντρευτούμε, θα αποκτήσουμε ένα μωρό, μετά ένα ακόμα. Μετά αγχωνόμαστε διότι τα παιδιά.
Σπήλαιο Περάματος Ιωαννίνων 30/3/2018 – 1/4/2018
«Το επείγον στην Παιδιατρική»
Μεταγράφημα παρουσίασης:

Χωρικοί-χρονικοί συμβιβασμοί Αλγόριθμοι Χωρικοί-χρονικοί συμβιβασμοί http://delab.csd.auth.gr/~manolopo/Algorithms/ Data Science & Engineering Lab

Χωρικοί-χρονικοί συμβιβασμοί Σε πολλά προβλήματα, ο επιπλέον χώρος ευνοεί τις χρονικές επιδόσεις (extra χώρος = χώρος για αναπνοή) Ενίσχυση εισόδου Ταξινόμηση μη βασισμένη σε συγκρίσεις Βοηθητικοί πίνακες ολίσθησης στην ταύτιση προτύπου Προ-δόμηση κατακερματισμός κατάλογοι (πχ, B-δένδρα) Πίνακες με πληροφορία, όπου γίνεται η διεργασία Δυναμικός προγραμματισμός Data Science & Engineering Lab

Ταξινόμηση με απαρίθμηση Algorithm ComparisonCountSort(A[0..n-1]) for i0 to n-1 do Count[i]0 for i0 to n-2 do for ji+1 to n-1 do if A[i]<A[j] then Count[j]Count[j]+1 else Count[i]Count[i]+1 for i0 to n-1 do S[Count[i]]A[i] Παράδειγμα: 62 31 84 96 19 47 Αποδοτικότητα Data Science & Engineering Lab

Ταξινόμηση με απαρίθμηση (2) Algorithm DistributeCountSort(A[0..n-1]) for j0 to u-l do D[j]0 for i0 to n-1 do D[A[i]-l]D[A[i]-l]+1 for j1 to u-l do D[j]D[j-1]+D[j] for in-1 down to 0 do jA[i]-l; S[D[j]-1]A[i]; D[j]D[j]-1 Παράδειγμα: 13 11 12 13 12 12 Αποδοτικότητα Data Science & Engineering Lab

Data Science & Engineering Lab Ταύτιση προτύπου πρότυπο: string m χαρακτήρων προς αναζήτηση κείμενο: string n>>m χαρακτήρων, όπου θα γίνει αναζήτηση Αλγόριθμος ωμής βίας: Ευθυγραμμίζουμε το πρότυπο με την αρχή του κειμένου Κινούμενοι από αριστερά προς τα δεξιά, συγκρίνουμε κάθε χαρακτήρα του προτύπου με τον αντίστοιχο του κειμένου μέχρι να ταυτίζονται όλοι οι χαρακτήρες (επιτυχής αναζήτηση), ή να βρεθεί μία μη-ταύτιση Όσο δεν βρίσκεται το πρότυπο και το κείμενο δεν έχει τελειώσει, επανα-ευθυγραμμίζουμε το πρότυπο κατά μία θέση και πηγαίνουμε στο βήμα 2. Data Science & Engineering Lab

Ταύτιση προτύπου – ιστορικό 1970: ο Cook δείχνει (finite-state machines) ότι το πρόβλημα μπορεί να επιλυθεί σε χρόνο ανάλογο του n+m. 1976: ο Knuth και ο Pratt βρίσκουν έναν αλγόριθμο βασισμένο στην ιδέα του Cook. Ο Morris ανεξάρτητα βρίσκει τον ίδιο αλγόριθμο στην προσπάθεια να αποφύγει τις “επιστροφές” στο ίδιο κείμενο. Περίπου την ίδια περίοδο οι Boyer και Moore βρίσκουν έναν αλγόριθμο που εξετάζει μόνο ένα τμήμα των χαρακτήρων του κειμένου στις περισσότερες περιπτώσεις (συγκρίνοντας χαρακτήρες του προτύπου και του κειμένου από δεξιά προς τα αριστερά, αντί από αριστερά προς τα δεξιά). 1980: Ένας άλλος αλγόριθμος των Rabin και Karp πρακτικά τρέχει πάντα σε χρόνο ανάλογο του n+m, ενώ έχει το πλεονέ-κτημα ότι γενικεύεται εύκολα στις 2 διαστάσεις και είναι τόσο απλός όσο αυτός της ωμής βίας. Data Science & Engineering Lab

Data Science & Engineering Lab Αλγόριθμος Horspool Είναι μία απλή εκδοχή του αλγορίθμου Boyer-Moore (κρατώντας τα βασικά): Συγκρίνει από δεξιά προς τα αριστερά τους χαρακτήρες του προτύπου προς το κείμενο Δοθέντος ενός προτύπου, δημιουργεί ένα πίνακα ολίσθησης, που δίνει το μέτρο ολίσθησης σε περίπτωση μη-ταύτισης (ενίσχυση εισόδου) Data Science & Engineering Lab

Πόσο μακριά να γίνει η ολίσθηση; Βλέπουμε τον πρώτο (δεξιότερο) χαρακτήρα κειμένου που συγκρίνεται: Ο χαρακτήρας δεν υπάρχει στο πρότυπο .….....c...................... (το c δεν υπάρχει στο πρότυπο) BAOBAB Ο χαρακτήρας υπάρχει στο πρότυπο αλλά όχι στη δεξιότερη θέση ........O...................... (το O υπάρχει 1 φορά στο πρότυπο) .......A...................... (το A υπάρχει 2 φορές στο πρότυπο) Ο δεξιότερος χαρακτήρας προκάλεσε ταύτιση ........B...................... Πίνακας ολίσθησης: Αποθηκεύει το πλήθος των χαρακτήρων που θα ολισθήσουν με βάση τον πρώτο συγκρινόμενο χαρακτήρα Data Science & Engineering Lab

Data Science & Engineering Lab Πίνακας ολίσθησης Δημιουργείται σαρώνοντας το πρότυπο πριν την αναζήτηση Όλες οι θέσεις αρχικοποιούνται με το μήκος του προτύπου Ενημερώνουμε τη θέση του χαρακτήρα c που υπάρχει στο πρότυπο με την απόσταση της δεξιότερης εμφάνισης του c από το τέλος του προτύπου Algorithm ShiftTable(P[0..m-1]) for i0 to size-1 do Table[i]m for j0 to m-2 do Table[P[j]]m-1-j return Table Data Science & Engineering Lab

Πίνακας ολίσθησης Παράδειγμα για το πρότυπο BAOBAB: Τότε: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 6 6 6 6 6 6 6 6 6 6 6 6 3 6 6 6 6 6 6 6 6 6 6 6 Data Science & Engineering Lab

Data Science & Engineering Lab Αλγόριθμος Horspool Horspool Matching(P[0..m-1,T[0..n-1]]) ShiftTable(P[0..m-1]) im-1 while i<=n-1 do k0 while k<=m-1 and P[m-1-k]=T[i-k] do kk+1 if k=m return i-m+1 else ii+Table[T[i]] return -1 Data Science & Engineering Lab

Αλγόριθμος Horspool – Άσκηση Να βρεθεί το pattern “STING” μέσα στο text “A string searching example consisting of simple text” Ποιά είναι η μορφή του πίνακα shift? Πόσες συγκρίσεις χαρακτήρων θα γίνουν? Data Science & Engineering Lab

Αλγόριθμος Boyer-Moore Βασίζεται στις ίδιες 2 ιδέες: συγκρίνουμε τους χαρακτήρες του προτύπου με το κείμενο από δεξιά προς τα αριστερά δεδομένου ενός προτύπου, δημιουργεί ένα πίνακα ολίσθησης για την περίπτωση μη ταύτισης (ενίσχυση εισόδου) Χρησιμοποιεί έναν επιπλέον πίνακα ολίσθησης, ο οποίος εφαρμόζεται ανάλογα με το πλήθος των χαρακτήρων που συμπίπτουν Data Science & Engineering Lab

Ολίσθηση “κακού” συμβόλου Βασίζεται στην ιδέα του Horspool για τη χρήση ενός επιπλέον πίνακα, ωστόσο αυτός ο πίνακας δημιουργείται διαφορετικά: Αν ο χαρακτήρας c του κειμένου που αντιστοιχεί με τον τελευταίο χαρακτήρα του προτύπου δεν υπάρχει στο πρότυπο, τότε ολισθαίνουμε κατά m χαρακτήρες (το c είναι “κακό” σύμβολο) Αν ο μη ταυτιζόμενος χαρακτήρας (το “κακό” σύμβολο) δεν εμφανίζεται στο πρότυπο, τότε ολισθαίνουμε ώστε να τον προσπεράσουμε Αν ο μη ταυτιζόμενος χαρακτήρας (το “κακό” σύμβολο) εμφανίζεται στο πρότυπο, τότε ολισθαίνουμε ώστε να ευθυγραμμίσουμε το κακό σύμβολο με τον ίδιο χαρακτήρα (που βρίσκεται αριστερά της θέσης όπου υπήρξε μη-ταύτιση). Data Science & Engineering Lab

Ολίσθηση “κακού” συμβόλου – παράδειγμα Το κακό σύμβολο δεν βρίσκεται στο πρότυπο ...SER...................... BARBER BARBER ολισθαίνουμε 4 θέσεις Το κακό σύμβολο βρίσκεται στο πρότυπο ...AER...................... BARBER ολισθαίνουμε 2 θέσεις Η ολίσθηση αυτή δίνεται από: d=max[t1(c)-k,1], όπου το t1 είναι ο πίνακας του Horspool, k είναι η απόσταση του κακού συμβόλου από το τέλος του προτύπου Data Science & Engineering Lab

Ολίσθηση “καλού” επιθέματος – παράδειγμα Τι συμβαίνει αν το ταυτισμένο επίθεμα εμφανίζεται και πάλι στο πρότυπο (πχ. ABRACADABRA) Είναι σημαντικό να βρούμε ένα άλλο επίθεμα με διαφορετικό προηγούμενο χαρακτήρα. Η ολίσθηση ισούται με την απόσταση μεταξύ των δύο εμφανίσεων του επιθέματος Επίσης, είναι σημαντικό να βρούμε το μακρύτερο πρόθεμα μεγέθους l<k που να ταυτίζεται με το επίθεμα μήκους l. Η ολίσθηση ισούται με την απόσταση μεταξύ επιθέματος-προθέματος Data Science & Engineering Lab

Ολίσθηση “καλού” επιθέματος – παράδειγμα (2) K pattern d2 1 ABCBAB 2 4 3 5 K pattern d2 1 BAOBAB 2 5 3 4 Data Science & Engineering Lab

Τελικός κανόνας του Boyer-Moore Υπολογίζουμε την ολίσθηση ως d1 αν k=0 d = max(d1,d2) αν k>0 όπου d1=max(t1(c)-k,1) Παράδειγμα { Data Science & Engineering Lab

Αλγόριθμος Boyer-Moore – Άσκηση Να βρεθεί το pattern “ΒΑΟΒΑΒ” μέσα στο text “BESS_KNEW_ABOUT_BAOBABS” Ποιά είναι oi πίνακες ολίσθησης για το “κακό σύμβολο” και το “καλό επίθεμα”? Πόσες συγκρίσεις χαρακτήρων θα γίνουν? Data Science & Engineering Lab

Data Science & Engineering Lab Κατακερματισμός Είναι μία πολύ αποτελεσματική μέθοδος για την υλοποίηση του λεξικού, δηλαδή το σύνολο των πράξεων: εισαγωγή αναζήτηση διαγραφή Εφαρμογές: πίνακες συμβόλων βάσεις δεδομένων (εξωτερικός κατακερματισμός) Data Science & Engineering Lab

Συναρτήσεις Κατακερματισμού Πίνακας κατακερματισμού: ένας πίνακας μεγέθους m Συνάρτηση κατακερματισμού: δίνει τη θέση του πίνακα με βάση το κλειδί k (key-to-address-transformation) Παράδειγμα: έστω ότι κλειδί είναι το SSN. Η συνάρτηση κατακερματισμού είναι: h(k) = k mod m αν m=1000, που αποθηκεύεται το record SSN= 315-17-4251 ? Οι συναρτήσεις κατακερματισμού πρέπει: να υπολογίζονται εύκολα να κατανέμουν τα κλειδιά ομοιόμορφα σε όλο τον πίνακα Data Science & Engineering Lab

Data Science & Engineering Lab Συγκρούσεις Αν h(k1)=h(k2), τότε υπάρχει σύγκρουση Μία καλή συνάρτηση προκαλεί λιγότερες συγκρούσεις Οι συγκρούσεις δεν μπορούν να εξαλειφθούν (παράδοξο των γενεθλίων) Οι συγκρούσεις λύνονται με δύο τρόπους: Ανοικτός κατακερματισμός – κάθε θέση του πίνακα δείχνει σε μία λίστα με όλα τα κλειδιά που έρχονται σε αυτή τη θέση Κλειστός κατακερματισμός – ένα κλειδί ανά θέση, σε περίπτωση σύγκρουσης, βρες ένα άλλη θέση για το νέο κλειδί Γραμμική αναζήτηση: πήγαινε στην επόμενη θέση Διπλός κατακερματισμός: χρησιμοποίησε μία άλλη συνάρτηση κατακερματισμού για να βρεις το άλμα Data Science & Engineering Lab

Data Science & Engineering Lab Παράδοξο γενεθλίων Επιλέγονται 23 τυχαία άτομα. Ποιά είναι η πιθανότητα 2 εξ αυτών να έχουν την ίδια ημέρα γενέθλια? P(A) η ζητούμενη πιθανότητα P(A’) = 1-P(A) P(A’) υπολογίζεται θεωρώντας ότι 2ος δεν έχει την ίδια ημέρα γενέθλια με τον πρώτο, ο 3ος δεν έχει την ίδια μέρα γενέθλια με τον 1ο και τον 2ο ... ο 23ος δεν έχει την ίδια μέρα γενέθλια με τον 1ο, τον 2ο, τον 3ο, ... τον 22ο. P(A’)=(365/365)x(364/365)x…x(343/365)≈0.493 P(A)≈0.507 Data Science & Engineering Lab

Ανοικτός κατακερματισμός Τα κλειδιά αποθηκεύονται σε λίστες έξω από τον πίνακα κατακερματισμού, που περιέχει μόνο τις κορυφές των λιστών. Παράδειγμα: A, FOOL, AND, HIS, MONEY, ARE, SOON, PARTED h(K) = άθροισμα των θέσεων των γραμμάτων του K MOD 13 Key A FOOL AND HIS MONEY ARE SOON PARTED h(K) 1 9 6 10 7 11 12 1 2 3 4 5 6 7 8 9 10 11 12 A AND MONEY FOOL HIS ARE PARTED SOON Data Science & Engineering Lab

Ανοικτός κατακερματισμός Αν η συνάρτηση κατακερματισμού κατανέμει τα κλειδιά ομοιόμορφα, το μέσο μήκος της λίστας είναι a=n/m (a=παράγοντας φόρτωσης) Το μέσο πλήθος των συγκρίσεων είναι S=1+α/2, U=1+α Η χειρότερη περίπτωση είναι γραμμική! Ο ανοικτός κατακερματισμός λειτουργεί ακόμη και αν n>m Data Science & Engineering Lab

Κλειστός κατακερματισμός Τα κλειδιά αποθηκεύονται μέσα στον πίνακα κατακερματισμού. Key A FOOL AND HIS MONEY ARE SOON PARTED h(K) 1 9 6 10 7 11 12 1 2 3 4 5 6 7 8 9 10 11 12 A FOOL AND HIS MONEY ARE SOON PARTED Data Science & Engineering Lab

Data Science & Engineering Lab Γραμμική αναζήτηση Δεν λειτουργεί αν n>m και αποφεύγει τους δείκτες Οι διαγραφές δεν είναι άμεσες Το πλήθος των συγκρίσεων για μια εισαγωγή/ αναζήτηση/ διαγραφή ενός κλειδιού εξαρτάται από το α (παράγοντα φόρτωσης) επιτυχής αναζήτηση: (½) (1+ 1/(1- α)) ανεπιτυχής αναζήτηση : (½) (1+ 1/(1- α)²) καθώς γεμίζει ο πίνακας (α1), το πλήθος των συγκρίσεων αυξάνει δραματικά Data Science & Engineering Lab

Διπλός κατακερματισμός Όταν αυξάνει το α, δημιουργούνται συσσωματώσεις (clusters) Αυτό επιδεινώνει την επίδοση δραματικά. Για το λόγο αυτό σε περίπτωση σύγκρουσης χρησιμοποιείται μία δεύτερη συνάρτηση κατακερματισμού, που δίνει το μέγεθος του άλματος για την επόμενη θέση ως συνάρτηση της τιμής του κλειδιού Για παράδειγμα: s(k) = (key/m) mod m s(k) = m – 2 – k mod(m-2), s(k) = 8 – k mod 8 s(k) = k mod 97 + 1 Αποδεικνύεται ότι S= – ln(1-α) / α U = 1/(1-α) Data Science & Engineering Lab

Κατακερματισμός εξωτερικός Αναφερόμαστε στην περίπτωση που τα δεδομένα δεν χωρούν στην κύρια μνήμη Συνεπώς οργανώνουμε αρχείο στη δευτερεύουσα μνήμη Σε κάθε διεύθυνση αντιστοιχεί ένας “κάδος” (disk page, block) με χωρητικότητα μεγαλύτερη της μονάδας Εφαρμόζεται σε βάσεις δεδομένων Data Science & Engineering Lab

Data Science & Engineering Lab Κίνητρο για Β-δένδρα Έστω ότι θέλουμε να αποθηκεύσουμε 20 εκατομύρια στοιχεία σε ένα AVL δένδρο Το ύψος του δένδρου θα είναι log2 20,000,000 is about 24. Η λύση είναι να έχουμε περισσότερα παιδιά ανά κόμβο ώστε να μειωθεί το ύψος. Data Science & Engineering Lab

Data Science & Engineering Lab Ορισμός Β-δένδρου Ένας Β-δένδρο τάξης m έχει τα εξής χαρακτηριστικά: Τα φύλλα είναι στο ίδι οεπίπεδο Κάθε εσωτερικός κόμβος έχει από m/2 μέχρι m παδιά Η ρίζα έχει από 2 μέχρι m παιδιά. Ένας εσωτερικός κόμβος με k κλειδιά, έχει k+1 παιδιά Data Science & Engineering Lab

Νόμιμο Β-δένδρο τάξης 5 με 26 κλειδιά Παράδειγμα B-δένδρου Νόμιμο Β-δένδρο τάξης 5 με 26 κλειδιά 26 6 12 42 51 62 1 2 4 7 8 13 15 18 25 27 29 45 46 48 53 55 60 64 70 90 Data Science & Engineering Lab

Data Science & Engineering Lab Εισαγωγή σε Β-δένδρο Βρίσκουμε το φύλλο όπου θα γίνει η εισαγωγή. Αν υπάρχει χώρος, τότε το κλειδί εισάγεται Αν δεν υπάρχει χώρος, τότε το φύλλο διασπάται και το μεσαίο κλειδί ανέρχεται στο ανώτερο επίπεδο Αν το ανερχόμενο κλειδί χωράει στον πατρικό κόμβο, τότε αυτό εισέρχεται σε αυτόν τον πατρικό κόμβο Αν το ανερχόμενο κλειδί δεν χωράει στον πατρικό κόμβο, τότε ο πατρικός κόμβος διασπάται Ετσι οι διασπάσεις πατρικών κόμβων μπορεί να φτάσει μέχρι τη ρίζα. Data Science & Engineering Lab

Data Science & Engineering Lab Παράδειγμα εισαγωγής Σε ένα Β-δένδρο τάξης 5 πρόκειται να εισαχθούν τα κλειδιά: 1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45 Η εισαγωγή των 1, 12, 8, 2 δίνει Η εισαγωγή του 25 δίνει Η εισαγωγή των 5, 14, 28 δίνει Η εισαγωγή του 17 δίνει 1 2 8 12 25 1 2 8 12 14 6 25 28 Data Science & Engineering Lab

Παράδειγμα εισαγωγής (2) Σε ένα Β-δένδρο τάξης 5 πρόκειται να εισαχθούν τα κλειδιά: 1 12 8 2 25 5 14 28 17 7 52 16 48 68 3 26 29 53 55 45 Η εισαγωγή των 7, 52, 16, 48, δίνει Η τελική μορφή είναι 8 17 12 14 25 28 1 2 6 16 48 52 7 17 3 8 28 48 1 2 6 7 12 14 16 52 53 55 68 25 26 29 45 Data Science & Engineering Lab

Data Science & Engineering Lab Διαγραφή από Β-δένδρο Όπως οι εισαγωγές κατευθύνονται στα φύλλα, και οι διαγραφές συμβαίνουν στα φύλλα. Διακρίνονται οι εξής περιπτώσεις Το υπό διαγραφή κλειδί βρίσκεται σε φύλλο και διαγραφόμενο αφήνει το φύλλο σε νόμιμη κατάσταση. Το υπό διαγραφή κλειδί βρίσκεται σε εσωτερικό κόμβο. Τότε η θέση του καταλαβάνεται από το αμέσως μεγαλύ-τερο/μικρότερο. Έτσι το πρόβλημα μεταφέρεται σε φύλλο. Αν το φύλλο μένει με λιγότερο περιεχόμενο, τότε Ελέγχεται αν μπορεί να δανείσει κάποιος γειτονικός κόμβος (key redistribution) Αν δεν μπορεί να δανίσει κάποιος γειτονικός κόμβος, τότε γίενται συγχώνευση κόμβων (node merging) Data Science & Engineering Lab

Data Science & Engineering Lab Παράδειγμα διαγραφής Από το Β-δένδρο τάξης 5 θα γίνουν διαδοχικά διαγραφές Διαγραφή 52 12 29 52 2 7 9 15 22 56 69 72 31 43 12 29 56 7 9 15 22 72 31 43 69 Data Science & Engineering Lab

Παράδειγμα διαγραφής (2) Διαγραφή 72 Διαγραφή 22 12 29 7 9 15 31 69 56 43 Data Science & Engineering Lab