ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας Ηλίας Κ. Σάββας Επίκουρος Καθηγητής Τμήμα: Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Email: savvas@teilar teilar.gr Αλγόριθµοι (Brute-Force, Αναδροµικοί, ιαίρει και Βασίλευε, υναµικός Προγ/µός µός,, Άπληστοι, Ευρεστικοί, ) Κλάσεις Πολυπλοκότητας 0-006006 Σάββας Ηλίας Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας Αλγόριθµοι (Brute-Force, Αναδροµικοί, ιαίρει και Βασίλευε, υναµικός Προγ/µός µός,, Άπληστοι, Ευρεστικοί, ) Κλάσεις Πολυπλοκότητας Γενικά περί αλγορίθµων Αλγόριθµος Περσία 85 µχ: Abu Ja far Mohammed ibn Musa al Khowarizmi Σύνολο (απλών) οδηγιών οι οποίες επιλύουν ένα συγκεκριµένο πρόβληµα 3x+5=0 ή µία κλάση προβληµάτων. ax+b=0
Αλγόριθµος Τεχνικές αλγορίθµων Είσοδος Καλά Ορισµένος ΑΛΓΟΡΙΘΜΙΚΗ ΓΛΩΣΣΑ Αλγόριθµος Πεπερασµένος Έξοδος Γενικός Αποτελεσµατικός Brute-Force Force, Αναδροµικοί, «ιαίρει και Βασίλευε», υναµικού Προγραµµατισµού, Άπληστοι, Παράλληλοι, Ευρεστικοί (Εύρηκα!!!) Και πολλές άλλες τεχνικές Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας Αλγόριθµοι (Brute-Force, Αναδροµικοί, ιαίρει και Βασίλευε, υναµικός Προγ/µός µός,, Άπληστοι, Ευρεστικοί, ) Κλάσεις Πολυπλοκότητας Πολυπλοκότητα Αξιολόγηση αλγόριθµου: Ταχύτητα, Χρήση µνήµης, Χρήση πόρων δικτύου, Χρήση οποιονδήποτε υπολογιστικών πόρων. ΤΑΧΥΤΗΤΑ αλγόριθµου (σε συνάρτηση µε το πλήθος δεδοµένων εισόδου, έστω N): Χειρίστη περίπτωση, Μέση περίπτωση, Καλύτερη περίπτωση.
Μέτρηση πολυπλοκότητας f(n) Μεγάλο Όµικρον (big( Oh): f(n)=o(g(n)) δεν αυξάνει πιο γρήγορα από την g Μικρό όµικρον (little( oh): f(n)=o(g(n)) αυξάνει πιο αργά από την g Θήτα (theta): f(n)=θ(g(n)) (g(n)) f και g αυξάνουν µε τον ίδιο (περίπου) ρυθµό Ασυµπτωτικά: f(n)~g(n) g(n) f και g αυξάνουν µε τον ίδιο ρυθµό Ωµέγα (omega): f(n)=ω(g(n)) (g(n)) Άρνηση του µικρού όµικρον, η g αποτελεί κάτω όριο της f. Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας Αλγόριθµοι (Brute-Force, Αναδροµικοί, ιαίρει και Βασίλευε, υναµικός Προγ/µός µός,, Άπληστοι, Ευρεστικοί, ) Κλάσεις Πολυπλοκότητας Τεχνική (?): Brute-Force Force Brute-Force Επίλυση µε τον πιο ΑΠΛΟ και ΠΡΟΦΑΝΗ τρόπο (χωρίς να σηµαίνει ότι είναι και ο πιο καλός, που σχεδόν σε όλες τις περιπτώσεις δεν είναι) Παράδειγµα: Α 6 Brute-Force: Α 6 = Α x A x A x x A (5( πολ/µοί µοί) αλλά Α 6 = (((Α ) ) ) (4 πολ/µοί µοί) Ταξινοµήσεις Brute-Force Force: Φυσαλίδα, Επιλογή, Εισαγωγή Πιο «έξυπνες τεχνικές»: Quick sort, Merge sort, Heap sort O(N ) O(Nlog(N)) 3
Συγκρίσεις Τεχνική: Αναδροµικοί αλγόριθµοι 00 90 80 70 60 f 50 40 30 lo g n n nlogn n^ ^n Επιλύει ένα πρόβληµα επιλύνοντας ένα ή περισσότερα µικρότερα κοµµάτια του ίδιου προβλήµατος. Τυπικό παράδειγµα: Ν! = Ν(Ν-)!, 0!= Ακέραια συνάρτηση Παραγοντικό(Ακέραια παράµετρος Ν) Αρχή Εάν Ν< Τότε Κριτήριο τέλους Επέστρεψε 0 Αλλιώς 0 0 3 4 5 6 7 8 9 0 n Τέλος Επέστρεψε Ν x Παραγοντικό(Ν-) Τέλος_Εάν Αναδροµικοί αλγόριθµοι Αναδροµικοί αλγόριθµοι Πολλά προβλήµατα επιλύονται µε αναδροµή!!! Παράδειγµα: Εύρεση του k-οστού άρτιου Ακέραια Συνάρτηση Άρτιος_k(Ακέραια παράµετρος k) Εάν k= Τότε Επέστρεψε 0 Αλλιώς Επέστρεψε + Άρτιος_k(k-) Τέλος_Εάν Αναδροµικός αλγόριθµος αναζήτησης σε αταξινόµητο πίνακα Ακέραια συνάρτηση Α_Αναζήτηση(Πίνκας Π, αρχή, τέλος, Χ) Εάν τέλος < αρχή Τότε Επέστρεψε - Αλλιώς Εάν Π[αρχή] = Χ Τότε Επέστρεψε αρχή Αλλιώς Επέστρεψε A_αναζήτηση(Π, αρχή+, τέλος, X) Τέλος_Εάν Τέλος_Εάν 4
Πύργοι Hanoi Μετακίνηση δίσκων: ) Επιτρέπεται η µεταφορά ενός δίσκου κάθε φορά, και ) Απαγορεύετε να βρεθούν δύο διαδοχικού δίσκοι στη ίδια κολόνα µε τον µικρότερο κάτω από τον µεγαλύτερο. Αναδροµικοί αλγόριθµοι Η αναδροµή δεν αποτελεί πάντα την βέλτιστη λύση, αλλά: Πολλά προβλήµατα επιλύονται µε µαθηµατική αναδροµή και κατά συνέπεια µπορούν να µεταφερθούν εύκολα σε έναν αλγόριθµο. Τεχνική: «ιαίρει και Βασίλευε» Πάγια τακτική των Ρωµαίων αυτοκρατόρων: ιαίρεσε τους εχθρούς σου, Νίκησέ τους έναν έναν.. ιαίρει (το πρόβληµα σε µικρότερα επιµέρους προβλήµατα),. Βασίλευε (λύνοντας το κάθε επιµέρους πρόβληµα εφαρµόζοντας αναδροµικά την ίδια τακτική), και τέλος 3. Συνένωσε (τις επιµέρους λύσεις σε µία καθολική λύση του προβλήµατος). ιαίρει και Βασίλευε: Merge Sort ιαδικασία MergeSort(πίνακας Α, ακέραιος p, ακέραιος r) Αρχή Εάν (p < r) Τότε q = (p+r) / MergeSort(A, p, q) MergeSort(A, q+, r) Merge(A, p, q, r) Τέλος Εάν Τέλος ιαδικασίας «MergeSort» 5
() ιαίρει, () Συγχώνευσε, (3) Βασίλευε. ιαίρει και Βασίλευε (εφαρµογές) Quick Sort, Κυρτό περίβληµα (convex( hull), Πολλά γεωµετρικά προβλήµατα (πχ ελάχιστες αποστάσεις), και πολλές άλλες. υναµικός Προγραµµατισµός Αυτή η τεχνική προϋποθέτει µία αναδροµική επίλυση προβληµάτων αλλά µε µία bottom-up εκτίµηση των λύσεων. Οι υπό-λύσεις συνήθως αποθηκεύονται για την επαναχρησιµοποίησή τους. Ο δυναµικός προγραµµατισµός χρησιµοποιείται κυρίως σε προβλήµατα βελτιστοποίησης τα οποία σχετίζονται µε πολλές λύσεις αλλά και µια τιµή κόστους για το κάθε ένα από αυτά. Τυπικό παράδειγµα αποτελεί η επίλυση της συνάρτησης Fibbonaci η οποία ορίζεται ως εξής: 6
υναµικός Προγραµµατισµός υναµικός Προγραµµατισµός f ( n ) + f ( n ), n > f ( n) = f () = f () = f ( 6 f ) f f ( 3 ) f ( 4 ) ( 5 ) f ( ) f ( ) f ( 3 ) f ( ) f ( ) f ( 3 ) ( 4 ) f ( ) f ( ) f f ( ) ( ) υναµικός Προγραµµατισµός ιαίρεση του προβλήµατος σε µικρότερα και απλούστερα µέρη. Αποθήκευση των λύσεων σε ένα πίνακα. Αυτό γίνεται γιατί πολλές αν όχι όλες από τις λύσεις των υπό-προβληµάτων προβληµάτων πρόκειται να ξαναχρησιµοποιηθούν και να συνδυασθούν και δεν ενδείκνυται το να επιλυθούν ξανά και ξανά. Συνδυασµός των επιµέρους λύσεων του προβλήµατος ώστε να οδηγήσουν στην συνολική λύση. υναµικός Προγραµµατισµός Πολλαπλασιασµός αλυσίδας πινάκων: Α 3x4 B 4x5 C 5x D x9.x IxJ String editing, Βιοπληροφορική, Χρονοπρογραµµατισµός εργασιών, Και πολλές άλλες. 7
Άπληστοι Αλγόριθµοι υναµικός Προγ/µός µός: : Ψάχνει ΟΛΕΣ τις πιθανές λύσεις Βέλτιστη λύση (µερικές φορές ασύµφορη). Απληστία: Επιλέγει µε καθαρά τοπικά κριτήρια τοπικά βέλτιστες λύσεις που ίσως οδηγήσουν σε καθολικά βέλτιστη λύση (όχι πάντα). Χαρακτηριστικό παράδειγµα: Επιστροφή ρέστων Επιστροφή µεγαλύτερου κέρµατος κάθε φορά και αφαίρεσέ το από το σύνολο ρέστων Άπληστοι Αλγόριθµοι Κάθε κλάσµα αναλύεται σε πεπερασµένο άθροισµα κλασµάτων µε αριθµητή µονάδα (Αιγυπτιακά κλάσµατα) 3 = + 6 87 0 = + 4 + 5 + 00 Αιγυπτιακά κλάσµατα Αιγυπτιακά κλάσµατα (a/r) 5 8 = + 8 Ακέραιος i {πρώτο πιθανό κλάσµα= ½, απληστία} Εφόσον (a 0) Εάν (a*i r) Τότε Εµφάνισε «/i» a a*i-r r r*i Τέλος_Εάν i i + Τέλος_Εφόσον 8
Χρονοπρογραµµατισµός εργασιών Χρονοπρογραµµατισµός εργασιών 8 7 6 5 4 3 0 3 4 5 6 7 8 9 0 3 4 8 7 6 5 4 3 0 3 4 5 6 7 8 9 0 3 4 Πρόβληµα σακιδίου Πρόβληµα σακιδίου 9
Heuristics Παράλληλοι αλγόριθµοι (SISD) Neighbor search, Simulated annealing, Tabu search, Artificial neural networks, Genetic algorithms, Lagrangean relaxation, Και άλλοι Παράλληλοι αλγόριθµοι (ΜISD) Παράλληλοι αλγόριθµοι (SIMD) 0
Παράλληλοι αλγόριθµοι (MIMD) Παράλληλος αλγόριθµος πρόσθεσης 00 αριθµών (P[00])( Παράλληλη Εκτέλεση (Επεξεργαστές Ε, Ε) (Π) Ε ΚΑΙ Ε: Ακέραιος i (Π) Ε: Αθροιστής S, Ε: Αθροιστής S E: Αθροιστής S (Π) E: S 0, E: S 0 (Π) E: Για i από µέχρι 50, E: Για i από 5 µέχρι 00 (Π) E: S S + P i, E: S S + P i (Π) Τέλος Για (i) E: Μεταφορά S Ε E: S S + S E: Επέστρεψε S Κόστος παράλληλων αλγόριθµων Περίγραµµα Επιτάχυνση = (Χειρότερος χρόνος του καλύτερου σειριακού αλγόριθµου) / (Χρόνος παράλληλου αλγόριθµου) Κόστος = (Επιτάχυνση) x (Αριθµός συµµετεχόντων CPU) Απόδοση = (Χειρότερος χρόνος του καλύτερου σειριακού αλγόριθµου) / (Κόστος παράλληλου αλγόριθµου) Εισαγωγή Στοιχεία Πολυπλοκότητας Αλγόριθµοι (Brute-Force, Αναδροµικοί, ιαίρει και Βασίλευε, υναµικός Προγ/µός µός, Άπληστοι, Ευρεστικοί, ) Κλάσεις Πολυπλοκότητας
Κλάσεις πολυπλοκότητας Κλάση P: Ένας αλγόριθµος θεωρείται ότι είναι της κλάσης P εάν υπάρχει πολυώνυµο p τέτοιο ώστε f(n) = O(p(N)). ΟΡΙΣΜΟΙ: Το σύνολο των προσδιοριστικών αλγόριθµων απόφασης που επιλύονται σε πολυωνυµικό χρόνο, ανήκουν στην κλάση P. Το σύνολο των αλγόριθµων απόφασης που επιλύονται σε πολυωνυµικό χρόνο από µη προσδιοριστικούς αλγόριθµους, ανήκουν στην κλάση ΝP. P NP Παραµένει αναπόδεικτη η εικασία. Αυτό δείχνει την άγνοια του ότι ενώ είναι γνωστά προβλήµατα της κλάσης NP δεν µπορεί να αποδειχθεί ότι δεν µπορεί να βρεθούν κάποιοι καλύτεροι αλγόριθµοι για αυτά τα προβλήµαταώστεναανήκουν στην κλάση P. NP-hard, NP-complete Σε συνέχεια της προηγούµενης άγνοιας ΝP-complete : ανήκουν στην κλάση NP KAI εάν έστω και ένα αποδειχθεί ότι ανήκει στην κλάση P τότε όλα επιλύονται σε πολυωνυµικό χρόνο. Ένα πρόβληµα L θεωρείται ότι ανήκει στην κλάση NP-hard εάν η ικανοποίηση του προβλήµατος περιορίζει το L (ικανοποίηση L) Σχέσεις P, NP, NP-hard, NP- complete
Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ Αλγόριθµοι (Brute-Force, Αναδροµικοί, ιαίρει και Βασίλευε, υναµικός Προγ/µός µός, Άπληστοι, Ευρεστικοί, ) Κλάσεις Πολυπλοκότητας Ηλίας Κ. Σάββας Επίκουρος Καθηγητής Τμήμα: Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Email: savvas@teilar teilar.gr 0-006006 Σάββας Ηλίας 3