Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1

Σχετικά έγγραφα
Ταξινόµηση. Παύλος Εφραιµίδης. οµές εδοµένων και

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

Ταξινόμηση. Σαλτογιάννη Αθανασία

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

a 1 a 2 a n. 3. i = j 1 5. A[i + 1] = A[i] 6. i = i 1

Προχωρημένες έννοιες προγραμματισμού σε C

Ταξινόμηση με συγχώνευση Merge Sort

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Αλγόριθμοι Ταξινόμησης Μέρος 2

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

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

Εργαστηριακή Άσκηση 1

Αλγόριθμοι ταξινόμησης

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

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Quicksort Κεφάλαιο 7. Ε. Μαρκάκης Επίκουρος Καθηγητής

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Σχεδίαση και Ανάλυση Αλγορίθμων

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Ταξινόμηση. 1. Ταξινόμηση του Shell. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

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

ιαφάνειες παρουσίασης #4

Ουρά Προτεραιότητας (priority queue)

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

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

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

1η Σειρά Γραπτών Ασκήσεων

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

Σχεδίαση και Ανάλυση Αλγορίθμων

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

ρυθιμός αύξησης συναρτήσεων

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

Πληροφορική 2. Αλγόριθμοι

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

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

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Θέματα Προγραμματισμού Η/Υ

int Α[] = {4, 16, 22, 12, 9, 15, 10}; { 4, 9, 10, 12, 15, 16, 22 } Α[0]=4, Α[1]=9, Α[2]=10 { 4, 16,22, 12, 9, 15, 10} { 4, 12, 16, 22, 9, 15,16, 22 }

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II

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

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

Ταχεία Ταξινόμηση Quick-Sort

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

Αλγόριθμοι Ταξινόμησης Μέρος 1

Εισαγωγή στον δομημένο προγραμματισμό

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

δυαδική αναζήτηση Παύλος Σ. Εφραιμίδης

Διαδικασιακός Προγραμματισμός

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

Αλγόριθµοι Ταξινόµησης

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

Αλγόριθμοι Ταξινόμησης Μέρος 4

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

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

Ταξινόμηση. 1. Γρήγορη ταξινόμηση 2. Ταξινόμηση με Συγχώνευση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

Transcript:

Ταξινόμηση Παύλος Εφραιμίδης Δομές Δεδομένων Ταξινόμηση 1

Το πρόβλημα της ταξινόμησης Δομές Δεδομένων Ταξινόμηση 2

Ταξινόμηση Δίνεται πολυ-σύνολο Σ με στοιχεία από κάποιο σύμπαν U (πχ. U = το σύνολο των ακεραίων αριθμών). Ταξινόμηση του Σ είναι η επιβολή μιας διάταξης στα στοιχεία του συνόλου Σ. Ένας αλγόριθμος ταξινόμησης δέχεται ως είσοδο ένα πολυ-σύνολο Σ και με βάση μια δεδομένη σχέση διάταξης δίνει στην έξοδο τα στοιχεία του Σ διατεταγμένα. Δομές Δεδομένων Ταξινόμηση 3

Αλγόριθμοι ταξινόμησης Φυσαλιδωτή ταξινόμηση (Bubble sort) Ενθετική ταξινόμηση (Insertion sort) Ταχυταξινόμηση (Quicksort) Συγχωνευτική ταξινόμηση (Merge sort) Δομές Δεδομένων Ταξινόμηση 4

Φυσαλιδωτή Ταξινόμηση (Bubble sort) Ένας απλός και ιδιαίτερα διαδεδομένος αλγόριθμος ταξινόμησης Βασική αρχή του αλγορίθμου: Σαρώνει τη λίστα των αριθμών εναλλάσσοντας παρακείμενα στοιχεία που είναι εκτός διάταξης Μετά από ένα αριθμό σαρώσεων η λίστα θα ταξινομηθεί Δομές Δεδομένων Ταξινόμηση 5

Ψευδοκώδικας 1. for (int i = 0; i < A.length; i++ ) { 2. for (int j = A.length - 1; j > i; j-- ) { 3. if (A[j] < A[j-1]) { 4. ανταλλαγή (swap) A[j-1], A[j] 5. } 6. } 7. } Δομές Δεδομένων Ταξινόμηση 6

Πολυπλοκότητα Πολυπλοκότητα χειρότερης περίπτωσης για πίνακα με n στοιχεία Στο 1o πέρασμα θα χρειαστούν n-1 συγκρίσεις Στο 2 ο πέρασμα n-2 συγκρίσεις Στο n-1 πέρασμα, 1 σύγκριση Σύνολο: 1 2 ( n -1) ( n - 2)... 1 n( n 1) O( n ) 2 Δομές Δεδομένων Ταξινόμηση 7

Ταξινόμηση Σέικερ (Shaker sort) Παραλλαγή της ταξινόμησης φυσαλίδων Βασική αρχή του αλγορίθμου: Η shaker sort είναι μια απλά παραλλαγή της ταξινόμησης φυσαλίδων (bubble sort) στην οποία η σάρωση του πίνακα γίνεται εναλλάξ από την αρχή προς το τέλος και από το τέλος προς την αρχή Ποια η πολυπλοκότητα χειρότερης περίπτωσης; Δομές Δεδομένων Ταξινόμηση 8

