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

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

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

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

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

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

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

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

Δυναμικός προγραμματισμός για δέντρα

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

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

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

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

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

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

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

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

a n = 3 n a n+1 = 3 a n, a 0 = 1

Κατανομή συνάρτησης τυχαίας μεταβλητής Y=g(X) Πιθανότητες & Στατιστική 2017 Τμήμα Μηχανικών Η/Υ & Πληροφορικής, Παν. Ιωαννίνων Δ13 ( 1 )

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

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

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

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

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

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

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

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

Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης. Οταν το πρόβλημα έχει πεπερασμ

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

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

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

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

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

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

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

(18 ο ) ΚΛΑΣΜΑΤΙΚΗ ΑΝΑΓΩΓΗ - ΙI: «διάμεσος &θεσιακή επιλογή στοιχείου»

EukleÐdeiec emfuteôseic: ˆnw frˆgmata

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

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

ΑΣΚΗΣΕΙΣ ΠΙΘΑΝΟΤΗΤΩΝ του Παν. Λ. Θεοδωρόπουλου 0

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

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

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

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

Β. Βασιλειάδης. Επιχειρησιακή Έρευνα Διάλεξη 5 η -Αλγόριθμος Simplex

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

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

Κατανεμημένα Συστήματα Ι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

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

1o Φροντιστήριο ΗΥ240

Επαγωγή και αναδρομή για συνεκτικά γραφήματα

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

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

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

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018

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

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

Εύρεση ν-στού πρώτου αριθμού

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

Αριθμοθεωρητικοί Αλγόριθμοι

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

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

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

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

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

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

Λύσεις 4ης Σειράς Ασκήσεων

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

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

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

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

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

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

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

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

Διακριτά Μαθηματικά. Άγγελος Κιαγιάς. aggelos. Τμήμα Πληροφορικής & Τηλεπικοινωνιών. π.

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

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

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

Κατανεμημένα Συστήματα Ι

Επαγωγή και αναδρομή για άκυκλα συνεκτικά γραφήματα

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

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος

Στοχαστικές Στρατηγικές. διαδρομής (1)

Transcript:

Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 3 Αλγόριθμοι Επιλογής Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Αλγόριθμοι Επιλογής Γνωρίζουμε αλγορίθμους επιλογής? Έως τώρα, έχουμε διδαχθεί κάποιον αλγόριθμο επιλογής?????? ΝΑΙ!!!?

Αλγόριθμοι Επιλογής Γνωρίζουμε αλγορίθμους επιλογής? Έως τώρα, έχουμε διδαχθεί κάποιον αλγόριθμο επιλογής? Αλγόριθμο Υπολογισμού του Min ή Max στοιχείου ενός συνόλου Αλγόριθμο Υπολογισμού του 2-ου Min ή 2-ου Max στοιχείου ενός συνόλου

Αλγόριθμοι Επιλογής Υπολογισμός Min και Max Υπάρχει αλγόριθμος που απαιτεί πλήθος συγκρίσεων (βασικές πράξεις): (n-1) + (n-2) = 2n-3 Επίσης, υπάρχει ένας άλλος αλγόριθμος που απαιτεί πλήθος συγκρίσεων (στη μέση περίπτωση): (n-1) + 1/2(n-1) = 3(n-1)/2

Αλγόριθμοι Επιλογής Υπολογισμός του 2 ου Max Υπάρχει προφανής αλγόριθμος που απαιτεί 2n-3 συγκρίσεις (2 φορές εφαρμογή του findmax). Μπορούμε με να βρούμε το 2 ο Max λιγότερες από 2n-3 συγκρίσεις? 2n-3 >??? ΝΑΙ χρησιμοποιούμε πληροφορίες από την 1 η εφαρμογή του αλγόριθμου.

Αλγόριθμοι Επιλογής Παρατήρηση L[1], L[2], L[3], L[4], L[5] Συγκρίσεις L[1], L[2] L[1], L[3] L[1], L[4] L[4], L[5] Τo 2o Max = L[5] ή L[1] Νικητής L[1] L[1] L[4] L[4] max

Αλγόριθμοι Επιλογής L[1] L[2] L[3] L[4] L[5] L[6] L[7] L[8] L[2] L[4] L[6] L[7] L[4] L[6] Max = L[6] L[6]

Αλγόριθμοι Επιλογής L[1] L[2] L[3] L[4] L[5] L[6] L[7] L[8] L[2] L[4] L[6] L[7] L[4] L[6] Max = L[6] L[6] 2o Max = L[4] ή L[7] ή L[5]

