Σχεδίαση και Ανάλυση Αλγορίθμων
|
|
- Τίτος Μιαούλης
- 8 χρόνια πριν
- Προβολές:
Transcript
1 Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3.0 Σταύρος Δ. Νικολόπουλος 0-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: Διαίρει και Βασίλευε Quick-sort και Merge-sort Μέτρηση Αντιστρόφων Πλησιέστερο Ζεύγος Σημείων Αλγόριθμος Strassen
2 Γενικές Αρχές Γενική Αρχή Τεχνικών Σχεδίασης και Ανάλυσης Αλγορίθμων Καθορισμός ενδιάμεσων μικρότερων στόχων που μπορούν να επιτευχθούν πιο εύκολα και συμβάλουν στην επίτευξη του τελικού στόχου!!! Ενδιάμεσοι μικρότεροι στόχοι Λύση μικρότερων προβλημάτων!!! Τελικός στόχος Λύση αρχικού προβλήματος!!!
3 Γενικές Αρχές Αρχή της Εξισορρόπησης Ισορροπία μεταξύ των μεγεθών των μικρότερων προβλημάτων??????
4 Γενικές Αρχές Αρχή της Εξισορρόπησης Γενικός Κανόνας: Η διατήρηση μια ισορροπίας, ή και ισότητας, μεταξύ των μεγεθών n, n,, nk των υπο-προβλημάτων Π, Π,, Πk που προκύπτουν από τη διάσπαση ενός προβλήματος Π μεγέθους n!!! Επιχειρήματα υπέρ της εξισορρόπησης Πρέπει να υπάρχει ίση μεταχείριση!!! Ο χρόνος εκτέλεσης ενός έργου είναι αύξουσα συνάρτηση κάποιου μεγέθους που αντιστοιχεί στο έργο. Αν έχουμε να εκτελέσουμε δυο έργα είναι προτιμότερο να έχουν το ίδιο μέγεθος είτε τα εκτελέσουμε παράλληλα είτε ακολουθιακά.
5 Γενικές Αρχές Εξισορρόπηση - Θεώρημα Θεώρημα: Έστω Τ(n) ο χρόνος επίλυσης ενός προβλήματος Π μεγέθους n, όπου οι συναρτήσεις Τ και Τ είναι αυστηρά αύξουσες, και έστω n, n τα μεγέθη δύο υποπροβλημάτων Π και Π του Π με n + n = n. Τότε, ο ελάχιστος χρόνος για την ακολουθιακή λύση και των δύο υποπροβλημάτων Π, Π επιτυγχάνεται όταν n = n = n/. Απόδειξη: Συνολικός χρόνος επίλυσης T(n) + T(n) = T(n) + T(n-n) = f(n). Για να υπάρχει ελάχιστο πρέπει f (n) = 0. Δηλαδή, Τ (n) - Τ (n-n) = 0. Οπότε, Τ (n) = T (n-n). Επειδή η συνάρτηση Τ είναι αυστηρά αύξουσα, η παραπάνω ισότητα ισχύει όταν n = n-n, δηλαδή n = n = n/. Ακόμη ισχύει f (n) = T (n) + T (n-n) > 0. Άρα, για n = n = n/ η συνάρτηση f(n) εμφανίζει ελάχιστο.
6 Γενικές Αρχές Εξισορρόπηση - Παράδειγμα Έστω το πρόβλημα της αναζήτησης σε ακολουθία n στοιχείων. Στη σειριακή αναζήτηση η σύγκριση με το ο στοιχείο ανάγει την επίλυση του προβλήματος σε μικρότερο στιγμιότυπο μεγέθους n- στοιχείων. n- o Η σειριακή αναζήτηση δεν εφαρμόζει την τεχνική της εξισορρόπησης! Στη δυαδική αναζήτηση η πρώτη διάσπαση παράγει δύο στιγμιότυπα μισού περίπου μεγέθους n/ από το αρχικό. Το ίδιο συμβαίνει και σε κάθε επόμενη διάσπαση. o Η δυαδική αναζήτηση εφαρμόζει την τεχνική της εξισορρόπησης! Αυτό την κάνει να είναι αποτελεσματικότερη από τη σειριακή αναζήτηση!!! n/ n/
7 Γενικές Αρχές Εξισορρόπηση - Παράδειγμα Αναδρομικοί Αλγόριθμοι!!!
8 Γενικές Αρχές Εξισορρόπηση - Παράδειγμα Αναδρομικοί Αλγόριθμοι!!! Μέγεθος n n- O(n) n- n-3
9 Γενικές Αρχές Εξισορρόπηση - Παράδειγμα Αναδρομικοί Αλγόριθμοι!!! Μέγεθος n n/ n/ O(logn) n/ n/ n/ n/
10 Τεχνική Διαίρει-και-Βασίλευε Αλγοριθμικές Τεχνικές
11 Αλγοριθμικές Τεχνικές Τεχνική Διαίρει-και-Βασίλευε Αρκετά παλιά ιδέα... Divide et impera. Veni, vidi, vici. Διαίρει και βασίλευε. Ήλθον, είδον, νίκησον. Ιούλιος Καίσαρας (00 - πχ) Προσφιλής πολεμική του τακτική: διαίρεση του αντίπαλου στρατεύματος σε δύο μισά και επίθεση στο ένα μισό με ολόκληρο τον στρατό του!!!
12 Διαίρει-και-Βασίλευε Γενικός Κανόνας της Τεχνικής Αντί να λύσουμε άμεσα ένα πρόβλημα Π με μεγάλο μέγεθος εισόδου, κάνουμε τα εξής: διασπάμε την είσοδο σε τμήματα μικρότερου μεγέθους, λύνουμε το πρόβλημα για κάθε μικρό τμήμα ξεχωριστά, και κατόπιν συνδυάζουμε τις επιμέρους λύσεις, πληρώνοντας ένα επιπλέον κόστος, για να δώσουμε λύση στο αρχικό πρόβλημα. Μέθοδος που ανάγει ένα αρχικό πρόβλημα σε όλο και μικρότερα προβλήματα με την αναδρομική εφαρμογή τους!!! Σύμφωνα με την αρχή της εξισορρόπησης τα μικρότερα τμήματα πρέπει να είναι ισομεγέθη!!!
13 Διαίρει-και-Βασίλευε Διαδικασίες της Τεχνικής Divide and Conquer Διαίρει (divide): Διαίρεσε το προβλήματος Π σε b (συνήθως b=) υποπροβλήματα Π, Π,, Πb (στιγμιότυπα ίδιου τύπου με το Π, όσο δυνατόν ιδίου μεγέθους ή δυσκολίας). Κατάκτησε (conquer): Αναδρομική επίλυση όλων των υποπροβλημάτων Π, Π,, Πb. Εάν τα υποπροβλήματα είναι μικρού μεγέθους, απλώς επίλυσέ τα άμεσα (direct_solve). 3 Συνδύασε (combine): Κατάλληλος συνδυασμός των επιμέρους λύσεων των υποπροβλημάτων Π, Π,, Πb για τη λύση του αρχικού προβλήματος Π.
14 Διαίρει-και-Βασίλευε Χαρακτηριστικά της Τεχνικής Divide and Conquer Διαίρει (divide) Συνήθως, σε έναν αλγόριθμο Δ-και-Β είναι εύκολη: είτε η διαδικασία divide 3 Επίλυσε (direct_solve) είτε η διαδικασία combine Συνδύασε (combine) Η διαδικασία direct_solve είναι πάντα εύκολη, απαιτεί απλούς υπολογισμούς!!!
15 Διαίρει-και-Βασίλευε Αναδρομική Σχέση Έστω k το πλήθος των υπο-προβλημάτων Π, Π,, Πk της αρχικής εισόδου (προβλήματος) μήκους n, και έστω: D(n) το πλήθος των βημάτων της divide S(n) >> >> direct_solve C(n) >> >> combine Τότε
16 Διαίρει-και-Βασίλευε Αναδρομικό Σχήμα Διάσπαση προβλήματος πρόβλημα μεγέθους n διάσπαση υποπρόβλημα μεγέθους k υποπρόβλημα μεγέθους n - k
17 Διαίρει-και-Βασίλευε Αναδρομικό Σχήμα Διάσπαση προβλήματος πρόβλημα μεγέθους n υποπρόβλημα μεγέθους k διάσπαση υποπρόβλημα μεγέθους n - k διάσπαση
18 Διαίρει-και-Βασίλευε Αναδρομικό Σχήμα Διάσπαση προβλήματος πρόβλημα μεγέθους n υποπρόβλημα μεγέθους k διάσπαση διάσπαση υποπρόβλημα μεγέθους n - k διάσπαση διάσπαση
19 Διαίρει-και-Βασίλευε Αναδρομικό Σχήμα Διάσπαση προβλήματος Αναδρομική επίλυση των υποπροβλημάτων πρόβλημα μεγέθους n υποπρόβλημα μεγέθους k υποπρόβλημα μεγέθους n - k
20 Διαίρει-και-Βασίλευε Αναδρομικό Σχήμα Διάσπαση προβλήματος Αναδρομική επίλυση των υποπροβλημάτων πρόβλημα μεγέθους n Σύνθεση (συνδυασμός) λύσεων υποπρόβλημα μεγέθους k σύνθεση σύνθεση υποπρόβλημα μεγέθους n - k σύνθεση σύνθεση
21 Διαίρει-και-Βασίλευε Αναδρομικό Σχήμα Διάσπαση προβλήματος Αναδρομική επίλυση των υποπροβλημάτων πρόβλημα μεγέθους n Σύνθεση (συνδυασμός) λύσεων υποπρόβλημα μεγέθους k υποπρόβλημα μεγέθους n - k σύνθεση σύνθεση
22 Διαίρει-και-Βασίλευε Αναδρομικό Σχήμα Διάσπαση προβλήματος Αναδρομική επίλυση των υποπροβλημάτων πρόβλημα μεγέθους n Σύνθεση (συνδυασμός) λύσεων σύνθεση υποπρόβλημα μεγέθους k υποπρόβλημα μεγέθους n - k
23 Διαίρει-και-Βασίλευε Αναδρομικό Σχήμα Διάσπαση προβλήματος Αναδρομική επίλυση των υποπροβλημάτων πρόβλημα μεγέθους n Σύνθεση (συνδυασμός) λύσεων υποπρόβλημα μεγέθους k Χρόνος εκτέλεσης υποπρόβλημα μεγέθους n - k Χρόνος διάσπασης Χρόνος σύνθεσης
24 Το Πρόβλημα της Ταξινόμησης Ταξινόμηση
25 Ταξινόμηση Το Πρόβλημα της Ταξινόμησης Ορισμός Προβλήματος Είσοδος : ακολουθία n στοιχείων S = (α, α,..., αn). Έξοδος : αναδιάταξη (α, α,..., α n) των στοιχείων της S σε αύξουσα τάξη ( i, i n-, α i α i+). Θεμελιώδες αλγοριθμικό πρόβλημα Πολλές εφαρμογές (~0-5% του υπολογιστικού χρόνου). Ταχύτατη αναζήτηση σε ταξινομημένα δεδομένα. Σημαντικές αλγοριθμικές ιδέες και τεχνικές!!!
26 Αλγόριθμοι Ταξινόμησης Αλγόριθμοι και Μέθοδοι Ταξινόμησης Αντιμετάθεση κάθε ζεύγους μη-ταξινομημένων στοιχείων. Bubble-sort bubble sort Εισαγωγή στοιχείου σε κατάλληλη θέση σε έναν ταξινομημένο πίνακα. Insertion-sort insertion sort Επιλογή μεγαλύτερου (μικρότερου) στοιχείου και τοποθέτηση στο τέλος (αρχή). Max(Min)-sort Heap-sort Διαμέριση σε μικρότερα και μεγαλύτερα από στοιχείο-διαχωρισμού και ταξινόμηση. Quick-sort mergesort Συγχώνευση ταξινομημένων ακολουθιών: Ισομερή διαίρεση, ταξινόμηση, συγχώνευση. Merge-sort
27 Αλγόριθμοι Ταξινόμησης Αλγόριθμοι Quick-sort και Merge-sort Αντιμετάθεση κάθε ζεύγους μη-ταξινομημένων στοιχείων. Bubble-sort bubble sort Εισαγωγή στοιχείου σε κατάλληλη θέση σε έναν ταξινομημένο πίνακα. Insertion-sort insertion sort Επιλογή μεγαλύτερου (μικρότερου) στοιχείου και τοποθέτηση στο τέλος (αρχή). Max(Min)-sort Heap-sort Διαμέριση σε μικρότερα και μεγαλύτερα από στοιχείο-διαχωρισμού και ταξινόμηση. Quick-sort mergesort Συγχώνευση ταξινομημένων ακολουθιών: Ισομερή διαίρεση, ταξινόμηση, συγχώνευση. Merge-sort
28 Αλγόριθμοι Ταξινόμησης Αλγόριθμοι Quick-sort και Merge-sort Δύο ταχύτατοι (βέλτιστοι?) αλγόριθμοι ταξινόμησης οι οποίοι βασίζονται στην αλγοριθμική τεχνική του Δ-και-Β!!! Βασικές Διαφορές (Ι) (ΙΙ) Quick-sort δύσκολη Διαίρεση εύκολη Συνένωση Merge-sort εύκολη Διαίρεση δύσκολη Συνένωση Quick-sort διαφορετικού μήκους υπο-προβλήματα Merge-sort ίδιου περίπου μήκους υπο-προβλήματα
29 Αλγόριθμος Quick-Sort Αλγόριθμος Ταξινόμησης Quick-Sort Τεχνική Διαίρει-και-Βασίλευε Δύσκολη διαίρεση - Εύκολη συνένωση Υπο-προβλήματα Διαφορετικού μήκους Χειρίστη Πολυπλοκότητα O(n) Μέση Πολυπλοκότητα O(nlogn)
30 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Ιδέα Αλγόριθμου!!! x = pivot x < x o τμήμα Χρόνος διάσπασης x x o τμήμα Χρόνος σύνθεσης
31 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Ιδέα Αλγόριθμου!!! Αρχικό x βήμα i-στης επανάληψης pivot Ενδιάμεσο x x < x Διάσπαση βήμα i-στης επανάληψης i sp Τελικό Εφαρμογή της διαδικασίας < x x o τμήμα sp split x βήμα i-στης επανάληψης o τμήμα
32 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x aux x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end i j
33 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x aux x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end i j
34 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 aux 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end i j
35 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 aux 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end i j
36 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 aux 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end i j
37 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 aux 8 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end i j
38 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 aux 8 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end ij
39 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 8 aux 5 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end ij
40 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end 5 8
41 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end 5 8
42 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] pivot = 5 S 5 8 splitpt first split for i first+ to last do if S[i] < pivot then x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; < x x 5 8 x Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end 5 8
43 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; sp : splitpt end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
44 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
45 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
46 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
47 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
48 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
49 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
50 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
51 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp i Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
52 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + sp Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
53 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
54 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + Swap(S[splitpt], S[i]) end; 5 8 end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
55 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + Swap(S[splitpt], S[i]) end; 5 8 end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end Split : επί τόπου διάσπαση
56 Αλγόριθμος Quick-Sort Αλγόριθμος Quick-Sort Algorithm Quick-Sort(S, first, last) begin ()if first < last then pivot S[first] splitpt first pivot = 5 S 5 8 split for i first+ to last do if S[i] < pivot then splitpt splitpt + Swap(S[splitpt], S[i]) end; 5 8 end; Swap (S[first], S[splitpt]) end () Quick-Sort(S, first, splitpt-) (3) Quick-Sort(S, splitpt+, last) return S end 5 8 Split : επί τόπου διάσπαση
57 Αλγόριθμος Quick-Sort Ορθότητα Αλγόριθμου Quick-Sort Απόδειξη με επαγωγή: Ισχυρισμός P(n): Ο αλγόριθμος Quick-Sort ταξινομεί σωστά κάθε ακολουθία εισόδου S μήκους n. Βάση επαγωγής: Κάθε ακολουθία εισόδου S μήκους είναι ταξινομημένη, δηλ. ισχύει P(). Επαγωγική υπόθεση: Έστω S μήκους n, για την οποία ισχύει P(k) k < n. Επαγωγικό βήμα : Δείχνουμε ότι ισχύει P(n). n < x o τμήμα x x o τμήμα
58 Αλγόριθμος Quick-Sort Ορθότητα Αλγόριθμου Quick-Sort Απόδειξη με επαγωγή: Θεωρούμε pivot x και τη διαμέριση του S ως προς x (έστω i η θέση του pivot, i n). i- < n i n-i < n < x x x Έστω k = i- το μήκος του ou τμήματος των στοιχείων της S που είναι < x και k = n-i του ou τμήματος που είναι x. o τμήμα o τμήμα Από την ορθότητα της διαδικασίας split (εύκολη απόδειξη), το στοιχείο pivot x καταλαμβάνει τη σωστή θέση στην ακολουθία εξόδου S. Από επαγωγική υπόθεση: Ισχύει P(k) και Ρ(k) επειδή k < n και k < n, δηλ., ο αλγόριθμος Quick-Sort ταξινομεί σωστά το ο και ο τμήμα της S. Άρα, ταξινομεί σωστά ολόκληρη την ακολουθία S. QED
59 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Χειρίστη Πολυπλοκότητα Βασική Πράξη: S[i] < pivot W(n) = O(n) Στη διαδικασία split το στοιχείο pivot συγκρίνεται με κάθε στοιχείο της ακολουθίας S. split splitpt first for i first+ to last do if S[i] < pivot then Επομένως, εάν k είναι το μήκος της ακολουθίας εισόδου σε κάποια επανάληψη της διαδικασίας split, τότε στη διαδικασία αυτή εκτελούνται k- συγκρίσεις (ΒΠ). k < x x x splitpt splitpt + Swap(S[splitpt], S[i]) end; end; Swap (S[first], S[splitpt]) S 5 8 k= Πλήθος συγκρίσεων = 5
60 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Χειρίστη Πολυπλοκότητα Εάν το pivot = S[first] είναι το μικρότερο στοιχείο της ακολουθίας σε κάποια επανάληψη, τότε μετά την εκτέλεση της split θα ισχύει splitpoint = first. Επομένως, η πρώτη αναδρομική κλήση του Quίck-Sort δεν θα εκτελεστεί, ενώ η δεύτερη κλήση θα εκτελεστεί με ακολουθία μήκους k = n-, n-,,. S x 3 n n- pivot () Quick-Sort(S, first, splitpt-) (3) Ouick-Sort(S, splitpt+, last) 5 8 Quick-Sort(S,, 0) Quick-Sort(S,, n)
61 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Χειρίστη Πολυπλοκότητα Εάν το pivot = S[first] είναι το μεγαλύτερο στοιχείο της ακολουθίας σε κάποια επανάληψη, τότε μετά την εκτέλεση της split θα ισχύει splitpoint = last. Eπομένως, η δεύτερη αναδρομική κλήση του Quίck-Sort δεν θα εκτελεστεί, ενώ η πρώτη κλήση θα εκτελεστεί με ακολουθία μήκους k = n-, n-,,. S x 3 n n- pivot 8 () Quick-Sort(S, first, splitpt-) (3) Ouick-Sort(S, splitpt+, last) 5 3 Quick-Sort(S,, n-) Quick-Sort(S, n+, n)
62 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Χειρίστη Πολυπλοκότητα Άρα, στην χειρίστη περίπτωσή για την πολυπλοκότητα τον αλγόριθμου Quick-Sort ισχύει: Επιλύουμε την αναδρομική σχέση: Ισχύει :
63 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Βασική Πράξη: S[i] < pivot Έστω k το μήκος της ακολουθίας εισόδου σε κάποια εκτέλεση της διαδικασίας split. Τότε στη διαδικασία αυτή εκτελούνται k- συγκρίσεις (βασικές πράξεις). A(n) = O(n lοgn) split splitpoint first for i first+ to last do if S[i] < pivot then splitpoint splitpoint + Swap(S[splitpoint], S[i]) end; end; Swap (S[first], S[splitpoint]) i < x x k x S 5 8 k= Πλήθος συγκρίσεων = 5
64 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Θεωρούμε τη γενική περίπτωση κατά την οποία μετά την εκτέλεση της διαδικασία split με μήκος ακολουθίας k, το στοιχείο pivot καταλαμβάνει την i-στη θέση. Άρα, i- στοιχεία είναι μικρότερα του pivot και φυσικά k-i μεγαλύτερα από αυτό. Δεχόμαστε ότι το στοιχείο pivot έχει την ίδια πιθανότητα /k να καταλάβει οποιαδήποτε θέση μεταξύ και k: το pivot καταλαμβάνει τη θέση i με πιθανότητα /k. i < x i- x k x k-i Μήκος oυ τμήματος Θέση pivot Μήκος oυ τμήματος (0) () ().. (k-) (k-) 3.. k- k (k-) (k-) (k-3).. () (0)
65 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Ορίζουμε: Α(k) μέσος όρος συγκρίσεων σε ακολουθία μήκους k. = Έτσι, παίρνοντας k = n καταλήγουμε στην αναδρομική σχέση: i < x i- x n x n-i
66 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Μπορούμε εύκολα να απλοποιήσουμε την αναδρομική σχέση παρατηρώντας ότι: Μια υποακολουθία με μήκος i- ( i n) εμφανίζεται φορές: όταν το pivot καταλάβει την i και n-i- θέση!!! i x i- i n-i- n x i- Μήκος oυ τμήματος Θέση pivot Μήκος oυ τμήματος (0) () ().. (n-) (n-) 3.. n- n (n-) (n-) (n-3).. () (0)
67 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Μπορούμε εύκολα να απλοποιήσουμε την αναδρομική σχέση και να πάρουμε: Αυτή είναι μια πιο περίπλοκη αναδρομική σχέση σε σχέση με αυτές που έχουμε δει μέχρι τώρα, διότι η τιμή A(n) εξαρτάται από όλες τις προηγούμενες τιμές!!!
68 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Μπορούμε να χρησιμοποιήσουμε κάποιο ευφυή τρόπο για τη λύση της ή να εικάσουμε τη λύση της και να την αποδείξουμε με επαγωγή! Η τεχνική της εικασίας είναι μια καλή προσέγγιση για αναδρομικούς αλγορίθμους! Θα ακολουθήσουμε αυτό την προσέγγιση θα εικάσουμε την τιμή της A(n) και θα την αποδείξουμε με επαγωγή Για να σχηματίσουμε μια εικασία για την τιμή της A(n), εξετάζουμε αρχικά την περίπτωση που ο αλγόριθμος Quick-sort εργάζεται ιδανικά!!!... Ισομερής Ανάλυση
69 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Ισομερής Ανάλυση Θεωρούμε την περίπτωση κατά την οποία σε κάθε επανάληψη της διαδικασίας split τα μισά στοιχεία (~n / ) της S είναι μικρότερα του στοιχείου pivot. i < x n/ x n x S n/ Θα θεωρήσουμε το μέγεθος των δύο υποακολουθιών να είναι n/, χωρίς να υπάρχει ανησυχία για το εάν το n/ είναι ακέραιος!!!
70 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Ισομερής Ανάλυση Θεωρούμε την περίπτωση κατά την οποία σε κάθε επανάληψη της διαδικασίας split τα μισά στοιχεία (n / ) της S είναι μικρότερα του στοιχείου pivot. Άρα, καταλήγουμε στην παρακάτω αναδρομική σχέση: Ισχύει :
71 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Συμπέρασμα Εάν σε κάθε επανάληψη η αναμενόμενη τιμή E[first] του pivot είναι κοντά στη διάμεσο (ισομερής ανάλυση) τότε το πλήθος των συγκρίσεων (Βασικών Πράξεων) είναι Θ(n logn), σημαντικά μικρότερο από Θ(n)!!! Άρα, ισχύει : Θ(n logn) Α(n) Θ(n) Ερώτημα!!!... εάν όλες οι μεταθέσεις έχουν την ίδια πιθανότητα εμφάνισης, τότε μήπως υπάρχουν πολλές «καλές» μεταθέσεις (ακολουθίες εισόδου) που επηρεάσουν θετικά τη μέση πολυπλοκότητα A(n) του Quick-Sort ώστε A(n) = Θ(n logn); Αποδεικνύουμε : ΝΑΙ αυτό ισχύει!!!
72 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Μέση Πολυπλοκότητα Πρόταση. A(n) = c n ln n για n, όπου c σταθερά. Απόδειξη: Με επαγωγή στο πλήθος n των στοιχείων εισόδου. Βάση επαγωγής: Για n =, A() = 0 και c n ln n = 0. Επαγωγική υπόθεση: Έστω ότι ισχύει A(i) c i ln i για i < n, όπου n >. Επαγωγικό βήμα : A(n) c n ln n, όπου n >.
73 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Από επαγωγική υπόθεση: Ισχύει: Μέση Πολυπλοκότητα
74 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Άρα, έχουμε: Μέση Πολυπλοκότητα
75 Αλγόριθμος Quick-Sort Πολυπλοκότητα Αλγόριθμου Quick-Sort Άρα, για Μέση Πολυπλοκότητα ισχύει : QED Επειδή, Ισχύει :
76 Αλγόριθμος Merge-Sort Αλγόριθμος Ταξινόμησης Merge-Sort Τεχνική Διαίρει-και-Βασίλευε Εύκολη διαίρεση Δύσκολη συνένωση Υπο-προβλήματα Ίδιου μήκους Χειρίστη Πολυπλοκότητα O(nlogn) Μέση Πολυπλοκότητα O(nlogn)
77 Αλγόριθμος Merge-Sort Αλγόριθμος Merge-Sort Ιδέα Αλγόριθμου!!!... Ταξινόμηση με Συγχώνευση
78 Αλγόριθμος Merge-Sort Αλγόριθμος Merge-Sort Ιδέα Αλγόριθμου!!! ιαίρεση ακολουθίας εισόδου μήκους n σε δύο υποακολουθίες μήκους n/. Ταξινόμηση των δύο υποακολουθιών (μισού μεγέθους) αναδρομικά. Συγχώνευση των δύο ταξινομημένων υποακολουθιών σε μία ταξινομημένη ακολουθία. ιαίρεσε (divide) Ταξινόμησε (conquer) Συγχώνευσε 3 (combine)
79 Αλγόριθμος Merge-Sort Αλγόριθμος Merge-Sort Ιδέα Αλγόριθμου!!! ιαίρεση ακολουθίας εισόδου μήκους n σε δύο υποακολουθίες μήκους n/. Ταξινόμηση των δύο υποακολουθιών (μισού μεγέθους) αναδρομικά. Συγχώνευση των δύο ταξινομημένων υποακολουθιών σε μία ταξινομημένη ακολουθία. ιαίρεσε (divide) Ταξινόμησε (conquer) Συγχώνευσε 3 (combine)
80 Αλγόριθμος Merge-Sort Αλγόριθμος Merge-Sort Αλγόριθμος ιαίρεση ακολουθίας εισόδου μήκους n σε δύο υποακολουθίες μήκους n/. Ταξινόμηση των δύο υποακολουθιών (μισού μεγέθους) αναδρομικά. Συγχώνευση των δύο ταξινομημένων υποακολουθιών σε μία ταξινομημένη ακολουθία. Algorithm Merge-Sort(A, left, right) begin if (left right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end
81 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) Συγχώνευση δύο ταξινομημένων ακολουθιών A = a, a,, an B = b, b,, bn σε μία μόνο ταξινομημένη ακολουθία C (πίνακα ή λίστα)!!! Algorithm Merge() i j while (A B ) if (ai bj) προσάρτηση του ai στη C και i i+ else{ai > bj}προσάρτηση του bj στη C και j j+ end προσάρτηση των υπόλοιπων στοιχείων της μη-άδειας ακολουθίας A ή B στη C
82 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) Παράδειγμα Συγχώνευση δύο ταξινομημένων ακολουθιών A B
83 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A i Παράδειγμα B j Συγχώνευση δύο ταξινομημένων ακολουθιών
84 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A i C Παράδειγμα B j Συγχώνευση δύο ταξινομημένων ακολουθιών
85 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A i C Παράδειγμα B j Συγχώνευση δύο ταξινομημένων ακολουθιών
86 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A i C Παράδειγμα B j Συγχώνευση δύο ταξινομημένων ακολουθιών
87 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A i C Παράδειγμα B j 7 Συγχώνευση δύο ταξινομημένων ακολουθιών
88 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A Παράδειγμα B i C j 7 Συγχώνευση δύο ταξινομημένων ακολουθιών
89 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A Παράδειγμα B i C j 7 Συγχώνευση δύο ταξινομημένων ακολουθιών
90 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A i C 7 5 Παράδειγμα B Συγχώνευση δύο ταξινομημένων ακολουθιών j
91 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A Παράδειγμα B i C Συγχώνευση δύο ταξινομημένων ακολουθιών j
92 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A Παράδειγμα B j C Συγχώνευση δύο ταξινομημένων ακολουθιών
93 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) A C Παράδειγμα B Συγχώνευση δύο ταξινομημένων ακολουθιών
94 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) Συγχώνευση δύο ταξινομημένων ακολουθιών A C B Απαιτεί 3 ξεχωριστούς πίνακες
95 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) a k k Συγχώνευση με πίνακες m m+ r m m+ aux Συγχώνευση δύο ταξινομημένων ακολουθιών r
96 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) k Συγχώνευση με πίνακες m m+ r a αντιστροφή της ης ακολουθίας aux k m m Συγχώνευση δύο ταξινομημένων ακολουθιών r
97 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) k Συγχώνευση με πίνακες m m+ r a aux k r m m Συγχώνευση δύο ταξινομημένων ακολουθιών
98 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) k Συγχώνευση με πίνακες m m+ r a aux k r m m Συγχώνευση δύο ταξινομημένων ακολουθιών
99 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) a k aux k Συγχώνευση με πίνακες m m+ r r m m Συγχώνευση δύο ταξινομημένων ακολουθιών
100 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) a k aux k Συγχώνευση με πίνακες m m+ r r m m Συγχώνευση δύο ταξινομημένων ακολουθιών
101 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) a k Συγχώνευση με πίνακες m m+ r aux k r m m Συγχώνευση δύο ταξινομημένων ακολουθιών
102 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) a k aux k m m Συγχώνευση με πίνακες r r m m Συγχώνευση δύο ταξινομημένων ακολουθιών
103 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) a k aux k m m Συγχώνευση με πίνακες r r m m Συγχώνευση δύο ταξινομημένων ακολουθιών
104 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) a k aux k Συγχώνευση με πίνακες m m+ r r m m Συγχώνευση δύο ταξινομημένων ακολουθιών
105 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) Συγχώνευση δύο ταξινομημένων ακολουθιών Απαιτεί βοηθητικό πίνακα a aux
106 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) Συγχώνευση δύο ταξινομημένων ακολουθιών a Απαιτεί βοηθητικό πίνακα Μπορούμε χωρίς Βοηθητικό Πίνακα Πρόκληση για αυτούς που ενδιαφέρονται!... Επί τόπου συγχώνευση [Kronrud, 99] Χρησιμοποιώντας επιπλέον μόνο ένα σταθερό ποσό μνήμης!!!
107 Αλγόριθμος Merge-Sort Συγχώνευση (Merge) Συγχώνευση δύο ταξινομημένων ακολουθιών A = a, a,, an B = b, b,, bn σε μία μόνο ταξινομημένη ακολουθία C (πίνακα ή λίστα)!!! Algorithm Merge() Ισχυρισμός. Η συγχώνευση δύο ταξινομημένων ακολουθιών A και B μήκους n απαιτεί χρόνο O(n). Απόδειξη: Μετά από κάθε σύγκριση, το μέγεθος της ακολουθίας εξόδου C αυξάνεται κατά.
108 Αλγόριθμος Merge-Sort Αλγόριθμος Merge-Sort Παράδειγμα εφαρμογής Αλγόριθμου Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end ιαίρεση 3 3 3
109 Αλγόριθμος Merge-Sort Αλγόριθμος Merge-Sort Παράδειγμα εφαρμογής Αλγόριθμου Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end Ταξινόμηση 3
110 Αλγόριθμος Merge-Sort Αλγόριθμος Merge-Sort Παράδειγμα εφαρμογής Αλγόριθμου Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end 9 5 Ταξινόμηση 8 3
111 Αλγόριθμος Merge-Sort Αλγόριθμος Merge-Sort Παράδειγμα εφαρμογής Αλγόριθμου Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end Συγχώνευση
112 Αλγόριθμος Merge-Sort Ορθότητα Αλγόριθμου Merge-Sort Ορθότητα αλγόριθμου Μerge: Οι δύο υποακολουθίες Α και Β είναι ταξινομημένες. Όταν ένα στοιχείο μεταφέρεται στον (βοηθητικό) πίνακα C, δεν υπάρχει μικρότερο διαθέσιμο στοιχείο στις Α και Β. Η ορθότητα του αλγορίθμου Μerge-Sort αποδεικνύεται επαγωγικά: Βάση επαγωγής (ένα στοιχείο) τετριμμένη. Οι δύο υποακολουθίες ταξινομούνται σωστά (επαγωγική υπόθεση), και συγχωνεύονται σωστά (ορθότητα merge). Άρα, η ακολουθία Α είναι σωστά ταξινομημένη.
113 Αλγόριθμος Merge-Sort Πολυπλοκότητα Αλγόριθμου Merge-Sort Πολυπλοκότητα Αλγόριθμου Merge Χειρίστη Πολυπλοκότητα m m+ a m m+ aux n n Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end Κάθε φορά συγκρίνονται δύο στοιχεία και ένα μόνο στοιχείο x μεταφέρεται στον βοηθητικό πίνακα aux μήκους n και ποτέ δεν ξανασυγκρίνεται!!! Στην τελευταία σύγκριση δύο στοιχεία x και y δεν έχουν μεταφερθεί στον aux : το min(x,y) μεταφέρεται άμεσα και το max(x,y) αντιγράφεται.
114 Αλγόριθμος Merge-Sort Πολυπλοκότητα Αλγόριθμου Merge-Sort Πολυπλοκότητα Αλγόριθμου Merge Χειρίστη Πολυπλοκότητα m m+ a m m+ aux n n Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end Άρα, απαιτούνται το πολύ n- συγκρίσεις για τη συγχώνευση n στοιχείων (δύο ταξινομημένων ακολουθιών με m και n-m στοιχεία). Χειρίστη Πολυπλοκότητα Merge : W(n) = n- Ασυμπωτική πολυπλοκότητα χειρίστης περίπτωσης Merge :
115 Αλγόριθμος Merge-Sort Πολυπλοκότητα Αλγόριθμου Merge-Sort Χειρίστη Πολυπλοκότητα Merge-Sort Η αναδρομική σχέση της πολυπλοκότητας του αλγόριθμου Merge-Sort είναι η εξής: Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end Έχουμε Κύριο Θεώρημα (η περίπτωση c = log = ) : W(n) = Ο(n log n) (πολυπλοκότητα συγχώνευσης αλγόριθμος Merge) Ασυμπωτική πολυπλοκότητα χειρίστης περίπτωσης Merge-Sort :
116 Αλγόριθμος Merge-Sort Πολυπλοκότητα Αλγόριθμου Merge-Sort Μέση Πολυπλοκότητα Merge-Sort?????? Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end Αντί να έρθουμε άμεσα να υπολογίσουμε τη μέση περίπτωση της πολυπλοκότητας του Merge-Sort, ας περιμένουμε έως να ελέγξουμε ένα κάτω-φράγμα για το πρόβλημα της ταξινόμησης με σύγκριση στοιχείων. πολυπλοκότητα μέσης Ασυμπωτική Κύριο Θεώρημα (η περίπτωση c = περίπτωσης log = ) : Merge-Sort W(n) = Ο(n: log n)
117 Άνω Φράγματα Ταξινόμησης Άνω Φράγμα Ταξινόμησης Αλγόριθμος : Merge-Sort.. begin max = S[]; posmax = ; Άνω φράγμα για το πρόβλημα της Ταξινόμησης!!! for i = to n do if S[i] > max then Έχει ο Merge-Sort καλύτερη πολυπλοκότητα στη Merge-Sort max = S[i]; posmax = i ; μέση περίπτωση ; end; Υπάρχει καλύτερος αλγόριθμος ταξινόμησης return (max, posmax) ; end; από τον Merge-Sort;...??????
118 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Υπολόγισε ένα ελάχιστο πλήθος Βασικών Πράξεων (συγκρίσεων) που απαιτούνται για την επίλυση του Προβλήματος SORTING Είσοδος (x, x,..., xn) Αρχικά n! περιπτώσεις: x < x < x3 <... < xn x < x < x3 <... < xn x3 < x < x <... < xn... xn < xn- <... < x Σε κάθε σύγκριση το πλήθος των περιπτώσεων υποδιπλασιάζεται (στην καλύτερη περίπτωση) Θα δείξουμε: Πλήθος συγκρίσεων log(n!) (n logn)/ Οποιοσδήποτε αλγόριθμος ταξινόμησης n στοιχείων χρειάζεται Ω(n logn) συγκρίσεις Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις
119 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Είσοδος (x, x,..., xn )...., xk <? xj xk < xj xk > xj...., (...,xm,..., xk,, xj,..., xt,.. ), (...,xr,..., xk,, xj,..., xm,.. ), (...,xm,..., xj,, xk,..., xt,.. ), (...,xr,..., xj,, xk,..., xm,.. ), xk <? xm...., xk < xm xj <? xm xk > xm...., (..., xm,..., xk,, xj,..., xt,.. ), (..., xr,..., xk,, xj,..., xm,.. ), (..., xm,..., xk,, xj,..., xt,.. ), (..., xr,..., xk,, xj,..., xm,.. ),
120 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης Το δένδρο έχει n! φύλλα x[i] <? x[j] x[b] <? x[c] x[f] <? x[g] (μετάθεση-) x[h] <? x[i] (μετάθεση-) (μετάθεση-3) Κάθε μετάθεση της ακολουθίας εισόδου αντιστοιχεί σε διαφορετικό x[d] <? x[e] φύλλο x[j] <? x[k] x[l] <? x[m] (μετάθεση-(n-)!) (μετάθεση-n!)
121 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης για n=3 Παράδειγμα Για a = [,,3] a[] <? a[] ναι a[] <? a[3] ναι ναι a[] <? a[3] όχι a[] <? a[3] όχι Η εκτέλεση του αλγόριθμου ακολουθεί ένα μονοπάτι από τη ρίζα προς κάποιο φύλλο a[3]<a[]<a[] όχι a[]<a[]<a[3] a[]<a[3]<a[] όχι ναι a[]<a[]<a[3] a[] <? a[3] ναι όχι a[]<a[3]<a[] a[3]<a[]<a[]
122 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης για n=3 Παράδειγμα Για a = [,,3] a[] <? a[] ναι a[] <? a[3] ναι ναι a[] <? a[3] όχι a[] <? a[3] όχι Η εκτέλεση του αλγόριθμου ακολουθεί ένα μονοπάτι από τη ρίζα προς κάποιο φύλλο a[3]<a[]<a[] όχι a[]<a[]<a[3] a[]<a[3]<a[] όχι ναι a[]<a[]<a[3] a[] <? a[3] ναι όχι a[]<a[3]<a[] a[3]<a[]<a[]
123 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης Το δένδρο έχει n! φύλλα x[i] <? x[j] x[b] <? x[c] x[f] <? x[g] x[h] <? x[i] x[d] <? x[e] x[j] <? x[k] Κάθε μετάθεση της ακολουθίας εισόδου αντιστοιχεί σε διαφορετικό φύλλο x[l] <? x[m] Το πλήθος των συγκρίσεων που πραγματοποιεί μια εκτέλεση ενός οποιουδήποτε αλγόριθμου στη χειρίστη περίπτωση είναι ίσος με το ύψος του δένδρου!!!
124 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης x[i] <? x[j] Το δένδρο έχει n! φύλλα x[b] <? x[c] x[f] <? x[g]?????? x[h] <? x[i] x[d] <? x[e] x[j] <? x[k] x[l] <? x[m] n! Ύψος δένδρου? Το πλήθος των συγκρίσεων που πραγματοποιεί μια εκτέλεση ενός οποιουδήποτε αλγόριθμου στη χειρίστη περίπτωση είναι ίσος με το ύψος του δένδρου!!!
125 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης x[i] <? x[j] Λήμμα. Έστω L το πλήθος των φύλλων ενός δυαδικού δένδρου και έστω h το ύψος του. Τότε ισχύει L h. Λήμμα. Έστω L και h του Λήμματος. Τότε ισχύει h log L. x[b] <? x[c] x[f] <? x[g] x[h] <? x[i] x[d] <? x[e] x[j] <? x[k] x[l] <? x[m] n! Ύψος δένδρου? Λήμμα 3. Για δεδομένο n, το δένδρο απόφασης για οποιοδήποτε αλγόριθμο ταξινόμησης με συγκρίσεις των στοιχείων του έχει ύψος τουλάχιστον log(n!).
126 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης n/ n/ n! Log(n!) n/ = ακέραιοι με τιμή n/ 3 n / n nn n/ log(n/ ) n ακέραιοι με τιμή N log(n!) n logn log(n!) = Ω(n logn) Το δένδρο έχει n! φύλλα και ύψος log(n!)
127 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης Οποιοσδήποτε αλγόριθμος ταξινόμησης με συγκρίσεις, ταξινομεί n στοιχεία απαιτώντας τουλάχιστον n logn συγκρίσεις. x[i] <? x[j] x[b] <? x[c] x[f] <? x[g] x[h] <? x[i] x[d] <? x[e] x[j] <? x[k] Ω(n logn) x[l] <? x[m] n! Ύψος δυαδικού δένδρου με n! φύλλα Λήμμα 3. Για δεδομένο n, το δένδρο απόφασης για οποιοδήποτε αλγόριθμο ταξινόμησης με συγκρίσεις των στοιχείων του έχει ύψος τουλάχιστον n log n.
128 Κάτω Φράγματα Ταξινόμησης Κάτω Φράγμα Ταξινόμησης Δένδρο απόφασης Οποιοσδήποτε αλγόριθμος ταξινόμησης με συγκρίσεις, ταξινομεί n στοιχεία απαιτώντας τουλάχιστον n logn συγκρίσεις. x[i] <? x[j] x[b] <? x[c] x[f] <? x[g] x[h] <? x[i] x[d] <? x[e] x[j] <? x[k] Ω(n logn) x[l] <? x[m] n! Ύψος δυαδικού δένδρου με n! φύλλα Κάτω φράγμα ταξινόμησης:
129 Άνω και Κάτω Φράγματα Ταξινόμησης Πρόβλημα Ταξινόμησης Η πολυπλοκότητα του Αλγόριθμου Merge-Sort είναι Ο(n logn) To ελάχιστο πλήθος Βασικών Πράξεων που απαιτούνται για την επίλυση του Προβλήματος της Ταξινόμησης είναι Ω(n logn) Άνω Φράγμα Ο(n logn) Κάτω Φράγμα Ω(n logn) Δεν θα σταματήσω εάν δεν βρω έναν Θ(n) αλγόριθμο SORTING
130 Αλγόριθμος Merge-Sort Πολυπλοκότητα Αλγόριθμου Merge-Sort Μέση Πολυπλοκότητα Merge-Sort Τώρα Γνωρίζω!!!!!! Algorithm Merge-Sort(A, left, right) begin if (left >= right) return mid = (left + right) / Merge-Sort(A, left, mid) Merge-Sort(A, mid+, right) Merge(A, left, mid, right) end!!! Ασυμπωτική πολυπλοκότητα μέσης περίπτωσης Merge-Sort :
131 Μέτρηση Αντιστροφών Αντιστροφές
132 Αντιστροφές Μέτρηση Αντιστροφών Έστω μια μετάθεση A = (a, a,, an) του συνόλου Nn = {,,, n}. Ένα ζεύγος στοιχείων (ak, am) της μετάθεσης A ονομάζεται αντιστροφή (inversion) εάν για τις θέσεις τους ισχύει k < m και για τις τιμές του ak > am. k<m Το ζεύγος (3, ) είναι μια αντιστροφή ak > am
133 Αντιστροφές Μέτρηση Αντιστροφών Έστω μια μετάθεση A = (a, a,, an) του συνόλου Nn = {,,, n}. Ένα ζεύγος στοιχείων (ak, am) της μετάθεσης A ονομάζεται αντιστροφή (inversion) εάν για τις θέσεις τους ισχύει k < m και για τις τιμές του ak > am. Για παράδειγμα, οι αντιστροφές της μετάθεσης A = (, 3, 5,,, ) είναι τα ζεύγη (, 3) (, ) (, ) (3, ) (3, ) (5, ) (5, ) (, )
134 Αντιστροφές Μέτρηση Αντιστροφών Έστω μια μετάθεση A = (a, a,, an) του συνόλου Nn = {,,, n}. Ένα ζεύγος στοιχείων (ak, am) της μετάθεσης A ονομάζεται αντιστροφή (inversion) εάν για τις θέσεις τους ισχύει k < m και για τις τιμές του ak > am. Αλγόριθμος Σχεδιάστε αλγόριθμο ο οποίος θα δέχεται ως είσοδο μία μετάθεση A του συνόλου Nn και θα υπολογίζει το πλήθος των αντιστροφών της. Προφανής αλγόριθμος: Θέλουμε αλγόριθμο με πολυπλοκότητα :
135 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα Κ = πλήθος αντιστροφών Α 8 5 Κ = πλήθος αντιστροφών Α Κ = πλήθος αντιστροφών (x, y) με x Α και το y Α Πλήθος αντιστροφών Κ + Κ + Κ 7
136 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα 9 A Κ = 0 Πλήθος αντιστροφών Κ + Κ + Κ 8 5 A Κ = 8 7
137 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα 9 A A αντιστροφές όταν A[] > A[] Κ = 0 Κ = 8 0 >> A[3] < A[3] >> A[5] > A[3]
138 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα 9 A A αντιστροφές όταν A[] > A[] Κ = 0 Κ = 8 0 >> A[3] < A[3] >> A[5] > A[3]
139 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα 9 A A αντιστροφές όταν A[] > A[] Κ = 0 Κ = 8 0 >> A[3] < A[3] >> A[5] > A[3]
140 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα 3 9 i= Κ = 0 Κ = 8 Κ =?
141 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i= Κ = 0 Κ = 8 Κ = 5 7 8
142 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i=5 Κ = 0 Κ = 8 Κ = 5 7 8
143 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i= Κ = 0 Κ = 8 3 Κ = 5 7 8
144 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i=3 Κ = 0 Κ = 8 3 Κ = 5 7 8
145 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i=3 Κ = 0 Κ = Κ =
146 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i= Κ = 0 Κ = Κ =
147 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i= Κ = 0 Κ = Κ =
148 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i= Κ = 0 Κ = Κ =
149 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα i= Κ = 0 Κ = Κ =
150 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα Ο πίνακας Α εξαντλήθηκε Κ = 0 Κ = i=0 5 7 Κ =
151 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα Ο πίνακας Α εξαντλήθηκε Κ = 0 Κ = i=0 5 7 Κ =
152 Αντιστροφές Μέτρηση Αντιστροφών Παρουσίαση της ιδέας του Αλγόριθμου με ένα παράδειγμα Ο πίνακας Α εξαντλήθηκε Κ = 0 Κ = i= Κ = = 3 Πολυπλοκότητα υπολογισμού των Κ αντιστροφών : 0
153 Αντιστροφές Μέτρηση Αντιστροφών Αλγόριθμος Διαίρει-και-Βασίλευε Κ = Κ = 0 Πλήθος αντιστροφών 3 Πολυπλοκότητα αλγόριθμου: Κ = 8 7
154 Αντιστροφές Μέτρηση Αντιστροφών Παράδειγμα Εκτέλεσης του αλγόριθμου Πλήθος αντιστροφών?
155 Αντιστροφές Μέτρηση Αντιστροφών Παράδειγμα Εκτέλεσης του αλγόριθμου Πλήθος αντιστροφών?
156 Αντιστροφές Μέτρηση Αντιστροφών Παράδειγμα Εκτέλεσης του αλγόριθμου Πλήθος αντιστροφών?
157 Αντιστροφές Μέτρηση Αντιστροφών Παράδειγμα Εκτέλεσης του αλγόριθμου Πλήθος αντιστροφών?
158 Αντιστροφές Μέτρηση Αντιστροφών Παράδειγμα Εκτέλεσης του αλγόριθμου 3 Πράγματι : o (3, ) (3, ) o (, ) (, ) (, 5) (, ) o (, ) o (, ) o (8, 5) (8, ) (8, 7) o (5, ) Πλήθος αντιστροφών 8 5 7
159 Αντιστροφές Μέτρηση Αντιστροφών Παράδειγμα Εκτέλεσης του αλγόριθμου 3 Τεχνική Διαίρει-και-Βασίλευε Χρήση Ταξινόμησης (Merge-Sort) Ορθότητα εύκολη Πολυπλοκότητα Merge-Sort Πολυπλοκότητα αλγόριθμου: 8 5 7
160 Αντιστροφές Μέτρηση Αντιστροφών Αλγόριθμος Ο(n) σε σχέση με έναν Ο(n logn) n logn n n logn Πολυπλοκότητα αλγόριθμου:
161 Πλησιέστερο Ζεύγος Σημείων Πλησιέστερο Ζεύγος
162 Πλησιέστερο Ζεύγος Σημείων H εταιρεία MS-Control H εταιρεία ΜS-Control με κύρια δραστηριότητα σε υπηρεσίες «παγκόσμιας ασφαλούς πλοήγησης», διαθέτει ένα ισχυρό δορυφορικό σύστημα το οποίο σε σταθερό χρόνο μπορεί να εντοπίσει όλα τα μέσα πολιτικής αερομεταφοράς και πλεύσης S, S,, Sn (n ) τα οποία βρίσκονται σε οπουδήποτε σημείο του κόσμου και να υπολογίσει τις συντεταγμένες Si = (xi, yi) της θέσης τους.
163 Πλησιέστερο Ζεύγος Σημείων H εταιρεία MS-Control Η εταιρεία θέλει να δημιουργήσει ένα σύστημα το οποίο να εντοπίζει γρήγορα ένα ζεύγος αντικείμενων (δύο αεροπλάνα ή πλοία) (Sp, Sq) τα οποία στο χρονικό διάστημα [t, t] απέχουν μεταξύ τους την μικρότερη απόσταση d(sp, Sq) = min {d(si, Sj) i, j n} μεταξύ όλων των ζευγών των n αντικειμένων που εντοπίζει, έτσι ώστε εάν d(sp, Sq) < Dmin να στέλνει «SOS» για αποφυγή πιθανής σύγκρουσης!!!
164 Πλησιέστερο Ζεύγος Σημείων H εταιρεία MS-Control Στο λογισμικό του συστήματος πλοήγησης πρέπει να ενσωματωθεί αλγόριθμος ο οποίος «πολύ γρήγορα» θα υπολογίζει το πλησιέστερο ζεύγος αεροσκαφών ή πλοίων (Sp, Sq) σε οποιοδήποτε σημείο του κόσμου!!! Καλείστε να τον σχεδιάσετε!!! Ο αλγόριθμός σας θα πρέπει να είναι : Σωστός Πολύ γρήγορος!!!
165 Πλησιέστερο Ζεύγος Σημείων H εταιρεία MS-Control Δεν θα θέλατε να σχεδιάσετε!!! έναν αλγόριθμο πολυπλοκότητας Ο(n), O(n3) ή μεγαλύτερης, για τη συγκεκριμένη εφαρμογή????? Γιατί? Δεν θα θέλατε να συμβεί αυτό!!!
166 Πλησιέστερο Ζεύγος Σημείων H εταιρεία MS-Control Δεν θα θέλατε να σχεδιάσετε!!! έναν αλγόριθμο πολυπλοκότητας Ο(n), O(n3) ή μεγαλύτερης, για τη συγκεκριμένη εφαρμογή????? Δεν θα θέλατε να συμβεί αυτό!!!
167 Πλησιέστερο Ζεύγος Σημείων H εταιρεία MS-Control Δεν θα θέλατε να σχεδιάσετε!!! έναν αλγόριθμο πολυπλοκότητας Ο(n), O(n3) ή μεγαλύτερης, για τη συγκεκριμένη εφαρμογή Ούτε φυσικά αυτό!!!????? Δεν θα θέλατε να συμβεί αυτό!!!
168 Πλησιέστερο Ζεύγος Σημείων H εταιρεία MS-Control Θέλω έναν αλγόριθμο Σωστό και «Ταχύτατο»!!! Μελέτη Προβλήματος και Επινόηση Καλής Τεχνικής και Ιδέας!!!!!!!! Δεν θα θέλατε να συμβεί αυτό!!!
169 Ορισμός του Προβλήματος Πλησιέστερο Ζεύγος Σημείων
170 Ορισμός του Προβλήματος Πλησιέστερο Ζεύγος Σημείων
171 Ορισμός του Προβλήματος Πλησιέστερο Ζεύγος Σημείων
172 Πλησιέστερο Ζεύγος Σημείων Ορισμός του Προβλήματος q y p y p q p x q x
173 Πλησιέστερο Ζεύγος Σημείων Σχεδίαση Αλγόριθμου Είσοδος : Οι συντεταμένες n σημείων pi στο επίπεδο και οι μεταξύ τους αποστάσεις d(pi, pj), i, j n Έξοδος : Το ζεύγος σημείων (pk, pm) με τη μικρότερη μεταξύ τους απόσταση D!!! Υπάρχει προφανής και εύκολος αλγόριθμος πολυπλοκότητας Ο(n) Θέλουμε καλύτερο!!! πολυπλοκότητας Ο(nlogn) Μπορούμε να σχεδιάσουμε καλύτερο?
174 Πλησιέστερο Ζεύγος Σημείων Αλγόριθμος Ο(n ) Τετριμμένος δυσκολίας Λυκείου!!! Max από τα n ζεύγη σημείων Πολυπλοκότητα Αλγόριθμου Ο(n )
175 Πλησιέστερο Ζεύγος Σημείων Αλγόριθμος Ο(n log n) Επινόηση Καλής Τεχνικής και Ιδέας!!!
176 Πλησιέστερο Ζεύγος Σημείων Αλγόριθμος Ο(n log n) Τεχνική Διαίρει-και-Βασίλευε!!!
177 Πλησιέστερο Ζεύγος Σημείων Αλγόριθμος Ο(n log n) Τεχνική Διαίρει-και-Βασίλευε!!! D = min{δ, δ } δ δ
178 Πλησιέστερο Ζεύγος Σημείων Αλγόριθμος Ο(n log n) Τεχνική Διαίρει-και-Βασίλευε!!! D = min{δ, δ, δ } δ δ δ
179 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Τεχνική Διαίρει-και-Βασίλευε! Αλγόριθμος Closest-Pair. Ταξινόμησε τα σημεία σύμφωνα με τις x-συντεταγμένες τους.. Χωρίστε το σύνολο των σημείων σε δύο ίσου μεγέθους υποσύνολα με μια κάθετη γραμμή x = xmid. 3. Λύσε το πρόβλημα αναδρομικά στα αριστερά και δεξιά υποσύνολα και υπολόγισε τις ελάχιστες αποστάσεις δ και δ στο αριστερό και δεξιό υποσύνολο, αντίστοιχα.. Υπολόγισε την ελάχιστη απόσταση δ μεταξύ των σημείων εκατέρωθεν της καθέτου x = xmid και τα οποία βρίσκονται σε απόσταση δ = min{δ, δ} από αυτήν. 5. Επίστρεψε τη λύση D ως το ελάχιστο μεταξύ των δ, δ και δ.
180 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) δ δ
181 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ δ = min (δ, δ) δ δ
182 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ δ = min (δ, δ)
183 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ δ = min (δ, δ) Πόσα σημεία p υπάρχουν? p
184 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ δ = min (δ, δ) Πόσα σημεία p υπάρχουν? O(n) O(n) συγκρίσεις! Τ(n) = T( n/ ) + T( n/ ) + O(n) Τ(n) = O(n) p
185 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ Δεν αρκεί μόνο η καλή Αλγοριθμική Τεχνική!!! Χρειάζεται και Καλή Ιδέα!!! p!!!!!!
186 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ δ = min (δ, δ) Το σημείο p με πόσα το λιγότερο σημεία μπορεί να συγκριθεί? δ p
187 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ δ = min (δ, δ) Το σημείο p με πόσα το λιγότερο σημεία μπορεί να συγκριθεί? Εντός του παραλληλογράμμου διαστάσεων δ x δ υπάρχουν το πολύ 8 σημεία δ p
188 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ = min (δ, δ) δ Το σημείο p με πόσα το λιγότερο σημεία μπορεί να συγκριθεί? Εντός του παραλληλογράμμου διαστάσεων δ x δ υπάρχουν το πολύ 8 σημεία δ/ δ p δ/ Ένα σημείο σε κάθε παραλληλόγραμμο διαστάσεων δ/ x δ/
189 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ = min (δ, δ) δ Το σημείο p με πόσα το λιγότερο σημεία μπορεί να συγκριθεί? Εντός του παραλληλογράμμου διαστάσεων δ x δ υπάρχουν το πολύ 8 σημεία δ/ δ p Ένα σημείο σε κάθε παραλληλόγραμμο διαστάσεων δ/ x δ/ Άρα το σημείο p θα συγκριθεί με 7 το πολύ σημεία!!! δ/
190 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ δ = min (δ, δ) δ Το σημείο p με πόσα το λιγότερο σημεία μπορεί να συγκριθεί? m σημεία 7 m συγκρίσεις! δ/ δ p δ/ O(n) σημεία O(n) συγκρίσεις!
191 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη
192 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη p Παίρνω το p στη «Λωρίδας» με την min y-συντεταγμένη
193 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη p Παίρνω το p στη «Λωρίδας» με την min y-συντεταγμένη και υπολογίζω την απόσταση του από τα 7 πλησιέστερα
194 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη p Παίρνω το p με την αμέσως min y-συντεταγμένη και υπολογίζω την απόσταση του από τα 7 πλησιέστερα
195 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη 3 p Παίρνω το αμέσως επόμενο με min y-συντεταγμένη και υπολογίζω την απόσταση του από τα 7 πλησιέστερα
196 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη p Συνεχίζω έως ότου εξαντληθούν όλα τα στοιχεία της «Λωρίδας»!
197 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! 5 Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη p Συνεχίζω έως ότου εξαντληθούν όλα τα στοιχεία της «Λωρίδας»!
198 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! p Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη Συνεχίζω έως ότου εξαντληθούν όλα τα στοιχεία της «Λωρίδας»!
199 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! 7 p Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη Συνεχίζω έως ότου εξαντληθούν όλα τα στοιχεία της «Λωρίδας»!
200 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) 8 p Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη Συνεχίζω έως ότου εξαντληθούν όλα τα στοιχεία της «Λωρίδας»!
201 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) 9 p Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη Συνεχίζω έως ότου εξαντληθούν όλα τα στοιχεία της «Λωρίδας»! Στο τέλος υπολογίζω το δ να είναι το min όλων αυτών των αποστάσεων!
202 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Closest-Pair δ = min (δ, δ) Να πως θα δουλέψει ο αλγόριθμος! Ταξινομώ τα στοιχεία της «λωρίδας» ως προς την y-συντεταγμένη Συνεχίζω έως ότου εξαντληθούν όλα τα στοιχεία της «Λωρίδας»! Στο τέλος υπολογίζω το δ να είναι το min όλων αυτών των αποστάσεων! D = min (δ, δ, δ)
203 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Ορθότητα αλγόριθμου Η απόδειξη της ορθότητας του αλγόριθμου Closest-Pair είναι σχεδόν προφανής. Χρειάζεται λίγη μόνο προσοχή στο να δειχθεί ότι για τον υπολογισμό της απόστασης δ είναι αρκετές οι 7 συγκρίσεις για κάθε σημείο στη «λωρίδα». Ορθότητα αλγόριθμου: Σωστό αποτέλεσμα για κάθε είσοδο!!!
204 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Πολυπλοκότητα αλγόριθμου Η αναδρομική σχέση που εκφράζει το χρόνο εκτέλεσης του αλγόριθμου: Τ(n) = T( n/ ) + T( n/ ) + cn Τ(n) = T( n/ ) + T( n/ ) + O(n) Από Κύριο Θεώρημα: Τ(n) = Ο(n log n) Πολυπλοκότητα αλγόριθμου: c σταθερά (με τιμή c = 7)
205 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Ένα πολύ ενδιαφέρον Σενάριο!!! Θέλω «γρηγορότερο» αλγόριθμο!!! Εντάξει θα προσπαθήσω!!! Πολυπλοκότητα αλγόριθμου:
206 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Ένα πολύ ενδιαφέρον Σενάριο!!! Προσπαθώ!!! αλλά δεν μπορώ να σχεδιάσω κάποιον «γρηγορότερο» από Ο(n logn) Χμμ δεν θα αποφύγω την απόλυση!!! Πολυπλοκότητα αλγόριθμου:
207 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Ένα πολύ ενδιαφέρον Σενάριο!!! Tο πρόβλημα της διακριτότητας στοιχείων (element distinctness problem ) ή της μοναδικότητας στοιχείων (element uniqueness problem) είναι το πρόβλημα του καθορισμού αν όλα τα στοιχεία μιας ακολουθίας είναι διαφορετικά. Για πρόσεχε λίγο αυτό το πρόβλημα!!! Πολυπλοκότητα αλγόριθμου:
208 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Ένα πολύ ενδιαφέρον Σενάριο!!! Διακριτότητα Στοιχείων Απέδειξα ότι το πρόβλημα αυτό έχει κάτω φράγμα επίλυσης Ω(n logn) Και λοιπόν εγώ ασχολούμαι με το πρόβλημα Πλησιέστερου Ζεύγους Σημείων Πολυπλοκότητα αλγόριθμου:
209 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Ένα πολύ ενδιαφέρον Σενάριο!!! Αναγωγές!!! Tο πρόβλημα Διακριτότητα Στοιχείων Ανάγεται στο πρόβλημα Πλησιέστερου Ζεύγους Σημείων Αν αποδείξεις αυτό, έχεις αποφύγει την απόλυση! Πολυπλοκότητα αλγόριθμου:
210 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αναγωγές!!! Λέμε ότι το πρόβλημα Α ανάγεται στο πρόβλημα Β και το συμβολίζουμε Α Β, εάν μπορούμε να σχεδιάσουμε έναν αλγόριθμο πολυωνυμικού χρόνου για την επίλυση του Α χρησιμοποιώντας έναν αλγόριθμο για την επίλυση του Β!!! Αλγόριθμος για το Α x προεπεξεργασία y Αλγόριθμος για το Β Β(y) μετεπεξεργασία Α(x)
211 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Γιατί Αναγωγές? Αυξάνουν την ισχύ των αλγορίθμων μας : Εάν Α Β και έχουμε έναν αλγόριθμο για το Β, τότε μπορούμε να χρησιμοποιήσουμε τον αλγόριθμο Β για να λύσουμε το πρόβλημα Α!!! Επιτρέπουν συγκρίσεις και κατηγοριοποιήσεις: Μια αναγωγή Α Β μας επιτρέπει να συγκρίνουμε τις πολυπλοκότητες των προβλημάτων Α και Β και να κατηγοριοποιήσουμε αυτά ανάλογα με τη δυσκολία τους!!! Αλγόριθμος για το Α x y προεπεξεργασία Αλγόριθμος για το Β Β(y) μετεπεξεργασία Α(x)
212 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αναγωγή : Διακριτότητα Στοιχείων Πλησιέστερο Ζεύγος Σημείων Τι σημαίνει αυτό!!! Να πως!!! Μπορώ να λύσω το πρόβλημα Algorithm Element-Distinctness(A) begin Διακριτότητα Στοιχείων χρησιμοποιώντας έναν αλγόριθμο για το πρόβλημα Πλησιέστερο Ζεύγος Σημείων Για παράδειγμα, τον Closest-Pair Algorithm Closest-Pair (A) Return D if (D > 0) then return Yes else return No end
213 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αναγωγή : Διακριτότητα Στοιχείων Πλησιέστερο Ζεύγος Σημείων Τότε, έχουμε αυτό που θέλουμε!!! Εάν μπορούσα να σχεδιάσω ένα αλγόριθμο για το «Πλησιέστερο Ζεύγος Σημείων» πολυπλοκότητα ο(nlogn), δηλ. «γρηγορότερο» από O(nlogn), τότε θα μπορούσα να λύσω το πρόβλημα «Διακριτότητα Στοιχείων» σε χρόνο ο(nlogn)
214 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αναγωγή : Διακριτότητα Στοιχείων Πλησιέστερο Ζεύγος Σημείων Τότε, έχουμε αυτό που θέλουμε!!! Εάν μπορούσα να σχεδιάσω ένα αλγόριθμο για το «Πλησιέστερο Ζεύγος Σημείων» πολυπλοκότητα ο(nlogn), δηλ. «γρηγορότερο» από O(nlogn), τότε θα μπορούσα να λύσω το πρόβλημα «Διακριτότητα Στοιχείων» σε χρόνο ο(nlogn) Αυτό είναι αδύνατον να συμβεί, διότι O(nlogn) είναι το κάτω φράγμα επίλυσης του προβλήματος «Διακριτότητα Στοιχείων»!!!
215 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Ένα πολύ ενδιαφέρον Σενάριο!!! Τώρα γνωρίζω Πολυπλοκότητα αλγόριθμου:
216 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Ένα πολύ ενδιαφέρον Σενάριο!!! Τώρα γνωρίζω Κανένας δεν μπορεί να σχεδιάσει «γρηγορότερο» αλγόριθμο από εμένα!!! Και μπορώ να στο αποδείξω!!! Πολυπλοκότητα αλγόριθμου:
217 Πλησιέστερο Ζεύγος Σημείων Εύρεση Πλησιέστερου Ζεύγους Σημείων Αλγόριθμος Ο(n) σε σχέση με έναν Ο(n logn) n logn n n logn Πολυπλοκότητα αλγόριθμου:
218 Πολλαπλασιασμός Πινάκων Αλγόριθμος Strassen
219 Πολλαπλασιασμός Πινάκων Αλγόριθμος Λυκείου!!! Πολλαπλασιασμός Πινάκων Έστω Α = (aij) και Β=(bij) δύο τετραγωνικοί n n πίνακες. Υπάρχει ο κλασσικός μας αλγόριθμος πολλαπλασιασμού των δύο πινάκων C = Α Β που βασίζεται στον ορισμό: όπου cij το στοιχείο του πίνακα C στην ij θέση, i, j =,,, n.
220 Πολλαπλασιασμός Πινάκων Αλγόριθμος Λυκείου!!! Πολλαπλασιασμός Πινάκων Ο κλασσικός μας αλγόριθμος πολλαπλασιασμού : όπου cij είναι το στοιχείο του πίνακα C στην ij θέση, i, j =,,, n. Το στοιχείο cij του πίνακα C υπολογίζεται σε χρόνο O(n), θεωρώντας βασικές πράξεις την πρόσθεση και τον πολλαπλασιασμό. Επομένως, ο κλασσικός αλγόριθμος πολλαπλασιασμού δύο n n πινάκων έχει πολυπλοκότητα O(n3).
221 Πολλαπλασιασμός Πινάκων Αλγόριθμος Λυκείου!!! Πολλαπλασιασμός Πινάκων Μπορώ να χρησιμοποιήσω την τεχνική του Διαίρει-και-Βασίλευε??????? Δεν ξεχνώ!!! Κάθε αλγόριθμος Διαίρει-και-Βασίλευε περιλαμβάνει τρείς φάσεις: NAI!!!. Διαίρεσε το πρόβλημα σε μικρότερα υποπροβλήματα.. Κατάκτησε τα υποπροβλήματα, επιλύοντάς τα αναδρομικά. Εάν τα υποπροβλήματα είναι μικρού μεγέθους, απλώς επίλυσέ τα άμεσα. 3. Συνδύασε τις λύσεις των υποπροβλημάτων για να βρεις τη λύση του αρχικού προβλήματος.
222 Αλγόριθμος Strassen Αλγόριθμος Διαίρει-και-Βασίλευε Αναδρομικός Πολλαπλασιασμός Πινάκων Παρουσιάζουμε έναν απλό αναδρομικό αλγόριθμο για τον υπολογισμό του γινομένου C = A B δύο τετραγωνικών n n πινάκων. Υποθέτουμε, για απλότητα, ότι το n είναι δύναμη του n/ ακέραιος. Διαμερίζουμε καθένα από τους A, B, και C σε τέσσερις n/ n/ πίνακες:
223 Αλγόριθμος Strassen Αλγόριθμος Διαίρει-και-Βασίλευε Αναδρομικός Πολλαπλασιασμός Πινάκων Οι πίνακες Aιj, Bij, και Cij είναι διαστάσεων n/ n/. Οπότε, η εξίσωση C = A B μπορεί να γραφεί :
224 Αλγόριθμος Strassen Αλγόριθμος Διαίρει-και-Βασίλευε Αναδρομικός Πολλαπλασιασμός Πινάκων H εξίσωση : αντιστοιχεί στις εξισώσεις : Κάθε μία από τις εξισώσεις περιγράφει πολλαπλασιασμούς n/ n/ πινάκων και την πρόσθεση των n/ n/ γινομένων τους!!!
225 Αλγόριθμος Strassen Αλγόριθμος Διαίρει-και-Βασίλευε Αναδρομικός Πολλαπλασιασμός Πινάκων Algorithm RM(Α,Β) Αλγόριθμος Simple-RMM begin n A.rows let C a new n*n matrix if n == c = a + b else divide A,B,C in n/*n/ submx C = RM(A,B) + RM(A,B) C = RM(A,B) + RM(A,B) C = RM(A,B) + RM(A,B) C = RM(A,B) + RM(A,B) end return C end Με βάση τις αυτές εξισώσεις σχεδιάζουμε έναν απλό αναδρομικό αλγόριθμο Διαίρει-και-Βασίλευε!!! 8 πολλαπλασιασμοί n/ n/ πινάκων προσθέσεις των γινομένων τους
226 Αλγόριθμος Strassen Αλγόριθμος Διαίρει-και-Βασίλευε Αναδρομικός Πολλαπλασιασμός Πινάκων Algorithm RM(Α,Β) Αλγόριθμος Simple-RMM begin n A.rows let C a new n*n matrix if n == c = a + b else divide A,B,C in n/*n/ submx C = RM(A,B) + RM(A,B) C = RM(A,B) + RM(A,B) C = RM(A,B) + RM(A,B) C = RM(A,B) + RM(A,B) end return C end Πολυπλοκότητα αλγόριθμου RM
227 Αλγόριθμος Strassen Αλγόριθμος Διαίρει-και-Βασίλευε Αναδρομικός Πολλαπλασιασμός Πινάκων Θυμηθείτε!!! Πολυπλοκότητα αλγόριθμου RM εάν εάν εάν 3 Από Κύριο Θεώρημα: Καμία βελτίωση ως προς τον κλασσικό μας αλγόριθμο!!!??????
228 Αλγόριθμος Strassen Αλγόριθμος Διαίρει-και-Βασίλευε Αναδρομικός Πολλαπλασιασμός Πινάκων Algorithm RM(Α,Β) Αλγόριθμος Simple-RMM begin n A.rows let C a new n*n matrix if n == c = a + b else partite A, B, C c = RMM(A,B) + RMM(A,B) c = RMM(A,B) + RMM(A,B) c = RMM(A,B) + RMM(A,B) c = RMM(A,B) + RMM(A,B) end return C end Δεν αρκεί μόνο η καλή Αλγοριθμική Τεχνική!!! Χρειάζεται και Ευφυΐα!!!!!!!!!
229 Αλγόριθμος Strassen Αλγόριθμος Strassen Αναδρομικός Πολλαπλασιασμός Πινάκων Παρουσιάζουμε τον αλγόριθμο του Strassen για τον υπολογισμό του γινομένου C = A B δύο τετραγωνικών n n πινάκων A και B, που εκτελείται σε χρόνο : Δεδομένου ότι η τιμή log 7 είναι μεταξύ.80 και.8, ο αλγόριθμος του Strassen έχει χρόνο εκτέλεσης : και, επομένως, είναι ασυμπτωτικά ταχύτερος από τον κλασσικό αλγόριθμο του Λυκείου μας!!!
230 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Είναι αλγόριθμος τεχνικής Διαίρει-και-Βασίλευε!!! Η ιδέα κλειδί του αλγόριθμου βασίζεται στην εξής επινόηση του Strassen : Ο πολλαπλασιασμός δύο πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 πολλαπλασιασμούς αντί για 8 (και 8 προσθέσεις/αφαιρέσεις αντί για )!!! Πόσο σημαντική είναι η εξάλειψη ενός πολλαπλασιασμού? Ας δούμε πρώτα την ιδέα του!!! και μετά δείχνουμε εάν είναι σημαντική και πόσο!!!??????
231 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Ο πολλαπλασιασμός δύο πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 πολλαπλασιασμούς αντί για 8 (και 8 προσθέσεις/αφαιρέσεις αντί για )!!! Να η ιδέα του Strassen!!! Όρισε τις ποσότητες P, P,, P7 και στη συνέχεια
232 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Ο πολλαπλασιασμός δύο πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 πολλαπλασιασμούς αντί για 8 (και 8 προσθέσεις/αφαιρέσεις αντί για )!!! Να η ιδέα του Strassen!!! Πράγματι η ιδέα του Strassen είναι σωστή!!! Επαλήθευση της τιμής του r!!!
233 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Ο πολλαπλασιασμός δύο πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 πολλαπλασιασμούς αντί για 8 (και 8 προσθέσεις/αφαιρέσεις αντί για )!!! Να η ιδέα του Strassen!!! Πράγματι η ιδέα του Strassen είναι σωστή!!! Εύκολα μπορούμε να επαληθεύουμε τις τιμές των s, t και u!!!
234 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Ο πολλαπλασιασμός δύο πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 πολλαπλασιασμούς αντί για 8 (και 8 προσθέσεις/αφαιρέσεις αντί για )!!! Η ιδέα του Strassen είναι σωστή!!! Πόσο καλή όμως είναι η ιδέα ; Μας γλιτώνει ένα πολλαπλασιασμό! Όμως μας κοστίζει επιπρόσθετες προσθέσεις/αφαιρέσεις!! Δεν θα είχε καμία αξία εάν η χρησιμότητά της περιοριζόταν μόνο σε πολλαπλασιασμό πινάκων!!!
235 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Ο πολλαπλασιασμός δύο πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 πολλαπλασιασμούς αντί για 8 (και 8 προσθέσεις/αφαιρέσεις αντί για )!!! Έχει γενικότερη χρησιμότητα!!! Γιατί? Κρίσιμο σημείο της Ιδέας!!! Η αντιμεταθετικότητα της πράξης του πολλαπλασιασμού δεν χρησιμοποιείται στους τύπους υπολογισμού των ποσοτήτων P, P,, P7 Άρα, μπορεί να εφαρμοστεί όταν τα a, b, c, d, e, f, g και h είναι πίνακες!!!
236 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Ο πολλαπλασιασμός δύο n n πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 αναδρομικούς πολλαπλασιασμούς n/ n/ πινάκων αντί για 8!!! Αναδρομική εφαρμογή της μεθόδου του Strassen σε πίνακες!!! Η εξάλειψη ενός πολλαπλασιασμού πινάκων κοστίζει μερικές επιπλέον νέες προσθέσεις n/ n/ πινάκων!!! Όμως, το πλήθος αυτών των προσθέσεων είναι σταθερό!!! και θα απορροφηθεί στον όρο Ο( ) της αναδρομικής σχέσης που εκφράζει το χρόνο εκτέλεσης του αλγόριθμου.
237 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Ο πολλαπλασιασμός δύο n n πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 αναδρομικούς πολλαπλασιασμούς n/ n/ πινάκων αντί για 8!!! Γενίκευση της ιδέας!!! όπου S, S,, S0 πίνακες διαστάσεων n/ n/ :
238 Αλγόριθμος Strassen Αλγόριθμος Strassen Ιδέα Αλγόριθμου!!!... Ο πολλαπλασιασμός δύο n n πινάκων A και B μπορεί να εκτελεστεί μόνο με 7 αναδρομικούς πολλαπλασιασμούς n/ n/ πινάκων αντί για 8!!! Γενίκευση της ιδέας!!! Αναδρομικός υπολογισμός P, P,, P7 και έξοδος ο C :
239 Αλγόριθμος Strassen Αλγόριθμος Strassen Γενική περιγραφή Αλγόριθμος Η ιδέα αυτή υπαγορεύει τον παρακάτω αναδρομικό αλγόριθμο του Strassen για τον πολλαπλασιασμό δύο n n πινάκων:. Διαίρεσε τους πίνακες Α και Β σε υποπίνακες Α, Α, Α, Α και Β, Β, Β, Β τον καθένα διαστάσεων n/ x n/.. Κατέκτησε τους πίνακες P, P,, P7 κάνοντας 7 πολλαπλασιασμούς n/ x n/ πινάκων αναδρομικά (για τον υπολογισμό των πινάκων P, P,, P7 χρησιμοποίησε συνολικά n/ x n/ πίνακες - τους 8 πίνακες Α, Α, Α, Α, Β, Β, Β, Β και τους 0 πίνακες S, S,, S0). 3. Συνδύασε τα επιμέρους αποτελέσματα και υπολόγισε τον πίνακα C = A B χρησιμοποιώντας προσθέσεις/αφαιρέσεις πάνω στους 7 πίνακες P, P,, P7.
240 Αλγόριθμος Strassen Αλγόριθμος Strassen Αναλυτική περιγραφή Αλγόριθμος. Διαίρεσε τούς πίνακες Α και Β και τον πίνακα εξόδου C σε n/ n/ υποπίνακες. Χρόνος Θ(). Δημιούργησε 0 πίνακες S, S,, S0 διαστάσεων n/ n/ που είναι το άθροισμα ή η διαφορά δύο πινάκων που δημιουργήθηκαν στο βήμα. Χρόνος Θ(n).
241 Αλγόριθμος Strassen Αλγόριθμος Strassen Αναλυτική περιγραφή Αλγόριθμος. Υπολόγισε αναδρομικά επτά γινόμενα πινάκων Ρ, Ρ,, P7 χρησιμοποιώντας τους υποπίνακες των βημάτων και. Κάθε Pi έχει διαστάσεις n/ n/. 3. Υπολόγισε τους ζητούμενους υποπίνακες C, C, C,C του τελικού πίνακα C προσθέτοντας και αφαιρώντας διάφορους συνδυασμούς των πινάκων Pi. Χρόνος Θ(n).
242 Αλγόριθμος Strassen Αλγόριθμος Strassen Ορθότητα Αλγόριθμου Στο βήμα, υπολογίζει τους πίνακες P, P,, P7 κάνοντας 7 πολλαπλασιασμούς n/ x n/ πινάκων αναδρομικά, όπου καθένας είναι άθροισμα ή διαφορά γινομένων των υποπινάκων Α, Α, Α, Α, Β, Β, Β, Β των Α και Β: Στο βήμα 3, προσθέτει και αφαιρεί τους πίνακες P, P,, P7 και κατασκευάζει τους τέσσερις n/ x n/ υποπίνακες C, C, C, C του γινομένου C = A B.
243 Αλγόριθμος Strassen Αλγόριθμος Strassen Ορθότητα Αλγόριθμου Ας ξεκινήσουμε από τον όρο C : Αν γράψουμε αναλυτικά το δεξί μέλος, αναπτύσσοντας κάθε Pi σε μία γραμμή και στοιχίζοντας κατακόρυφα όρους που απαλείφονται, βλέπουμε ότι το C ισούται με:
244 Αλγόριθμος Strassen Αλγόριθμος Strassen Ορθότητα Αλγόριθμου Αντίστοιχα, παίρνουμε τον όρο C : οπότε αυτός ισούται με:
245 Αλγόριθμος Strassen Αλγόριθμος Strassen Ορθότητα Αλγόριθμου Συνεχίζοντας, παίρνουμε τον όρο C : οπότε αυτός ισούται με:
246 Αλγόριθμος Strassen Αλγόριθμος Strassen Ορθότητα Αλγόριθμου Τέλος, ο τέταρτος όρος C : ισούται με:
247 Αλγόριθμος Strassen Αλγόριθμος Strassen Πολυπλοκότητα Αλγόριθμου Η αναδρομική σχέση που εκφράζει το χρόνο εκτέλεσης του αλγόριθμου: Ο αλγόριθμος εκτελεί 7 πολλαπλασιασμούς και 8 προσθέσεις/αφαιρέσεις σε πίνακες διατάσεων n/ n/ Από Κύριο Θεώρημα: Πολυπλοκότητα αλγόριθμου:
Σχεδίαση και Ανάλυση Αλγορίθμων
Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα.0 Σταύρος Δ. Νικολόπουλος 06-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Ταξινόμηση Selection-Sort Bubble-Sort και
Σχεδίαση και Ανάλυση Αλγορίθμων
Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros
Σχεδίαση & Ανάλυση Αλγορίθμων
Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 3 Αλγόριθμοι Επιλογής Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Αλγόριθμοι Επιλογής Γνωρίζουμε
Εισαγωγή στους Αλγορίθμους
Εισαγωγή στους Αλγορίθμους Ενότητα 5η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Η Μέθοδος «Διαίρει & Βασίλευε» Η Μέθοδος
ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο
ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε Γενική μέθοδος σχεδιασμού αλγορίθμων: ιαίρεση σε ( 2) υποπροβλήματα
Ταξινόμηση με συγχώνευση Merge Sort
Ταξινόμηση με συγχώνευση Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 Πληροφορικής 1 Διαίρει και Βασίλευε Η μέθοδος του «Διαίρει και Βασίλευε» είναι μια γενική αρχή σχεδιασμού αλγορίθμων
Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2
Διαίρει-και-Βασίλευε Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Γενική µέθοδος σχεδιασµού αλγορίθµων: Διαίρεση σε ( 2) υποπροβλήµατα (σηµαντικά) µικρότερου µεγέθους.
Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Διαίρει-και-Βασίλευε Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική
Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι
Πρόβλημα Ταξινόμησης Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Είσοδος : ακολουθία n αριθμών (α 1, α 2,..., α n
Εισαγωγή στους Αλγορίθμους Ενότητα 5η
Εισαγωγή στους Αλγορίθμους Ενότητα 5η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό
Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1
Διαίρει-και-Βασίλευε Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική μέθοδος
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 4: Αναδρομικές σχέσεις και ανάλυση αλγορίθμων Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης
Εισαγωγή στην Ανάλυση Αλγορίθμων
Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)
Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012
Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 3 5 1 Ταξινόμηση - Sorting Πίνακας Α 1 3 5 5 3 1 Ταξινόμηση (Φθίνουσα) Χωρίς Ταξινόμηση Ταξινόμηση
Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,
Κεφάλαιο 4 Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1, 2015-01-19 Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Διαίρει και Βασίλευε (Divide-and-Conquer) Διαίρει-και-βασίλευε
Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I
Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή
Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων
Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and
Αλγόριθμοι και Πολυπλοκότητα
Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται
Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Δομές Δεδομένων Ταξινόμηση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Είσοδος n αντικείμενα a 1, a 2,..., a n με κλειδιά (συνήθως σε ένα πίνακα, ή λίστα, κ.τ.λ)
Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 9: ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΕΞΙΣΟΡΡΟΠΗΣΗ, ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ
Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 9: ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΕΞΙΣΟΡΡΟΠΗΣΗ, ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα
auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/courses/algorithms/ auth 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο του προβλήματος
Αλγόριθμοι ταξινόμησης
Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης BuubleSort, SelectionSort, InsertionSort, Merger Sort, Quick Soft ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι
Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.
Κεφάλαιο 4 Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Διαίρει και Βασίλευε (Divide-and-Conquer) Διαίρει-και-βασίλευε (γενικά) Χωρίζουµε
Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Πολλαπλασιασμός μεγάλων ακεραίων (1) Για να πολλαπλασιάσουμε δύο ακεραίους με n 1 και n 2 ψηφία με το χέρι, θα εκτελέσουμε n 1 n 2 πράξεις πολλαπλασιασμού Πρόβλημα ρβημ όταν έχουμε πολλά ψηφία: A = 12345678901357986429
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ (ΑΛΓΟΡΙΘΜΟΙ, Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani, σελ. 55-62 ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΩΝ, Jon Kleinberg, Eva Tardos, Κεφάλαιο 5) Δυαδική αναζήτηση
ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 9 ο Ταξινόµηση Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ταξινόµηση Εισαγωγή Selection sort Insertion sort Bubble sort
Αλγοριθμικές Τεχνικές
Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Αλγοριθμικές Τεχνικές 1 Τεχνικές Σχεδιασμού Αλγορίθμων Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και
Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1
Merge Sort (Ταξινόμηση με συγχώνευση) 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 6/14/2007 3:04 AM Merge Sort 1 Κύρια σημεία για μελέτη Το παράδειγμα του «διαίρει και βασίλευε» ( 4.1.1) Merge-sort
Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort
Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 3 4 5 6 7 8 9 1 BucketSort (Ταξινόμηση Κάδου) - Αρχικά θεωρείται ένα κριτήριο κατανομής με βάση το οποίο
Σχεδίαση και Ανάλυση Αλγορίθμων
Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 2.0 Πολυπλοκότητα Αλγορίθμων Ασυμπτωτική Πολυπλοκότητα Αναδρομικές Σχέσεις Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων
Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1
Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1 Quicksort [Hoare, 62] Στοιχείο διαχωρισµού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες:
Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο
Επιλογή Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Πρόβλημα Επιλογής Πίνακας Α[ ] με n στοιχεία (όχι ταξινομημένος). Αριθμός k,
Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο
Επιλογή ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Πρόβλημα Επιλογής Πίνακας Α[]με n στοιχεία (όχι ταξινομημένος). Αριθμός k, 1 k n. Υπολογισμός
Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 14: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης 3) Mergesort Ταξινόμηση με Συγχώνευση 4) BucketSort Ταξινόμηση με Κάδους Διδάσκων:
Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Quicksort Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Quicksort [Hoare, 6] Στοιχείο διαχωρισμού (pivot),
Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο
Quicksort ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Quicksort [Hoare, 62] Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση
Δομές Δεδομένων & Αλγόριθμοι
Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση
Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πρόβλημα Επιλογής Πίνακας Α[]με n στοιχεία (όχι ταξινομημένος). Αριθμός
Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Γ. MergeSort Ταξινόμηση με Συγχώνευση Δ. BucketSort Ταξινόμηση με Κάδους Διδάσκων:
5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η
Αλγόριθμοι Ταξινόμησης Μέρος 2
Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2
Αλγόριθμοι και Πολυπλοκότητα
Αλγόριθμοι και Πολυπλοκότητα Ανάλυση Αλγορίθμων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανάλυση Αλγορίθμων Η ανάλυση αλγορίθμων περιλαμβάνει τη διερεύνηση του τρόπου
Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1
Πρόβληµα Επιλογής Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1 Πρόβληµα Επιλογής Πίνακας Α[ Αριθµός k, 1 k n. ] µε n στοιχεία (όχι ταξινοµηµένος). Υπολογισµός του k-οστού µικρότερου στοιχείου (στοιχείο
Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/~gounaris/courses/ad auth gounaris/courses/ad 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο
Ταχεία Ταξινόμηση Quick-Sort
Ταχεία Ταξινόμηση Quc-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 1 Outlne Quc-sort Αλγόριθμος Βήμα διαχωρισμού Δένδρο Quc-sort
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ ΤΟ ΠΡΟΒΛΗΜΑ ΤΗΣ ΤΑΞΙΝΟΜΗΣΗΣ Ορισμός ταξινόμησης 2 Κατηγορίες αλγορίθμων ταξινόμησης
Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων
Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Παύλος Εφραιµίδης pefraimi@ee.duth.gr Ορισµένες γενικές αρχές για τον σχεδιασµό αλγορίθµων είναι: ιαίρει και Βασίλευε (Divide and Conquer) υναµικός Προγραµµατισµός
ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 4: Διαίρει και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 4: Διαίρει και Βασίλευε Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Άδειες Χρήσης Το παρόν
Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Quicksort ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Επιλογή ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Κατ οίκον Εργασία 2 Σκελετοί Λύσεων
Κατ οίκον Εργασία 2 Σκελετοί Λύσεων 1. (α) Αλγόριθµος: ηµιούργησε το σύνολο P που αποτελείται από τα άκρα όλων των ευθυγράµµων τµηµάτων. Βρες το κυρτό περίβληµα του P µε τον αλγόριθµο του Graham. Ορθότητα:
Σχεδίαση & Ανάλυση Αλγορίθμων
Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 1 Αλγόριθμοι και Πολυπλοκότητα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Εισαγωγή Ας ξεκινήσουμε
Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1
Ταξινόμηση Παύλος Εφραιμίδης Δομές Δεδομένων Ταξινόμηση 1 Το πρόβλημα της ταξινόμησης Δομές Δεδομένων Ταξινόμηση 2 Ταξινόμηση Δίνεται πολυ-σύνολο Σ με στοιχεία από κάποιο σύμπαν U (πχ. U = το σύνολο των
Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης
Ουρές Προτεραιότητας: Υπενθύμιση Σωροί / Αναδρομή / Ταξινόμηση Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς (Abstract Data Type) με μεθόδους: Μπορεί να υλοποιηθεί με
1o Φροντιστήριο ΗΥ240
1o Φροντιστήριο ΗΥ240 Άσκηση 1 Αποδείξτε τη μεταβατική και τη συμμετρική ιδιότητα του Θ Μεταβατική Ιδιότητα (ορισμός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)) Για να ισχύει f(n)= Θ(h(n))
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
1η Σειρά Γραπτών Ασκήσεων
1/20 Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 1η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 1 Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 2 3 4 5 2/20
Ταξινόμηση. Σαλτογιάννη Αθανασία
Ταξινόμηση Σαλτογιάννη Αθανασία Ταξινόμηση Ταξινόμηση Τι εννοούμε όταν λέμε ταξινόμηση; Ταξινόμηση Τι εννοούμε όταν λέμε ταξινόμηση; Ποια είδη αλγορίθμων ταξινόμησης υπάρχουν; Ταξινόμηση Τι εννοούμε όταν
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ταξινόµηση Mergesort Κεφάλαιο 8 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ταξινόµηση µε συγχώνευση Αλγόριθµος Mergesort Διµερής συγχώνευση Αφηρηµένη επιτόπου συγχώνευση Αναλυτική ταξινόµηση
Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»
Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε» ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε
Δομές Δεδομένων & Αλγόριθμοι
Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση
Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι
ίκτυα Ταξινόµησης (CLR κεφάλαιο 28)
ίκτυα Ταξινόµησης (CLR κεφάλαιο 28) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: ίκτυα σύγκρισης, δίκτυα ταξινόµησης Αρχή - ιτονική ταξινόµηση ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2- Μοντέλο στο οποίο
d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων
Αλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 23 Μαρτίου 2017 1 / 20 Επιλογή Το πρόβληµα
Τεχνικές Σχεδιασμού Αλγορίθμων
Τεχνικές Σχεδιασμού Αλγορίθμων Διαίρει και Βασίλευε Δυναμικός Προγραμματισμός Απληστία Π. Μποζάνης ΤHMMY - Αλγόριθμοι 2014-2015 1 Διαίρει και Βασίλευε Βασικά Βήματα Διαίρει: Κατάτμηση του αρχικού προβλήματος
Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 20: Αλγόριθμοι ΤαξινόμησηςIII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Ε. QuickSort Γρήγορη Ταξινόμηση - Έμμεση Ταξινόμηση - Εξωτερική Ταξινόμηση Διδάσκων:
Δομές Δεδομένων & Αλγόριθμοι
- Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται
a 1 a 2 a n. 3. i = j 1 5. A[i + 1] = A[i] 6. i = i 1
Εισαγωγη στον Σχεδιασμο και Αναλυση αλγοριθμων Αλγοριθμοι Ταξινομησης Η ταξινόμηση μιας ακολουθίας αριθμών είναι από τα βασικά αποτελέσματα της θεωρίας αλγορίθμων. Μια ευρεία γκάμα τέτοιων αλγορίθμων έχουν
Δυναμικός Προγραμματισμός
Δυναμικός Προγραμματισμός Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διωνυμικοί Συντελεστές Διωνυμικοί
Εισαγωγή στους Αλγόριθμους
Εισαγωγή στους Αλγόριθμους Ενότητα 16: Δυαδική αναζήτηση και ταξινόμηση με συγχώνευση Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών
Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Δ. QuickSort Γρήγορη Ταξινόμηση Ε. BucketSort
Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής
Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 7 η Βασίλης Στεφανής Αλγόριθμοι ταξινόμησης Στην προηγούμενη διάλεξη είδαμε: Binary search Λειτουργεί μόνο σε ταξινομημένους πίνακες Πώς τους ταξινομούμε? Πολλοί τρόποι. Ενδεικτικά:
Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη
Αναζήτηση. Σειριακή αναζήτηση. Δυαδική Αναζήτηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου
Αλγόριθμοι Ταξινόμησης Μέρος 4
Αλγόριθμοι Ταξινόμησης Μέρος 4 Μανόλης Κουμπαράκης Δομές Δεδομένων και Τεχνικές 1 Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Οι αλγόριθμοι ταξινόμησης που είδαμε μέχρι τώρα αποφασίζουν πώς να
Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης
Γ7.5 Αλγόριθμοι Αναζήτησης Γ Λυκείου Κατεύθυνσης Εισαγωγή Αλγόριθμος αναζήτησης θεωρείται ένας αλγόριθμος, ο οποίος προσπαθεί να εντοπίσει ένα στοιχείο με συγκεκριμένες ιδιότητες, μέσα σε μία συλλογή από
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΑΘΗΜΑ: ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ 1. α. Να βάλετε σε αύξουσα σειρά μεγέθους τις παρακάτω συναρτήσεις χρονικής πολυπλοκότητας αλγορίθμων: nlogn, n logn,
Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018
Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018 Αλγόριθμοι Ρυθμός αύξησης συναρτήσεων [Rosen 3.2] Αριθμητικές συναρτήσεις Τάξη αριθμητικών συναρτήσεων
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων
ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά
Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων
Αλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 23 Μαρτίου 2017 1 / 170 Αναδροµή ιαίρει
Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών Συγχωνευτική Ταξινόμηση (Merge Sort) 7 2 9 4 2 4 7 9 7 2 2 7 9 4
Στοιχεία Αλγορίθµων και Πολυπλοκότητας
Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις
Διάλεξη 04: Παραδείγματα Ανάλυσης
Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6α: Αναζήτηση Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commos. Για εκπαιδευτικό
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού
Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων
Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα
Πληροφορική 2. Αλγόριθμοι
Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 13: Αλγόριθμοι-Μεγάλων ακεραίων- Εκθετοποίηση- Πολλαπλασιασμός πινάκων -Strassen Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό
ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ
ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2016 - I. ΜΗΛΗΣ ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΛΓΟΡΙΘΜΩΝ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 1 Example: GCD συνάρτηση
Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I
Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης: Α. SelectoSort Ταξινόμηση με Επιλογή Β. IsertoSort Ταξινόμηση με Εισαγωγή Γ. MergeSort
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Ταξινόμηση. 1. Στατιστικά Διάταξης 2. Στατιστικά σε Μέσο Γραμμικό Χρόνο. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη
Ταξινόμηση. Στατιστικά Διάταξης. Στατιστικά σε Μέσο Γραμμικό Χρόνο Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Στατιστικά Διάταξης Με τον όρο στατιστικά διάταξης (order statistics) εννοούμε την περίπτωση
Αλγόριθµοι και Πολυπλοκότητα
Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 / ένδρα Ενα δένδρο είναι
Δυναμικός Προγραμματισμός
Δυναμικός Προγραμματισμός Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις /προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διωνυμικοί Συντελεστές
Εργαστηριακή Άσκηση 1
Εργαστηριακή Άσκηση 1 Επανάληψη προγραμματισμού Βασικοί Αλγόριθμοι Είσοδος τιμών από το πληκτρολόγιο Σε όλα τα προγράμματα που θα γράψουμε στην συνέχεια του εξαμήνου θα χρειαστεί να εισάγουμε τιμές σε
Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης
Δοµές Δεδοµένων 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης Περίληψη Quicksort Χαρακτηριστικά επιδόσεων Μη αναδροµική υλοποίηση Δέντρα Μαθηµατικές ιδιότητες Δοµές Δεδοµένων 11-2
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 9: Στατιστικά Διάταξης- Στατιστικά σε Μέσο Γραμμικό Χρόνο Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε
Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1
Ανάλυση Αλγορίθμων Θέματα Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα Προσεγγίσεις: Θεωρητική ανάλυση Εμπειρική ανάλυση Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Θεωρητική