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