Αλγόριθμοι Επιλογής Επομένως, το 2 ο Max στοιχείο της L[1..n] βρίσκεται υπολογίζοντας το Max από log n στοιχεία, και επομένως αυτό επιτυγχάνεται με log n -1 συγκρίσεις. Συνολικά, το 2 ο Max στοιχείο της L[1..n] βρίσκεται με n + log n - 2 συγκρίσεις. 2n - 3 > n + log n - 2

Αλγόριθμοι Επιλογής Μπορώ να Υπολογίσω το 3 ο Max? Το 4 ο, το 5 ο, το k-στο Max στοιχείο ενός συνόλου? Αποτελεσματικά!!!?????? ΝΑΙ!!!

Διατακτικές Στατιστικές Έστω S ένα σύνολο n στοιχείων (για ευκολία θεωρούμε ότι είναι ακέραιοι αριθμοί). Η k-οστή διατακτική στατιστική του S είναι το x S που είναι μεγαλύτερο από ακριβώς k-1 στοιχεία του S. η 2-η διατακτική στατιστική είναι το 3, η 5-η το στοιχείο 8, ενώ η 7-η το στοιχείο 10.

Διατακτικές Στατιστικές Έστω S ένα σύνολο n στοιχείων (για ευκολία θεωρούμε ότι είναι ακέραιοι αριθμοί). Η k-οστή διατακτική στατιστική του S είναι το x S που είναι μεγαλύτερο από ακριβώς k-1 στοιχεία του S. η 1-η διατακτική στατιστική (i=1) είναι τo Min η n-οστή διατακτική (i=n) είναι το μέγιστο Max

Διάμεσος O διάμεσος ενός συνόλου S με n στοιχεία, σε περιγραφικό επίπεδο, είναι το «μέσο στοιχείο» του συνόλου το στοιχείο x του S κάτω από το οποίο βρίσκεται (περίπου) το 50% των στοιχείων του συνόλου S.

Διάμεσος O διάμεσος ενός συνόλου S με n στοιχεία, σε περιγραφικό επίπεδο, είναι το «μέσο στοιχείο» του συνόλου. 1, 3, 5, 7 < 8 < 9, 10, 12, 16

Διάμεσος O διάμεσος ενός συνόλου S με n στοιχεία, σε περιγραφικό επίπεδο, είναι το «μέσο στοιχείο» του συνόλου. Πληθικότητα του S n = περιττός Υπάρχουν μόνο ένας διάμεσος: η υπ αριθμόν διατακτική στατιστική. 7, 1, 3, 5 < 8 < 12, 16, 10, 9

Διάμεσος O διάμεσος ενός συνόλου S με n στοιχεία, σε περιγραφικό επίπεδο, είναι το «μέσο στοιχείο» του συνόλου. Πληθικότητα του S Υπάρχουν δύο διάμεσοι: η υπ αριθμόν η υπ αριθμόν n = άρτιος διατακτική στατιστική, και διατακτική στατιστική. < < < 7, 1, 3, 5 8 9 12, 16, 10, 11

Διάμεσος O διάμεσος ενός συνόλου S με n στοιχεία, σε περιγραφικό επίπεδο, είναι το «μέσο στοιχείο» του συνόλου. Για οποιοδήποτε n, οι διάμεσοι είναι: διατακτική στατιστική (κάτω διάμεσος) διατακτική στατιστική (άνω διάμεσος). Με τον όρο «διάμεσος» θα αναφερόμαστε στον κάτω διάμεσο:

Διάμεσος O διάμεσος ενός συνόλου S έχει σκοπός να «συνοψίσει» ένα σύνολο αριθμών με μία μόνο τυπική τιμή. Για τον ίδιο σκοπό πολύ συχνά χρησιμοποιείται η μέση τιμή (mean) ή μέσος όρος (average). Η τιμή του διαμέσου είναι πιο αντιπροσωπευτική για τα δεδομένα!!!

Διάμεσος Η τιμή του διαμέσου είναι πιο αντιπροσωπευτική για τα δεδομένα!!! Είναι πάντοτε μια τιμή από τις τιμές των δεδομένων, σε αντίθεση με την μέση τιμή! Είναι λιγότερο «ευαίσθητη» σε τιμές που απέχουν πολύ από τις υπόλοιπες τιμές των δεδομένων!!

Διάμεσος Η τιμή του διαμέσου είναι πιο αντιπροσωπευτική για τα δεδομένα!!! Είναι λιγότερο «ευαίσθητη» σε τιμές που απέχουν πολύ από τις υπόλοιπες τιμές των δεδομένων!! Διάμεσος = 1 Μέση τιμή = 1

