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



Σχετικά έγγραφα
Εισαγωγή στους Αλγορίθμους Ενότητα 5η

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

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

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

Αλγοριθμικές Τεχνικές

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

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Διαίρει και Κυρίευε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

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

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

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

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

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

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

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

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

17. Εισαγωγή σε αριθμητικές μεθόδους για μηχανικούς και αλγορίθμους

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

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

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

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

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

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

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Εισαγωγή στην πληροφορική

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

Transcript:

Εισαγωγή στους Αλγορίθμους Ενότητα 5η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr

Η Μέθοδος «Διαίρει & Βασίλευε» Η Μέθοδος Διαίρει & Βασίλευε (Divide & Conquer)

Διαίρει και βασίλευε Αρκετά παλιά ιδέα... Divide et impera. Veni, vidi, vici. (Διαίρει και βασίλευε. Ήλθον, είδον, νίκησον.) Ιούλιος Καίσαρας (100 44 π.χ.) ) Προσφιλής πολεμική του τακτική: διαίρεση του αντίπαλου στρατεύματος σε δύο μισά και επίθεση στο ένα μισό με ολόκληρο τον στρατό του 3

Διαίρει και βασίλευε Βασική Τεχνική Δά Διάσπαση εισόδου σε τμήματα μικρότερου μεγέθους Επίλυση προβλήματος σε κάθε τμήμα (υποπρόβλημα) αναδρομικά Συνδυασμός επιμέρους λύσεων των υποπροβλημάτων σε μια συνολική λύση για το αρχικό πρόβλημα 4

