Αλγόριθμοι και πολυπλοκότητα Bucket-Sort και Radix-Sort

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κοινωνία & Υγεία Υγεία Πρόληψη Προαγωγή υγείας: Βαθμίδες πρόληψης

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

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

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

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

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

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

Εισαγωγή στους Υπολογιστές

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

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

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

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

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

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

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

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

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

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

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

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

Τεχνολογία Πολιτισμικού Λογισμικού

Πολιτική (και) επικοινωνία

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Επεξεργασία Σημάτων. Άσκηση 3η. Στυλιανού Ιωάννης. Τμήμα Επιστήμης Υπολογιστών

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

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

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

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

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

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

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

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

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

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

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

Δυναμική και Έλεγχος E-L Ηλεκτρομηχανικών Συστημάτων

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

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

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

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Bucket-Sort και Radix-Sort Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών

Bucket-Sort και Radix-Sort 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 2 3 4 5 6 7 8 9 Bucket-Sort και Radix-Sort 1

Bucket-Sort Έστω S μια ακολουθία (key, element) αντικειμένων με κλειδιά στο διάστημα [0, N -1] Η Bucket-sort χρησιμοποιεί τα κλειδιά σαν δείκτες σε έναν βοηθητικό πίνακα B από ακολουθίες (buckets) Φάση 1: Άδειασμα ακολουθιών S μετακινώντας κάθε αντικείμενο (k, o) μέσα στο bucket του B[k] Φάση 2: Για i = 0,, N 1, μετακίνησε τα αντικείμενα του bucket B[i] στο τέλος της ακολουθίας S Ανάλυση: Ηφάση1 παίρνει χρόνο O(n) Ηφάση2 παίρνει χρόνο O(n + N) Η Bucket-sort παίρνει χρόνο O(n + N) Algorithm bucketsort(s, N) Input sequence S of (key, element) items with keys in the range [0, N 1] Output sequence S sorted by increasing keys B array of N empty sequences while S.isEmpty() f S.first() (k, o) S.remove(f) B[k].insertLast((k, o)) for i 0 to N 1 while B[i].isEmpty() f B[i].first() (k, o) B[i].remove(f) S.insertLast((k, o)) Bucket-Sort και Radix-Sort 2

Παράδειγμα Εύρος κλειδιών [0, 9] 7, d 1, c 3, a 7, g 3, b 7, e Φάση 1 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 2 3 4 5 6 7 8 9 Φάση 2 1, c 3, a 3, b 7, d 7, g 7, e Bucket-Sort και Radix-Sort 3

Ιδιότητες και Επεκτάσεις Key-type Ιδιότητα Τα κλειδιά χρησιμοποιούνται σαν δείκτες σε πίνακα και δεν μπορούν να είναι αυθαίρετα αντικείμενα Δεν υπάρχει εξωτερικός συγκριτής Stable Sort ιδιότητα Ησχετικήσειρά οποιωνδήποτε δύο αντικειμένων με το ίδιο κλειδί διατηρείται μετά την εκτέλεση του αλγορίθμου Επεκτάσεις Ακέραια κλειδιά στο διάστημα [a, b] Τοποθέτηση αντικειμένου (k, o) στο bucket B[k a] Τα κλειδιά συμβολοσειρών είναι από ένα σύνολο D πιθανών συμβολοσειρών, όπου D έχει σταθερό μεγεθός (π.χ., τα ονόματα των 50 πολιτειών των Η.Π.Α.) Ταξινόμησε το D και υπολόγισε την τάξη r(k) της κάθε συμβολοσειράς k του D στην ταξινομημένη ακολουθία Τοποθέτησε το αντικείμενο (k, o) μέσα στο bucket B[r(k)] Bucket-Sort και Radix-Sort 4

Λεξικογραφική διάταξη Ένα d-tuple είναι μια ακολουθία από d κλειδιά (k 1, k 2,, k d ), όπου το κλειδί k i είναι η i-τη διάσταση του tuple Παράδειγμα: Οι καρτεσιανές συντεταγμένες ενός σημείου είναι ένα 3-tuple Η λεξικογραφική διάταξη δύο d-tuples ορίζεται αναδρομικά ως εξής (x 1, x 2,, x d ) < (y 1, y 2,, y d ) x 1 < y 1 x 1 = y 1 (x 2,, x d ) < (y 2,, y d ) Π.χ., τα tuples συγκρίνονται πρώτα ως προς την πρώτη διάσταση, μετά ως προς την δεύτερη, κ.οκ. Bucket-Sort και Radix-Sort 5

