Το έργο υλοποιείται στο πλαίσιο του υποέργου 2 με τίτλο «Ανάπτυξη έντυπου εκπαιδευτικού υλικού για τα νέα Προγράμματα Σπουδών» της Πράξης «Ελληνικό Ανοικτό Πανεπιστήμιο» η οποία έχει ενταχθεί στο Επιχειρησιακό Πρόγραμμα «Εκπαίδευση και Διά Βίου Μάθηση» (ΕΠΕΔΒΜ) του ΕΣΠΑ (2007-2013), Άξονας Προτεραιότητας 7: «Ενίσχυση της Διά Βίου Εκπαίδευσης Ενηλίκων στις 8 Περιφέρειες Σύγκλισης» με κωδικό MIS 296121 και η οποία συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο - ΕΚΤ) και από εθνικούς πόρους, μέσω του Προγράμματος Δημοσίων Επενδύσεων (ΠΔΕ) του Υ.ΠΑΙ.Θ. Αλγόριθμοι και Πολυπλοκότητα Σημείωση Το ΕΑΠ είναι υπεύθυνο για την επιμέλεια έκδοσης και την ανάπτυξη των κειμένων σύμφωνα με τη Μεθοδολογία της εξ Αποστάσεως Εκπαίδευσης. Για την επιστημονική αρτιότητα και πληρότητα των συγγραμμάτων την αποκλειστική ευθύνη φέρουν οι συγγραφείς, κριτικοί αναγνώστες και ακαδη μα ϊ κοί υπεύθυνοι που ανέλαβαν το έργο αυτό.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστημών και Τεχνολογίας Πρόγραμμα Σπουδών ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΞΕΙΔΙΚΕΥΣΗ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Θεματική Ενότητα ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ Τόμος A Αλγόριθμοι και Πολυπλοκότητα Συγγραφή ΣΠΥΡΙΔΩΝ ΣΙΟΥΤΑΣ Αναπληρωτής Καθηγητής Ιονίου Πανεπιστημίου Κριτική Ανάγνωση ΗΛΙΑΣ ΣΤΑΥΡΟΠΟΥΛΟΣ Διδάκτωρ Πανεπιστημίου Πατρών Ακαδημαϊκός Υπεύθυνος για την ανάπτυξη του έντυπου διδακτικού υλικού του Π.Σ. ΒΑΣΙΛΕΙΟΣ ΒΕΡΥΚΙΟΣ Αναπληρωτής Καθηγητής Ελληνικού Ανοικτού Πανεπιστημίου Συντονιστής για την ανάπτυξη του έντυπου διδακτικού υλικού της Θ.Ε. ΜΙΧΑΗΛ ΒΑΣΙΛΑΚΟΠΟΥΛΟΣ Αναπληρωτής Καθηγητής Πανεπιστημίου Θεσσαλίας Ειδικός στη Μεθοδολογία της Ανοικτής και εξ Αποστάσεως Εκπαίδευσης ΑΔΑΜΑΝΤΙΑ ΣΠΑΝΑΚΑ Γλωσσική Επιμέλεια ΒΑΣΙΛΙΚΗ ΜΠΟΥΡΔΑΡΑ Τεχνική Επιμέλεια Καλλιτεχνική Επιμέλεια Σελιδοποίηση opusmagnum ISBN: 978-960-538-979-6 Κωδικός Έκδοσης: ΠΛΣ 50/A Copyright 2015 για την Ελλάδα και όλο τον κόσμο ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πάροδος Αριστοτέλους 18, 26335 Περιβόλα Πατρών Τηλ.: 2610 367300, Φαξ: 2610 367650 To παρόν έργο πνευματικής ιδιοκτησίας προστατεύεται κατά τις διατάξεις του Ελληνικού Νόμου (Ν. 2121/1993 όπως έχει τροποποιηθεί και ισχύει σήμερα) και τις διεθνείς συμβάσεις περί πνευματικής ιδιοκτησίας. Απαγορεύεται απολύτως η άνευ γραπτής αδείας του εκδότη, κατά οποιονδήποτε τρόπο ή μέσο, αντιγραφή, φωτοανατύπωση και εν γένει αναπαραγωγή, εκμίσθωση ή δανεισμός, μετάφραση, διασκευή, αναμετάδοση στο κοινό σε οποιαδήποτε μορφή (ηλεκτρονική, μηχανική κ.λπ.) και η εν γένει εκμετάλλευση του συνόλου ή μέρους του έργου.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστημών και Τεχνολογίας Πρόγραμμα Σπουδών ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΞΕΙΔΙΚΕΥΣΗ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Θεματική Ενότητα ΒΑΣΙΚΕΣ ΕΞΕΙΔΙΚΕΥΣΕΙΣ ΣΕ ΘΕΩΡΙΑ ΚΑΙ ΛΟΓΙΣΜΙΚΟ Τόμος A Αλγόριθμοι και Πολυπλοκότητα ΣΠΥΡΙΔΩΝ ΣΙΟΥΤΑΣ Αναπληρωτής Καθηγητής Ιονίου Πανεπιστημίου ΠΑΤΡΑ 2015
Βιογραφικό Ο Σπυρίδων Σιούτας γεννήθηκε στα Τρίκαλα Θεσσαλίας το 1975. Αποφοίτησε από το τμήμα Μηχανικών Η/Υ και Πληροφορικής της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών το Δεκέμβριο του 1997. Έλαβε μεταπτυχιακό δίπλωμα ειδίκευσης (MPhil) και διδακτορικό (PhD) από το ίδιο τμήμα τα έτη 2000 και 2002 αντίστοιχα. Είναι Αναπληρωτής Καθηγητής στο τμήμα Πληροφορικής του Ιονίου Πανεπιστημίου. Τα ερευνητικά του ενδιαφέροντα εστιάζονται σε αλγορίθμους διαχείρισης μεγάλου όγκου δεδομένων τόσο σε κεντρικοποιημένες (centralized) όσο και σε μη κεντρικοποιημένες (decentralized) ή κατανεμημένες (distributed) βάσεις δεδομένων. Έχει δημοσιεύσει περισσότερα από 100 άρθρα σε έγκριτα διεθνή επιστημονικά συνέδρια και περιοδικά και έχει λάβει πάνω από 600 ετεροαναφορές.
Περιεχόμενα Πρόλογος... 15 ΚΕΦΑΛΑΙΟ 1 Εισαγωγή Εισαγωγικές Παρατηρήσεις...17 1.1 Ο αλγόριθμος ως πρώτη ύλη...19 1.2 Μια πρώτη γεύση αλγορίθμου...22 1.3 Ανάλυση αλγορίθμων. Γιατί;...25 1.4 Κοστολόγηση πράξεων και εντολών...27 1.5 Επιλογή του βαρομέτρου...34 1.6 Είδη ανάλυσης αλγορίθμων...38 Σύνοψη...42 Λίστα Ελέγχου Γνώσεων...43 Ευρετήριο Όρων...44 Γλωσσάρι...45 Βιβλιογραφία...47 Οδηγός για Περαιτέρω Μελέτη...49 Απαντήσεις σε Ασκήσεις Αυτοαξιολόγησης...50 Απαντήσεις Δραστηριοτήτων...62 Κατάλογος πινάκων...64 ΚΕΦΑΛΑΙΟ 2 Ανάλυση αλγορίθμων Εισαγωγικές Παρατηρήσεις...65
8 ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ 2.1 Συμβολισμοί πολυπλοκότητας...67 2.2 Χρήση συμβολισμών στην ανάλυση...73 2.3 Κατηγοριοποίηση αλγορίθμων...76 2.4 Αναδρομικές εξισώσεις Ορισμός...82 2.4.1 Η μέθοδος της αντικατάστασης...84 2.4.2 Η μέθοδος της επανάληψης...85 2.4.3 Ομογενείς γραμμικές αναδρομικές εξισώσεις...87 2.4.4 Μη ομογενείς γραμμικές αναδρομικές εξισώσεις...89 2.4.5 Αλλαγή μεταβλητής...91 2.4.6 Δένδρο αναδρομής...94 2.4.7 Το κεντρικό θεώρημα...95 Σύνοψη...98 Λίστα Ελέγχου Γνώσεων...99 Ευρετήριο Όρων...100 Γλωσσάρι...102 Βιβλιογραφία...104 Οδηγός για Περαιτέρω Μελέτη...106 Απαντήσεις σε Ασκήσεις Αυτοαξιολόγησης...107 Απαντήσεις Δραστηριοτήτων...112 Κατάλογος εικόνων...114 Κατάλογος πινάκων...114 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι αναζήτησης Εισαγωγικές Παρατηρήσεις...115 3.1 Σειριακή αναζήτηση...117
ΠΕΡΙΕΧΟΜΕΝΑ 9 3.2 Δυαδική αναζήτηση...119 3.3 Αναζήτηση παρεμβολής...122 3.4 Δυαδική αναζήτηση παρεμβολής...125 Σύνοψη...130 Λίστα Ελέγχου Γνώσεων...131 Ευρετήριο Όρων...132 Γλωσσάρι...133 Βιβλιογραφία...134 Οδηγός για Περαιτέρω Μελέτη...135 Απαντήσεις σε Ασκήσεις Αυτοαξιολόγησης...136 Απαντήσεις Δραστηριοτήτων...138 Κατάλογος εικόνων...140 ΚΕΦΑΛΑΙΟ 4 Αλγόριθμοι ταξινόμησης Εισαγωγικές Παρατηρήσεις...141 4.1 Ταξινόμηση με εισαγωγή...144 4.2 Ταξινόμηση με επιλογή...146 4.3 Γρήγορη ταξινόμηση...150 4.4 Όρια αλγορίθμων ταξινόμησης...157 4.5 Στατιστικά διάταξης...161 4.6 Ταξινόμηση με συγχώνευση...167 4.7 Ταξινόμηση του Shell...172 4.8 Ταξινόμηση με μέτρημα...176 4.9 Ταξινόμηση με βάση τη ρίζα...179 4.10 Ταξινόμηση με κάδους...181
10 ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Σύνοψη...185 Λίστα Ελέγχου Γνώσεων...185 Ευρετήριο Όρων...186 Γλωσσάρι...187 Βιβλιογραφία...189 Οδηγός για Περαιτέρω Μελέτη...193 Απαντήσεις σε Aσκήσεις Aυτοαξιολόγησης...195 Απαντήσεις Δραστηριοτήτων...197 Κατάλογος εικόνων...199 Κατάλογος πινάκων...199 ΚΕΦΑΛΑΙΟ 5 Δομές Δεδομένων Εισαγωγικές Παρατηρήσεις...201 5.1 Μεταβλητές...203 5.2 Πίνακες...205 5.3 Δυναμικά σύνολα...207 5.4 Λίστες...209 5.5 Στοίβες...216 5.6 Ουρές...219 5.7 Δένδρα...222 Σύνοψη...228 Λίστα Ελέγχου Γνώσεων...228 Ευρετήριο Όρων...229 Γλωσσάρι...230 Βιβλιογραφία...231
ΠΕΡΙΕΧΟΜΕΝΑ 11 Οδηγός για Περαιτέρω Μελέτη...232 Απαντήσεις σε Aσκήσεις Aυτοαξιολόγησης...233 Απαντήσεις Δραστηριοτήτων...239 Κατάλογος εικόνων...250 Κατάλογος πινάκων...250 ΚΕΦΑΛΑΙΟ 6 Ουρές προτεραιότητας και αλγόριθμοι σωρών Εισαγωγικές Παρατηρήσεις...251 6.1 Σωρός μεγίστων...253 6.2 Ταξινόμηση με σωρό...260 6.3 Διπλός σωρός...266 6.4 Δυωνυμικοί σωροί...269 6.5 Σωροί Fibonacci...273 Σύνοψη...279 Λίστα Ελέγχου Γνώσεων...279 Ευρετήριο Όρων...280 Γλωσσάρι...281 Βιβλιογραφία...282 Οδηγός για Περαιτέρω Μελέτη...282 Απαντήσεις σε Aσκήσεις Aυτοαξιολόγησης...283 Απαντήσεις Δραστηριοτήτων...285 Κατάλογος εικόνων...287
12 ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΚΕΦΑΛΑΙΟ 7 Δυαδικά δένδρα Εισαγωγικές Παρατηρήσεις...289 7.1 Δυαδικά δένδρα...291 7.1.1 Τρόποι διάσχισης δυαδικού δένδρου...295 7.2 Δυαδικά δένδρα αναζήτησης...301 7.2.1 Πράξεις σε δυαδικά δένδρα αναζήτησης...302 Σύνοψη...311 Λίστα Ελέγχου Γνώσεων...311 Ευρετήριο Όρων...312 Γλωσσάρι...313 Βιβλιογραφία...315 Οδηγός για Περαιτέρω Μελέτη...315 Απαντήσεις σε Aσκήσεις Aυτοαξιολόγησης...316 Απαντήσεις Δραστηριοτήτων...319 Κατάλογος εικόνων...324 ΚΕΦΑΛΑΙΟ 8 Αλγόριθμοι γραφημάτων Εισαγωγικές Παρατηρήσεις...325 8.1 Αναζήτηση πρώτα κατά πλάτος...328 8.2 Αναζήτηση πρώτα κατά βάθος...333 8.3 Τοπολογική διάταξη...337 8.4 Ελάχιστα επικαλυπτικά δένδρα...339 8.4.1 Αλγόριθμος Kruskal...339
ΠΕΡΙΕΧΟΜΕΝΑ 13 8.4.2 Αλγόριθμος Prim...341 8.5 Συντομότερες διαδρομές μοναδικής πηγής...345 8.5.1 Αλγόριθμος Bellman-Ford...347 8.5.2 Αλγόριθμος Dijkstra...349 8.6 Συντομότερες διαδρομές από όλες τις κορυφές...353 8.6.1 Αλγόριθμος Floyd-Warshall...354 Σύνοψη...358 Λίστα Ελέγχου Γνώσεων...359 Ευρετήριο Όρων...360 Γλωσσάρι...361 Βιβλιογραφία...362 Οδηγός για Περαιτέρω Μελέτη...362 Απαντήσεις σε Aσκήσεις Aυτοαξιολόγησης...363 Απαντήσεις Δραστηριοτήτων...370 Κατάλογος εικόνων...372 ΚΕΦΑΛΑΙΟ 9 Κατακερματισμός Εισαγωγικές Παρατηρήσεις...373 9.1 Γραμμική ανίχνευση...376 9.2 Τετραγωνική ανίχνευση...382 9.3 Διπλός κατακερματισμός...387 9.4 Κατακερματισμός με αλυσίδες...392 Σύνοψη...396 Λίστα Ελέγχου Γνώσεων...397
14 ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Ευρετήριο Όρων...398 Γλωσσάρι...399 Βιβλιογραφία...400 Οδηγός για Περαιτέρω Μελέτη...401 Απαντήσεις σε Aσκήσεις Aυτοαξιολόγησης...402 Απαντήσεις Δραστηριοτήτων...412 Κατάλογος εικόνων...414 Κατάλογος πινάκων...414 ΚΕΦΑΛΑΙΟ 10 Δυναμικός προγραμματισμός Εισαγωγικές Παρατηρήσεις...415 10.1 Σακίδιο 0-1...418 10.2 Ελάχιστη απόσταση διαμόρφωσης...421 10.3 Πολλαπλασιασμός αλληλουχίας πινάκων...423 10.4 Μέγιστη κοινή υπακολουθία...430 Σύνοψη...434 Λίστα Ελέγχου Γνώσεων...434 Ευρετήριο Όρων...435 Γλωσσάρι...436 Βιβλιογραφία...437 Οδηγός για Περαιτέρω Μελέτη...437 Απαντήσεις σε Aσκήσεις Aυτοαξιολόγησης...438 Απαντήσεις Δραστηριοτήτων...440 Κατάλογος πινάκων...443