ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Σχετικά έγγραφα
ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

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

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


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

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

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη 2017

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

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


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

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

Z L L L N b d g 5 * " # $ % $ ' $ % % % ) * + *, - %. / / + 3 / / / / + * 4 / / 1 " 5 % / 6, 7 # * $ 8 2. / / % 1 9 ; < ; = ; ; >? 8 3 " #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Χαρακτηριστικά της ανάλυσης διασποράς. ΑΝΑΛΥΣΗ ΙΑΣΠΟΡΑΣ (One-way analysis of variance)

ΗΥ-150. Ταξινόµηση και Αναζήτηση

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

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

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

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

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

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

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

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

p

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

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

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

Outline. M/M/1 Queue (infinite buffer) M/M/1/N (finite buffer) Networks of M/M/1 Queues M/G/1 Priority Queue

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

Αλγόριθμοι. Μάρθα Σιδέρη. ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 20% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία.

rs r r â t át r st tíst Ó P ã t r r r â

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

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

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

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

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

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

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

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

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 9: ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΕΞΙΣΟΡΡΟΠΗΣΗ, ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ

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

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

Transcript:

ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf6/ Άνοιξη 07 - I. ΜΗΛΗΣ ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ Divide ad Coquer (D&C) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II

Divide & Coquer Αναδρομικά (μέχρι υπο-προβλήματα μεγέθους ): () Διαίρεσε το πρόβλημα σε υπο-προβλήματα μεγέθους /b () Λύσε α τέτοια υπο-προβλήματα (3) Συνδύασε τις λύσεις τους () + (3) : πολυπλοκότητα f() d (b m ) (): πολυπλοκότητα αt(/b) b d T ( ) at ( ) +, a > 0, b >, d ³ 0, b m ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II

Recursio Tree ad Complexity α 0 α b m Þ mlog b Level k : a Work for levelk : k a k k b α subproblems, each of d ö ø Total work for all levels: T( ) æ ç è d size / b æ ç è a d b d m k 0 k ö ø å æ ç è k a d b k ö ø a m ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 3

Master* Theorem If T ( ) at ( b ) + d, a > 0, b >, d ³ 0, the : ad b m ( m log b ), T ( ) ìo( ï ío( ï îo( d d log ), log b a b ), ), if if if d d d > < log log log b b b a a a ( b ( b ( b d d d > < a) a) a) Compare d ~ logb a ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 4

Maximum Sub-array (MSA) ΕΙΣΟΔΟΣ: Πίνακας αριθμών Α[..] ΕΞΟΔΟΣ: Υπο-πίνακας Α[p..q] με το μέγιστο άθροισμα στοιχείων Θέλουμε να βρούμε δείκτες p,q, p q, τέτοιους ώστε το V ( p, q) å A( i) να είναι μέγιστο i p δηλαδή, V ( p, q) ³ V ( p', q'), " p' q' Παράδειγμα: Ιστορία κερδών Year 3 4 5 6 7 8 9 Profit -3-4 5-3 - q Να βρεθεί η περίοδος ετών με το μεγαλύτερο κέρδος: V(5,8)9 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 5

Maximum Sub-array: D&C A[] S m ê + ú ê ë ú û S A[] S3 A[ m] A[ m + ] MCS είναι το μέγιστο από: S : MSA στον υπο-πίνακα A( m) S : MSA στον υπο-πίνκα A(m+,) S 3 : MSA που περιέχει ΚΑΙ το A(m) ΚΑΙ το A(m+) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 6

