Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Διδάσκων: Δρ. Τσίντζα Παναγιώτα
2
ΤΑΞΙΝΟΜΗΣΗ
3
Το πρόβλημα της ταξινόμησης
2 βασικές κατηγορίες μεθόδων ταξινόμησης ,όπως και στην αναζήτηση, ανάλογα με την τοποθεσία αποθήκευσης των δεδομένων Εσωτερική ταξινόμηση (Internal Sorting). Στην περίπτωση αυτή τα στοιχεία της δομής δεδομένων τα οποία καλείται ο αλγόριθμος ταξινόμησης να διατάξει είναι αποθηκευμένα στην κεντρική μνήμη. Εξωτερική ταξινόμηση (External Sorting). Στην περίπτωση αυτή τα στοιχεία της δομής δεδομένων τα οποία καλείται ο αλγόριθμος ταξινόμησης να διατάξει είναι αποθηκευμένα στην δευτερεύουσα μνήμη.
4
Αλγόριθμοι εσωτερικής ταξινόμησης
5
Μέθοδοι ταξινόμησης Δύο κατηγορίες αλγορίθμων ταξινόμησης:
Αλγόριθμοι που παράγουν έξοδο, με συγκρίσεις μεταξύ των στοιχείων του πίνακα (ονομάζονται βασιζόμενοι σε συγκρίσεις-comparison based). Ταξινόμησης Φυσαλίδας (Bubble Sort), Ταξινόμηση με Εισαγωγή (Insertion Sort), Ταξινόμηση με Επιλογή (Selection Sort), Ταξινόμηση Σωρού (Heap Sort), Ταξινόμηση με Συγχώνευση (Merge Sort) και Γρήγορη Ταξινόμηση (Quick Sort). Αλγόριθμοι οι οποίοι χρησιμοποιούν κάποια πληροφορία για την είσοδο, ώστε να επιτύχουν καλύτερους χρόνους. Ταξινόμηση με Μέτρηση (Counting Sort), και Radix Sort.
6
Ταξινόμηση με σύγκριση
Ταξινόμησης Φυσαλίδας (Bubble Sort), Ταξινόμηση με Εισαγωγή (Insertion Sort), Ταξινόμηση με Επιλογή (Selection Sort), Ταξινόμηση Σωρού (Heap Sort), Ταξινόμηση με Συγχώνευση (Merge Sort) και Γρήγορη Ταξινόμηση (Quick Sort).
7
Βασική ιδέα του αλγόριθμου Ταξινόμησης φυσαλίδας (Bubble sort)
Εξετάζονται όλα τα στοιχεία του πίνακα ξεκινώντας από το πρώτο. Εξετάζονται όλα τα διαδοχικά ζεύγη S[i] και S[i+1]. Εφόσον S[i] > S[i+1] γίνεται εναλλαγή τους. Η διαδικασία αυτή γίνεται για όλα τα στοιχεία του πίνακα και τόσες διαφορετικές διαπεράσεις μέχρι να ταξινομηθούν τα στοιχεία. Κάθε i διαπέραση ξεκινά από το i στοιχείο του πίνακα αφού τα προηγούμενα i στοιχεία του είναι ήδη ταξινομημένα.
8
Γενικά βήματα αλγόριθμου
Πρώτη διαπέραση Σύγκρινε το τελευταίο στοιχείο του πίνακα με το προηγούμενο. Αν το προηγούμενο είναι μικρότερο διατηρούμε την σειρά αν όχι αντιμεταθέτουμε τα 2 στοιχεία και συνέχιζουμε την ίδια διαδικασία μέχρι το πρώτο στοιχείο του πίνακα. Στο τέλος το μικρότερο στοιχείο του πίνακα είναι αποθευμένο στην πρώτη θέση (S[1]). Δεύτερη διαπέραση επανάληψη της πρώτης όχι όμως στο σύνολο του πίνακα αλλά στα n-1 στοιχεία του (εκτός του S[1] θεωρούμε διάταξη από το δεύτερο) αφού το στοιχείο αυτό είναι διατεταγμένο. Τρίτη Διαπέραση επανάληψη της δεύτερης αλλά μόνο στα n-2 στοιχεία του (εκτός του S[1] και S[2]) αφού τα πρώτα 2 στοιχεία του πίνακα είναι διατεταγμένα. i-στη Διαπέραση είναι διατεταγμένα τα i πρώτα στοιχεία του πίνακα (S[1] έως S[i]) επομένως οι συγκρίσεις εκτελούνται στα υπόλοιπα n-I στοιχεία του πίνακα.
9
Αλγόριθμος Bubble Sort
Αλγόριθμος Bubble sort Είσοδος (S, n) Για i από 2 μέχρι n Για j από n μέχρι I με βήμα -1 Αν S[j-1] > S[j] τότε Αντιμετάθεσε S[j-1] , S[j] Τέλος Αν Τέλος Επανάληψης Αποτελέσματα (S[1:n]) Τέλος Bubble sort Πολυπλοκότητα T(n) = (n-1) + (n-2) +…+ 1=(n-1) (n-2) / 2 = O(n^2).
10
Παράδειγμα Bubble sort -1
Είσοδος : 5, 4, 2, 8, 9, 1, 6, 7 1η επανάληψη 1, 5, 4, 2, 8, 9, 6, 7 2η επανάληψη 1, 2, 5, 4, 6, 8, 9, 7 3η επανάληψη 1, 2, 4, 5, 6, 7, 8, 9
11
Παράδειγμα Bubble sort -2
Είσοδος : 1η επανάληψη 2η επανάληψη 3η επανάληψη 4η επανάληψη 5η επανάληψη 6η επανάληψη 7η επανάληψη
12
Βασική ιδέα του αλγόριθμου Ταξινόμησης με εισαγωγή
Σε κάθε ένα πέρασμα ταξινομείται και το στοιχείο που εξετάζεται. n περάσματα όσα και τα στοιχεία του πίνακα. Έστω τα πρώτα i στοιχεία του πίνακα έχουν ταξινομηθεί και εξετάζουμε το S[i+1]. Έχουμε τότε τα στοιχεία S[1,..,i+1] από τα οποία τα S[1,…,i] είναι ταξινομημένα. Θα συγκρίνουμε το στοιχείο S[i+1] με όλα τα προηγούμενα και θα το τοποθετήσουμε στην σωστή θέση μετακινώντας όλα τα υπόλοιπα δεξιά κατά μία θέση επιπλέον (δεξιά). Έτσι τα στοιχεία S[1,..,i+1] είναι ταξινομημένα και εξετάζουμε το επόμενο στοιχείο S[i+2]. Η διαδικασία επαναλαμβάνεται για όλα τα στοιχεία του πίνακα.
13
Παράδειγμα insertion sort
Ο αλγόριθμος εξετάζει τα στοιχεία και βρίσκει το πρώτο αταξινόμητο 3. θα ταξινομήσει τον υποπίνακα S=[2,7,3]. Θα βρει την θέση του 3. Θα εξετάσει το S[2]=7 με το S[3]=3 και θα μετακινήσει το S[2]=7 στην θέση S[3]. Στη συνέχεια θα γίνει σύγκριση του 4 με το S[1]=2. Άρα S[2]=3 και ο πίνακας γίνεται: S=[2,3,7]. Εξετάζουμε και το S[4]=9 με το τελευταίο στοιχείο του ταξινομημένου πίνακα S[3]=7. Αφού S[4]>S[3] άρα δεν χρειάζεται περαιτέρω ταξινόμηση.
14
Βασική ιδέα του αλγόριθμου Ταξινόμησης με Επιλογή (Selection Sort)
Σε κάθε γενικό πέρασμα i εξετάζονται όλα τα στοιχεία του πίνακα και επιλέγεται το i-στο μικρότερο στοιχείο. Στο πρώτο πέρασμα επιλέγεται το μικρότερο στοιχείο από τα n στοιχεία του πίνακα, στο δεύτερο πέρασμα επιλέγεται το αμέσως μικρότερο στοιχείο κ.ο.κ.. Θα γίνουν επομένως n περάσματα όσα και τα στοιχεία του πίνακα. Έστω τα πρώτα i στοιχεία του πίνακα έχουν ταξινομηθεί και εξετάζουμε τα υπόλοιπα S[i+1,…n]. Θα συγκρίνουμε το στοιχείο S[i+1] με όλα τα επόμενα στοιχεία, αν υπάρχει κάποιο μικρότερο κρατούμε εκείνο και συνεχίζουμε την σύγκριση μέχρι να εξετάσουμε όλα τα στοιχεία του πίνακα και να βρούμε το μικρότερο από τα S[i+1,…n]. Έτσι τα στοιχεία S[1,..,i+1] είναι ταξινομημένα ενώ στη συνέχεια ψάχνουμε, με το επόμενο πέρασμα, να βρούμε το i+2 μεγαλύτερο στοιχείο. Η διαδικασία επαναλαμβάνεται για όλα τα στοιχεία του πίνακα. Πολυπλοκότητα: ½ (n^2 – n) συγκρίσεις
15
Παράδειγμα Selection sort
Στο πρώτο πέρασμα συγκρίνουμε το S[1]=6 με το S[2]=5. To S[2]>S[1], κρατούμε το S[2]=5 και συνεχίζουμε συγκρίνοντας το με το επόμενο στοιχείο του πίνακα που είναι το S[3]=4. To S[3]>S[2], κρατούμε το S[3]=4 και συνεχίζουμε συγκρίνοντας το με το επόμενο στοιχείο του πίνακα που είναι το S[4]=7. To S[4]>S[3] άρα το S[3] είναι το μικρότερο στοιχείο του πίνακα και κάνουμε την αντιμετάθεση του S[1] με το S[3]. Συνεχίζουμε την ίδια διαδικασία με τα υπόλοιπα n-1 στοιχεία S[5,6,7] κ.ο.κ.
16
9, 6, 4, 20, 12, 7 4,6 ,9, 20, 12, 7 4,6,7,20,12,9 4,6,7,9,12,20
17
Βασική ιδέα του αλγόριθμου Ταξινόμησης Σωρού (Heap Sort)
Βήμα 1 : Γίνεται επιλογή του μεγαλύτερου στοιχείου m από τα στοιχεία του πίνακα S. Αφαιρείται το στοιχείο από τον πίνακα S και τοποθετείται ως το μεγαλύτερο στοιχείο σε ένα πίνακα έστω Χ. Βήμα 2: Οργανώνεται το σύνολο S’=S-{m} ώστε η εύρεση του μεγαλύτερου στοιχείου του S’ να είναι βέλτιστη (μία προσπέλαση στον πίνακα). Βήμα 3: Τίθεται το S’=S και επαναλαμβάνετε το βήμα 1.
18
Σχετικά με το 2ο βήμα Τα στοιχεία οργανώνονται σε μία δομή που καλείται ισοζυγισμένος δυαδικός σωρός (Balanced Binary Heap). Η δομή αυτή είναι ένα δυαδικό δένδρο με τις παρακάτω ιδιότητες: Κάθε κόμβος u περιέχει μία τιμή από το σύνολο S (κομβοπροσανατολιζόμενο δένδρο). Ισχύει η συνθήκη : τιμή(πατέρα(u)) >= τιμή(u) Κάθε κόμβος έχει 0 ή 2 παιδιά με πιθανή εξαίρεση ενός κόμβου, ενώ παράλληλα ισχύει: Όλα τα φύλλα έχουν βάθος k ή k+1 Όλα τα φύλλα με βάθος k+1 είναι στοιχισμένα στα αριστερά. Από την δεύτερη ιδιότητα συνεπάγεται ότι η μεγαλύτερη τιμή που είναι αποθηκευμένη στους κόμβους βρίσκεται στη ρίζα. Ο δυαδικός ισοζυγισμένος σωρός μπορεί να αναπαρασταθεί με έναν πίνακα. Η φάση δόμησης απαιτεί συνολικό χρόνο O(n) ενώ η φάση διαλογής O(nlogn). Επομένως ο συνολικός χρόνος εκτέλεσης του αλγορίθμου είναι O(nlogn) συγκρίσεις στη χειρότερη περίπτωση για την ταξινόμηση πλήθους n στοιχείων.
19
Πολυπλοκότητα αλγόριθμου
Όπως πάντα ο χρόνος της χειρότερης περίπτωσης στην αναζήτηση παρεμβολής υπολογίζεται όταν δεν υπάρχει το στοιχείο που αναζητούμε στην δομή μας (ή είναι το τελευταίο που εξετάζεται). Στην χειρότερη περίπτωση θα απαιτήσει O(n) συγκρίσεις. Στην γενική περίπτωση, ο μέσος χρόνος είναι : O(loglogn). Η αναζήτηση παρεμβολής σε σύγκριση με την δυαδική μέθοδο φαίνεται να υπερισχύει. Με βάση πειραματικά αποτελέσματα, αποδεικνύεται όμως ότι είναι προτιμότερο τα πρώτα βήματα να εκτελούνται με αναζήτηση παρεμβολής, έτσι ώστε το διάστημα να μειώνεται δραματικά, και στη συνέχεια να εκτελείται δυική αναζήτηση.
20
Ψευδοκώδικας Heapify(A,i)- αποκατάσταση ιδιότητας σωρού
χρόνος: O(lg n), T(n)≤T(2n/3)+Θ(1)
21
Κατασκευή σωρού και αποκατάσταση ιδιότητας
22
Παράδειγμα δημιουργίας και αποκατάσταση ιδιότητα Heap-1
23
Ψευδοκώδικας Heapsort
24
Βασική ιδέα του αλγόριθμου Ταξινόμησης με Συγχώνευση (Merge Sort)
Αλγόριθμος με πολύ καλή απόδοση Η κεντρική ιδέα συνοψίζεται στην εκτέλεση 3 βημάτων: Βήμα 1 : Χώρισε το σύνολο στοιχείων εισόδου σε δύο τμήματα ίσου μεγέθους. Βήμα 2: Ταξινόμησε τα στοιχεία των δύο τμημάτων ανεξάρτητα μεταξύ τους. Βήμα 3: Παρήγαγε το τελικό σύνολο ταξινομημένων στοιχείων από τα δύο διακριτά τμήματα των οποίων τα στοιχεία έχουν ταξινομηθεί στο βήμα 2.
25
Πολυπλοκότητα αλγόριθμου
Ο αλγόριθμος ταξινόμησης με συμβολή είναι ένας αναδρομικός αλγόριθμος. Οι αναδρομικές κλήσεις σταματούν όταν ο διαχωρισμός του βήματος 1 δώσει υποπίνακες μεγέθους 1 οπότε θεωρούνται ταξινομημένοι και αρχίζει αναδρομικά η διαδικασία της συγχώνευσης. Σε κάθε βήμα, διαιρείται το μέγεθος του προβλήματος κατά δύο θα εκτελέσουμε το πολύ k = [logn] + 1 βήματα συνολικά. Σε κάθε βήμα εκτελούνται O(n) συγκρίσεις Ο αλγόριθμος Ταξινόμησης με Συγχώνευση, ταξινομεί μία ακολουθία μήκους n με το πολύ n(logn) – 2logn + 1 συγκρίσεις.
26
Παράδειγμα Merge sort
27
Βασική ιδέα του αλγόριθμου Γρήγορης Ταξινόμησης (Quick Sort)
Από τους γρηγορότερους αλγορίθμους Προκύπτει με την εφαρμογή της τεχνικής Διαίρε και Βασίλευε Λαμβάνεται ένα τυχαίο στοιχείο (pivot) του πίνακα S, έστω X το οποίο διαχωρίζει τον πίνακα σε δύο υποπίνακες έστω τον αριστερό και δεξιό. Σαρώνονται οι δύο υποπίνακες, ψάχνοντας τον αριστερό για ένα στοιχείο που να είναι μεγαλύτερο του X ενώ τον δεξιό για ένα στοιχείο που να είναι μικρότερο του X. Αντιμεταθέτουμε τα στοιχεία αυτά στους δύο υποπίνακες. Ακολουθούμε τη διαδικασία αυτή μέχρι το τέλος όλα τα στοιχεία του αριστερού υποπίνακα να έχουν τιμή μικρότερη του X και όλα τα στοιχεία του δεξιού υποπίνακα να έχουν τιμή μεγαλύτερη του X. Κάθε υποπίνακας χωρίζεται ομοίως με το μεσαίο τους στοιχείο σε άλλους δύο υποπίνακες, αριστερό και δεξιό και ακολουθείται η ίδια διαδικασία. Τα βήματα αυτά συνεχίζονται μέχρι το τέλος να φτάσουμε σε υποπίνακες με μόνο ένα στοιχείο. Ουσιαστικά γίνεται συνεχώς η διαμέριση και στη συνέχεια αναδρομικά εκτελείται η αντιμεταθετικότητα.
28
Παραλλαγές Πολλές παραλλαγές υλοποίησης του αλγόριθμου Γρήγορης Ταξινόμησης. Ο αλγόριθμος θα μπορούσε να εκτελεστεί ως εξής: Επιλέγουμε έστω το πρώτο στοιχείο του πίνακα ως στοιχείο διαχωρισμού. Ορίζουμε δύο δείκτες i και j όπου ο i διατρέχει τον πίνακα από τα αριστερά και σταματά όταν S[i]>S[1]. Όμοια ο j διατρέχει τον πίνακα από τα δεξιά και σταματά όταν S[j]<S[1]. Τότε εναλλάσσουμε τα στοιχεία μεταξύ τους. Συνεχίζουμε την σάρωση μέχρι το j να γίνει μεγαλύτερο του i. Τότε αρκεί να γίνει εναλλαγή του S[j] με το S[1] ώστε να διαχωριστεί ο πίνακας σε δύο υποπίνακες αριστερά και δεξιά από το στοιχείο S[1]. Αριστερά θα περιέχονται μόνο μικρότεροι του αριθμοί ενώ δεξιά μεγαλύτεροι του.
29
Πολυπλοκότητα αλγόριθμου
Η καλή απόδοση του αλγορίθμου βασίζεται στην κατάλληλη επιλογή του στοιχείου διαχωρισμού. Γνώση της κατανομής των στοιχείων. Αποδεικνύεται ότι ο μέσος αριθμός συγκρίσεων είναι O(nlogn) ενώ στη χειρότερη περίπτωση ο αριθμός των συγκρίσεων είναι O(n^2).
30
Παράδειγμα Quick sort
31
Αλγόριθμοι με πληροφορία για την είσοδο
32
Βασική ιδέα του αλγόριθμου Ταξινόμησης με Μέτρηση (Counting Sort)
Αλγόριθμος που χρησιμοποιεί κάποια πληροφορία για την είσοδο, με σκοπό να προκύψουν καλύτεροι χρόνοι. Επιπλέον αρχική πληροφορία ένας ακέραιος x Ο αλγόριθμος ταξινόμησης με Μέτρηση μετρά πόσοι αριθμοί είναι μικρότεροι από το δοσμένο ακέραιο, έστω x, ώστε να προσδιορίσει τη θέση του x στον ταξινομημένο πίνακα.
33
Είσοδος n ακέραιοι από ένα σύνολο [1..k]
Βασική ιδέα: αποφάσισε για κάθε στοιχείο x της εισόδου τον αριθμό των στοιχείων τα οποία είναι <=x Χρησιμοποιεί 3 πίνακες Α[1..n] τα στοιχεία στην είσοδο Β[1..n] τα στοιχεία που πρέπει να δοθούν στην έξοδο C[1..k] περιέχει τον αριθμό των στοιχείων που είναι μικρότερα από το x
35
Βασική ιδέα του αλγόριθμου Radix Sort
Χρησιμοποιείται και αυτός σε περίπτωση που γνωρίζουμε συγκεκριμένες πληροφορίες για την μορφή εισόδου μας (δεκαδικοί, πραγματικοί, λέξεις κ.ο.κ.). Στην περίπτωση ταξινόμησης δεκαδικών αριθμών: δημιουργούμε δέκα κάδους (όσα και τα στοιχεία του δεκαδικού συστήματος) και διαβάζουμε τα ψηφία των αριθμών της εισόδου από αριστερά προς τα δεξιά. Όσοι αρχίζουν π.χ. από 3 τοποθετούνται στον τρίτο κάδο κ.ο.κ. Στη συνέχεια χωρίζουμε κάθε κάδο σε 10 υποκάδους και ακολουθούμε την ίδια διαδικασία για το δεύτερο ψηφίο. Ο αλγόριθμος είναι αναδρομικός ενώ είναι μη αποδοτικός τόσο ως προς τον χρόνο όσο και προς τον χώρο για να ταξινομήσει n αριθμούς με d ψηφία, όπου για κάθε ένα ψηφίο υπάρχουν k επιλογές απαιτεί Ω(ndk).
36
Αλγόριθμος εξωτερικής ταξινόμησης
37
Βασική ιδέα αλγόριθμου Εξωτερικής Ταξινόμησης (External Sorting)
Τα στοιχεία της δομής δεδομένων τα οποία καλείται ο αλγόριθμος ταξινόμησης να διατάξει είναι αποθηκευμένα στην δευτερεύουσα μνήμη. Αποθήκευση που χρησιμοποιείται στην περίπτωση που το μέγεθος της κεντρικής μνήμης είναι μικρό σε σχέση με το σύνολο των στοιχείων που απαιτείται να διαταχθούν. Για το λόγω αυτό υποθέτουμε ότι η κύρια μνήμη έχει μέγεθος M όπου n>>M, ενώ χρησιμοποιούνται και 2 p μαγνητικές ταινίες (δευτερεύουσα μνήμη) εναλλάξ, p για είσοδο και p για έξοδο. Η κεντρική ιδέα του αλγορίθμου συνοψίζεται στην εκτέλεση 2 βημάτων: Βήμα 1 : Παραγωγή ταξινομημένων υπακολουθιών. Συγκεκριμένα, διαβάζονται τα στοιχεία από την ταινία εισόδου στην κύρια μνήμα σε μπλοκ των M, ταξινομούνται στη μνήμη και στη συνέχεια οι ταξινομημένες ομάδες γράφονται εναλλάξ στην κατάλληλη ταινία εξόδου. Βήμα 2: Συγχώνευση ταξινομημένων υπακολουθιών. Συγχωνεύονται οι ταινίες που παρήχθησαν κατά το πρώτο βήμα. Χρησιμοποιούνται οι p ταινίες εισόδου και οι p ταινίες εξόδου. Η διαδικασία επαναλαμβάνεται και η διαδικασία τερματίζει με την παραγωγή στην έξοδο ενός μόνο μπλοκ, το οποίο θα αποτελεί την ταξινομημένη έξοδο. Για την συγχώνευση των ταινιών μπορεί να χρησιμοποιηθεί μία παραλλαγή του αλγορίθμου Merge Sort.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.