Εισαγωγή στους Αλγόριθµους Αλγόριθµοι Τι είναι αλγόριθµος; Τι µπορεί να υπολογίσει ένας αλγόριθµος; Πως αξιολογείται ένας αλγόριθµος; Παύλος Εφραιµίδης pefraimi@ee.duth.gr Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 1 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 2 Τι είναι Αλγόριθµος Ένας µη αυστηρός ορισµός: Αλγόριθµος είναι ένας συνδυασµός ενεργειών, που λύνει κάθε στιγµιότυπο ενός δοσµένου προβλήµατος και µπορεί να προγραµµατιστεί σε κάποια υπολογιστική µηχανή Ο αλγόριθµος είναι ανεξάρτητος από τη γλώσσα προγραµµατισµού στην οποία τον περιγράφουµε ή τον υλοποιούµε Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 3 Ιστορικά Στοιχεία Η λέξη αλγόριθµος αποδίδεται στο όνοµα του Πέρση Αλ Χοαρίζµι, που έγραψε ένα βιβλίο µαθηµατικών ( Al Jabr ) γύρω στο 825 π.χ. Το όνοµα Αλ Χοαρίζµι σηµαίνει από το Χοαραζάµ (σηµερινή Κίβα του Ουζµπεκιστάν) Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 4 Ο πρώτος Αλγόριθµος Ο πρώτος αλγόριθµος αποδίδεται στον Ευκλείδη και αφορά την εύρεση του µέγιστου κοινού διαιρέτη Υπάρχει και το κινέζικο θεώρηµα υπολοίπου που από τον Κινέζο µαθηµατικό Sun-Chu: Ποιοι είναι οι ακέραιοι αριθµοί x που δίνουν υπόλοιπο 2, 3, 2 όταν διαιρεθούν µε 3, 5, 7 αντίστοιχα. Και τα δύο θεωρήµατα ανήκουν στη θεωρία αριθµών και βρίσκουν εφαρµογή στη σύγχρονη κρυπτογραφία δηµοσίου κλειδιού Παραδείγµατα Αλγορίθµων Εύρεση του µέγιστου αριθµού Ακολουθιακός Αλγόριθµος Παράλληλος Αλγόριθµος Ταξινόµηση Αριθµών Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 5 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 6 1
Εύρεση Μέγιστου Αριθµού Είσοδος: Πίνακας Α µε θετικούς ακέραιους αριθµούς Έξοδος: Ο µέγιστος ακέραιος στον πίνακα Α 1. int max = -1; 2. for (int i = 0; i < A.length; i++ ) 3. { 4. if (max < A[i]) 5. { 6. max = A[i]; 7. } 8. } 9. return max; Απόδειξη Ορθότητας Συνήθως, τµήµατα που έχουν επαναληπτικότητα ή αναδροµικότητα αποδεικνύονται µέσω ισχυράς επαγωγής Αµετάβλητη βρόχου (loop invariant) για την σάρωση ενός πίνακα ακεραίων και εύρεση του µέγιστου στοιχείου: Πριν την i-στή επανάληψη, η µεταβλητή max περιέχει τον µέγιστο των i πρώτων στοιχείων Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 7 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 8 Μοντέλα Υπολογισµού Μηχανή Turing RAM (Random Access Machine) PRAM (Parallel Random Access machine) Μηχανή Turing Μηχανή Turing Μ=(S,Σ,δ,s 0,H) Σύνολο Πεπερασµένων καταστάσεων Ηµιάπειρη ταινία εγγραφής δεδοµένων Κεφαλή αναγνώσεως/εγγραφής h 1 s 0 h 2 q 1 q 3 q 2 a b c a a a Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 9 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 10 s 1 s 0 s 1 s 0 s N s Y s N s Y Τι ισχύει Θέση Church-Turing Μία µηχανή Turing που τερµατίζει σε όλα τις εισόδους αποτελεί ο τυπικός ορισµός της έννοιας «Αλγόριθµος» Θεώρηµα Ισοδυναµίας RAM-Μηχανής Turing Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 11 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 12 2
Random Access Machine RAM Απλό σειριακό επεξεργαστή Μνήµη άµεσης προσπέλασης Καταχωρητές Βασικές πράξεις (αριθµητικές, διακλαδώσεως, συγκρίσεις) Λογαριθµικού ή Μοναδιαίου κόστους Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 13 Πολυπλοκότητα Αλγορίθµου Πολυπλοκότητα Χρόνου: Καθορίζεται κυρίως από το πλήθος των υπολογιστικών πράξεων Πολυπλοκότητα Χώρου: Οι απαιτήσεις σε µνήµη χώρο αποθήκευσης Για παράλληλους αλγορίθµους: Το πλήθος των επεξεργαστών που απαιτεί ο αλγόριθµος Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 14 Εκτίµηση Πολυπλοκότητας Χρόνου Εύρεση Μέγιστου Αριθµού Απόδοση χρόνου σε κάθε πράξη Μέτρηση των κυριάρχων πράξεων Ασυµπτωτικές εκτιµήσεις Εύρεση χρόνου µέσω αναδροµικών σχέσεων Πολυπλοκότητα Χρόνου του αλγορίθµου: Την εκφράζουµε σε σχέση µε το µέγεθος του προβλήµατος Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 15 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 16 Πρόβληµα και Στιγµιότυπο Προβλήµατος Εύρεση του µέγιστου αριθµού από ένα σύνολο αριθµών: Το πρόβληµα είναι η εύρεση του µέγιστου αριθµού από ένα σύνολο αριθµών Η εύρεση του µέγιστου από το σύνολο {8, 15} και από το σύνολο {0, 7, 2, 1} είναι δύο στιγµιότυπα του προβλήµατος Μέγεθος Προβλήµατος (1) Πολυπλοκότητα και Μέγεθος: Η πολυπλοκότητα ενός αλγορίθµου εκφράζεται κατά κανόνα σε σχέση µε το µέγεθος του προβλήµατος Παράδειγµα: Η αλγόριθµος ταξινόµησης QuickSort απαιτεί O(Ν log(ν) ) βήµατα για την ταξινόµηση N αριθµών Μέγεθος του προβλήµατος: Στο παραπάνω παράδειγµα θεωρούµε ότι για κάθε στιγµιότυπο του προβλήµατος της ταξινόµησης αριθµών το µέγεθος του προβλήµατος είναι το πλήθος των αριθµών Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 17 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 18 3
Μέγεθος Προβλήµατος (2) Ανάλογα µε το Πρόβληµα: Η έννοια του µεγέθους προβλήµατος µπορεί να διαφέρει ή να προσαρµόζεται ανάλογα µε το πρόβληµα Πρόβληµα συντοµότερης διαδροµής: ίνονται Ν κόµβοι και οι αποστάσεις ανα δύο µεταξύ τους. Για συγκεκριµένους κόµβους s και t ζητείται να βρεθεί η συντοµότερη διαδροµή µεταξύ τους. Ποιο είναι το µέγεθος του προβλήµατος; Ο αριθµός των κόµβων Ν; Το πλήθος των ακµών διαδροµών µεταξύ όλων των ζευγών κόµβων N(N-1)/2 ; Μέγεθος Προβλήµατος (3) Σε προβλήµατα όπου εµφανίζονται πολύ µεγάλοι αριθµοί µπορούµε να χρησιµοποιήσουµε το πλήθος των δυαδικών ψηφίων όλων των αριθµών ως µέγεθος του προβλήµατος. Όταν µελετούµε την πολυπλοκότητα ενός προβλήµατος οφείλουµε να αποσαφηνίζουµε τι θεωρούµε ως µέγεθος του προβλήµατος Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 19 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 20 Ρυθµός Ανάπτυξης Ασυµπτωτικές Εκτιµήσεις Ρυθµός Ανάπτυξης: Κατά την ανάλυση της πολυπλοκότητας ενός αλγορίθµου πολλές φορές δεν µπορούµε να βρούµε την ακριβή πολυπλοκότητα, ή δεν µας ενδιαφέρει η ακριβής πολυπλοκότητα, και απλά µελετούµε το ρυθµό ανάπτυξης των συναρτήσεων που εκφράζουν την πολυπλοκότητα Ασυµπτωτική Εκτίµηση: Χρησιµοποιούµε ασυµπτωτικές εκτιµήσεις για να περιγράψουµε την πολυπλοκότητα του αλγορίθµου Βασικοί Συµβολισµοί και Ορισµοί: Ο(Ν): ασυµπτοτικό άνω όριο Ω(Ν): ασυµπτωτικό κάτω όριο Θ(Ν): ασυµπτωτικό άνω και κάτω ή σφικτό (tight) όριο ο(ν): ασυµπτωτικό άνω όριο που δεν είναι tight ω(ν): ασυµπτωτικό κάτω όριο που δεν είναι tight Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 21 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 22 Ο(Ν) Ω(Ν) Ασυµπτωτικό Άνω Όριο Ασυµπτωτικό Κάτω Όριο Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 23 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 24 4
Θ(Ν) ο(ν) Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 25 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 26 ω(ν) Πίνακας Ασυµπτωτικών Εκτιµήσεων Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 27 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 28 Ανάλυση Πολυπλοκότητας Ανάλυση Χειρότερης Περίπτωσης (Worst Case) Ανάλυση Μέσης Περίπτωσης (Average Case Analysis) Επιµερισµένη ή Κατανεµηµένη Ανάλυση (Amortized Case Analysis) Πολυπλοκότητα Χειρότερης Περίπτωσης Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 29 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 30 5
Πολυπλοκότητα Μέσης Περίπτωσης Πολυπλοκότητα Επιµερισµένης Περίπτωσης Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 31 Αλγόριθµοι Εισαγωγικές Έννοιες Αλγορίθµων 32 6