Εισαγωγή στους Αλγόριθμους Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr 1
Περιεχόμενα Μαθήματος Εισαγωγή στου Αλγόριθμους Πολυπλοκότητα Αλγορίθμων Ασυμπτωτική Ανάλυση Θεωρία Γράφων Κλάσεις Πολυπλοκότητας Προβλήματα NP-Complete Προβλήματα μεταξύ P και NP (;) 2
Random Access Machine RAM Απλό σειριακό επεξεργαστή Μνήμη άμεσης προσπέλασης Καταχωρητές Βασικές πράξεις (αριθμητικές, διακλαδώσεως, συγκρίσεις) Λογαριθμικού ή Μοναδιαίου κόστους 3
Πολυπλοκότητα Αλγορίθμου Πολυπλοκότητα Χρόνου: Καθορίζεται κυρίως από το πλήθος των υπολογιστικών πράξεων Πολυπλοκότητα Χώρου: Οι απαιτήσεις σε μνήμη χώρο αποθήκευσης Για παράλληλους αλγορίθμους: Το πλήθος των επεξεργαστών που απαιτεί ο αλγόριθμος 4
Εκτίμηση Πολυπλοκότητας Χρόνου Απόδοση χρόνου σε κάθε πράξη Μέτρηση των κυριάρχων πράξεων Ασυμπτωτικές εκτιμήσεις Εύρεση χρόνου μέσω αναδρομικών σχέσεων 5
Εύρεση Μέγιστου Αριθμού Ποια είναι η πολυπλοκότητα χρόνου ενός (συγκεκριμένου) αλγορίθμου για την εύρεση του μέγιστου αριθμού; Την εκφράζουμε σε σχέση με το μέγεθος του προβλήματος 6
Πρόβλημα και Στιγμιότυπο Προβλήματος Εύρεση του μέγιστου αριθμού από ένα σύνολο αριθμών: Το πρόβλημα είναι η εύρεση του μέγιστου αριθμού από ένα σύνολο αριθμών Η εύρεση του μέγιστου από το σύνολο {8, 15} και από το σύνολο {0, 7, 2, 1} είναι δύο στιγμιότυπα του προβλήματος 7
Μέγεθος Προβλήματος (1) Πολυπλοκότητα και Μέγεθος: Η πολυπλοκότητα ενός αλγορίθμου εκφράζεται κατά κανόνα σε σχέση με το μέγεθος του προβλήματος Παράδειγμα: Η αλγόριθμος ταξινόμησης QuickSort απαιτεί O(Ν log(ν) ) βήματα για την ταξινόμηση N αριθμών Μέγεθος του προβλήματος: Στο παραπάνω παράδειγμα θεωρούμε ότι για κάθε στιγμιότυπο του προβλήματος της ταξινόμησης αριθμών το μέγεθος του προβλήματος είναι το πλήθος των αριθμών 8
Μέγεθος Προβλήματος (2) ΑνάλογαμετοΠρόβλημα: Ηέννοιατου μεγέθους προβλήματος μπορεί να διαφέρει ή να προσαρμόζεται ανάλογα με το πρόβλημα Πρόβλημα συντομότερης διαδρομής: Δίνονται Ν κόμβοι και οι αποστάσεις ανα δύο μεταξύ τους. Για συγκεκριμένους κόμβους s και t ζητείται να βρεθεί η συντομότερη διαδρομή μεταξύ τους. Ποιο είναι το μέγεθος του προβλήματος; Ο αριθμός των κόμβων Ν; Το πλήθος των ακμών διαδρομών μεταξύ όλων των ζευγών κόμβων N(N-1)/2 ; 9
Μέγεθος Προβλήματος (3) Σε προβλήματα όπου εμφανίζονται πολύ μεγάλοι αριθμοί μπορούμε να χρησιμοποιήσουμε το πλήθος των δυαδικών ψηφίων όλων των αριθμών ως μέγεθος του προβλήματος. Όταν μελετούμε την πολυπλοκότητα ενός προβλήματος οφείλουμε να αποσαφηνίζουμε τι θεωρούμε ως μέγεθος του προβλήματος 10
Ρυθμός Ανάπτυξης Ρυθμός Ανάπτυξης: Κατά την ανάλυση της πολυπλοκότητας ενός αλγορίθμου πολλές φορές δεν μπορούμε να βρούμε την ακριβή πολυπλοκότητα, ή δεν μας ενδιαφέρει η ακριβής πολυπλοκότητα, και απλά μελετούμε το ρυθμό ανάπτυξης των συναρτήσεων που εκφράζουν την πολυπλοκότητα Ασυμπτωτική Εκτίμηση: Χρησιμοποιούμε ασυμπτωτικές εκτιμήσεις για να περιγράψουμε την πολυπλοκότητα του αλγορίθμου 11
Ασυμπτωτικές Εκτιμήσεις (1) Βασικοί Συμβολισμοί και Ορισμοί: Θ( ):ασυμπτωτικό άνω και κάτω ή σφικτό (tight) όριο Ο( ):ασυμπτοτικό άνω όριο Ω( ):ασυμπτωτικό κάτω όριο ο( ):ασυμπτωτικό άνω όριο που δεν είναι tight ω( ):ασυμπτωτικό κάτω όριο που δεν είναι tight 12
Ασυμπτωτικές Εκτιμήσεις (2) Έστω f(n) και g(n) αριθμητικές συναρτήσεις από τους φυσικούς αριθμούς στους θετικούς πραγματικούς αριθμούς f : N R + g: N R + 13
Θ() Ισχύει g(n) = Θ( f(n) ) όταν υπάρχουν σταθερές c, c και n 0 τέτοιες ώστε: Για κάθε n > n 0, c f(n) g(n) c f(n) c f g c f 14
Ο() Ισχύει g(n) = O( f(n) ) όταν υπάρχουν σταθερές c και n 0 τέτοιες ώστε: Για κάθε n > n 0, g(n) c f(n) c f g 15
Ω( ) Ισχύει g(n) = Ω( f(n) ) όταν υπάρχουν σταθερές c και n 0 τέτοιες ώστε: Για κάθε n > n 0, g(n) c f(n) g c f 16
ο( ), ω( ) Ισχύει g(n) = ο( f(n) ) όταν για κάθε θετική σταθερά c υπάρχει σταθερά n 0 τέτοια ώστε: Για κάθε n > n 0, g(n) < c f(n) Διαφορετικός ορισμός: gn ( ) lim = 0 n f( n) Ισχύει g(n) = ω( f(n) ) όταν για κάθε θετική σταθερά c υπάρχει σταθερά n 0 τέτοια ώστε: Για κάθε n > n 0, g(n) > c f(n) Διαφορετικός ορισμός: f( n) lim = 0 n gn ( ) 17
Συνήθεις Συναρτήσεις Πολυπλοκότητας Συνάρτηση c log (N) log 2 (N) Ν Ν log (N) N 2 N 3 Ν κ, κ σταθερά 2 N Όνομα - Παρατήρηση Σταθερά Λογαριθμική log (N) log (N) Γραμμική Τετράγωνο Κύβος Πολυωνυμική Εκθετική 18
Ανάλυση Πολυπλοκότητας Ανάλυση Χειρότερης Περίπτωσης (Worst Case) Ανάλυση Μέσης Περίπτωσης (Average Case Analysis) ΕπιμερισμένηήΚατανεμημένηΑνάλυση (Amortized Case Analysis) 19
Αναφορές-Πηγές Βιβλίο του μαθήματος: Κεφάλαιο 1 Introduction to Algorithms, Κεφάλαια 1 και 3 20