Λεξικογραφική ταξινόμηση Έστω C i ένας συγκριτής ο οποίος συγκρίνει δύο tuples ως προς την i-τη διάσταση τους Έστω stablesort(s, C) είναι ένας σταθερός αλγόριθμος ταξινόμησης που χρησιμοποιεί τον συγκριτή C Η λεξικογραφική ταξινόμηση ταξινομεί μια ακολουθία d- tuples με λεξικογραφική σειρά εκτελώντας d φορές τον stablesort, μία φορά για κάθε διάσταση Η λεξικογραφική ταξινόμηση εκτελείται σε χρόνο O(dT(n)), όπου T(n) έιναι ο χρόνος εκτέλεσης του stablesort Algorithm lexicographicsort(s) Input sequence S of d-tuples Output sequence S sorted in lexicographic order for i d downto 1 stablesort(s, C i ) Παράδειγμα: (7,4,6) (5,1,5) (2,4,6) (2, 1, 4) (3, 2, 4) (2, 1, 4) (3, 2, 4) (5,1,5) (7,4,6) (2,4,6) (2, 1, 4) (5,1,5) (3, 2, 4) (7,4,6) (2,4,6) (2, 1, 4) (2,4,6) (3, 2, 4) (5,1,5) (7,4,6) Bucket-Sort και Radix-Sort 6

Radix-Sort ( 4.5.2) Η Radix-sort είναι μια άλλη έκδοση της λεξικογραφικής ταξινόμησης που χρησιμοποιεί bucketsort σαν το σταθερό αλγοριθμό σε κάθε διάσταση Η Radix-sort είναι εφαρμόσιμη σε tuples όπου τα κλειδιά σε κάθε διάσταση i είναι ακέραιοι στο διάστημα [0, N 1] Η Radix-sort εκτελείται σε χρόνο O(d( n + N)) Algorithm radixsort(s, N) Input sequence S of d-tuples such that (0,, 0) (x 1,, x d ) and (x 1,, x d ) (N 1,, N 1) for each tuple (x 1,, x d ) in S Output sequence S sorted in lexicographic order for i d downto 1 bucketsort(s, N) Bucket-Sort και Radix-Sort 7

Radix-Sort για δυαδικούς αριθμούς Θεωρείστε μια ακολουθία από nb-bit ακεραίους x = x b 1 x 1 x 0 Αναπαριστούμε κάθε στοιχείο σαν ένα b-tuple από ακεραίους στο διάστημα [0, 1] και εφαρμόζουμε radix-sort με N = 2 Αυτή η εφαρμογή του radixsort αλγορίθμου εκτελείται σε O(bn) χρόνο Για παράδειγμα, μπορούμε να ταξινομήσουμε μια ακολουθία από 32-bit ακεραίους σε γραμμικό χρόνο Algorithm binaryradixsort(s) Input sequence S of b-bit integers Output sequence S sorted replace each element x of S with the item (0, x) for i 0 to b 1 replace the key k of each item (k, x) of S with bit x i of x bucketsort(s, 2) Bucket-Sort και Radix-Sort 8

Παράδειγμα Ταξινόμηση μιας ακολουθίας ακεραίων 4-bit (τετράμπιτων) 1001 0010 1001 1001 0001 0010 1110 1101 0001 0010 1101 1001 0001 0010 1001 0001 1101 0010 1101 1101 1110 0001 1110 1110 1110 Bucket-Sort και Radix-Sort 9

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

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

Σημειώματα

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

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Κρήτης, Ιωάννης Τόλλης 2015. «Αλγόριθμοι και πολυπλοκότητα. Bucket-Sort και Radix-Sort». Έκδοση: 1.0. Ηράκλειο 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://opencourses.uoc.gr/courses/course/view.php?id=368

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