Maximum Sub-array: D&C R L S! 3 L R A[p] A[q] j q m q m V q m V q R m p i m p V m p V p L + " + ³ + " ³ ' '),, ( ), ( such that :fid ' ), ', ( ), ( such that :fid A[j] A[i] A[m] A[m+]

Maximum Sub-array: D&C Διαδικάσία fid_s 3 (A[i..j],m) Είσοδος: (υπο)πίνακας Α[i..j], µεσαία θέση m Έξοδος: Max sub-array που περιέχει τα στοιχεία Α[m] και Α[m+] (άθροισµα στοιχείων και θέσεις) LA[m], pm, LmaxA[m] for km- dow to i: LL+A[k] if L>Lmax: Lmax L, pk RA[m+], qm+, RmaxA[m+] for km+ to j: RR+A(k) if R>Rmax: Rmax R, qk S 3 Lmax+Rmax COMPLEXITY: O() ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 8

Maximum Sub-array: D&C διαδικασία MSA (A[i..j]) Είσοδος: (υπο)πίνακας Α[i..j] Έξοδος: Max sub-array του Α (άθροισµα στοιχείων και θέσεις) if ij: retur Vmax A[i], pi, qi else: ê i + j ú Divide: O() m ê ú ë û MSΑ (A[i,.m]) T(/) MSΑ (A[m+.. j]) T(/) fid_s 3 (A[i..j],m) O() Coquer: O() retur the maximum of these three MSA s (ad the correspodig p ad q) O() Αρχική κλήση: MSA(A[..]) MasterTheorem T( ) T ( ) + O( ), T() Þ T( ) O( log ) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 9

Maximum Sub-array: D&C ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 0

Merge Sort ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II

Merge Sort Divide: O() Coquer: O() ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II

Merge Sort O() T(/) T(/) Εύκολη διαίρεση του προβλήματος Εύρεση του ë/ û : Ο() Δύσκολη σύνθεση λύσεων υποπροβλημάτων merge : O() ì, if MasterTheorem T( ) í Þ T( ) O( log) ît ( / ) + O( ), if ³ Χώρος-Μνήμη : (θυμηθείτε την merge) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 3

Quick Sort QuickSort (A, p, r) if p < r: select pivot x; Partitio (A,p,r) //split A ito A[p,q-],A[q+,r]; // A[i] x, p i q- // x A[i], q+ i r // q is the fial positio of x QuickSort (A[p,q-]); QuickSort (A[q+,r]); T. Hoare, 960 p q r R. Sedgewick Ph.D. thesis, 975 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 4

Quick Sort Partitio (A, p, r) xa[r] ip- for j p to r-: if A[j] x: ii+ swap(a[i],a[j]) swap(a[i+],a[r]) qi+ retur q Complexity O() (- iteratios/comparisos) Elemets are compared oly with the pivot ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 5

Quick Sort Elemets are compared oly with the pivot(s) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 6

Quick Sort QuickSort (A, p, r) if p < r: select pivot x; Partitio (A,p,r) O() //split A ito A[p,q-],A[q+,r]; // A[i] x, p i q- // x A[i], q+ i r // q is the fial positio of x QuickSort (A[p,q-]); QuickSort (A[q+,r]); T(q-) T(-q) Divide: O() No Coquer Δύσκολη διαίρεση του προβλήματος Partitio (A,q,r) : Ο() Εύκολη σύνθεση λύσεων υποπροβλημάτων Δεν χρειάζεται να κάνουμε τίποτα! ΠΟΛΥΠΛΟΚΟΤΗΤΑ: T ( ) T( q -) + T( - q) + O( )??? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 7

Quick Sort - Worst Case q Partitio ito - ΣΕ ΚΑΘΕ ΒΗΜΑ Pivot is the mi (or the max) T() T(-) + å k k (+ ) O( ) Αν x A[r], πότε συμβαίνει η χειρότερη περίπτωση? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 8

Quick Sort - Best Case Partitio ito q ë / û é / ù- ΣΕ ΚΑΘΕ ΒΗΜΑ Pivot is the media (what s the cost to fid it?) T() æ ö Tç + O() è ø / O(log) / /4 /4 /4 /4........ log (depth of recursio) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 9

Quick Sort - Best Case k - Partitio ito ³ ΣΕ ΚΑΘΕ ΒΗΜΑ k k για όποια σταθερά k æ k - ö æ ö T() Tç + Tç + O() è k ø è k ø q k a k - Depth of recursio log log a log α O( log ) T() O(log) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 0

Quick Sort - Best Case k0 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II

Quick Sort - Average Case Ισοπίθανες μεταθέσεις Διαφορετικές τιμές των στοιχείων του πίνακα A[..] Κάθε pivot x (διαίρεση q) είναι ισοπίθανη Αverage case complexity average # of comparisos E(X) Έστω i: to i-στο μεγαλύτερο στοιχείο του πίνακα Α[..] E[X ij ij ] Pr[i is compared to j],, 3,.,i,, j,, -, ì, if i is compared to j Xij í î0, otherwise E[X ] Pr[i is compared to j] + 0 Pr[i ot NOTcompared to j] Expected # of comparisos E[X]? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II

Quick Sort - Average Case i: to i-στο μεγαλύτερο στοιχείο του πίνακα Α[..] E[X ij ] Pr[i iscompared to j] Expected # of comparisos E[X] E[X] é Eê ë - å i - å i å j i+ å j i+ X ij ù ú û - å i å j i+ E[X Pr[i iscompared to j] ij ] Þ Pr[i iscompared to j]? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 3

Quick Sort - Average Case Elemets are compared oly with the pivot(s) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 4

Quick Sort - Average Case ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 5

Quick Sort - Average Case ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 6

Quick Sort - Average Case ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 7

Quick Sort - Average Case ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 8 ) log ( ) ( j] iscompared to Pr[i E[X] comparisos Expected # of O H k k i j k i i k i i j k i j i i j i - ø ö ç è æ < + + - å å å å å å å å - - - - + - + -

Lower boud for sortig ΟΛΟΙ ΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΟΥΝ ΣΥΓΚΡΙΣΕΙΣ Συγκρίσεις στοιχείων ανά Δυαδικό δέντρο αποφάσεων συγκρίσεων # φύλλων # πιθανών διατάξεων! Δεν μπορεί να λείπει καμία διάταξη: τι θα απαντούσε ο αλγόριθμος αν η είσοδος του ταξινομείται σύμφωνα με αυτή τη διάταξη? ΠΟΛΥΠΛΟΚΟΤΗΤΑ μεγαλύτερο μονοπάτι ύψος του δέντρουd ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 9

Lower boud for sortig Πλήρες δυαδικό δένδρο ύψους d: # φύλλων d Κάθε δυαδικό δένδρο ύψους d (και το δικό μας): # φύλλων d # φύλλων # πιθανών διατάξεων! Άρα d! Þ d ³ log(!) dω(?) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 30

Lower boud for sortig ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 3 ) log ( ) (log log log... log... log...... log!) log( d W - ø ö ç è æ ø ö ç ç ç è æ ø ö ç è æ ø ö ç è æ ø ö ç è æ ø ö ç è æ ø ö ç è æ ³ ø ö ç è æ ø ö ç è æ + ø ö ç è æ + ³ ø ö ç è æ ø ö ç è æ + ø ö ç è æ + ³ ) log (!) log( ΠΟΛΥΠΛΟΚΟΤΗΤΑ Άρα d W ³

Media ad Selectio SELECTION (ΕΠΙΛΟΓΗ) ΕΙΣΟΔΟΣ: (διαφορετικοί μεταξύ) τους στοιχεία αριθμοί αριθμός k, k ΕΡΩΤΗΣΗ: το k-οστό μεγαλύτερο στοιχείο k: miimum, k: maximum k ë(+)/û à MEDIAN (ΔΙΑΜΕΣΟΣ) k odd: x x x M x x x (7, k 4) k eve: x x x M x x x x (8, k 4 - lower media) To στοιχείο από το οποίο οι μισοί αριθμοί είναι μικρότεροι και οι άλλοι μισοί μεγαλύτεροι Προφανής αλγόριθμος: Ο( log ) γιατί? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 3

Selectio Divide ad Coquer Select (A, p, r, k) if p r: retur A[p] select pivot x; Partitio (A,p,r) //split A ito A[p,q-],A[q+,r]; // A[i] x, p i q- // x A[i], q+ i r // q is the fial positio of x mq-p+ if km: retur A[q] else: if k < m: Select(A, p, q-, k) else: Select(A, q+,r, k-m) p q r k,,3 k4 MEDIAN k5,6,7,8 m4 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 33

Selectio Divide ad Coquer Selectio vs. Quicksort Quicksort: διαιρώ και αναδρομικά εξετάζω και τα τμήματα Selectio: διαιρώ και αναδρομικά εξετάζω μόνο το ένα τμήμα Selectio: Πολυπλοκότητα Χειρότερη περίπτωση: πάντα πάμε στο μεγαλύτερο τμήμα Complexity : T() T(max{ q -, - q}) + ( -) Best case: T() T(/) + O(): O() (ακόμα και αν kq στην πρώτη κλήση: Ο() ) Worst case: T() T(-) + O(): O( ) Average case:? ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 34

Selectio - D&C Average Case Equiprobable permutatios Each pivot x (partitio q) is equiprobable Distict values of elemets of A[..] q: fial positio of the pivot Pr[ partitio q] Expected complexity T ( ) å q..., T() T(max{ q -, - q}) + ( -) [ T (max{ q -, O(log) - q}) + ( -)] [Απόδειξη CLRS 9.] ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 35

Selectio Radomized D&C Select (A, p, r, k) if p r: retur A[p] repeat irandom(p,r) swap (A[i], A[r]) Partitio (A,p,r) Τυχαία επιλογή ενός αριθμού i: p i r util q³(r-p)/4 ad (r-q)³(r-p)/4 mq-p+ Μέχρι να βρεθεί ένα καλό pivot if km: retur A[q] else: if k < m: Select(A,p,q-,k) else: Select(A,q+,r,k-m) p() q r() Κακή επιλογή Καλή επιλογή Καλή επιλογή Κακή επιλογή /4 /4 3/4 ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 36

Selectio Radomized D&C Πόσες επαναλήψεις Z χρειάζονται μέχρι να βρεθεί ένα καλό pivot? Αναμονή μέχρι την πρώτη επιτυχία (Waitig for the first success) Z # επαναλήψεων µέχρι την πρώτη επιτυχία (radom variable) p Pr [ένα τυχαίο pivot είναι καλό] Pr[Zj] : πιθανότητα επιτυχίας στην j-οστή επανάληψη Pr[Zj] (-p) j- p : (,,, j-: αποτυχηµένες επαναλήψεις j: επιτυχηµένη επανάληψη) E[ Z] j p å j Pr[ Z j] å - j( - p) p å - p j p - p ( - p p) p j j Θυµηθείτε: å j j( - j( - p) p) j p j - p ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 37

Selectio Radomized D&C Πόσες επαναλήψεις Z χρειάζονται μέχρι να βρεθεί ένα καλό pivot? E [ Z] p, όπου p Pr [ένα τυχαίο pivot είναι καλό]? Κακή επιλογή Καλή επιλογή Καλή επιλογή Κακή επιλογή /4 /4 3/4 Τα μισά στοιχεία είναι καλές επιλογές! Άρα p Pr [ένα τυχαίο pivot είναι καλό] / και Ε[Z]! Με µόνο αναµενόµενες επαναλήψεις Αναµενόµενη πολυπλοκότητα: Τ() T(3/4) + Ο() O()! ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 38

Selectio O() worst case χώρισε τον πίνακα σε πεντάδες βρες τον μέσο κάθε πεντάδας βρες τον μέσο των μέσων Βρίσκουμε καλό pivot Worst case T()T(7/0)+T(/5)+Ο() Ο()! [ Blum, Floyd, Pratt, Rivest, Tarja - 973 ] ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 39

Selectio O() worst case χώρισε τον Α σε ë/5û ομάδες με 5 στοιχεία κάθε μία 54 ë/5û πεντάδες ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 40

Selectio O() worst case βρες τον μέσο κάθε πεντάδας: χρόνος O() γιατί? για όλες τις πεντάδες: χρόνος O() medias ë/5û πεντάδες ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 4

Selectio O() worst case βρες τον μέσο x των μέσων των πεντάδων: χρόνος Τ(ë/5û) x media οf medias ë/5û πεντάδες ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 4

Selectio O() worst case τουλάχιστον ë ë/5û / û ë/0û μέσοι x x media οf medias ë/5û πεντάδες ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 43

Selectio O() worst case τουλάχιστον ë ë/5û / û ë/0û μέσοι x τουλάχιστον 3 στοιχεία σε κάθε πεντάδα x τουλάχιστον 3 ë/0û στοιχεία x x media οf medias ë/5û πεντάδες ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 44

Selectio O() worst case τουλάχιστον ë ë/5û / û ë/0û μέσοι ³ x τουλάχιστον 3 στοιχεία σε κάθε πεντάδα ³ x τουλάχιστον 3 ë/0û στοιχεία ³ x x media οf medias ë/5û πεντάδες ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 45

Selectio O() worst case χώρισε τον πίνακα Α σε πεντάδες: O() πεντάδες βρες τον μέσο κάθε πεντάδας: O() βρες τον μέσο των μέσων : Τ(/5) O() για όλες τις πεντάδες x x x ³ x 3/0 7/0 κάλεσε αναδρομικά για το πολύ ~ 7/0 στοιχεία Τ() T(7/0) + T(/5) + O() O() (γιατί 7/0+/5 ) ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 07 - Ι. ΜΗΛΗΣ - 05 - DIVIDE & CONQUER II 46