Παύλος Εφραιμίδης 1
περιεχόμενα αλγόριθμοι τεχνολογία αλγορίθμων 2
αλγόριθμοι αλγόριθμος: οποιαδήποτε καλά ορισμένη υπολογιστική διαδικασία που δέχεται κάποια τιμή ή κάποιο σύνολο τιμών, και δίνεικάποιατιμήήκάποιοσύνολοτιμώνως έξοδο αλγόριθμος: μια ακολουθία υπολογιστικών βημάτων που μετασχηματίζει την είσοδο στην έξοδο 3
υπολογιστικό πρόβλημα ένας αλγόριθμος μπορεί να θεωρηθεί ως ένα εργαλείο για την επίλυση ενός καλά καθορισμένου υπολογιστικού προβλήματος παράδειγμα ενός υπολογιστικού προβλήματος: ταξινόμηση μιας ακολουθίας αριθμών 4
ταξινόμηση είσοδος: μια ακολουθία n αριθμών α 1,α 2,..,α n έξοδος: μια μετάθεση (αναδιάταξη) α 1,α 2,..,α n τέτοια ώστε α 1 α 2.. α n 5
παράδειγμα ταξινόμησης είσοδος: 31, 41, 59, 26, 41, 58 έξοδος: 26, 31, 41, 41, 58, 59 Η ταξινόμηση της ακολουθίας 31, 41, 59, 26, 41, 58 είναι ένα στιγμιότυπο του προβλήματος της ταξινόμησης 6
πρόβλημα και στιγμιότυπο προβλήματος ταξινόμηση ακολουθίας αριθμών: το πρόβλημα η ταξινόμηση της ακολουθίας 31, 41, 59, 26, 41, 58 είναι ένα στιγμιότυπο του προβλήματος της ταξινόμησης 7
ορθότητα αλγορίθμου ένας αλγόριθμος χαρακτηρίζεται ορθός εάν για κάθε στιγμιότυπο εισόδου τερματίζει δίνοντας την ορθή έξοδο ένας μη ορθός αλγόριθμος μπορεί να μην τερματίζει καν σε ορισμένα στιγμιότυπα εισόδου ακόμη και ένας μη ορθός αλγόριθμος ενδέχεται μερικές φορές να είναι χρήσιμος πχ. αν το ποσοστό σφαλμάτων του μπορεί να συγκρατηθεί μέσα σε ορισμένα πλαίσια 8
προβλήματα που επιλύονται με αλγορίθμους 9
αλγοριθμικά προβλήματα Παραδείγματα: πρόγραμμα ανθρώπινου γονιδιώματος: απαιτεί περίτεχνους αλγορίθμους για πλήθος προβλημάτων διαδίκτυο: η διαχείριση του τεράστιου όγκου δεδομένων που μας παρέχει απαιτεί έξυπνους αλγορίθμους ηλεκτρονικό εμπόριο βιομηχανική παραγωγή και άλλες εμπορικές δραστηριότητες 10
προβλήματα που εξετάζονται στο βιβλίο περιοδεύων πωλητής βέλτιστη ακολουθία πολλαπλασιασμού πινάκων επίλυση εξισώσεων υπολοιπικής αριθμητικής (θεωρία αριθμών) εύρεση κυρτού καλύμματος για n σημεία στο επίπεδο 11
χαρακτηριστικά ορισμένων αλγορίθμων υπάρχουν πολλές υποψήφιες λύσεις, οι περισσότερες από τις οποίες δεν ανταποκρίνονται στις απαιτήσεις μας υπάρχουν πρακτικές εφαρμογές 12
δομές δεδομένων δομή δεδομένων: ένας τρόπος αποθήκευσης και οργάνωσης των δεδομένων ο οποίος διευκολύνει την προσπέλαση και την τροποποίησή τους υπάρχουν πολλές διαφορετικές δομές δεδομένων η καθεμία με τα ιδιαίτερα χαρακτηριστικά της 13
τεχνικές η σχεδίαση και η ανάλυση ενός αλγορίθμου απαιτεί ευρηματικότητα, εμπειρία κτλ υπάρχουν αρκετές τεχνικές σχεδίασης και ανάλυσης αλγορίθμων που μπορούν να αξιοποιηθούν 14
δραστικοί αλγόριθμοι (efficient algorithms) θα ασχοληθούμε με δραστικούς αλγορίθμους το συνηθέστερο μέτρο της δραστικότητας ενός αλγορίθμου είναι η ταχύτητά του, δηλαδή πόσο χρόνο απαιτεί για να παραγάγει την έξοδό του υπάρχουν υπολογιστικά προβλήματα για τα οποία δε γνωρίζουμε κανέναν δραστικό αλγόριθμο 15
δύσκολα προβλήματα (hard problems) ένα ενδιαφέρον υποσύνολο των δύσκολων προβλημάτων είναι τα NP-πλήρη (NP-Complete) προβλήματα Μέχρι σήμερα: δεν έχει βρεθεί κανένας δραστικός αλγόριθμος για κανένα NPπλήρες πρόβλημα δεν έχει αποδειχθεί ότι δεν μπορεί να υπάρξει δραστικός αλγόριθμος για NP-πλήρη προβλήματα (ανκαιηεκτίμησηείναιότιδενμπορείναυπάρξει) τα NP-πλήρη προβλήματα σχετίζονται με τέτοιο τρόπο ώστε: εάν υπάρξει δραστικός αλγόριθμος για οποιοδήποτε από τα NPπλήρη προβλήματα, τότε θα προκύψουν δραστήριοι αλγόριθμοι για όλα τα NP-πλήρη προβλήματα 16
οι αλγόριθμοι ως τεχνολογία 17
υπολογιστικοί πόροι εάν υπήρχαν υπολογιστές με άπειρη ταχύτητα δωρεάν (άπειρη) μνήμη ο μόνος λόγος για την μελέτη αλγορίθμων θα ήταν η ορθότητα αλγορίθμων στην πράξη οι υπολογιστικοί πόροι είναι πεπερασμένοι και ανεπαρκείς για πολλές πρακτικές εφαρμογές επομένως προσπαθούμε να εφαρμόσουμε τις καλύτερες αλγοριθμικές λύσεις 18
δραστικότητα για δεδομένο υπολογιστικό πρόβλημα είναι δυνατό να υπάρχουν περισσότεροι του ενός αλγόριθμοι παράδειγμα: για την ταξινόμηση υπάρχουν αρκετοί αλγόριθμοι όπως η ενθετική ταξινόμηση, η ταξινόμηση φυσαλίδων, και η συγχωνευτική ταξινόμηση 19
σύγκριση δύο αλγόριθμοι: ενθετική ταξινόμηση: c 1 n 2 συγχωνευτική ταξινόμηση: c 2 n log 2 n ισχύεί ότι συνήθως c1 < c2 Παρόλα αυτά η συγχωνευτικής ταξινόμηση υπερέχει έναντι της ενθετικής ταξινόμησης 20
ταξινόμηση 1000000 αριθμών Έστω υπολογιστής Α που εκτελεί 1 δις εντολές το δευτερόλεπτο Α με ενθετική ταξινόμηση: περίπου 2000 δευτερόλεπτα Α με συγχωνευτική ταξινόμηση: περίπου 100 δευτερόλεπτα 21
οι αλγόριθμοι ως τεχνολογία οι αλγόριθμοι είναι ένα είδος τεχνολογίας όπως πχ. το υλισμικό (hardware) του υπολογιστή 22
αλγόριθμοι και άλλες τεχνολογίες είναι οι αλγόριθμοι σημαντικοί όσο άλλες τεχνολογίες; πχ. υλισμικό υψηλών επιδόσεων γραφικές διεπαφές (GUI graphical user interfaces) αντικειμενοστρεφή συστήματα τοπικά δίκτυα και δίκτυα ευρείας περιοχής ηαπάντησηείναιναι(αν δεν παινέψεις το σπίτι σου...) 23
σημασία των αλγορίθμων σε πολλές εφαρμογές οι αλγόριθμοι αποτελούν εμφανή σημαντική συνιστώσα των υπολογιστικών συστημάτων ακόμη όμως και σε εφαρμογές που δεν έχουν ιδιαίτερες αλγοριθμικές απαιτήσεις, οι αλγόριθμοι ως τεχνολογία είναι πάλι παρόντες: η σχεδίαση υλισμικού υψηλών επιδόσεων απαιτεί τη χρήση αλγορίθμων ησχεδίασηκαιηλειτουργίαγραφικώνδιεπαφώναπαιτεί αλγορίθμους η δικτυακή τεχνολογία χρησιμοποιεί αλγορίθμους για την επίλυση δικτυακών προβλημάτων δρομολόγησης, συμφόρησης κτλ. ο προγραμματισμός απαιτεί από τους μεταγλωττιστές (compilers) τη χρήση αλγορίθμων για την παραγωγή αποδοτικού κώδικα... 24
Αναφορές/Πηγές Εισαγωγή στους αλγόριθμους, Κεφάλαιο 1 25