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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

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

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

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

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

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

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

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

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

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

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

Μέγιστη Ροή Ελάχιστη Τομή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματιστικές Τεχνικές

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

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

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

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

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

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

p

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μέγιστη Ροή Ελάχιστη Τομή

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

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

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

Προγραμματιστικές Τεχνικές

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

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

Transcript:

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

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

Εφαρμογές Υπολογισμός στατιστικού διάμεσου (median). Χρήσιμες πληροφορίες για κατανομή. Ανήκει η Ελλάδα στο φτωχότερο 25% των χωρών ΕΕ; Ανήκει κάποιος φοιτητής στο καλύτερο 10% του έτους του; Ισομερής διαίρεση (partition) πίνακα σε ομάδες «ταξινομημένες» μεταξύ τους. Ενδιαφέρον αλγοριθμικό πρόβλημα! Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2017) Επιλογή 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); } Μέγιστο και ελάχιστο με συγκρίσεις! Πώς; Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2017) Επιλογή 4

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

Επιλογή Σε χρόνο Ο(n log n) με ταξινόμηση. Μέγιστο (k = 1), ελάχιστο (k = n) : χρόνος Θ(n). Άλλες τιμές k : χρόνος Ο(n log n) ή Ο(n); Επιλογή σε γραμμικό χρόνο με διαίρει-και-βασίλευε βασισμένη σε διαχωρισμό της quicksort! Επιλογή 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)) 13 11 19 2 6 12 13 6 k = 6 3 13 6 2 19 2 4 9 5 5 9 11 12 8 7 19 4 21 Επιλογή 7

Ορθότητα Quickselect Τερματισμός : μέγεθος υπο-ακολουθιών n 1. Επαγωγικά υποθέτω ότι 1 k right left + 1. Πλήθος στοιχείων στα αριστερά: m = q left + 1. Αν k m, δεξιά στοιχεία «αποκλείονται». Αν m < k, αριστερά στοιχεία «αποκλείονται» και k μειώνεται αντίστοιχα (k = k m). left q q+1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 right 16 17 m = q left + 1 Επιλογή 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)); Επιλογή 9

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

Χρόνος Εκτέλεσης (μ.π.) Καλή περίπτωση : διαμέριση (n / 4, 3n / 4) ή καλύτερη. Τουλάχιστον n / 4 στοιχεία «αποκλείονται». Πιθανότητα «καλής περίπτωσης» 1/2! Κατά «μέσο όρο», μία «κακή διαμέριση» πριν από «καλή διαίρεση» που μειώνει στοιχεία από n σε 3n /4. Λύση αναδρομής: Γεωμετρική σειρά : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Επιλογή 11

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

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

Ντετερμινιστική Επιλογή Δείγμα: Χωρίζουμε στοιχεία σε 5άδες. Βρίσκουμε μεσαίο κάθε 5άδας: n / 5 στοιχεία. Χρόνος : Θ(n). Αναδρομικά, διάμεσο δείγματος (μεσαίο μεσαίων). Χρόνος : Τ(n / 5) Διαμέριση με διάμεσο δείγματος σαν pivot. Χρόνος : Θ(n). Μεγαλύτερος υποπίνακας έχει Αναδρομική επιλογή: χρόνος T(7n / 10) 3 9 5 7 15 6 2 1 10 4 10 4 11 15 6 9 5 13 8 12 14 7 3 7 6 12 Επιλογή 14

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

Διάμεσος Δείγματος Διαίρεση με διάμεσο δείγματος σαν pivot. Μεγαλύτερος υποπίνακας 7n / 10 στοιχεία. Μικρότερος υποπίνακας 3n / 10 στοιχεία. Ταξινομούμε 5αδες και τις βάζουμε σε αύξουσα σειρά των μεσαίων στοιχείων τους (δείγματος). Διάμεσος δείγματος στη (n / 10)-οστή στήλη. Διάμεσος δείγματος στοιχεία. Διάμεσος δείγματος στοιχεία. 9 7 15 2 1 10 4 11 6 5 13 8 12 14 3 4 5 6 10 11 1 2 7 9 15 3 8 12 13 14 Επιλογή 16

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