Διαίρει και βασίλευε Εφαρμογή Ταξινόμηση n στοιχείων Διάσπαση προβλήματος μεγέθους n σε δύο ίσα τμήματα μεγέθους ½n (υποπροβλήματα) Αναδρομική επίλυση κάθε υποπροβλήματος Συνδυασμός των δύο λύσεων σε μια συνολική λύση σε γραμμικό χρόνο Συνέπεια Απλοϊκή μέθοδος (insertion sort): Ο(n 2 ) Διαίρει και βασίλευε (mergesort): Ο(n ( log n) 5

Ταξινόμηση Ταξινόμηση. Δδ Δεδομένων n στοιχείων, δέ διέταξέ τα σε αύξουσα σειρά. Προφανείς εφαρμογές ταξινόμησης. Απαρίθμηση των αρχείων σε έναν φάκελο. Οργάνωση μιας βιβλιοθήκης MP3. Απαρίθμηση η ονομάτων σε ένα τηλεφωνικό κατάλογο. Παρουσίαση των αποτελεσμάτων του Google PageRank. Προβλήματα που γίνονται πιο εύκολα μετά από ταξινόμηση. Εύρεση του μέσου στοιχείου. Εύρεση του πιο κοντινού ζευγαριού. Δυαδική αναζήτηση σε μια βάση δεδομένων. Προσδιορισμός στατιστικών ακραίων τιμών. Ανακάλυψη διπλότυπων σε μια λίστα ταχυδρομείου. Μη-προφανείς εφαρμογές ταξινόμησης. Συμπίεση δεδομένων. δδ Γραφικά υπολογιστών. Χρονοπρογραμματισμός διαστημάτων. Υπολογιστική βιολογία. Ελάχιστα γεννητικά δέντρα. Διαχείριση αλυσίδας προμηθειών. Εξομοίωση ενός συστήματος σωματιδίων. Προτάσεις βιβλίων στο Amazon. Εξισορρόπηση φόρτου σε έναν παράλληλο υπολογιστή.... 6

Ο αλγόριθμος Mergesort

Αλγόριθμος Mergesort. Αλγόριθμος Mergesort Διαίρεση του πίνακα των n στοιχείων σε δύο ίσα τμήματα Αναδρομική ταξινόμηση κάθε (μισού σε μέγεθος) τμήματος Συγχώνευση των δύο (μισών σε μέγεθος) τμημάτων σε ένα πλήρως ταξινομημένο πίνακα Jon von Neumann (1945) A L G O R I T H M S A L G O R I T H M S διαίρεση A G L O R H I M S T ταξινόμηση A G H I L M O R S T συγχώνευση 8

Συγχώνευση (merge) Συγχώνευση. Συνδυασμός δύο εκ των προτέρων ταξινομημένων πινάκων (ή λιστών) σε έναν ταξινομημένο πίνακα (ή λίστα) Πώς συγχωνεύουμε αποδοτικά; Γραμμικός αριθμός συγκρίσεων Χρησιμοποιούμε προσωρινό πίνακα A G L O R H I M S T A G H I Πρόκληση για αυτούς που ενδιαφέρονται. Επί τόπου συγχώνευση [Kronrud, 1969] Χρησιμοποιώντας μόνο ένα σταθερό ποσό επιπλέον μνήμης 9

Συγχώνευση σε Χρόνο O(n) Συγχώνευση. Συγχωνεύστε δύο ταξινομημένες λίστες A = a 1,a 2,,a n και B = b 1,b 2,,b n σε μία μόνο ταξινομημένη λίστα ÐñïóÜñôçóç ôïõ ìéêñüôåñïõ áðü ôá a êáé b óôçí Ýîïäï. i j Óõã ùíåõìýíï áðïôýëåóìá ////// /// b j a i A B i = 1, j = 1 while (και οι δύο λίστες δεν είναι κενές) { if (a i b j ) Προσάρτηση του a i στη λίστα εξόδου και i=i+1 else(a i > b j )Προσάρτηση του b j στη λίστα εξόδου και j=j+1 } προσάρτηση των υπόλοιπων στοιχείων της μη άδειας λίστας στην έξοδο Ισχυρισμός. Η συγχώνευση δύο λιστών μεγέθους n παίρνει χρόνο O(n). Απόδειξη. Μετά από κάθε σύγκριση, το μέγεθος της λίστας εξόδου αυξάνεται κατά 1. 10

Αλγόριθμος Mergesort Χρονική Ανάλυση ΠΧΠ MergeSort(L,1,n) { if L έχει μόνο ένα στοιχείο return το στοιχείο q = (1+n)/2 // Δαίρεσε τον L σε δύο μισά A = MergeSort(L,1,q) B = MergeSort(L,q+1,n) C = Merge(A,B) return C } Jon von Neumann (1945) A L G O R I T H M S A L G O R I T H M S διαίρεση O(1) A G L O R H I M S T ταξινόμηση 2T(n/2) A G H I L M O R S T συγχώνευση O(n) 11

Χρονική ΠΧΠ αναδρομική σχέση T(n) = χρονική ΠΧΠ mergesort μιας εισόδου μεγέθους n Αναδρομή Σχέση Mergesort T(n) T( n/2 ) + T( n/2 ) + cn, c > 0 σταθερά ή απλούστερα T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 12

Βασικές Μέθοδοι Επίλυσης Αναδρομικών Σχέσεων Μέθοδος Εκδίπλωσης Αναδρομής Επαναληπτική Μέθοδος ανάπτυξη αναδρομής Μέθοδος Αντικατάστασης (ή σωστής πρόβλεψης) 13

Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 T(n) T(n/2) T(n/2) T(n/4) T(n/4) T(n/4) T(n/4) log 2 n... T(n / 2 k )... T(2) T(2) T(2) T(2) T(2) T(2) T(2) T(2) 14

Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 cn T(n/2) T(n/2) T(n/4) T(n/4) T(n/4) T(n/4) log 2 n... T(n / 2 k )... T(2) T(2) T(2) T(2) T(2) T(2) T(2) T(2) 15

Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 cn cn/2 cn/2 T(n/4) T(n/4) T(n/4) T(n/4) log 2 n... T(n / 2 k )... T(2) T(2) T(2) T(2) T(2) T(2) T(2) T(2) 16

Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 cn cn/2 cn/2 cn/4 cn/4 cn/4 cn/4 log 2 n... T(n / 2 k )... T(2) T(2) T(2) T(2) T(2) T(2) T(2) T(2) 17

Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 cn cn cn/2 cn/2 2(cn/2) = cn cn/4 cn/4 cn/4 cn/4 log 2 n 4(cn/4) = cn... T(n / 2 k ) 2 k (cn / 2 k ) = cn... T(2) T(2) T(2) T(2) T(2) T(2) T(2) T(2) n/2 (c2) = cn Λύση: T(n) = O(n log n) cn log 2 n 18

Μέθοδος Αντικατάστασης (σωστής πρόβλεψης) Πρόβλεψη. T(n) = O(n log 2 n), ή Τ(n) dn log 2 n, d > 0 σταθερά T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 Απόδειξη. (με επαγωγή στο n) Βάση επαγωγής (n = 1): T(1) = 0 d 1 log 2 1 = 0 Επαγωγική υπόθεση: T(m) dm log 2 m, για κάθε m<n Επαγωγικό βήμα: θα δείξουμε ότι T(n) dn log 2 n Τ(n) ) 2T(n/2) + cn 2d(n/2) log 2 (n/2) + cn = dn[(log 2 n) (log 2 2)] + cn =dn[(log 2 n) 1] + cn = (dn log 2 n) dn + cn dn log 2 n, για κάθε d c 19

Μέθοδος Αντικατάστασης (σωστής πρόβλεψης) Προσοχή με τον προσδιορισμό της σταθεράς d. Πρέπει να προσδιοριστεί έτσι ώστε η λύση Τ(n) dn log 2 n να ισχύει και για τις αρχικές συνθήκες (βάση αναδρομής) ) T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 Αρχική συνθήκη Τ(n) =0, n 1: δεν παρουσιάζει πρόβλημα, γιατί T(1) = 0 d 1 log 2 1 = 0, δηλ. ισχύει για κάθε d c> 0 Αν η αρχική συνθήκη ήταν Τ(n) =1, n 1: Τ(1) = 1 d 1 log 2 1 = 0 (!), δηλ. δεν υπάρχει d > 0 τέτοιο ώστε να ικανοποιεί την Τότε, βλέπουμε τι γίνεται με άλλες μικρές τιμές του n (n=2,3, ) T(2) = 2 + 2c d 2 log 2 2 = 2d, η οποία ισχύει για κάθε d c + 1 Άρα, Τ(n) ) dn log 2 n για κάθε n 2 και για κάθε d c + 1 20