Διάμεσος Η τιμή του διαμέσου είναι πιο αντιπροσωπευτική για τα δεδομένα!!! Είναι λιγότερο «ευαίσθητη» σε τιμές που απέχουν πολύ από τις υπόλοιπες τιμές των δεδομένων!! Διάμεσος = 1 Μέση τιμή >> 100

Αλγόριθμοι Επιλογής Πρόβλημα της Επιλογής Είσοδος: Ένα σύνολο S με n (διαφορετικά) στοιχεία και ένας αριθμός k, 1 k n. Έξοδος: Το στοιχείο x S το οποίο είναι μεγαλύτερο από ακριβώς k-1 άλλα στοιχεία του S. Προφανής Αλγόριθμος! Ταξινόμηση του συνόλου S σε χρόνο O(nlogn) και εύρεση του στοιχείου x σε σταθερό χρόνο!!!

Αλγόριθμοι Επιλογής Πρόβλημα της Επιλογής Είσοδος: Ένα σύνολο S με n (διαφορετικά) στοιχεία και ένας αριθμός k, 1 k n. Έξοδος: Το στοιχείο x S το οποίο είναι μεγαλύτερο από ακριβώς k-1 άλλα στοιχεία του S. Ερώτημα! Υπάρχει καλύτερος αλγόριθμος?... Μπορούμε να βρούμε το k-στο μεγαλύτερο στοιχείο σε O(n)?

Απλός Αλγόριθμος Επιλογής Αλγόριθμος SELECT(S, k) Input: Ένα σύνολο S με n στοιχεία; Output: Το k-οστής τάξης στοιχείο του S; Επιλογή ενός στοιχείου x του S (pivot); Διαχωρισμός του S σε S 1 και S 2 S 1 x S 2

Απλός Αλγόριθμος Επιλογής Αλγόριθμος SELECT(S, k) Input: Ένα σύνολο S με n στοιχεία; Output: Το k-οστής τάξης στοιχείο του S; S 1 x S 2 εάν S 1 = k-1 return x εάν S 1 > k-1 τότε SELECT(S 1, k) εάν S 1 < k-1 τότε SELECT(S 2, k- S 1-1)

Απλός Αλγόριθμος Επιλογής Αλγόριθμος SELECT(S, k) Input: Ένα σύνολο S με n στοιχεία; Output: Το k-οστής τάξης στοιχείο του S; S 1 x S 2 Επιλέγουμε το Pivot τυχαία από το σύνολο S!!!