Βασική αρχή: Ενθετική ταξινόμηση (Insertion sort) Επιλέγει ένα-ένα τα στοιχεία της μηταξινομημένης ακολουθίας και τα εισαγάγει σε μια ταξινομημένη λίστα Δομές Δεδομένων Ταξινόμηση 9

Ψευδοκώδικας 1. for (int j = 2; j < A.length; j++ ) { 2. κλειδί = Α[j]; 3. // Ενθέτουμε το A[j] στην ταξινομημένη // ακολουθία Α[1..j-1] 4. i = j 1; 5. while (i > 0 && A[i] > κλειδί) { 6. A[i+1]=A[i]; 7. i--; 8. } 9. A[i+1] = κλειδί 10.} Δομές Δεδομένων Ταξινόμηση 10

Πολυπλοκότητα Η πολυπλοκότητα χειρότερης περίπτωσης είναι O(n 2 ) Δομές Δεδομένων Ταξινόμηση 11

Συγχωνευτική ταξινόμηση (Merge sort) Βασική αρχή: Για να ταξινομήσουμε τα στοιχεία ενός μιας ακολουθίας Διαίρει: Χωρίζουμε την ακολουθία σε δύο ίσου (ή σχεδόν ίσου) μεγέθους τμήματα Κυρίευε: Εφαρμόζουμε αναδρομικά τη συγχωνευτική ταξινόμηση σε κάθε ένα από τα τμήματα Συνδύασε: Όταν τα δύο τμήματα έχουν ταξινομηθεί, τα συγχωνεύουμε (merge) σε μία ενιαία ταξινομημένη ακολουθία Δομές Δεδομένων Ταξινόμηση 12

Παράδειγμα MergeSort 10 11 13 7 8 9 10 2 10 11 13 7 8 9 10 2 10 11 13 7 8 9 10 2 3 10 11 7 13 1 7 2 4 8 10 5 9 8 9 11 2 10 βήμα 6 12 7 10 11 13 2 8 9 10 13 2 7 8 9 10 10 11 13 Δομές Δεδομένων Ταξινόμηση 13

Ψευδοκώδικας 1. mergesort (A, p, r) { 2. if (p < r) { 3. q = (p+r)/2 4. mergesort(a, p, q); 5. mergesort(a, q+1, r); 6. merge(a, p, q, r); 7. } 8. } Δομές Δεδομένων Ταξινόμηση 14

Πολυπλοκότητα Διαίσθηση: Για n στοιχεία θα έχουμε logn+1 επίπεδα διαιρέσεων Σε κάθε επίπεδο το κόστος είναι της τάξης του n Σύνολο; Δομές Δεδομένων Ταξινόμηση 15

συγχωνευτική ταξινόμηση αναδρομική σχέση για το χρόνο εκτέλεσης: λύση: Tn ( ) (1),εάν n 1 2 T( n / 2) ( n),εάν n 1 T(n)=Θ(n lgn) 16 Δομές Δεδομένων Ταξινόμηση

Ταχυταξινόμηση (Quicksort) Βασική αρχή: Σε κάθε βήμα του αλγορίθμου επιλέγεται ένα τυχαίο στοιχείο A[q] του πίνακα Α, Διαίρει: τα στοιχεία του Α χωρίζονται σε αυτά που είναι μικρότερα από το Α[q] και σε αυτά που είναι μεγαλύτερα από το A[q] Κυρίευε: Εφαρμόζεται αναδρομικά η ίδια διαδικασία σε κάθε ένα από τα τμήματα του Α που προέκυψαν Συνδύασε: Δεν απαιτεί καμία ενέργεια Δομές Δεδομένων Ταξινόμηση 17

Ψευδοκώδικας Ταχυταξινόμησης 1.quickSort(Α, p, r) { 2. if (p < r) { 3. q = Διαμέριση(A, p, r); 4. quicksort(a, p, q-1); 5. quicksort(a, q+1, r); 6. } 7.} Δομές Δεδομένων Ταξινόμηση 18

Πολυπλοκότητα Χειρότερη περίπτωση: O(n 2 ) Ιδανική Περίπτωση: Ο(nlogn) Μέση/Αναμενόμενη περίπτωση: Ο(nlogn), όπου ο συμβολισμός O(nlogn) κρύβει μια σταθερά λίγο μεγαλύτερη από ότι στην ιδανική περίπτωση Δομές Δεδομένων Ταξινόμηση 19

Κάτω όριο (lower bound) Ταξινόμηση με συγκρίσεις επιτρέπεται μόνο η σύγκριση στοιχείων Υπάρχει κάποιο κάτω όριο για την πολυπλοκότητα χρόνου της ταξινόμησης με συγκρίσεις Δομές Δεδομένων Ταξινόμηση 20

Κάτω όριο (lower bound) Έστω n διαφορετικά στοιχεία Πιθανές διατάξεις: n! Μία από αυτές είναι η σωστή Δυαδικό δέντρο με τουλάχιστον n! φύλλα τι βάθος έχει; Δομές Δεδομένων Ταξινόμηση 21

Πηγές/Αναφορές Εισαγωγή στους αλγορίθμους, Κεφάλαια 2, 3 και 7 Δομές Δεδομένων, Π. Μποζάνης, Κεφάλαια 3, 4 Αλγόριθμοι και Δομές Δεδομένων, N. Wirth, Κεφάλαιο 2 Δομές Δεδομένων Ταξινόμηση 22