Επαναληπτική Μέθοδος ανάπτυξη αναδρομής T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 Ανάπτυξη αναδρομής. 21

Επαναληπτική Μέθοδος ανάπτυξη αναδρομής T(n) 2T(n/2) + cn, n 2, c > 0 σταθερά T(n) = 0, n 1 Πολλαπλασιασμός κάθε ανισότητας με 2 και πρόσθεση. 22

Άλλες Μέθοδοι Επίλυσης Αναδρομικών Σχέσεων Μέθοδος Εκδίπλωσης Αναδρομής (επιπλέον περιπτώσεις) Μέθοδος Αλλαγής Μεταβλητών Βασικό Θεώρημα 23

T(n) Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) n T(n) =3T(n/4) + n n T(n/4) T(n/4) T(n/4) n/4 n/4 n/4 T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) (α) (β) (γ) n n n/4 n/4 n/4 (3/4)n log n 4 n/16 n/16 n/16 n/16 n/16 n/16 n/16 n/16 n/16 (3/4) 2 n T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) cn log 3 4 (δ) O(n) 24

Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) T(n) =3T(n/4) + n, n 2 T(1) = O(1) Μέγεθος Μγ ςυποπροβλήματος επιπέδου i: n/4 i Αριθμός κορυφών επιπέδου i: 3 i «Κόστος» κορυφών επιπέδου i: 3 i n/4 i = n (3/4) i Ύψος h δένδρου αναδρομής: n/4 h = 1, δηλ. h = log 4 n «Κόστος» (τελευταίου) επιπέδου h: 25

Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) T(n) =T(n/3) + T(2n/3) + cn cn cn c(n/3) c(2n/3) cn log 3/2n c(n/9) c(2n/9) c(2n/9) c(4n/9) cn O(n log n) Μέγεθος μέγιστου υποπροβλήματος επιπέδου i: n (2/3) i Ύψος h δένδρου αναδρομής: n (2/3) h = 1, δηλ. h = log 3/2 n Πρόβλεψη: T(n) = O(n log n) 26