Απλός Αλγόριθμος Επιλογής Αλγόριθμος SELECT(S, k) Input: Ένα σύνολο S με n στοιχεία; Output: Το k-οστής τάξης στοιχείο του S; S 1 x S 2 Επιλογή του Pivot και διάσπαση του S όπως στον αλγόριθμο Quick-Sort!!! pivot = S[first] sp = first for i = first+1 to last if S[i] < pivot then sp++ swap(s[sp],s[i]) end swap(s[first],s[sp]

Απλός Αλγόριθμος Επιλογής Παράδειγμα 4 2 9 15 7 12 14 8 1 13 6 3 10 11 Το 7-ής τάξης στοιχείο; Λύση!!!... Η έξοδος του αλγόριθμου είναι το στοιχείο 8 1 2 3 4 6 7 8 9 10 11 12 13 14 15 6 7-ής τάξης στοιχείο

Απλός Αλγόριθμος Επιλογής Παράδειγμα 4 2 9 15 7 12 14 8 1 13 6 3 10 11 Το 7-ής τάξης στοιχείο: k = 7; Επιλογή pivot: x = 4; 2 1 3 4 9 15 7 12 14 8 13 6 10 11 S 1 S 2 εάν S 1 = k-1 = 6 return x εάν S 1 > k-1 = 6 τότε SELECT(S 1, k) εάν S 1 < k-1 = 6 τότε SELECT(S 2, k- S 1-1 = 7-3-1 = 3)

Απλός Αλγόριθμος Επιλογής Παράδειγμα 2 1 3 4 9 15 7 12 14 8 13 6 10 11 Το 3-ής τάξης στοιχείο : k = 3; Επιλογή pivot: x = 9; 7 8 6 9 15 12 14 13 10 11 S 1 S 2 εάν S 1 = k-1 = 2 return x εάν S 1 > k-1 = 2 τότε SELECT(S 1, k = 3) εάν S 1 < k-1 = 2 τότε SELECT(S 2, k- S 1-1)

Απλός Αλγόριθμος Επιλογής Παράδειγμα 7 8 6 9 15 12 14 13 10 11 Το 3-ής τάξης στοιχείο : k = 3; Επιλογή pivot: x = 7; 6 7 8 S 1 S 2 εάν S 1 = k-1 = 2 return x εάν S 1 > k-1 = 2 τότε SELECT(S 1, k) εάν S 1 < k-1 = 2 τότε SELECT(S 2, k- S 1-1 = 3-1-1 = 1)

Απλός Αλγόριθμος Επιλογής Παράδειγμα 6 7 8 Το 1-ής τάξης στοιχείο : k = 1; Επιλογή pivot: x = 8; 8 Το 7-ής τάξης στοιχείο!! S 1 S 2 εάν S 1 = k-1 = 0 return x = 8 εάν S 1 > k-1 = 0 τότε SELECT(S 1, k) εάν S 1 < k-1 = 0 τότε SELECT(S 2, k- S 1-1)

Απλός Αλγόριθμος Επιλογής Πολυπλοκότητα SELECT(S, k): Ιδανική Περίπτωση

Απλός Αλγόριθμος Επιλογής Πολυπλοκότητα SELECT(S, k): Χειρότερη Περίπτωση

Απλός Αλγόριθμος Επιλογής Πολυπλοκότητα SELECT(S, k): Μέση Περίπτωση Ονομάζουμε καλή επιλογή Pivot εάν αυτό ανήκει μεταξύ των στοιχείων που βρίσκονται από το 25% έως το 75% των στοιχείων του S. Τότε τα δύο τμήματα S 1 και S 2 θα έχουν μέγεθος το πολύ 3/4 του αρχικού n.

Απλός Αλγόριθμος Επιλογής Πολυπλοκότητα SELECT(S, k): Μέση Περίπτωση Tο εύρος [1/4n, 3/4n] καλύπτει τα ½ στοιχεία. H πιθανότητα το Pivot [1/4n, 3/4n] = ½.

Απλός Αλγόριθμος Επιλογής Πολυπλοκότητα SELECT(S, k): Μέση Περίπτωση Επομένως, κατά μέσο όρο, μετά από 2 τυχαίες επιλογές Pivot θα μας έρθει καλή επιλογή!!! η οποία θα μειώσει το μέγεθος του προβλήματος το πολύ σε 3/4 του αρχικού.

Απλός Αλγόριθμος Επιλογής Πολυπλοκότητα SELECT(S, k): Μέση Περίπτωση Άρα, ο μέσος χρόνος του απλού αλγόριθμου περιγράφεται από την αναδρομική σχέση:

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) Input: Ένα σύνολο S με n στοιχεία; Output: Το k-οστής τάξης στοιχείο του S; S 1 x S 2 εάν S 1 = k-1 return x εάν S 1 > k-1 τότε L-SELECT(S 1, k) εάν S 1 < k-1 τότε L-SELECT(S 2, k- S 1-1)

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) Input: Ένα σύνολο S με n στοιχεία; Output: Το k-οστής τάξης στοιχείο του S; S 1 x S 2 Επιλογή του Pivot και διάσπαση του S που οδηγεί σε γραμμικό αλγόριθμο!!!

Γραμμικός Αλγόριθμος Επιλογής Θέλουμε με την κάθε επιλογή του Pivot να επιτυγχάνουμε: Τότε θα δείξουμε ότι στη χειρίστη περίπτωση ισχύσει:

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 1. Χωρίζουμε την ακολουθία S μήκους n σε n/5 υποακολουθίες μήκους 5 η κάθε μία. S = ( ) 1 η 5-αδα 2 η 5-αδα (n/5) η 5-αδα n

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 2. Βρίσκουμε το μέσο κάθε μιας από τις n/5 υποακολουθίες. 1 η 5-αδα i η 5-αδα (n/5) η 5-αδα

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 2. Βρίσκουμε το μέσο κάθε μιας από τις n/5 υποακολουθίες. min μέσα max

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 2. Βρίσκουμε το μέσο κάθε μιας από τις n/5 υποακολουθίες. min μέσα max

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 3. Χρησιμοποιώντας την L-SELECT() αναδρομικά, βρίσκουμε το μέσο m* των n/5 υποακολουθιών. min μέσα max

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 3. Χρησιμοποιώντας την L-SELECT() αναδρομικά, βρίσκουμε το μέσο m* των n/5 υποακολουθιών. min m 1 m 2 m* m n/5 μέσα max { m 1, m 2, } m* {,, } m (n/5)-1 m n/5

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 3. Χρησιμοποιώντας την L-SELECT() αναδρομικά, βρίσκουμε το μέσο m* των n/5 υποακολουθιών. m*

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 4. Διαμερίζουμε την ακολουθία S με pivot το μέσο m*. Α C m* D B Α m* B C? m*? D

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 4. Διαμερίζουμε την ακολουθία S με pivot το μέσο m*. S 1 A S 2 B Συγκρίνουμε τα στοιχεία των χωρίων C και D με το m* Α D m* C B?? Α m* B C m* D S 1 A {x x C D & x < m*} S 2 B {x x C D & x > m*}

