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

Σχετικά έγγραφα
Αλγόριθμοι και πολυπλοκότητα Bucket-Sort και Radix-Sort

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στατιστική. 6 ο Μάθημα: Διαστήματα Εμπιστοσύνης και Έλεγχοι Υποθέσεων. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

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

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

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

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

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

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

Προσχολική Παιδαγωγική Ενότητα 2: Οργάνωση χρόνου και χώρου στα νηπιαγωγεία

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

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

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

Οικονομική Γεωργικών Εκμεταλλεύσεων

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

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

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

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

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

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

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

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

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

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

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

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

Εκπαιδευτική Διαδικασία και Μάθηση στο Νηπιαγωγείο Ενότητα 1: Εισαγωγή

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

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

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

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

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

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

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

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

Στατιστική. 5 ο Μάθημα: Βασικές Έννοιες Εκτιμητικής. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

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

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

Αγροτικός Τουρισμός. Ενότητα 9 η : Εκπαιδευτικές τεχνικές στον τουρισμό. Όλγα Ιακωβίδου Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

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

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

Τίτλος Μαθήματος: Εργαστήριο Φυσικής Ι

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

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

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1ο Μέρος)

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

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

Ασφάλεια Πληροφοριακών Συστημάτων

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 2: Εφαρμογές Δικτυωτής Ανάλυσης (1 ο Μέρος)

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

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

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

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

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

Transcript:

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

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

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

Radish-Sort 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 2 3 4 5 6 7 8 9 Radish-Sort 4

Κύρια σημεία για μελέτη Bucket-sort ( 4.5.1) Lexicographic order ( 4.5.2) Lexicographic-sort ( 4.5.2) Radish-sort ( 4.5.2) Radicchio-sort ( 4.5.2) Radiator-sort ( 4.5.2) Radish-Sort 5

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)) Radish-Sort 6

Παράδειγμα Εύρος κλειδιών [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 Radish-Sort 7

Ιδιότητες και επεκτάσεις 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)] Radish-Sort 8

Lexicographic Order Ένα 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 συγκρίνονται πρώτα ως προς την πρώτη διάσταση,μετά ως προς την δεύτερη, κ.ο.κ. Radish-Sort 9

Lexicographic-Sort Έστω C i ένας συγκριτής ο οποίος συγκρίνει δύο tuples ως προς την i-th διάσταση τους Έστω stablesort(s, C) είναι ένας σταθερός αλγόριθμος ταξινόμησης που χρησιμοποιεί τον συγκριτή C H λεξικογραφική ταξινόμηση ταξινομεί μια ακολουθία d-tuples με λεξικογραφική σειρά εκτελώντας d φορές τον αλγόριθμο 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) εκτελείται σε χρόνο O(dT(n)), όπου T(n) είναι ο χρόνος (2, 1, 4) (2,4,6) (3, 2, 4) (5,1,5) (7,4,6) εκτέλεσης του stablesort Radish-Sort 10

Radish-Sort Η Radish-sort είναι μια άλλη εκδοχή της λεξικογραφικής ταξινόμησης που χρησιμοποιεί bucket-sort σαν τον σταθερό αλγόριθμο ταξινόμησης σε κάθε διάσταση H Radish-sort είναι εφαρμόσιμη σε tuples όπου τα κλειδιά σε κάθε διάσταση i είναι ακέραιοι στο διάστημα [0, N - 1] Η Radish-sort εκτελείται σε χρόνο O(d( n + N)) Algorithm radishsort(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) Radish-Sort 11

Radicchio-Sort Θεωρείστε μια ακολουθία από n b- bit ακέραιους x = x b - 1 x 1 x 0 Αναπαριστούμε κάθε στοιχείο σαν ένα b-tuple από ακέραιους στο διάστημα [0, 1] και εφαρμόζουμε radish sort με N = 2 Αυτός ο αλγόριθμος ονομάζεται radicchio-sort και εκτελείται σε χρόνο O(bn) Με τον radicchio-sort, μπορούμε να ταξινομήσουμε μια ακολουθία από Java ακέραιους (32-bits) σε γραμμικό χρόνο Algorithm radicchiosort(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) Radish-Sort 12

Παράδειγμα Ταξινόμηση μιας ακολουθίας τετράμπιτων ακεραίων 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 Radish-Sort 13

Επεκτάσεις Radiator-sort Τα κλειδιά είναι ακέραιοι στο διάστημα [0, N 2-1] Αναπαριστούμε ένα κλειδί ως μια 2-tuple ψηφίων στο διάστημα [0, N - 1] και εφαρμόζουμε τον radish-sort Παράδειγμα (N = 10): 75 (7, 5) Παράδειγμα (N = 8): 35 (4, 3) Ο χρόνος εκτέλεσης του radiator-sort είναι O( n + N) Μπορεί να επεκταθεί σε ακέραια κλειδιά στο διάστημα [0, N d - 1] Radiation-sort Τα κλειδιά είναι συμβολοσειρές των d χαρακτήρων το καθένα Αναπαριστούμε κάθε κλειδί με ένα d-tuple από ακέραιους, όπου είναι η ASCII (8-bit integer) ή η Unicode (16-bit integer) αναπαράσταση του i-ου χαρακτήρα και εφαρμόζουμε radish sort Rant-sort Δες στο βιβλίο Radish-Sort 14

Συμπεράσματα Radish-Sort 15

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