Μέθοδος Εκδίπλωσης Αναδρομής (δένδρο αναδρομής) T(n) =T(n/3) + T(2n/3) + cn Μέγεθος μέγιστου υποπροβλήματος επιπέδου i: n (2/3) i Ύψος h δένδρου αναδρομής: n (2/3) h =1 1, δηλ. h=log 3/2 n Πρόβλεψη: T(n) = O(n log n) Επαλήθευση: μέθοδος αντικατάστασης (επαγωγή) Τ(n) a n log n, για κάποια σταθερά a > 0 που ισχύει για α c/(log 3 2/3) 27

Μέθοδος Αλλαγής Μεταβλητών Θέτουμε m = log n, άρα n = 2 m και n = 2 m/2 Θέτοντας S(m) = Τ(2 m ), παίρνουμε Τ(2 m ) = 2 T(2 m/2 ) + m S(m) = 2S(m/2)+ m για την οποία ήδη γνωρίζουμε ότι S(m) = O(m log m) Άρα, Τ(n) = Τ(2 m ) = S(m) = O(m log m) = O(log n loglog n) 28

Βασικό Θεώρημα Αναδρομών Έστω Τότε, για 29

Παραδείγματα T(n) = 2 T(n/2) + n T(n) = 2 T(n/2) + 1 T(n) = 3 T(n/4) + n T(n) = (1/2) T(4n/5) + (log n) 1/2 T(n) = 16 T(n/8) + n 2/3 T(n) = (4/3) T(n 3/4 ) + log n 30

Μέτρηση Αντιστροφών

Μέτρηση Αντιστροφών Μουσική ιστοσελίδα: προσπαθεί να ταιριάξει τις προτιμήσεις σας στα τραγούδια με άλλους Εσείς βαθμολογείτε n τραγούδια Η ιστοσελίδα συμβουλεύεται μια βάση δεδομένων για να βρει άτομα με παραπλήσιες προτιμήσεις Μετρική ομοιότητας: αριθμός αντιστροφών μεταξύ δύο βαθμολογιών Η βαθμολογία μου: 1, 2,, n. Η βαθμολογία σου: a 1, a 2,, a n. Τα τραγούδια i και j «αντιστρέφονται» ρφ αν i < j, αλλά a i > a j. Τραγούδια A B C D E Εγώ 1 2 3 4 5 Εσύ 1 3 4 2 5 Αντιστροφές 3-2, 4-2 Ωμή βία: έλεγξε όλα τα (n 2 ) ζευγάρια i και j 32

Εφαρμογές Εφαρμογές. Θεωρία ψηφοφορίας Συνεργατικό φιλτράρισμα Μέτρηση του ταξινομημένου ποσοστού ενός πίνακα Ανάλυση ευαισθησίας της συνάρτησης κατάταξης της Google Άθροισμα βαθμού για μετα-αναζητήσεις στο διαδίκτυο 33

Μέτρηση Αντιστροφών: Διαίρει και βασίλευε Διαίρει και βασίλευε. 1 5 4 8 10 2 6 9 12 11 3 7 34

Μέτρηση Αντιστροφών: Διαίρει και βασίλευε Διαίρει και βασίλευε. Διαίρει: διαχώρισε την λίστα σε δύο ίσα τμήματα 1 5 4 8 10 2 6 9 12 11 3 7 Διαίρει: O(1). 1 5 4 8 10 2 6 9 12 11 3 7 35

