Τίτλος Μαθήματος: Εισαγωγή στη Θεωρία και Ανάλυση Αλγορίθμων Ενότητα: Μέθοδος «Διαίρει και Βασίλευε», ταξινόμηση Διδάσκων: Λέκτορας Xάρης Παπαδόπουλος Τμήμα: Μαθηματικών
641: Γηζαγςγή ζηε Θεςνία θαη Ακάιοζε Αιγμνίζμςκ Υάνεξ Παπαδόπμοιμξ
Τιε ημο μαζήμαημξ Βαζηθά ζημηπεία ζπεδίαζεξ & ακάιοζεξ αιγμνίζμςκ Ακάιοζε αιγμνίζμςκ, απμδμηηθόηεηα, αζομπηςηηθόξ ζομβμιηζμόξ οκεζηζμέκμη πνόκμη εθηέιεζεξ θαη βαζηθέξ δμμέξ δεδμμέκςκ πίκαθεξ, ιίζηεξ, ζημίβεξ, μονέξ Γοζηαζέξ ηαίνηαζμα, μνζόηεηα, ζςνόξ θαη μονά πνμηεναηόηεηαξ Ιέζμδμξ «Δηαίνεη θαη Βαζίιεοε» Γθανμμγέξ ζε ηαληκόμεζε ζημηπείςκ Γπίιοζε ακαδνμμηθώκ ζπέζεςκ Γναθήμαηα θαη αιγόνηζμμη γναθεμάηςκ Δηάηνελε γναθεμάηςκ (BFS, DFS) οκεθηηθόηεηα Σμπμιμγηθή δηάηαλε Ιέζμδμη «Απιεζηείαξ» θαη «Δοκαμηθμύ Πνμγναμμαηηζμμύ» Γιάπηζηα ζθειεηηθά δέκδνα (αιγόνηζμμξ Prim, αιγόνηζμμξ Kruskal) οκημμόηενεξ δηαδνμμέξ (αιγόνηζμμξ Dijkstra, Ρμή δηθηύμο) Υνμκμπνμγναμμαηηζμόξ Γπηιεγμέκα ζέμαηα Τπμιμγηζηηθή πμιοπιμθόηεηα, NP-πιενόηεηα 2
Ε Ιέζμδμξ «Δηαίνεη & Βαζίιεοε» (Divide & Conquer)
Δηαίνεη θαη βαζίιεοε H μέζμδμξ «Δηαίνεη θαη βαζίιεοε» Δηαζπάμε ηεκ είζμδμ ζε ανθεηά ημήμαηα μηθνόηενμο μεγέζμοξ. Γπηιύμομε ημ πνόβιεμα ζε θάζε ημήμα ακαδνμμηθά. οκδοάδμομε ηηξ επημένμοξ ιύζεηξ ηςκ οπμπνμβιεμάηςκ ζε μηα ζοκμιηθή ιύζε γηα ημ ανπηθό πνόβιεμα. Γθανμμγή: Σαληκόμεζε n ζημηπείςκ Δηάζπαζε ημο πνμβιήμαημξ μεγέζμοξ n ζε δομ ίζα ημήμαηα μεγέζμοξ ½n. Ακαδνμμηθή επίιοζε ηςκ δύμ ημεμάηςκ. οκδοαζμόξ ηςκ δύμ ιύζεςκ ζε μηα ζοκμιηθή ιύζε ζε γναμμηθό πνόκμ. Απμηέιεζμα: Απιμσθή μέζμδμξ (insertion sort): O(n 2 ) Δηαίνεη θαη βαζίιεοε (mergesort): O(n log n) Divide et impera. Veni, vidi, vici. - Julius Caesar Πνμζθηιήξ πμιεμηθή ηαθηηθή: δηαίνεζε ημο ακηίπαιμο ζηναηεύμαημξ ζε δύμ μηζά θαη επίζεζε ζημ έκα μηζό με μιόθιενμ ημκ ζηναηό ημο. 4
O αιγόνηζμμξ Mergesort
Σαληκόμεζε Δεδμμέκςκ n ζημηπείςκ, δηέηαλέ ηα ζε αύλμοζα ηάλε. Γθανμμγέξ. Σαληκόμεζε μηαξ ιίζηαξ μκμμάηςκ. Ονγάκςζε ηναγμοδηώκ ζημ θηκεηό. Πανμοζίαζε απμηειεζμάηςκ ημο Google PageRank. Θίζηα (RSS) εηδήζεςκ ζε ακηίζηνμθε πνμκμιμγηθή ζεηνά. Πνμθακήξ εθανμμγέξ ηαληκόμεζεξ Γύνεζε ημο μέζμο. Γύνεζε ημο πημ θμκηηκμύ δεύγμοξ. Δοαδηθή ακαδήηεζε. Πνμζδημνηζμόξ ζηαηηζηηθώκ αθναίςκ ηημώκ. Γύνεζε δηπιόηοπςκ ζε μηα ιίζηα μκμμάηςκ. Πνμβιήμαηα πμο ιύκμκηαη πημ εύθμια μεηά ηεκ ηαληκόμεζε ομπίεζε δεδμμέκςκ. Γναθηθά οπμιμγηζηώκ. Τπμιμγηζηηθή βημιμγία. Υνμκμπνμγναμμαηηζμόξ δηαζηεμάηςκ. Ιε-πνμθακήξ εθανμμγέξ Πνμηάζεηξ βηβιίςκ από Amazon. Γληζμννόπεζε θόνημο ενγαζίαξ ζε έκακ πανάιιειμ οπμιμγηζηή.... 6
Ο αιγόνηζμμξ Mergesort Mergesort. Δηαίνεζε ημκ πίκαθα ζηε μέζε. Ακαδνμμηθά ηαληκόμεζε ημ θάζε μηζό ημήμα. ογπώκεοζε ηα δομ μηζά (πμο είκαη πιέμκ ηαληκμμεμέκα) ζε έκακ πιήνε ηαληκμμεμέκμ πίκαθα 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) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 7
ογπώκεοζε (merging) ογπώκεοζε. οκδύαζε δομ ήδε ηαληκμμεμέκεξ ιίζηεξ ζε μηα πιήνε ηαληκμμεμέκε ιίζηα. Πώξ ζογπςκεύμομε απμδμηηθά; Γναμμηθόξ ανηζμόξ ζογθνίζεςκ Υνεζημμπμημύμε πνμζςνηκό πίκαθα (μεγέζμοξ n). A G L O R H I M S T A G H I L Πνόθιεζε γηα όζμοξ εκδηαθένμκηαη. Γπη-ηόπμο ζογπώκεοζε [Kronrud, 1969] Υνεζημμπμηώκηαξ μόκμ έκα ζηαζενό μέγεζμξ επηπιέμκ μκήμεξ 8
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία ειάπηζημ ειάπηζημ A G L O R H I M S T A Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 9
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία ειάπηζημ ειάπηζημ A G L O R H I M S T A G Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 10
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία ειάπηζημ ειάπηζημ A G L O R H I M S T A G H Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 11
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία ειάπηζημ ειάπηζημ A G L O R H I M S T A G H I Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 12
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία ειάπηζημ ειάπηζημ A G L O R H I M S T A G H I L Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 13
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία ειάπηζημ ειάπηζημ A G L O R H I M S T A G H I L M Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 14
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία ειάπηζημ ειάπηζημ A G L O R H I M S T A G H I L M O Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 15
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία ειάπηζημ ειάπηζημ A G L O R H I M S T A G H I L M O R Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 16
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία πνώημ μηζό ελακηιήζεθε ειάπηζημ A G L O R H I M S T A G H I L M O R S Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 17
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία πνώημ μηζό ελακηιήζεθε ειάπηζημ A G L O R H I M S T A G H I L M O R S T Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 18
ογπώκεοζε ογπώκεοζε Παναθμιμύζεζε ημ ειάπηζημ ζημηπείμ ζε θάζε ηαληκμμεμέκμ μηζό Γηζήγαγε ημ ειάπηζημ από ηα δύμ ζημηπεία ζε έκα βμεζεηηθό πίκαθα Γπακέιαβε μέπνη κα ηειεηώζμοκ ηα ζημηπεία πνώημ μηζό ελακηιήζεθε δεύηενμ μηζό ελακηιήζεθε A G L O R H I M S T A G H I L M O R S T Βμεζεηηθόξ πίκαθαξ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 19
Γναμμηθόξ πνόκμξ: Ο(n) ογπώκεοζε. ογπςκεύζηε δύμ ηαληκμμεμέκεξ ιίζηεξ A = a 1,a 2,,a n θαη B = b 1,b 2,,b n ζε μηα κέα ηαληκμμεμέκε ιίζηα. i = 1, j = 1 while (οι δςο λίζηερ δεν είναι κένερ) { if (a i b j ) πποζάπηηζε a i ζηη λίζηα εξόδος και αύξηζε i else(a i πποζάπηηζε b j ζηη λίζηα εξόδος και αύξηζε j } πποζάπηηζε ηα ςπόλοιπα ζηοισεία ηηρ μη-κενήρ λίζηαρ ζηην έξοδο Ζζπονηζμόξ. ογπώκεοζε δύμ ιηζηώκ μεγέζμοξ n παίνκεη O(n) πνόκμ. Απόδ. Ιεηά από θάζε ζύγθνηζε, ημ μέγεζμξ ηεξ ελόδμο αολάκεηαη θαηά 1. Υνεώκμομε ημ θόζημξ ζημ ζημηπείμ πμο πνμζζέημομε ζηεκ έλμδμ. 20
Ο αιγόνηζμμξ Mergesort Ακάιοζε Υνμκηθή Πμιοπιμθόηεηαξ Mergesort(A,l,r) { if A έσει μόνο ένα ζηοισείο return ηο μοναδικό ζηοισείο q = (l+n)/2 // διαίπεζε ΑL = Mergesort(A,l,q) ΑR = Mergesort(A,q+1,r) B = Merge(AL,AR) // ζςνδύαζε } 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) 21
Ακάιοζε Υνμκηθή Πμιοπιμθόηεηαξ Ακαδνμμηθή πέζε Ονηζμόξ T(n) = Υ.Π. ημο mergesort ζε είζμδμ μεγέζμοξ n. Ακαδνμμηθή πέζε Mergesort. Σ(n) T( n/2 ) + T( n/2 ) + cn, c > 0 ζηαζενά ή απιμύζηενα: Σ(n) 2 T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(n) = 0, γηα n 1 Θύζε. T(n) = O(n log 2 n). 22
Σνόπμη Γπίιοζεξ Ακαδνμμηθώκ πέζεςκ Ιέζμδμη Γπίιοζεξ: Ιέζμδμξ εθδίπιςζεξ ακαδνμμήξ (δέκηνμ ακαδνμμήξ) Γπακαιεπηηθή μέζμδμξ ακάπηολε δηαδνμμήξ Ιέζμδμξ ακηηθαηάζηαζεξ ζςζηήξ πνόβιερεξ Ιέζμδμξ αιιαγήξ μεηαβιεηώκ Βαζηθό Θεώνεμα Ακαδνμμώκ (Ιaster Theorem) Γναμμηθέξ ακαδνμμηθέξ ζπέζεηξ Υνήζημμ θαη ζοκμπηηθό οιηθό με πμιιά παναδείγμαηα (~16 ζειίδεξ) οπάνπεη ζημ ecourse!! 23
Ιέζμδμξ εθδίπιςζεξ ακαδνμμήξ (δέκηνμ ακαδνμμήξ) Σ(n) 2 T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(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) 24
Ιέζμδμξ εθδίπιςζεξ ακαδνμμήξ (δέκηνμ ακαδνμμήξ) Σ(n) 2 T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(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) 25
Ιέζμδμξ εθδίπιςζεξ ακαδνμμήξ (δέκηνμ ακαδνμμήξ) Σ(n) 2 T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(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) 26
Ιέζμδμξ εθδίπιςζεξ ακαδνμμήξ (δέκηνμ ακαδνμμήξ) Σ(n) 2 T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(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) 27
Ιέζμδμξ εθδίπιςζεξ ακαδνμμήξ (δέκηνμ ακαδνμμήξ) Σ(n) 2 T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(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... 2c 2c 2c 2c 2c 2c 2c 2c n/2 (2c) = cn cn log 2 n 28
Ιέζμδμξ εθδίπιςζεξ ακαδνμμήξ (δέκηνμ ακαδνμμήξ) Σ(n) 2 T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(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... 2c 2c 2c 2c 2c 2c 2c 2c n/2 (2c) = cn Θύζε. T(n) = O(n log n) cn log 2 n 29
Ιέζμδμξ ακηηθαηάζηαζεξ ζςζηήξ πνόβιερεξ Σ(n) 2T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(n) = 0, γηα n 1 Πνόβιερε: Σ(n) = O(n logn), δειαδή Σ(n) d n logn, d > 0 ζηαζενά Απόδεηλε: (με επαγςγή ζημ n) Βάζε επαγςγήξ (n=1): Σ(1) = 0 d 1 log1 = 0 Γπαγςγηθή οπόζεζε: T(k) d k logk, γηα θάζε k < n Γπαγςγηθό βήμα: Θα δείλμομε όηη Σ(n) d n logn Σ(n) 2 T(n/2) + c n 2 d (n/2) log(n/2) + c n = d n (log n - log 2) + c n = d n (log n - 1) + c n = d n log n - d n + c n d n log n, γηα θάζε d c 30
Ιέζμδμξ ακηηθαηάζηαζεξ ζςζηήξ πνόβιερεξ Σ(n) 2T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(n) = 0, γηα n 1 Πνμζμπή με ημκ πνμζδημνηζμό ηεξ ζηαζενάξ c Πνέπεη κα πνμζδημνηζηεί έηζη ώζηε ε ιύζε Σ(n) d n logn, κα ηζπύεη θαη γηα ηηξ ανπηθέξ ζοκζήθεξ (βάζε επαγςγήξ) Ανπηθή ζοκζήθε Σ(n) = 0 γηα n 1 δεκ πανμοζηάδεη πνόβιεμα, γηαηί Σ(1) = 0 d 1 log1 = 0 γηα θάζε d c > 0 Ακ ε ανπηθή ζοκζήθε ήηακ Σ(n) = 1 γηα n 1 Σ(1) = 1 d 1 log1 = 0 (!!) Δεκ οπάνπεη d πμο κα ηθακμπμηεί ηεκ Σόηε, βιέπμομε ηη γίκεηαη με άιιεξ μηθνέξ ηημέξ ημο n (n=2,3, ) T(2) = 2 + 2c d 2 log2 = 2d, πμο ηζπύεη γηα θάζε d c + 1 Άνα Σ(n) d n logn γηα θάζε n 2 θαη γηα θάζε d c + 1 31
Γπακαιεπηηθή Ιέζμδμξ ακάπηολε ακαδνμμήξ Σ(n) 2T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(n) = 0, γηα n 1 Ακάπηολε ακαδνμμήξ: 32
Γπακαιεπηηθή Ιέζμδμξ ακάπηολε ακαδνμμήξ Σ(n) 2T(n/2) + cn, γηα n 2, c > 0 ζηαζενά Σ(n) = 0, γηα n 1 Πμιιαπιαζηάδμομε θάζε ακηζόηεηα με 2 k θαη πνμζζέημομε: 33
οκδοαζμόξ δέκδνμο ακαδνμμήξ θαη ζςζηήξ πνόβιερεξ Σ(n) = T(n/3) + T(2n/3) + c n, γηα n 2 Σ(n) = O(1), γηα n 1 Ιέγεζμξ μέγηζημο οπμπνμβιήμαημξ επηπέδμο i: n(2/3) i Ύρμξ h δέκδνμο ακαδνμμήξ : n (2/3) h = 1, δειαδή h = log 3/2 n Πνόβιερε: Σ(n) = O(n log n) 34
οκδοαζμόξ δέκδνμο ακαδνμμήξ θαη ζςζηήξ πνόβιερεξ Σ(n) = T(n/3) + T(2n/3) + c n, γηα n 2 Σ(n) = O(1), γηα n 1 Ιέγεζμξ μέγηζημο οπμπνμβιήμαημξ επηπέδμο i: n(2/3) i Ύρμξ h δέκδνμο ακαδνμμήξ : n (2/3) h = 1, δειαδή h = log 3/2 n Πνόβιερε: Σ(n) = O(n log n) Απόδεηλε: (με επαγςγή ζημ n) Σ(n) d n log n, γηα θάπμηα ζηαζενά d > 0 πμο ηζπύεη γηα d c / (log 3 2/3) 35
Ιέζμδμξ αιιαγήξ μεηαβιεηώκ Σ(n) = 2 T( n ) + log n, γηα n 2 Σ(n) = O(1), γηα n 1 Θέημομε m = log n, άνα n = 2 m θαη n = 2 m/2 : T(2 m ) = 2 T(2 m/2 ) + m Θέημκηαξ S(m) = T(2 m ) έπμομε, S(m) = 2 S(m/2) + m Πμο γκςνίδμομε όηη S(m) = O(m log m) Σ(n) 2T(n/2) + cn T(n) = O(n log n) Άνα, Σ(n) = T(2m) = S(m) = O(m log m) = O(log n log log n) 36
Βαζηθό Θεώνεμα Ακαδνμμώκ (Ιaster Theorem) Έζης: θαη θαη Σόηε, Φαίκεηαη πμιύπιμθμ αιιά ηειηθά είκαη πμιύ απιό. Οη ιύζεηξ πενηγνάθμκηαη από ημκ ηύπμ: 37
Βαζηθό Θεώνεμα Ακαδνμμώκ (Ιaster Theorem) Σ(n) = 16 T( n / 8 ) + n 2/3 α = 16, β = 8, γ = 2/3, δ = 0 Γλεηάδμομε: α / β γ = 16 / 8 2/3 > 1 Άνα 1 ε πενίπηςζε: 38
Βαζηθό Θεώνεμα Ακαδνμμώκ (Ιaster Theorem) Σ(n) = T( 2n / 3 ) + 1 α = 1, β = 3/2, γ = 0, δ = 0 Γλεηάδμομε: α / β γ = 1 / (3/2) 0 = 1 Άνα 2 ε πενίπηςζε: 39
Βαζηθό Θεώνεμα Ακαδνμμώκ (Ιaster Theorem) Σ( n 2 ) = 3T( n 2 / 3 ) + n 40
Βαζηθό Θεώνεμα Ακαδνμμώκ (Ιaster Theorem) n 2 = m Σ( n 2 ) = 3T( n 2 / 3 ) + n Σ( m ) = 3T( m / 3 ) + m 41
Βαζηθό Θεώνεμα Ακαδνμμώκ (Ιaster Theorem) n 2 = m Σ( n 2 ) = 3T( n 2 / 3 ) + n Σ( m ) = 3T( m / 3 ) + m α = 3, β = 3, γ = 1/2, δ = 0 Γλεηάδμομε: α / β γ = 3 / 3 1/2 = 3 1/2 > 1 Άνα 1 ε πενίπηςζε: 42
Γναμμηθέξ Ακαδνμμηθέξ πέζεηξ Ε γναμμηθή ακαδνμμηθή ζπέζε ηάλεξ d έπεη ηεκ μμνθή: Σ(n) = a 1 T(n-1) + a 2 T(n-2) + + a d T(n-d) Πανάδεηγμα: ε Fibonacci αθμιμοζία: Σ(n) = T(n-1) + T(n-2) Σ(1) = 1 Σ(0) = 0 Πενηγναθή ηεξ ιύζεξ: Σ(n) = c x n Πανάδεηγμα: Άνα: cx n = cx n-1 + cx n-2 x 2 x -1 = 0 x = (1 5)/2 T(n) = c 1 [(1+ 5)/2] n + c 2 [(1-5)/2] n Σηξ ζηαζενέξ c 1 θαη c 2 ηηξ θαζμνίδμομε από ηηξ ανπηθέξ ζοκζήθεξ Σ(1) = 1, Σ(0) = 0: Γναμμηθό ζύζηεμα 2 εληζώζεςκ με 2 αγκώζημοξ 43
Γναμμηθέξ Ακαδνμμηθέξ πέζεηξ Ε γναμμηθή ακαδνμμηθή ζπέζε ηάλεξ d έπεη ηεκ μμνθή: Σ(n) = a 1 T(n-1) + a 2 T(n-2) + + a d T(n-d) Υαναθηενηζηηθή Γλίζςζε ηάλεξ d: x d = a 1 x d-1 + a 2 x d-2 + + a d x 0 Θύζε: Πνμθύπηεη από ηηξ νίδεξ ηεξ παναθηενηζηηθήξ ελίζςζεξ. Ακ r νίδα με πμιιαπιόηεηα 1 ηόηε: r n Ακ r νίδα με πμιιαπιόηεηα k ηόηε: r n, nr n, n 2 r n,, n k r n Πανάδεηγμα: T(n) = 2T(n-1) T(n-2), T(0) =0, T(1) =1 X.E.: x 2 2x -1 = 0 με δηπιή νίδα ημ x = 1 T(n) = c 1 (1) n + c 2 n (1) n = c 1 + c 2 n Από ανπηθέξ ζοκζήθεξ: c 1 = 0 θαη c 2 = 1 Σ(n) = n 44
Θίγα παναπάκς γηα Σαληκμμήζεηξ Insertion sort Ο(n 2 ) Counting sort Ο(n + n k ) Radix sort Ο(n k) Ηάης θνάγμα Ω(n log n)
Αιγόνηζμμη Σαληκόμεζεξ Ιειεηήζαμε ημοξ ελήξ αιγμνίζμμοξ: Mergesort - Ο(nlog n) Heapsort - Ο(nlog n) Θα δμύμε: Insertion sort - Ο(n 2 ) Counting sort - Ο(n + n k ) Radix sort - Ο(n k) Τπάνπμοκ επίζεξ: Bubble sort - Ο(n 2 ) Selection sort - Ο(n 2 ) Quick sort - Θ(n 2 ) (θαιύηενε μέζε πενίπηςζε) Bucket sort - Ο(n), i (0,1] 46
Insertion sort Insertion_sort(A,n) { for j = 2 to n ειζαγυγή ηος A[j] ζηον (ήδη ηαξινομημένο) ςποπίνακα Α[1,..,j-1] με ζςνεσόμενερ ανηιμεηαθέζειρ μέσπι ηο ζυζηό ζημείο } A: 1 i j n A[1] < A[2] < < A[j-1] ηαληκμμεμέκμξ οπμπίκαθαξ ζςζηή ζέζε γηα ημ Α[j] 47
Insertion sort Insertion_sort(A,n) { for j = 2 to n ειζαγυγή ηος A[j] ζηον (ήδη ηαξινομημένο) ςποπίνακα Α[1,..,j-1] με ζςνεσόμενερ ανηιμεηαθέζειρ μέσπι ηο ζυζηό ζημείο } Πανάδεηγμα: 8 2 4 9 3 6 A: 1 i j n A[1] < A[2] < < A[j-1] ηαληκμμεμέκμξ οπμπίκαθαξ ζςζηή ζέζε γηα ημ Α[j] 48
Insertion sort Insertion_sort(A,n) { for j = 2 to n ειζαγυγή ηος A[j] ζηον (ήδη ηαξινομημένο) ςποπίνακα Α[1,..,j-1] με ζςνεσόμενερ ανηιμεηαθέζειρ μέσπι ηο ζυζηό ζημείο } Υνόκμξ εθηέιεζεξ: Υεηνόηενε πενίπηςζε: Α[] = [n, n-1, n-2,, 1] 49
Counting sort ηόπμξ: γναμμηθή ηαληκόμεζε Έζης μη n αθέναημη ημο πίκαθα Α[] ακήθμοκ ζημ δηάζηεμα [1,,n k ] n k : έκαξ ζεηηθόξ αθέναημξ Υνόκμξ: O(n + n k ), γναμμηθόξ όηακ n k = O(n) Βαζηθή ηδέα: Γηα θάζε ζημηπείμ A[j], θαζμνηζμόξ ημο πιήζμοξ ηςκ ζημηπείςκ πμο είκαη μηθνόηενα από A[j]. Π.π. ακ οπάνπμοκ 17 ζημηπεία < A[j], ηόηε A[j] = 18 ε ζέζε Θα πνεηαζημύμε δομ επηπιέμκ πίκαθεξ: Β[1..n]: απμζήθεοζε ηαληκμμεμέκεξ αθμιμοζίαξ (απμηέιεζμα) C[0..n k ]: πνμζςνηκή θαηαπώνεζε πιενμθμνηώκ 50
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 Α: 2 5 3 0 2 3 0 3 51
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 Α: 2 5 3 0 2 3 0 3 n k = 5 0 1 2 3 4 5 C: 2 0 2 3 0 1 52
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 Α: 2 5 3 0 2 3 0 3 n k = 5 0 1 2 3 4 5 C: 2 2 4 7 7 8 C[i] = # ζηοισεία < ή ίζα με i 53
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 Α: 2 5 3 0 2 3 0 3 n k = 5 0 1 2 3 4 5 C: 2 2 4 7 7 8 C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 B: 3 54
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 Α: 2 5 3 0 2 3 0 3 n k = 5 0 1 2 3 4 5 C: 2 2 4 6 7 8 C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 B: 3 55
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 Α: 2 5 3 0 2 3 0 3 n k = 5 0 1 2 3 4 5 C: 2 2 4 6 7 8 C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 B: 0 3 56
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 Α: 2 5 3 0 2 3 0 3 n k = 5 0 1 2 3 4 5 C: 1 2 4 6 7 8 C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 B: 0 3 57
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 Α: 2 5 3 0 2 3 0 3 n k = 5 0 1 2 3 4 5 C: 0 2 3 5 7 8 C[i] = # ζηοισεία < ή ίζα με i 1 2 3 4 5 6 7 8 B: 0 0 2 2 3 3 3 5 58
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i Υνόκμξ εθηέιεζεξ: T(n) = c 1 n + c 2 n k + c 3 n = Θ( n + n k ) Ακ n k = O(n) Θ( n ) 59
Counting sort Counting_sort(A,n,n k ) { for j = 1 to n C[A[j]] = C[A[j]] + 1 for i = 1 to n k C[i] = C[i] + C[i-1] for j = n downto 1 B[ C[A[j]] ] = A[j] C[A[j]] = C[A[j]] - 1 } C[i] = # ζηοισεία ίζα με i C[i] = # ζηοισεία < ή ίζα με i Υνόκμξ εθηέιεζεξ: T(n) = c 1 n + c 2 n k + c 3 n = Θ( n + n k ) Ακ n k = O(n) Θ( n ) Ακ n k = O( n d )?? 60
Radix sort Έζης θάζε αθέναημξ ημο πίκαθα Α[] έπεη k ρεθία Φεθίμ θάζε Α[i] {0,1,, 9} (1) Σαληκόμεζε ςξ πνμξ ημ πημ δελί ρεθίμ (i) (k) Σαληκόμεζε ςξ πνμξ ημ πημ ανηζηενό ρεθίμ k ηαληκμμήζεηξ Counting sort Ε ηαληκόμεζε θναηάεη ηεκ ζπεηηθή δηάηαλε ηςκ ζημηπείςκ 3 2 9 7 2 0 7 2 0 3 2 9 4 5 7 3 5 5 3 2 9 3 5 5 6 5 7 8 3 9 4 3 6 4 5 7 4 3 6 8 3 9 4 3 6 4 5 7 4 3 6 6 5 7 3 5 5 6 5 7 7 2 0 3 2 9 4 5 7 7 2 0 3 5 5 8 3 9 6 5 7 8 3 9 61
Radix sort Έζης θάζε αθέναημξ ημο πίκαθα Α[] έπεη k ρεθία Φεθίμ θάζε Α[i] {0,1,, 9} Θ(n + 10) θάζε ηαληκόμεζε Counting Sort k ρεθία: Θ(n k) k = log 10 (A[i]). Ακ Α[i] = n d = 10 d ηόηε (γηα n > 10): Θ( n log 10 (10 d ) ) = Θ( n d ) = Θ( n ) 3 2 9 7 2 0 7 2 0 3 2 9 4 5 7 3 5 5 3 2 9 3 5 5 6 5 7 8 3 9 4 3 6 4 5 7 4 3 6 8 3 9 4 3 6 4 5 7 4 3 6 6 5 7 3 5 5 6 5 7 7 2 0 3 2 9 4 5 7 7 2 0 3 5 5 8 3 9 6 5 7 8 3 9 62
Ηάης Φνάγμαηα Ω() ζε Ακαδεηήζεηξ θαη Σαληκμμήζεηξ Ακαδήηεζε απαηηεί Ω(log n) πνόκμ Ε δοαδηθή ακαδήηεζε είκαη βέιηηζηε Σαληκόμεζε απαηηεί Ω(n log n) πνόκμ Mergesort θαη Heapsort είκαη βέιηηζημη Ιμκηέιμ οπμιμγηζμμύ ζογθνίζεςκ: Γίζμδμξ μεγέζμοξ n : θάζε ζημηπείμ Α[i] είκαη έκα μαύνμ θμοηί Τπμζηενίδεη μόκμ ζογθνίζεηξ (<, >,,, =,!=) Γηα ιόγμοξ απιόηεηαξ ζεςνμύμε όηη Α[i]!= A[j] Οπόηε έπμομε βαζηθέξ ζογθνίζεηξ <, >,, Υνόκμξ εθηέιεζεξ = πιήζμξ ζογθνίζεςκ 63
Ηάης Φνάγμαηα Ω() ζε Ακαδεηήζεηξ θαη Σαληκμμήζεηξ Δέκδνμ απμθάζεςκ Ηάζε αιγόνηζμμξ ζογθνίζεςκ μπμνεί κα ζεςνεζεί ςξ έκα δέκδνμ με όιεξ ηηξ ακηίζημηπεξ ζογθνίζεηξ πμο ακαιμγμύκ ζε θάζε δοκαηή έλμδμ Πανάδεηγμα γηα n=3, A[1], A[2], A[3]: A[1] < x? μπη καη A[0] < x? A[2] < x? μπη καη μπη καη x A[0] A[0] < x A[1] A[1] < x A[2] A[2] < x Γζςηενηθόξ θόμβμξ δέκηνμο = δοαδηθή ζύγθνηζε Φύιια = έλμδμξ ημο αιγμνίζμμο Ιμκμπάηη από ηεκ νίδα ζε θύιιμ = μηα εθηέιεζε ημο αιγμνίζμμο Ιήθμξ ημο μμκμπαηημύ = πνόκμξ εθηέιεζεξ Ύρμξ ημο δέκδνμο (μέγηζημ μήθμξ) = πνόκμξ πεηνόηενεξ πενίπηςζεξ 64
Ηάης Φνάγμαηα Ω() ζε Ακαδεηήζεηξ θαη Σαληκμμήζεηξ Ηάης θνάγμα ακαδήηεζεξ: Ηάζε αιγόνηζμμξ ακαδήηεζεξ απαηηεί Ω(log n) πνόκμ # θύιιςκ # δοκαηέξ ελόδμοξ n ζημηπείa (1 ζύγθνηζε γηα θάζε Α[i]) Δέκδνμ απμθάζεςκ = δοαδηθό Ύρμξ ημο δέκδνμο (μέγηζημ μήθμξ) log (n) A[1] < x? μπη καη A[0] < x? A[2] < x? log 2 n μπη καη μπη καη x A[0] A[0] < x A[1] A[1] < x A[2] A[2] < x 65
Ηάης Φνάγμαηα Ω() ζε Ακαδεηήζεηξ θαη Σαληκμμήζεηξ Ηάης θνάγμα ηαληκόμεζεξ: Ηάζε αιγόνηζμμξ ηαληκόμεζεξ απαηηεί Ω(n log n) πνόκμ Φύιια: απακηάεη με μηα μεηάζεζε Α[3] < Α[1] < Α[9] <. Όιεξ μη δοκαηέξ απακηήζεηξ: n! μη δοκαηέξ μεηαζέζεηξ 012, 021, 102, # θύιιςκ = n! ύρμξ log (n!) log (n/e) n = nlog n nlog e = Ω(n log n) Σύπμξ ημο Stirling A[0] < A[1]? μπη καη A[2] < A[1]? A[1] < A[2]? μπη καη μπη καη log 2 n! A[2] < A[0]? A[2]<A[1]<A[0] A[0] < A[2]? A[0]<A[1]<A[2] μπη καη μπη καη A[1]<A[0]<A[2] A[1]<A[2]<A[0] A[2]<A[0]<A[1] A[0]<A[2]<A[1] 66
Ιέηνεζε Ακηηζηνμθώκ
Ιέηνεζε Ακηηζηνμθώκ Ιηα ηζημζειίδα μμοζηθήξ πνμζπαζεί κα ηαηνηάλεη ηηξ πνμηημήζεηξ ζαξ ζηα ηναγμύδηα με άιιμοξ. Γζείξ βαζμμιμγείηε 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. 68
Γθανμμγέξ Γθανμμγέξ. Θεςνία ρεθμθμνίαξ οκενγαηηθό «θηιηνάνηζμα» Ιέηνεζε ημο ηαληκμμεμέκμο πμζμζημύ εκόξ πίκαθα Ακάιοζε ηεξ εοαηζζεζίαξ ηεξ ζοκ/ζεξ θαηάηαλεξ ηεξ Google Ιε-παναμεηνηθά ζηαηηζηηθά (π.π. ε απόζηαζε θαηά Kendall Tau). 69
Ιέηνεζε Ακηηζηνμθώκ: Δηαίνεη θαη βαζίιεοε Δηαίνεη θαη βαζίιεοε. 1 5 4 8 10 2 6 9 12 11 3 7 70
Ιέηνεζε Ακηηζηνμθώκ: Δηαίνεη θαη βαζίιεοε Δηαίνεη θαη βαζίιεοε. Δηαίνεζε: δηαπώνηζε ηεκ ιίζηα ζε δύμ ημήμαηα. 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 71
Ιέηνεζε Ακηηζηνμθώκ: Δηαίνεη θαη βαζίιεοε Δηαίνεη θαη βαζίιεοε. Δηαίνεζε: δηαπώνηζε ηεκ ιίζηα ζε δύμ ημήμαηα. Βαζίιεοε: ακαδνμμηθά μέηνεζε ηηξ ακηηζηνμθέξ ζε θάζε μηζό 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 72
Ιέηνεζε Ακηηζηνμθώκ: Δηαίνεη θαη βαζίιεοε Δηαίνεη θαη βαζίιεοε. Δηαίνεζε: δηαπώνηζε ηεκ ιίζηα ζε δύμ ημήμαηα. Βαζίιεοε: ακαδνμμηθά μέηνεζε ηηξ ακηηζηνμθέξ ζε θάζε μηζό οκδύαζε: μέηνα ακηηζηνμθέξ όπμο a i θαη a j βνίζθμκηαη ζε δηαθμνεηηθά μηζά ημήμαηα, θαη επέζηνερε ημ άζνμηζμα ηςκ 3 πμζμηήηςκ. 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. 73
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a 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) T(n) T n/2 T n/2 O(n) T(n) O(nlogn) 74
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. δηαηήνεζε ηεξ αύλμοζαξ ηάλεξ b j < a i b j μηθνόηενμ από όια ηα a i, a i+1,, a n = # ακηηζηνμθέξ ημο b j T(n) T n/2 T n/2 O(n) T(n) O(nlogn) 75
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. 3 7 10 14 18 19 2 11 16 17 23 25 δύμ ηαληκμμεμέκα μηζά βμεζεηηθόξ πίκαθαξ ύκμιμ: 76
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 6 3 7 10 14 18 19 2 11 16 17 23 25 6 δύμ ηαληκμμεμέκα μηζά 2 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 77
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 6 3 7 10 14 18 19 2 11 16 17 23 25 6 δύμ ηαληκμμεμέκα μηζά 2 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 78
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 6 3 7 10 14 18 19 2 11 16 17 23 25 6 δύμ ηαληκμμεμέκα μηζά 2 3 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 79
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 5 3 7 10 14 18 19 2 11 16 17 23 25 6 δύμ ηαληκμμεμέκα μηζά 2 3 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 80
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 5 3 7 10 14 18 19 2 11 16 17 23 25 6 δύμ ηαληκμμεμέκα μηζά 2 3 7 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 81
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 4 3 7 10 14 18 19 2 11 16 17 23 25 6 δύμ ηαληκμμεμέκα μηζά 2 3 7 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 82
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 4 3 7 10 14 18 19 2 11 16 17 23 25 6 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 83
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 3 3 7 10 14 18 19 2 11 16 17 23 25 6 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 84
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 3 3 7 10 14 18 19 2 11 16 17 23 25 6 3 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 85
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 3 3 7 10 14 18 19 2 11 16 17 23 25 6 3 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 86
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 3 3 7 10 14 18 19 2 11 16 17 23 25 6 3 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 87
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 2 3 7 10 14 18 19 2 11 16 17 23 25 6 3 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 88
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 2 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 89
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 2 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 90
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 2 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 91
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 2 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 92
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 2 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 18 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 93
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 1 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 18 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 94
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 1 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 18 19 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 95
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. Γλακηιήζεθε ημ πνώημ μηζό i = 0 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 18 19 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 96
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 0 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 0 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 18 19 23 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 + 0 97
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 0 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 0 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 18 19 23 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 + 0 98
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 0 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 0 0 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 18 19 23 25 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 + 0 + 0 99
Ιέηνεζε Ακηηζηνμθώκ: οκδύαζε οκδύαζε: μέηνεζε ηςκ ακηηζηνμθώκ μπιε-με-πνάζηκμ Τπμζέημομε όηη θάζε μηζό είκαη ηαληκμμεμέκμ Ιέηνεζε ηηξ ακηηζηνμθέξ με a i θαη a j ζε δηαθμνεηηθά μηζά. ογπώκεοζε ηα δύμ ηαληκμμεμέκα μηζά ζε έκα ηαληκμμεμέκμ πίκαθα. i = 0 3 7 10 14 18 19 2 11 16 17 23 25 6 3 2 2 0 0 δύμ ηαληκμμεμέκα μηζά 2 3 7 10 11 14 16 17 18 19 23 25 βμεζεηηθόξ πίκαθαξ ύκμιμ: 6 + 3 + 2 + 2 + 0 + 0 = 13 100
Ιέηνεζε Ακηηζηνμθώκ: Τιμπμίεζε Πνμ-ζοκζήθε. [Merge-and-Count] A θαη B ηαληκμμεμέκα. Σειηθή θαηάζηαζε. [Sort-and-Count] L ηαληκμμεμέκε. Sort-and-Count(L) { 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(nlogn) 101
Πιεζηέζηενμ Δεύγμξ εμείςκ
Πιεζηέζηενμ Δεύγμξ εμείςκ Πιεζηέζηενμ δεύγμξ. Δμζέκημξ n ζεμείςκ ζημ επίπεδμ, εύνεζε ημο δεύγμοξ με ηεκ μηθνόηενε Γοθιείδεηα απόζηαζε. Θεμειηώδεξ γεςμεηνηθή ηδηόηεηα. Γναθηθά, γεςγναθηθά ζοζηήμαηα πιενμθόνεζεξ (GIS), μμκηειμπμίεζε μμνίςκ, έιεγπμξ εκαένηαξ θοθιμθμνίαξ. Γηδηθή πενίπηςζε ημο θμκηηκόηενμο γείημκα, Γοθιείδεημ ΓΔ. Γνήγμνμη αιγόνηζμμη γηα ηα πνμβιήμαηα αοηά εμπκεύζηεθακ από ημ γνήγμνμ αιγόνηζμμ γηα ημ πιεζηέζηενμ δεύγμξ Ωμή Βία. Έιεγλε όια ηα δεύγε ζεμείςκ p θαη q με (n 2 ) ζογθνίζεηξ. 1-D εθδμπή. O(n log n) εύθμια ακ ηα ζεμεία βνίζθμκηαη ζε μηα εοζεία. Τπόζεζε. Δεκ οπάνπμοκ δομ ζεμεία με ηεκ ίδηα x ζοκηεηαγμέκε. Γηα ιόγμοξ απιόηεηαξ ηεξ πανμοζίαζεξ 103
Πιεζηέζηενμ Δεύγμξ εμείςκ: Πνώηε Πνμζπάζεηα Δηαίνεζε. Τπμ-δηαίνεζε ηεκ πενημπή ζε 4 ηεηανηεμόνηα. L 104
Πιεζηέζηενμ Δεύγμξ εμείςκ: Πνώηε Πνμζπάζεηα Δηαίνεζε. Τπμ-δηαίνεζε ηεκ πενημπή ζε 4 ηεηανηεμόνηα. Γμπόδημ. Αδύκαημ κα ελαζθαιίζεηξ n/4 ζεμεία ζε θάζε ημήμα. L 105
Πιεζηέζηενμ Δεύγμξ εμείςκ Αιγόνηζμμξ. Δηαίνεζε: θένε θάζεηε εοζεία L έηζη ώζηε ~½n ζεμεία ζε θάζε ημήμα L 106
Πιεζηέζηενμ Δεύγμξ εμείςκ Αιγόνηζμμξ. Δηαίνεζε: θένε θάζεηε εοζεία L έηζη ώζηε ~½n ζεμεία ζε θάζε ημήμα Βαζίιεοε: εύνεζε πιεζηέζηενμο δεύγμοξ ζε θάζε ημήμα ακαδνμμηθά. L 21 12 107
Πιεζηέζηενμ Δεύγμξ εμείςκ Αιγόνηζμμξ. Δηαίνεζε: θένε θάζεηε εοζεία L έηζη ώζηε ~½n ζεμεία ζε θάζε ημήμα Βαζίιεοε: εύνεζε πιεζηέζηενμο δεύγμοξ ζε θάζε ημήμα ακαδνμμηθά. οκδύαζε: βνεξ ημ πιεζηέζηενμ δεύγμξ «ακάμεζα». Γπέζηνερε ηεκ θαιύηενε από ηηξ 3 ιύζεηξ. θαίκεηαη ζακ Θ(n 2 ) L 8 21 12 108
Πιεζηέζηενμ Δεύγμξ εμείςκ Βνεξ ημ πιεζηέζηενμ «ακάμεζα», οπμζέημκηαξ όηη ε απόζηαζε < δ. L 21 12 δ = min(12, 21) 109
Πιεζηέζηενμ Δεύγμξ εμείςκ Βνεξ ημ πιεζηέζηενμ «ακάμεζα», οπμζέημκηαξ όηη ε απόζηαζε < δ. Παναηήνεζε: πνεηαδόμαζηε μόκμ ζεμεία ζε απόζηαζε δ από ηεκ εοζεία L L 21 12 δ = min(12, 21) 110
Πιεζηέζηενμ Δεύγμξ εμείςκ Βνεξ ημ πιεζηέζηενμ «ακάμεζα», οπμζέημκηαξ όηη ε απόζηαζε < δ. Παναηήνεζε: πνεηαδόμαζηε μόκμ ζεμεία ζε απόζηαζε δ από ηεκ εοζεία L Σαληκόμεζε ηα ζεμεία ζε μηα 2δ-ιςνίδα ςξ πνμξ ηεκ y-ζοκηεηαγμέκε. 7 L 6 4 5 21 12 3 δ = min(12, 21) 2 1 111
Πιεζηέζηενμ Δεύγμξ εμείςκ Βνεξ ημ πιεζηέζηενμ «ακάμεζα», οπμζέημκηαξ όηη ε απόζηαζε < δ. Παναηήνεζε: πνεηαδόμαζηε μόκμ ζεμεία ζε απόζηαζε δ από ηεκ εοζεία L Σαληκόμεζε ηα ζεμεία ζε μηα 2δ-ιςνίδα ςξ πνμξ ηεκ y-ζοκηεηαγμέκε. Γιέγπμομε μόκμ απμζηάζεηξ ζεμείςκ πμο βνίζθμκηαη ημ πμιύ ζε 11 ζέζεηξ ζηε ηαληκμμεμέκε ιίζηα! 7 L 6 4 5 21 12 3 δ = min(12, 21) 2 1 112
Πιεζηέζηενμ Δεύγμξ εμείςκ Ονηζμόξ. Έζης s i ημ ζεμείμ ηεξ 2δ-ιςνίδαξ, με ηεκ i ζηε μηθνόηενε y-ζοκηεηαγμέκε. Ζζπονηζμόξ. Ακ i j 12, ηόηε ε απόζηαζε μεηαλύ ημο s i θαη s j είκαη ημοιάπηζημκ δ. Απόδεηλε. 31 39 j Δεκ οπάνπμοκ δομ ζεμεία ζημ ίδημ ½ -επί-½ θμοηί. Δομ ζεμεία πμο βνίζθμκηαη ακάμεζα από 2 γναμμέξ (πιάημξ γναμμήξ ½δ), 2 rows 29 30 ½ ½ έπμοκ απόζηαζε 2(½ ). i 27 28 ½ Γεγμκόξ. Ε ηημή 12 μπμνεί κα ειαηηςζεί ζε 6. (ημ βηβιίμ ακαθένεηαη γηα ηημή 16) 26 25 7, 12, 16 ζηαζενά c 113
Ο Αιγόνηζμμξ πιεζηέζηενμο δεύγμοξ ζεμείςκ Closest-Pair(p 1,, p n ) { Υπολόγιζε γπαμμή διασυπιζμού L ηέηοια ώζηε μιζά ζημεία να βπίζκονηαι ζηο απιζηεπό και μιζά ζηο δεξί ημήμα. 1 = Closest-Pair(απιζηεπό μιζό) 2 = Closest-Pair(δεξί μιζό) = min( 1, 2 ) Διέγπατε όλα ηα ζημεία ζε απόζηαζη > από ηην γπαμμή L Ταξινόμηζε ηα ςπόλοιπα ζημεία υρ ππορ y-ζςνηεηαγμένη Σάπυζε ηα ζημεία υρ ππορ ηην y-ζςν/μένη και ζύγκπινε αποζηάζειρ μεηαξύ κάθε ζημείος και ηιρ επόμενερ 11 θέζειρ. Αν κάποια απόζηαζη < δ ηόηε ενημέπυζε δ. O(n log n) O(n) 2T(n / 2) O(n) O(n log n) O(n) O(n) } return. 114
Πιεζηέζηενμ Δεύγμξ εμείςκ: Ακάιοζε Υνόκμξ Γθηέιεζεξ. T(n) 2T n/2 O(n logn) T(n) O(n log 2 n) Γνώηεμα. Ιπμνμύμε κα πεηύπμομε O(n log n); Απάκηεζε. Καη. Ιεκ ηαληκμμείξ ηα ζεμεία ηεξ ιςνίδαξ από ημ μεδέκ ζε θάζε επακάιερε. Ηάζε ακαδνμμή επηζηνέθεη δύμ ιίζηεξ: όια ηα ζεμεία ηαληκμμεμέκα ςξ πνμξ ηεκ y ζοκηεηαγμέκε, θαη όια ηα ζεμεία ηαληκμμεμέκα ςξ πνμξ ηεκ x ζοκηεηαγμέκε. Σαληκόμεζε με ζογπώκεοζε δύμ (ήδε) ηαληκμμεμέκεξ ιίζηεξ. T(n) 2T n/2 O(n) T(n) O(n logn) 115
Ηαιή Ιειέηε!! Τπάνπμοκ πμιύ θαιέξ ιομέκεξ αζθήζεηξ ζημ βηβιίμ [ΗΣ] Δώζηε πνμζμπή θαη ζημ «Υνήζημμ Τιηθό»
Ανοικτά Ακαδημαϊκά Μαθήματα Πανεπιστήμιο Ιωαννίνων Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Σημειώματα Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Λέκτορας Χάρης Παπαδόπουλος «Εισαγωγή στη Θεωρία και Ανάλυση Αλγορίθμων». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1111. Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.