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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap

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

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

Ουρά Προτεραιότητας: Heap

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

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

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

Ουρά Προτεραιότητας: Heap

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

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

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

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

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

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

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

Πιθανοτικοί Αλγόριθμοι

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

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

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

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

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

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

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

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

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

υναμικός Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

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

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

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

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

υναμικός Προγραμματισμός

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

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

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

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

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

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

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

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

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

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

p

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

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

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

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

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

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

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

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

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

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

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

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

Ασυμπτωτικός Συμβολισμός

Συντομότερες Διαδρομές

Transcript:

Πρόβλημα Ταξινόμησης Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Είσοδος : ακολουθία n αριθμών (α 1, α 2,..., α n ). Έξοδος : μετάθεση (α 1, α 2,..., α n ) με στοιχεία σε αύξουσα σειρά ( i α i α i+1 ). Στατική συλλογή δεδομένων (όχι εισαγωγή και διαγραφή). Θεμελιώδες αλγοριθμικό πρόβλημα. Πολλές εφαρμογές (περ. 25% υπολογιστικού χρόνου). Ταχύτατη αναζήτηση σε ταξινομημένα δεδομένα. Σημαντικές αλγοριθμικές ιδέες και τεχνικές. Εθνικό Μετσόβιο Πολυτεχνείο Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 2 Συγκριτικοί Αλγόριθμοι Μέθοδοι Ταξινόμησης Ταξινόμηση αποκλειστικά με συγκρίσεις και αντιμεταθέσεις στοιχείων. Δεν εκμεταλλεύονται τύπο δεδομένων (π.χ. αριθμούς, συμβολοσειρές) : γενική εφαρμογή. Ανάλυση : πλήθος συγκρίσεων. πλήθος αντιμεταθέσεων. Κάτω φράγμα #συγκρίσεων : Ω(n log n). Ταξινόμηση σε χρόνο Θ(n+k) για φυσικούς αριθμούς στο { 1,..., k } (π.χ. bin sort, radix sort). Αντιμετάθεση κάθε ζεύγους στοιχείων εκτός διάταξης (bubble sort). Εισαγωγή στοιχείου σε κατάλληλη θέση ταξινομημένου πίνακα (insertion sort). Επιλογή μεγαλύτερου στοιχείου και τοποθέτηση στο τέλος (selection sort, heapsort). Συγχώνευση ταξινομημένων πινάκων : Διαίρεση στη μέση, ταξινόμηση, συγχώνευση (mergesort). Διαίρεση σε μικρότερα και μεγαλύτερα από στοιχείο-διαχωρισμού και ταξινόμηση (quicksort). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 3 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 4