Μέτρηση Αντιστροφών: Διαίρει και βασίλευε Διαίρει και βασίλευε. Διαίρει: διαχώρισε την λίστα σε δύο ίσα τμήματα Βασίλευε: αναδρομικά μέτρησε τις αντιστροφές σε κάθε τμήμα 1 5 4 8 10 2 6 9 12 11 3 7 Διαίρει: O(1). 1 5 4 8 10 2 6 9 12 11 3 7 Βασίλευε: 2T(n / 2) 5 αντιστροφές μπλε-μπλε 8 αντιστροφές πράσινο-πράσινο 5-4, 5-2, 4-2, 8-2, 10-2 6-3, 9-3, 9-7, 12-3, 12-7, 12-11, 11-3, 11-7 36

Μέτρηση Αντιστροφών: Διαίρει και βασίλευε Διαίρει και βασίλευε. Διαίρει: διαχώρισε την λίστα σε δύο ίσα τμήματα Βασίλευε: αναδρομικά μέτρησε τις αντιστροφές σε κάθε τμήματα Συνδύασε: μέτρα τις αντιστροφές όπου a i και b j είναι σε διαφορετικά τμήματα και επέστρεψε ρψ το άθροισμα των τριών ποσοτήτων. 1 5 4 8 10 2 6 9 12 11 3 7 Διαίρει: O(1). 1 5 4 8 10 2 6 9 12 11 3 7 Βασίλευε: 2T(n / 2) 5 αντιστροφές μπλε-μπλε 8 αντιστροφές πράσινο-πράσινο 9 αντιστροφές μπλε-πράσινο 5-3, 4-3, 8-6, 8-3, 8-7, 10-6, 10-9, 10-3, 10-7 Συνδύασε:??? Σύνολο = 5 + 8 + 9 = 22. 37

Μέτρηση αντιστρόφων: Συνδύασε Συνδύασε: συγχώνευσε και μέτρησε τις αντιστροφές μπλε-πράσινο Υποθέτουμε ότι κάθε τμήμα είναι ταξινομημένο Μέτρησε τις αντιστροφές όπου a i και b j είναι σε διαφορετικά τμήματα Συγχώνευσε τα δύο ταξινομημένα τμήματα σε ένα ταξινομημένο πίνακα b j < a i b j είναι μικρότερο από όλα τα εναπομείναντα στοιχεία του Α = = αντιστροφές που αφορούν το b j 38

Μέτρηση αντιστρόφων: Συνδύασε Συνδύασε: συγχώνευσε και μέτρησε τις αντιστροφές μπλε-πράσινο Υποθέτουμε ότι κάθε τμήμα είναι ταξινομημένο Μέτρησε τις αντιστροφές όπου a i και b j είναι σε διαφορετικά τμήματα Συγχώνευσε τα δύο ταξινομημένα τμήματα σε ένα ταξινομημένο πίνακα 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 0 0 13 αντιστροφές μπλε-πράσινο: 6 + 3 + 2 + 2 + 0 + 0 μέτρησε: O(n) 2 3 7 10 11 14 16 17 18 19 23 25 συγχώνευσε: O(n) 39

Μέτρηση αντιστροφών: Υλοποίηση Αρχική κατάσταση. [Merge-and-Count] Τα A και B είναι ταξινομημένα. Τελική κατάσταση. [Sort-and-Count] Η L είναι ταξινομημένη. Sort-and-Count(L) { // η L έχει n στοιχεία if η λίστα L έχει μόνο ένα στοιχείο return 0 και την λίστα L Δαίρεσε την λίστα σε δύο ισομεγέθη τμήματα A και B (r A, A) Sort-and-Count(A) (r B, B) Sort-and-Count(B) (r B, L) Merge-and-Count(A, B) } return r = r A + r B + r και την ταξινομημένη λίστα L T(n) T n/2 T n/2 O(n) T(n) O(nlog n) 40