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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

p

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

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

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

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

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

Γεωµετρικοί Αλγόριθµοι (CLR, κεφάλαιο 35)

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

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

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

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

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

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

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

Tυχαιοποιηµένοι Αλγόριθµοι (CLR, κεφάλαιo 8.3 και 10)

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

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

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

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

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

Τεχνικές Σχεδιασμού Αλγορίθμων

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28)

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

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

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

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

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

Transcript:

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

Πρόβληµα Επιλογής Πίνακας Α[ Αριθµός k, 1 k n. ] µε n στοιχεία (όχι ταξινοµηµένος). Υπολογισµός του k-οστού µικρότερου στοιχείου (στοιχείο θέσης A[ k ] αν Α ταξινοµηµένος). k = 1 : ελάχιστο. k = n : µέγιστο. k = n / 2 : ενδιάµεσο (median). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

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

Εφαρµογές Υπολογισµός στατιστικού ενδιάµεσου (median). Χρήσιµες πληροφορίες για κατανοµή. Ανήκει η Ελλάδα στο φτωχότερο 25% των χωρών ΕΕ; Ανήκει κάποιος φοιτητής στο καλύτερο 10% του έτους του; Ισοµερής διαίρεση (partition) πίνακα σε οµάδες «ταξινοµηµένες» µεταξύ τους. Ενδιαφέρον αλγοριθµικό πρόβληµα! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 2

Μέγιστο / Ελάχιστο Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 3