Γραμμικός Αλγόριθμος Επιλογής Αλγόριθμος L-SELECT(S, k) 5. Έλεγχος: εάν S 1 = k-1 return x εάν S 1 > k-1 τότε L-SELECT(S 1, k) εάν S 1 < k-1 τότε L-SELECT(S 2, k- S 1-1)

Γραμμικός Αλγόριθμος Επιλογής Ορθότητα Αλγόριθμου L-SELECT(S, k) Προκύπτει άμεσα από την λειτουργία του αλγόριθμου Πολυπλοκότητα Αλγόριθμου L-SELECT(S, k) Θα δείξουμε ότι ο αλγόριθμος είναι γραμμικός στο μέγεθος της εισόδου, δηλαδή, T(n) = O(n) για κάθε είσοδο μήκους n>1.

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Αρχικά προσδιορίζουμε ένα κάτω φράγμα για το πλήθος των στοιχείων που είναι μεγαλύτερα από το m*. m*

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Τουλάχιστον οι μισές 5-αδες (από τις n/5 συνολικά) συνεισφέρουν 3 στοιχεία που είναι μεγαλύτερα του m*. m* Εντός από την 5-αδα που έχει λιγότερα στοιχεία εάν το n δεν διαιρείται ακριβώς δια του 5, και την 5-αδα που περιέχει το m*.

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Επομένως το πλήθος των στοιχείων που είναι μεγαλύτερα του m* είναι m* Αντίστοιχα, το πλήθος των στοιχείων που είναι μικρότερα του m* είναι τουλάχιστον

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Άρα, στην αναδρομική κλήση στο Βήμα 5, ο αλγόριθμος θα δεχθεί ως είσοδο το πολύ m* στοιχεία στην χειρότερη περίπτωση.

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Τώρα μπορούμε να διατυπώσουμε μια αναδρομική σχέση για το χρόνο εκτέλεσης του αλγόριθμου στη χειρίστη περίπτωση. Τα Βήματα 1, 2 και 4 απαιτούν χρόνο. Το Βήμα 3 απαιτεί χρόνο. Το Βήμα 5 απαιτεί χρόνο.

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Δεχόμαστε (θα αποσαφηνιστεί σύντομα) ότι για οποιαδήποτε είσοδο με στοιχεία απαιτείται χρόνος. Με την παραδοχή αυτή παίρνουμε:

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Θα δείξουμε ότι ο χρόνος εκτέλεσης δηλαδή, είναι γραμμικός, για κάποια μεγάλη σταθερά και για όλα τα.

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Αρχικά υποθέτουμε ότι για κάποια επαρκώς μεγάλη σταθερά και για όλα τα (η παραδοχή αυτή ισχύει εφόσον το είναι αρκετά μεγάλο). Αντικαθιστώντας, έχουμε όπου μια σταθερά τέτοια ώστε η συνάρτηση που αντιπροσωπεύει ο όρος να φράσσεται άνω από την ποσότητα για όλα τα.

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Επομένως, Ισχύει: εάν

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Η ανισότητα είναι ισοδύναμη με την ανισότητα όταν

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Δεδομένου ότι υποθέσαμε πως, έχουμε ότι: και επομένως εάν επιλέξουμε η ανισότητα (2) ικανοποιείται!!!

Γραμμικός Αλγόριθμος Επιλογής Ανάλυση Αλγόριθμου L-SELECT(S, k) Σημειώστε ότι δεν υπάρχει τίποτε το ιδιαίτερο όσο αφορά τη σταθερά. Μπορούμε να την αντικαταστήσουμε με οποιοδήποτε ακέραιο και να επιλέξουμε το ανάλογα. Δείξαμε ότι για τον L-SELECT(S, k) ισχύει. Άρα, ο αλγόριθμος είναι γραμμικός στο μέγεθος της εισόδου, δηλ. για κάθε είσοδο μήκους n>1.

Τέλος Ενότητας Ευχαριστώ για τη Συμμετοχή σας!!! Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros