ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 7: Χωρικοί Χρονικοί Συμβιβασμοί. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Σχετικά έγγραφα
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Εισαγωγή στους Αλγορίθμους

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Διοικητική Λογιστική

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Μηχανολογικό Σχέδιο Ι

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 12: Αντιμετώπιση Περιορισμών Αλγοριθμικής Ισχύος

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Δομές Δεδομένων Ενότητα 1

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ιστορία της μετάφρασης

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Κβαντική Επεξεργασία Πληροφορίας

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διοίκηση Επιχειρήσεων

Διοικητική Λογιστική

Κβαντική Επεξεργασία Πληροφορίας

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 3: Ωμή Βία. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Βέλτιστος Έλεγχος Συστημάτων

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εκκλησιαστικό Δίκαιο

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

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Εκκλησιαστικό Δίκαιο

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Τεχνικό Σχέδιο - CAD

Διδακτική της Πληροφορικής

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

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

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

Μηχανολογικό Σχέδιο Ι

Ψηφιακή Επεξεργασία Εικόνων

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 8

Θεατρικές Εφαρμογές και Διδακτική της Φυσικής Ι

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

Μηχανολογικό Σχέδιο Ι

Βάσεις Δεδομένων. Ενότητα 1: Εισαγωγή στις Βάσεις δεδομένων. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

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

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εννοιες και Παράγοντες της Ψηφιακής Επεξεργασίας Εικόνας

ΗΛΕΚΤΡΟΝΙΚΗ IΙ Ενότητα 6

Μάρκετινγκ Αγροτικών Προϊόντων

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

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Διπλωματική Ιστορία Ενότητα 2η:

Γενικά Μαθηματικά Ι. Ενότητα 14: Ολοκλήρωση Κατά Παράγοντες, Ολοκλήρωση Ρητών Συναρτήσεων Λουκάς Βλάχος Τμήμα Φυσικής

Τεχνικό Σχέδιο - CAD

Γενικά Μαθηματικά Ι. Ενότητα 1: Συναρτήσεις και Γραφικές Παραστάσεις. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Κβαντική Επεξεργασία Πληροφορίας

Διδακτική των εικαστικών τεχνών Ενότητα 3

Γενικά Μαθηματικά Ι. Ενότητα 5: Παράγωγος Πεπλεγμένης Συνάρτησης, Κατασκευή Διαφορικής Εξίσωσης. Λουκάς Βλάχος Τμήμα Φυσικής

Ιστορία της μετάφρασης

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

Γενική Φυσική Ενότητα: Δυναμική Άκαμπτου Σώματος

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

Διδακτική Πληροφορικής

Διδακτική των εικαστικών τεχνών Ενότητα 2

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

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 7: Χωρικοί Χρονικοί Συμβιβασμοί Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής

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

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

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Χωρικοί Χρονικοί Συμβιβασμοί Ταξινόμηση με απαρίθμηση, Ταύτιση Προτύπου, Κατακερματισμός

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

Ταξινόμηση με απαρίθμηση (1) 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 Αποδοτικότητα 6

Ταξινόμηση με απαρίθμηση (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 Αποδοτικότητα 7

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

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

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

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

Πίνακας ολίσθησης (1) Δημιουργείται σαρώνοντας το πρότυπο πριν την αναζήτηση Όλες οι θέσεις αρχικοποιούνται με το μήκος του προτύπου Ενημερώνουμε τη θέση του χαρακτήρα 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 12

Πίνακας ολίσθησης (2) Παράδειγμα για το πρότυπο 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 13

Αλγόριθμος 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 14

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

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

Ολίσθηση «κακού» συμβόλου παράδειγμα Το κακό σύμβολο δεν βρίσκεται στο πρότυπο...ser... BARBER BARBER ολισθαίνουμε 4 θέσεις Το κακό σύμβολο βρίσκεται στο πρότυπο...aer... BARBER BARBER ολισθαίνουμε 2 θέσεις Η ολίσθηση αυτή δίνεται από: d=max[t1(c)-k,1], όπου το t1 είναι ο πίνακας του Horspool, k είναι η απόσταση του κακού συμβόλου από το τέλος του προτύπου 17

Ολίσθηση «καλού» επιθέματος παράδειγμα (1) Τι συμβαίνει αν το ταυτισμένο επίθεμα εμφανίζεται και πάλι στο πρότυπο (πχ. ABRACADABRA) Είναι σημαντικό να βρούμε ένα άλλο επίθεμα με διαφορετικό προηγούμενο χαρακτήρα. Η ολίσθηση ισούται με την απόσταση μεταξύ των δύο εμφανίσεων του επιθέματος Επίσης, είναι σημαντικό να βρούμε το μακρύτερο πρόθεμα μεγέθους l<k που να ταυτίζεται με το επίθεμα μήκους l. Η ολίσθηση ισούται με την απόσταση μεταξύ επιθέματος-προθέματος 18

Ολίσθηση «καλού» επιθέματος παράδειγμα (2) K pattern d2 K pattern d2 1 ABCBAB 2 1 BAOBAB 2 2 ABCBAB 4 2 BAOBAB 5 3 ABCBAB 4 3 BAOBAB 5 4 ABCBAB 4 4 BAOBAB 5 5 ABCBAB 4 5 BAOBAB 5 19

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

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

Συναρτήσεις Κατακερματισμού Πίνακας κατακερματισμού: ένας πίνακας με θέσεις που αντιστοιχούν σε buckets Συνάρτηση κατακερματισμού: δίνει το bucket για κάθε record Παράδειγμα: έστω ότι κλειδί είναι το SSN. Η συνάρτηση κατακερματισμού είναι: h(k) = k mod m (k είναι το κλειδί και m το πλήθος των buckets) αν m=1000, που αποθηκεύεται το record SSN= 315-17-4251 ; Οι συναρτήσεις κατακερματισμού πρέπει: να υπολογίζονται εύκολα να κατανέμουν τα κλειδιά ομοιόμορφα σε όλο τον πίνακα 22

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

Ανοικτός κατακερματισμός (1) Τα κλειδιά απόθηκεύονται σε λίστες έξω από τον πίνακα κατακερματισμού, που περιέχει μόνο τις κορυφές των λιστών. Παράδειγμα: 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 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 A AND MONEY FOOL HIS ARE PARTED SOON 24

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

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

Κλειστός κατακερματισμός (2) Δεν λειτουργεί αν n>m και αποφεύγει τους δείκτες Οι διαγραφές δεν είναι άμεσες Το πλήθος των συγκρίσεων για μια εισαγωγή/ αναζήτηση/ διαγραφή ενός κλειδιού εξαρτάται από το α (=πυκνότητα του πίνακα κατακερματισμού) επιτυχής αναζήτηση: (½) (1+ 1/(1- α)) ανεπιτυχής αναζήτηση : (½) (1+ 1/(1- α)²) καθώς γεμίζει ο πίνακας (α 1), το πλήθος των συγκρίσεων αυξάνει δραματικά α 50% 1.5 2.5 75% 2.5 8.5 90% 5.5 50.5 27

Σημείωμα Αναφοράς Copyright, Ιωάννης Μανωλόπουλος, Αναστάσιος Γούναρης. «.». Έκδοση: 1.0. Θεσσαλονίκη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.auth.gr/courses/ocrs417/

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο [1] http://creativecommons.org/licenses/by-nc-sa/4.0/

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: Ανδρέας Κοσματόπουλος Θεσσαλονίκη, Αύγουστος 2015

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.00.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.