Μέγιστο / Ελάχιστο Μέγιστο (ελάχιστο) εύκολα σε χρόνο Θ(n), µε n 1 συγκρίσεις µεταξύ στοιχείων. int maximum(int A[], int n) { int max = A[0], i; for (i = 1; i < n; i++) if (A[i] > max) max = A[i]; return(max); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 3

Μέγιστο / Ελάχιστο Μέγιστο (ελάχιστο) εύκολα σε χρόνο Θ(n), µε n 1 συγκρίσεις µεταξύ στοιχείων. int maximum(int A[], int n) { int max = A[0], i; for (i = 1; i < n; i++) if (A[i] > max) max = A[i]; return(max); } Μέγιστο και ελάχιστο µε συγκρίσεις! Πώς; Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 3

Κάτω Φράγµα για Μέγιστο Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 4

Κάτω Φράγµα για Μέγιστο Κάθε ντετερµινιστικός συγκριτικός αλγόριθµος χρειάζεται n 1 συγκρίσεις για µέγιστο (ελάχιστο). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 4

Κάτω Φράγµα για Μέγιστο Κάθε ντετερµινιστικός συγκριτικός αλγόριθµος χρειάζεται n 1 συγκρίσεις για µέγιστο (ελάχιστο). «Πρωτάθληµα» µεταξύ στοιχείων. Σύγκριση στοιχείων : αγώνας όπου κερδίζει µεγαλύτερο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 4

Κάτω Φράγµα για Μέγιστο Κάθε ντετερµινιστικός συγκριτικός αλγόριθµος χρειάζεται n 1 συγκρίσεις για µέγιστο (ελάχιστο). «Πρωτάθληµα» µεταξύ στοιχείων. Σύγκριση στοιχείων : αγώνας όπου κερδίζει µεγαλύτερο. Κάθε «αήττητο» στοιχείο είναι υποψήφιο µέγιστο. Για µοναδικό µέγιστο, πρέπει τα υπόλοιπα να «ηττηθούν». Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 4

Κάτω Φράγµα για Μέγιστο Κάθε ντετερµινιστικός συγκριτικός αλγόριθµος χρειάζεται n 1 συγκρίσεις για µέγιστο (ελάχιστο). «Πρωτάθληµα» µεταξύ στοιχείων. Σύγκριση στοιχείων : αγώνας όπου κερδίζει µεγαλύτερο. Κάθε «αήττητο» στοιχείο είναι υποψήφιο µέγιστο. Για µοναδικό µέγιστο, πρέπει τα υπόλοιπα να «ηττηθούν». Κάθε αγώνας δίνει ένα «ηττηµένο» στοιχείο n 1 αγώνες / συγκρίσεις για µοναδικό µέγιστο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 4

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

Επιλογή Σε χρόνο Ο(n log n) µε ταξινόµηση. Μέγιστο (k = 1), ελάχιστο (k = n) : χρόνος Θ(n). Άλλες τιµές k : χρόνος Ο(n log n) ή Ο(n); Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 5

Επιλογή Σε χρόνο Ο(n log n) µε ταξινόµηση. Μέγιστο (k = 1), ελάχιστο (k = n) Άλλες τιµές k : χρόνος Ο(n log n) ή Ο(n); : χρόνος Θ(n). Επιλογή σε γραµµικό χρόνο µε διαίρει-και-βασίλευε βασισµένη σε διαχωρισµό της quicksort! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 5

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

Πιθανοτική Quickselect Έστω υπο-πίνακας A[l r] και αναζητούµε k-οστό στοιχείο. Τυχαίο στοιχείο διαχωρισµού (pivot). Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής [l q] υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς [q+1 r] υπο-ακολ. στοιχείο διαχωρισµού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 6

Πιθανοτική Quickselect Έστω υπο-πίνακας A[l r] και αναζητούµε k-οστό στοιχείο. Τυχαίο στοιχείο διαχωρισµού (pivot). Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής [l q] υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς [q+1 r] υπο-ακολ. στοιχείο διαχωρισµού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 6

Πιθανοτική Quickselect Έστω υπο-πίνακας A[l r] και αναζητούµε k-οστό στοιχείο. Τυχαίο στοιχείο διαχωρισµού (pivot). Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής [l q] υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς [q+1 r] υπο-ακολ. στοιχείο διαχωρισµού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 6

Πιθανοτική Quickselect Έστω υπο-πίνακας A[l r] και αναζητούµε k-οστό στοιχείο. Τυχαίο στοιχείο διαχωρισµού (pivot). Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής [l q] υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς [q+1 r] υπο-ακολ. στοιχείο διαχωρισµού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 6

Πιθανοτική Quickselect Έστω υπο-πίνακας A[l r] και αναζητούµε k-οστό στοιχείο. Τυχαίο στοιχείο διαχωρισµού (pivot). Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής [l q] υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς [q+1 r] υπο-ακολ. στοιχείο διαχωρισµού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 6

Πιθανοτική Quickselect Έστω υπο-πίνακας A[l r] και αναζητούµε k-οστό στοιχείο. Τυχαίο στοιχείο διαχωρισµού (pivot). Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής [l q] υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς [q+1 r] υπο-ακολ. στοιχείο διαχωρισµού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 6

Πιθανοτική Quickselect Έστω υπο-πίνακας A[l r] και αναζητούµε k-οστό στοιχείο. Τυχαίο στοιχείο διαχωρισµού (pivot). Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής [l q] υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς [q+1 r] υπο-ακολ. στοιχείο διαχωρισµού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 6

Πιθανοτική Quickselect Έστω υπο-πίνακας A[l r] και αναζητούµε k-οστό στοιχείο. Τυχαίο στοιχείο διαχωρισµού (pivot). Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες: Στοιχεία αριστερής [l q] υπο-ακολ. στοιχείο διαχωρισµού. Στοιχεία δεξιάς [q+1 r] υπο-ακολ. στοιχείο διαχωρισµού. Αν k q l + 1, αναδροµική λύση (Α[l q], k) Αν k > q l + 1, αναδροµική λύση (Α[q+1 r], k (q l + 1)) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 6

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

Ορθότητα Quickselect Τερµατισµός : µέγεθος υπο-ακολουθιών n 1. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 7

Ορθότητα Quickselect Τερµατισµός : µέγεθος υπο-ακολουθιών n 1. Επαγωγικά υποθέτω ότι 1 k right left + 1. Πλήθος στοιχείων στα αριστερά: m = q left + 1. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 7

Ορθότητα Quickselect Τερµατισµός : µέγεθος υπο-ακολουθιών n 1. Επαγωγικά υποθέτω ότι 1 k right left + 1. Πλήθος στοιχείων στα αριστερά: m = q left + 1. Αν k m, δεξιά στοιχεία «αποκλείονται». Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 7

Ορθότητα Quickselect Τερµατισµός : µέγεθος υπο-ακολουθιών n 1. Επαγωγικά υποθέτω ότι 1 k right left + 1. Πλήθος στοιχείων στα αριστερά: m = q left + 1. Αν k m, δεξιά στοιχεία «αποκλείονται». Αν m < k, αριστερά στοιχεία «αποκλείονται» και k µειώνεται αντίστοιχα (k = k m). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 7

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

Πιθανοτική Quickselect int RQuickSelect(int A[], int left, int right, int k) { if (left == right) return(a[left]); // 1 στοιχείο } pivot = random(left, right); // τυχαίο pivot swap(a[left], A[pivot]); q = partition(a, left, right); // διαίρεση nel = q left + 1; // #στοιχείων στο αριστερό µέρος if (k <= nel) return(rquickselect(a, left, q, k)); else return(rquickselect(a, q+1, right, k - nel)); Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 8

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

Χρόνος Εκτέλεσης (χ.π.) Χρόνος εκτελ. αναδροµικών αλγ. µε διατύπωση και λύση αναδροµικής εξίσωσης λειτουργίας. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 9

Χρόνος Εκτέλεσης (χ.π.) Χρόνος εκτελ. αναδροµικών αλγ. µε διατύπωση και λύση αναδροµικής εξίσωσης λειτουργίας. Τ(n) : χρόνος (χ.π.) για επιλογή από n στοιχεία. Χρόνος εκτέλεσης partition(n στοιχεία) : Θ(n) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 9

Χρόνος Εκτέλεσης (χ.π.) Χρόνος εκτελ. αναδροµικών αλγ. µε διατύπωση και λύση αναδροµικής εξίσωσης λειτουργίας. Τ(n) : χρόνος (χ.π.) για επιλογή από n στοιχεία. Χρόνος εκτέλεσης partition(n στοιχεία) : Θ(n) Χειρότερη περίπτωση : ένα στοιχείο «αποκλείεται» σε κάθε διαίρεση! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 9

Χρόνος Εκτέλεσης (χ.π.) Χρόνος εκτελ. αναδροµικών αλγ. µε διατύπωση και λύση αναδροµικής εξίσωσης λειτουργίας. Τ(n) : χρόνος (χ.π.) για επιλογή από n στοιχεία. Χρόνος εκτέλεσης partition(n στοιχεία) : Θ(n) Χειρότερη περίπτωση : ένα στοιχείο «αποκλείεται» σε κάθε διαίρεση! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 9

Χρόνος Εκτέλεσης (χ.π.) Χρόνος εκτελ. αναδροµικών αλγ. µε διατύπωση και λύση αναδροµικής εξίσωσης λειτουργίας. Τ(n) : χρόνος (χ.π.) για επιλογή από n στοιχεία. Χρόνος εκτέλεσης partition(n στοιχεία) : Θ(n) Χειρότερη περίπτωση : ένα στοιχείο «αποκλείεται» σε κάθε διαίρεση! Πιθανοτικός αλγ.: χειρότερη περίπτωση έχει εξαιρετικά µικρή πιθανότητα να συµβεί (για κάθε είσοδο)! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 9

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

Χρόνος Εκτέλεσης (µ.π.) Καλή περίπτωση : διαίρεση (n / 4, 3n / 4) ή καλύτερη. Τουλάχιστον n / 4 στοιχεία «αποκλείονται». Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 10

Χρόνος Εκτέλεσης (µ.π.) Καλή περίπτωση : διαίρεση (n / 4, 3n / 4) ή καλύτερη. Τουλάχιστον n / 4 στοιχεία «αποκλείονται». Πιθανότητα «καλής περίπτωσης» 1/2! Κατά «µέσο όρο», µία «κακή διαίρεση» πριν από «καλή διαίρεση» που µειώνει στοιχεία από n σε 3n /4. Λύση αναδροµής: Γεωµετρική σειρά : Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 10

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

Χρόνος Εκτέλεσης (µ.π.) Τυχαίο στοιχείο σαν στοιχείο χωρισµού (pivot). Για κάθε, πιθανότητα διαίρεσης (i, n i) = Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 11

Χρόνος Εκτέλεσης (µ.π.) Τυχαίο στοιχείο σαν στοιχείο χωρισµού (pivot). Για κάθε, πιθανότητα διαίρεσης (i, n i) = Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 11

Χρόνος Εκτέλεσης (µ.π.) Τυχαίο στοιχείο σαν στοιχείο χωρισµού (pivot). Για κάθε, πιθανότητα διαίρεσης (i, n i) = Λύση αναδροµής : Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 11

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

Ντετερµινιστική Επιλογή «Καλή διαίρεση» ντετερµινιστικά: Χρήση pivot κοντά στο ενδιάµεσο: πρόβληµα επιλογής! Φαύλος κύκλος : γρήγορη επιλογή καλή διαίρεση γρήγορη επιλογή. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 12

Ντετερµινιστική Επιλογή «Καλή διαίρεση» ντετερµινιστικά: Χρήση pivot κοντά στο ενδιάµεσο: πρόβληµα επιλογής! Φαύλος κύκλος : γρήγορη επιλογή καλή διαίρεση γρήγορη επιλογή. Προσεγγιστική επιλογή : όχι «ενδιάµεσο» αλλά «κοντά στο ενδιάµεσο» για pivot. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 12

Ντετερµινιστική Επιλογή «Καλή διαίρεση» ντετερµινιστικά: Χρήση pivot κοντά στο ενδιάµεσο: πρόβληµα επιλογής! Φαύλος κύκλος : γρήγορη επιλογή καλή διαίρεση γρήγορη επιλογή. Προσεγγιστική επιλογή : όχι «ενδιάµεσο» αλλά «κοντά στο ενδιάµεσο» για pivot. Επιλογή κατάλληλου δείγµατος (π.χ. n / 5 στοιχεία). Ενδιάµεσο δείγµατος είναι «κοντά στο ενδιάµεσο» για σύνολο στοιχείων. Αναδροµικά ενδιάµεσο στοιχείο του δείγµατος. Ενδιάµεσο δείγµατος για pivot εγγυάται «καλή διαίρεση». Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 12

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

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

Ντετερµινιστική Επιλογή Δείγµα: Χωρίζουµε στοιχεία σε 5άδες. Βρίσκουµε ενδιάµεσο κάθε 5άδας: n / 5 στοιχεία. Χρόνος : Θ(n). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 13

Ντετερµινιστική Επιλογή Δείγµα: Χωρίζουµε στοιχεία σε 5άδες. Βρίσκουµε ενδιάµεσο κάθε 5άδας: n / 5 στοιχεία. Χρόνος : Θ(n). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 13

Ντετερµινιστική Επιλογή Δείγµα: Χωρίζουµε στοιχεία σε 5άδες. Βρίσκουµε ενδιάµεσο κάθε 5άδας: n / 5 στοιχεία. Χρόνος : Θ(n). Αναδροµικά, ενδιάµεσο στοιχείο δείγµατος. Χρόνος : Τ(n / 5) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 13

Ντετερµινιστική Επιλογή Δείγµα: Χωρίζουµε στοιχεία σε 5άδες. Βρίσκουµε ενδιάµεσο κάθε 5άδας: n / 5 στοιχεία. Χρόνος : Θ(n). Αναδροµικά, ενδιάµεσο στοιχείο δείγµατος. Χρόνος : Τ(n / 5) Διαίρεση µε ενδιάµεσο δείγµατος σαν pivot. Χρόνος : Θ(n). Μεγαλύτερος υποπίνακας έχει Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 13

Ντετερµινιστική Επιλογή Δείγµα: Χωρίζουµε στοιχεία σε 5άδες. Βρίσκουµε ενδιάµεσο κάθε 5άδας: n / 5 στοιχεία. Χρόνος : Θ(n). Αναδροµικά, ενδιάµεσο στοιχείο δείγµατος. Χρόνος : Τ(n / 5) Διαίρεση µε ενδιάµεσο δείγµατος σαν pivot. Χρόνος : Θ(n). Μεγαλύτερος υποπίνακας έχει Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 13

Ντετερµινιστική Επιλογή Δείγµα: Χωρίζουµε στοιχεία σε 5άδες. Βρίσκουµε ενδιάµεσο κάθε 5άδας: n / 5 στοιχεία. Χρόνος : Θ(n). Αναδροµικά, ενδιάµεσο στοιχείο δείγµατος. Χρόνος : Τ(n / 5) Διαίρεση µε ενδιάµεσο δείγµατος σαν pivot. Χρόνος : Θ(n). Μεγαλύτερος υποπίνακας έχει Αναδροµική επιλογή: χρόνος T(7n / 10) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 13

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

Ντετερµινιστική Επιλογή Χρόνος χειρότερης περίπτωσης: Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 14

Ντετερµινιστική Επιλογή Χρόνος χειρότερης περίπτωσης: Λύση αναδροµής : Ντετερµινιστική επιλογή σε γραµµικό χρόνο! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 14

Ενδιάµεσο Δείγµατος Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 15

Ενδιάµεσο Δείγµατος Διαίρεση µε ενδιάµεσο δείγµατος σαν pivot. Μεγαλύτερος υποπίνακας 7n / 10 στοιχεία. Μικρότερος υποπίνακας 3n / 10 στοιχεία. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 15

Ενδιάµεσο Δείγµατος Διαίρεση µε ενδιάµεσο δείγµατος σαν pivot. Μεγαλύτερος υποπίνακας 7n / 10 στοιχεία. Μικρότερος υποπίνακας 3n / 10 στοιχεία. Ταξινοµούµε 5αδες και βάζουµε σε αύξουσα σειρά των ενδιάµεσων στοιχείων τους (δείγµατος). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 15

Ενδιάµεσο Δείγµατος Διαίρεση µε ενδιάµεσο δείγµατος σαν pivot. Μεγαλύτερος υποπίνακας 7n / 10 στοιχεία. Μικρότερος υποπίνακας 3n / 10 στοιχεία. Ταξινοµούµε 5αδες και βάζουµε σε αύξουσα σειρά των ενδιάµεσων στοιχείων τους (δείγµατος). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 15

Ενδιάµεσο Δείγµατος Διαίρεση µε ενδιάµεσο δείγµατος σαν pivot. Μεγαλύτερος υποπίνακας 7n / 10 στοιχεία. Μικρότερος υποπίνακας 3n / 10 στοιχεία. Ταξινοµούµε 5αδες και βάζουµε σε αύξουσα σειρά των ενδιάµεσων στοιχείων τους (δείγµατος). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 15

Ενδιάµεσο Δείγµατος Διαίρεση µε ενδιάµεσο δείγµατος σαν pivot. Μεγαλύτερος υποπίνακας 7n / 10 στοιχεία. Μικρότερος υποπίνακας 3n / 10 στοιχεία. Ταξινοµούµε 5αδες και βάζουµε σε αύξουσα σειρά των ενδιάµεσων στοιχείων τους (δείγµατος). Ενδιάµεσος δείγµατος στη (n / 10)-οστή στήλη. Ενδιάµεσος δείγµατος στοιχεία. Ενδιάµεσος δείγµατος στοιχεία. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 15

Σύνοψη Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 16

Σύνοψη Γρήγορη επιλογή (quickselect): Πιθανοτικός αλγόριθµος µε γραµµικό χρόνο (µ.π.) Ντετερµινιστικός αλγόριθµος µε γραµµικό χρόνο (χ.π.) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 16

Σύνοψη Γρήγορη επιλογή (quickselect): Πιθανοτικός αλγόριθµος µε γραµµικό χρόνο (µ.π.) Ντετερµινιστικός αλγόριθµος µε γραµµικό χρόνο (χ.π.) Ντετερµινιστικός αλγόριθµος µε «bootstrapping»: Για να βρω ενδιάµεσο για πολλά στοιχεία, βρίσκω «σχεδόν ενδιάµεσο» για λίγα. Αυτό βοηθάει να βρω ενδιάµεσο για περισσότερα, Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 16

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

Ασκήσεις Τροποποίηση quicksort ώστε Ο(n χειρότερη περίπτωση. Είναι πρακτικό; log n) χρόνο σε Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 17

Ασκήσεις Τροποποίηση quicksort ώστε Ο(n χειρότερη περίπτωση. Είναι πρακτικό; log n) χρόνο σε Στον ντετερµινιστικό αλγόριθµο, χωρίζω στοιχεία σε 3άδες (7άδες). Τι συµβαίνει; Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 17

Ασκήσεις Τροποποίηση quicksort ώστε Ο(n χειρότερη περίπτωση. Είναι πρακτικό; log n) χρόνο σε Στον ντετερµινιστικό αλγόριθµο, χωρίζω στοιχεία σε 3άδες (7άδες). Τι συµβαίνει; Α και Β δύο ταξινοµηµένοι πίνακες µε n διαφορετικά στοιχεία ο καθένας. Σε χρόνο Ο(log n), το ενδιάµεσο της ένωσης των Α και Β. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 17