Quicksort [Hoare, 62] Διαίρεση Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής υπο-ακολ. στοιχείο διαχωρισμού. Στοιχεία δεξιάς υπο-ακολ. στοιχείο διαχωρισμού. Ταξινόμηση υπο-ακολουθιών αναδρομικά. Ακολουθία ταξινομημένη όχι σύνθεση! quicksort(int A[], int left, int right) { if (left >= right) return; // At most 1 element q = partition(a, left, right); quicksort(a, left, q); quicksort(a, q+1, right); } Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Διαίρεση σε ένα πέρασμα : Σάρωση από αριστερά (με δείκτη i) μέχρι Α[i] pivot. Σάρωση από δεξιά (με δείκτη j) μέχρι Α[j] pivot. Αν δεν έχουν εξεταστεί όλα τα στοιχεία (i < j): αντιμετάθεση(α[i], Α[j]) και συνέχεια. Αν έχουν εξεταστεί όλα: επιστροφή ορίου διαχωρισμού (δείκτη j). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 5 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 6 Διαίρεση partition(int A[], int left, int right) { int pivot = A[left]; i = left 1; j = right + 1; while (1) { while (A[++i] < pivot) ; while (A[--j] > pivot) ; if (i < j) swap(a[i], A[j]); else return(j); } } Διαίρεση partition(int A[], int left, int right) { int pivot = A[left]; i = left 1; j = right + 1; while (1) { while (A[++i] < pivot) ; while (A[--j] > pivot) ; if (i < j) swap(a[i], A[j]); else return(j); } } i 13 19 9 5 12 8 7 4 11 2 6 21 Στοιχείο διαχωρισμού : 13 j Στοιχείο διαχωρισμού : 10 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 7 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 8

Ανάλυση Διαχωρισμού Ανάλυση Διαχωρισμού Ορθότητα partition : Διατηρεί και επεκτείνει αριστερή περιοχή με στοιχεία pivot και δεξιά περιοχή με στοιχεία pivot. A[i] pivot : επέκταση αριστερής περιοχής σταματά. A[j] pivot : επέκταση δεξιάς περιοχής σταματά. Ξένες περιοχές : αντιμετάθεση στοιχείων και συνέχεια. Επικάλυψη : ολοκλήρωση διαίρεσης. Τελικά τα στοιχεία αριστερά pivot και τα στοιχεία δεξιά pivot, όπως απαιτείται. Κάθε περιοχή 1 στοιχείο. Quicksort τερματίζει. (1 σημείο διαχωρισμού n 1) Απαραίτητα: i και j σταματούν στο pivot. Χρόνος εκτέλεσης partition : Κάθε στοιχείο συγκρίνεται με pivot μία φορά (εκτός από στοιχεία εκατέρωθεν σημείου χωρισμού). Τελικά i και j «δείχνουν» είτε γειτονικές είτε ίδια θέση γιατί όπου πέρασε το i δεν συνεχίζει j. Χρόνος εκτέλεσης partition για n στοιχεία = Θ(n). Μετά τον διαχωρισμό, στοιχεία δεν αλλάζουν «πλευρά» (δηλ. αριστερά μένουν αριστερά, δεξιά μένουν δεξιά). Υπάρχουν πολλές άλλες μορφές διαίρεσης, π.χ. pivot παίρνει τελική του θέση στον πίνακα, διαίρεση στα τρία, Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 9 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 10 Παράδειγμα Quicksort Ορθότητα Quicksort Συνέπεια ορθότητας partition : Τερματισμός : μέγεθος υπο-ακολουθιών n 1. Ταξινόμηση : Αριστερά στοιχεία pivot δεξιά στοιχεία. Επαγωγικά, αριστερή περιοχή και δεξιά περιοχή ταξινομημένες. Συνολικά, πίνακας ταξινομημένος. 1 32 23 5 76 67 2 3 6 7 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 11 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 12

Χρόνος Εκτέλεσης (χ.π.) Χρόνος Εκτέλεσης (χ.π.) Χρόνος εκτελ. αναδρομικών αλγ. με διατύπωση και λύση αναδρομικής εξίσωσης. Χρόνος εκτέλεσης partition(n στοιχεία) : Θ(n) Τ(n) : χρόνος (χ.π.) για ταξινόμηση n στοιχείων. Θ(n) : αναδιάταξη και διαίρεση εισόδου. T(k) : ταξινόμηση αριστερού τμήματος (k στοιχεία). T(n k) : ταξινόμηση δεξιού τμήματος (n k στοιχεία). Χειρότερη περίπτωση : k = 1 ή k = n 1(σε κάθε κλήση). Ουσιαστικά δεν γίνεται διαίρεση (μόνο αναδιάταξη)! Partition «βοηθάει ελάχιστα» τον αλγόριθμο. Στιγμιότυπα που quicksort χρειάζεται χρόνο Ω(n 2 ); Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 13 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 14 Χρόνος Εκτέλεσης Πιθανοτική Quicksort Καλύτερη περίπτωση : k = n / 2 (σε κάθε κλήση). Ουσιαστικά τέλεια διαίρεση! Partition «βοηθάει τα μέγιστα»! Τυχαίο στοιχείο σαν στοιχείο χωρισμού (pivot). Για κάθε, πιθανότητα διαίρεσης (k, n k) = Aν (περίπου ίδιο μεγέθος) Χειρότερη και καλύτερη περίπτωση σπάνιες! Αν τυχαίο στοιχείο pivot, πιθανότητα διαίρεσης (n /4, 3n /4)ήκαλύτερης 1/2! randomquicksort(int A[], int left, int right) { if (left >= right) return; // At most 1 element pivot = random(left, right); swap(a[left], A[pivot]); q = partition(a, left, right); randomquicksort(a, left, q); randomquicksort(a, q+1, right); } Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 15 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 16

Χρόνος Εκτέλεσης (μ.π.) Λύση αναδρομής : Αυτός ο χρόνος εκτέλεσης με μεγάλη πιθανότητα! Πιθανότητα διαίρεσης (n /4, 3n /4)ήκαλύτερης 1/2! Κατά «μέσο όρο», κάθε 2 επίπεδα στο δέντρο της αναδρομής, έχουμε «επιτυχημένη» διαίρεση. Σε κάθε επίπεδο, συνολικός χρόνος διαίρεσης Θ(n). Θ(n log n) από «επιτυχημένες» διαιρέσεις + Θ(n log n) από «αποτυχημένες» διαιρέσεις. Χρόνος Εκτέλεσης (μ.π.) Πιθανότητα «αποτυχημένες» διαιρέσεις > c log n είναι εξαιρετικά μικρή! Χρόνος εκτέλεσης Θ(n log n) με μεγάλη πιθανότητα! Μέση περίπτωση δεν εξαρτάται από είσοδο! Αφορά στη συμπεριφορά του αλγόριθμου. Εξαιρετικά μικρή πιθανότητα χειρότερης περίπτωσης. Ανάλυση χειρότερης περίπτωσης δεν έχει νόημα! Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 17 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 18 Σύνοψη Σύνοψη Γρήγορη ταξινόμηση (quicksort): Πιθανοτικός αλγόριθμος. Χρόνος χειρότερης περ. : Θ( n 2 ) Χρόνος μέσης περίπτωσης : Θ(n log n) Χώρος : σχεδόν in-place. Αναδρομή καθυστερεί και απαιτεί μνήμη. Εύκολη και γρήγορη υλοποίηση. Γρηγορότερος αλγόριθμος στην πράξη (για n 30). Αλγόριθμος BubbleS InsertionS SelectionS HeapS MergeS Καλύτερη Ω(n) Ω(n) Ω(n) Ω(n log n) Ω(n log n) Μέση Ο(n log n) Ο(n log n) Χειρότερη O(n log n) O(n log n) Χώρος O(n) QuickS Ω(n log n) Ο(n log n)? Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 19 Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 20

Πιθανοτικοί Αλγόριθμοι Ντετερμινιστικοί αλγόριθμοι: Προκαθορισμένη συμπεριφορά για κάθε είσοδο. Υπάρχει χειρότερη περίπτωση και μπορεί να συμβεί. Πιθανοτικοί αλγόριθμοι: Συμπεριφορά από είσοδο και τυχαίες επιλογές. Χρήση τυχαιότητας ώστε χειρότερη περίπτωση να συμβαίνει με πολύ μικρή πιθανότητα. Ποια είναι η χειρότερη περ. για πιθανοτική quicksort; Χρόνος (απόδοση) κατά μέση τιμή. Ορθότητα με μεγάλη πιθανότητα. Las-Vegas: αποτέλεσμα σωστό, χρόνος τυχαία μετ/τη. Monte-Carlo: χρόνος προκαθορισμένος, μπορεί λάθος αποτέλεσμα (αλλά με πολύ μικρή πιθανότητα). Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2009) Quicksort 21