Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Υπολογιστική Πολυπλοκότητα (Computational Complexity)

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Υπολογιστική Πολυπλοκότητα (Computational Complexity)"— Μεταγράφημα παρουσίασης:

1 Υπολογιστική Πολυπλοκότητα (Computational Complexity)

2 Όσο ένας κλάδος της επιστήμης προσφέρει αφθονία προβλημάτων, είναι ζωντανός. Η απουσία προβλημάτων προμηνύει την εξαφάνιση ή την παύση της ανεξάρτητης ανάπτυξης. David Hilbert Η εκπαίδευση είναι αυτό που επιβιώνει όταν πια ξεχάσουμε αυτά που έχουμε διδαχθεί. Κάθε πρόβλημα που έλυσα έγινε ένας κανόνας ο οποίος χρησίμευσε στη συνέχεια για να λύσω άλλα προβλήματα. R.Descartes

3 Η τέχνη του μηχανικού χαρακτηρίζεται από το γεγονός ότι οι μηχανικοί δεν ικανοποιούνται με την επίτευξη μιας οποιασδήποτε λύσης. Οι μηχανικοί αναζητούν την καλύτερη λύση με τη χρήση καθορισμένων όρων, υπό γνωστούς περιορισμούς, και κάνοντας τους συμβιβασμούς που επιβάλλονται από το γεγονός ότι δουλεύουν στον πραγματικό κόσμο.

4 It is required of a professional in any field to know the limits of our present capabilities in that field. This is also the case in the IT profession. If we know what can and cannot be accomplished with computing machinery, we will not be as likely to waste scare resources of time, money and manpower on quixotic ventures. Among the most important constraints on our abilities are those imposed by problems related to tractability, commensurability and computability.

5 In computer science, a programming task is considered to be tractable if it can be accomplished in a reasonable period of time or with a reasonable supply of physical resources (usually space). Otherwise it is intractable. The study of tractability has a theoretical and a practical aspect, yielding theoretical and practical definitions of terms. The field of computer science known as Analysis of Algorithms has developed the Big-O notation for categorizing the time and space requirements of various programming tasks/problems.

6 Alan M.Turing, 1950 “I believe that in about fifty years' time it will be possible, to programme computers, with a storage capacity of about 109, to make them play the imitation game so well that an average interrogator will not have more than 70 per cent chance of making the right identification after five minutes of questioning. The original question, "Can machines think?" I believe to be too meaningless to deserve discussion. Nevertheless I believe that at the end of the century the use of words and general educated opinion will have altered so much that one will be able to speak of machines thinking without expecting to be contradicted.”

7 Τι μας Ενδιαφέρει σε ένα Πρόγραμμα
Είναι σωστό; Είναι εύκολο να κατανοήσουμε τον κώδικα; Είναι τεκμηριωμένο; Είναι εύκολο να γίνουν αλλαγές; Πόση μνήμη και πόσο χρόνο απαιτεί; Πόσο γενικός είναι ο κώδικας; Λύνει προβλήματα για μεγάλο εύρος εισόδων χωρίς τροποποιήσεις; Πόσο μεταφέρσιμος είναι ο κώδικας; Μπορεί να μεταγλωττιστεί σε άλλους υπολογιστές χωρίς αλλαγές;

8 Διακριτά Μαθηματικά (Discrete Mathematics)
Ορισμός : Ο κλάδος των μαθηματικών που είναι αφιερωμένος στη μελέτη διακριτών αντικειμένων καθώς και στις διακριτές δομές που χρησιμοποιούνται για την αναπαράστασή τους. Τα μαθηματικά που μελετούν φαινόμενα που δεν είναι συνεχή, αλλά συμβαίνουν σε μικρές, διακριτές περιοχές. Μερικές περιοχές περιλαμβάνουν τη θεωρία γραφημάτων (δίκτυα), τις τεχνικές απαρίθμησης, τη χρωματική θεωρία, τη θεωρία παιγνίων κλπ. Είναι τα μαθηματικά των υπολογιστών και διαχειρίζονται διακριτές περιοχές των πληροφοριών.

9 Αλγόριθμοι για τη δημιουργία λύσεων Βελτιστοποίηση
Διακριτά Μαθηματικά Ύπαρξη λύσεων Πλήθος λύσεων Αλγόριθμοι για τη δημιουργία λύσεων Βελτιστοποίηση 12. The nature of each of the problems associated with the applications of Discrete Mathematics revealed in this short presentation involve questions such as the following: Does this problem have a solution? How many solutions? Is there an algorithm which will provide solutions to this type of problem? Is there an optional solution?

10 “Contemporary uses of mathematics demand that students learn to deal with uncertainty, to make informed decisions based on evidence and expectations, to exercise critical judgment about conclusions drawn from data, and to apply mathematical models to real-world phenomena. The technological world in which we live also depends upon information and communication of information and upon applications of systems with separate (discrete) entities. Topics of discrete mathematics such as counting and permutation problems, matrix operations, vertex-edge networks, and relationships among finite sets have significant real-world applications that students will encounter in diverse fields of work and study.”

11 Topics in Discrete Mathematics
Logic and Proofs (intelligence, Artificial database, circuit, algorithms) Number Theory (Cryptography, coding theory, data structures) Counting (Probability, algorithms, data structures) Graph Theory (Networks, circuit design, data structures)

12 Problems solved using Discrete Math
How many secure passwords? How can I encrypt a message? Shortest paths between two cities using public transportation? How many steps required to sort 10,000 numbers? Is this algorithm correct? How to design a circuit that multiply two integers?

13 Importance of Discrete Mathematics
Information is stored and manipulated by computers in a discrete fashion Applications in many different areas Discrete mathematics is a gateway to more advanced courses Develops mathematical reasoning skills Emphasizes the new role of mathematics

14 Γενική επισκόπηση της Λογικής
Η λογική είναι η βάση όλων των μαθηματικών συλλογισμών. Είναι θεμελιώδης στην επιστήμη των υπολογιστών. Η λογική χρησιμοποιείται για να εκφράσει την ακριβή σημασία μιας μαθηματικής πρότασης ή ενός προγράμματος σε υπολογιστή Αποτελεί ωστόσο τη βάση της φιλοσοφίας και της νομικής επιστήμης

15 Προγράμματα = Αλγόριθμοι + Δομές Δεδομένων
ΠΡΟΒΛΗΜΑΤΑ Δεδομένα και αποτελέσματα μέσω επίλυσης ΑΛΓΟΡΙΘΜΟΙ Βήματα για την επίλυση προβλημάτων ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Οργάνωση δεδομένων Χρήση συναρτήσεων (functions) Προγράμματα = Αλγόριθμοι + Δομές Δεδομένων

16 Επιλέγοντας τον κατάλληλο αλγόριθμο
Όταν ένα πρόγραμμα, που κωδικοποιεί έναν αλγόριθμο, πρόκειται να χρησιμοποιηθεί μόνον μία φορά και με μικρό πλήθος δεδομένων προφανώς επιλέγεται ο αλγόριθμος που κωδικοποιείται ευκολότερα. Αν όμως το πρόγραμμα θα χρησιμοποιηθεί πολλές φορές και στη διάρκεια χρήσης του απαιτεί συντήρηση και υποστήριξη τότε άλλοι παράγοντες έχουν σημασία όπως η μεταφερσιμότητα, η ευκολία στην κατανόηση, η επεκτασιμότητα, η ευκολία χρήσης, η δυνατότητα επαναχρησιμοποίησης και η αποτελεσματικότητα (efficiency).

17 Ο σημαντικότερος παράγοντας είναι ο χρόνος
Η αποτελεσματικότητα ενός αλγορίθμου εξαρτάται από το βαθμό χρήσης των πόρων, όπως : ο χρόνος που απαιτείται για την εκτέλεσή του το ποσό μνήμης που χρησιμοποιεί το φόρτο που προκαλεί σε τυχόν δίκτυα υπολογιστών τη χωρητικότητα των εξωτερικών δίσκων που χρησιμοποιεί Ο σημαντικότερος παράγοντας είναι ο χρόνος Ένας μη αποτελεσματικός αλγόριθμος δεν μπορεί να καταστεί αποτελεσματικός αν βελτιωθεί, έστω και θεαματικά, η ταχύτητα του υπολογιστή που εκτελεί το αντίστοιχο πρόγραμμα.

18 Υπάρχουν δύο τρόποι σύγκρισης των χρόνων εκτέλεσης προγραμμάτων που υλοποιούν διαφορετικούς αλγορίθμους επίλυσης ενός προβλήματος : Benchmarking. Μέτρηση των χρόνων εκτέλεσης των προγραμμάτων με χρησιμοποίηση προκαθορισμένων δεδομένων συγκεκριμένου μεγέθους. Προβλήματα : περιορισμένα και πιθανόν μη αντιπροσωπευτικά σύνολα δεδομένων, χρόνοι που εξαρτώνται από το hardware, τη γλώσσα προγραμματισμού, δυσκολία στη μέτρηση των χρόνων κλπ. Ανάλυση. Συλλογισμοί που θα διαμορφώσουν μαθηματικούς τύπους που θα προβλέπουν τους χρόνους εκτέλεσης.

19 Αλγόριθμοι + Δομές Δεδομένων
Στόχοι των δομών δεδομένων και της σχεδίασης αλγορίθμων Στόχοι της υλοποίησης ορθότητα ανθεκτικότητα προσαρμοστικότητα αποτελεσματικότητα επαναχρησιμοποίηση

20 Αλγόριθμοι & Δομές Δεδομένων
Ένας καλός αλγόριθμος χρησιμοποιεί τις κατάλληλες «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ» έτσι ώστε να διαχειριστεί αποτελεσματικά τα δεδομένα εισόδου του προβλήματος. Τι είναι ΔΟΜΗ ΔΕΔΟΜΕΝΩΝ; ένας συστηματικός τρόπος οργάνωσης και διαχείρισης δεδομένων. Περιλαμβάνει την οργάνωση των δεδομένων και συναρτήσεις διαχείρισης των δεδομένων Ένας τύπος δεδομένων είναι ένα σύνολο τιμών και μια συλλογή λειτουργιών επί των τιμών αυτών.

21 Δομές Δεδομένων (Data Structures)
Με τον όρο ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ εννοούμε διάφορες διμελείς σχέσεις που ορίζονται πάνω σε σύνολα δεδομένων είτε αυτά είναι αρχικά είτε παράγονται κατά την εκτέλεση του αλγορίθμου. Η σημασία των δομών δεδομένων έγκειται στο γεγονός ότι η αποτελεσματικότητα με την οποία εκτελούνται οι διάφορες πράξεις σε σύνολα δεδομένων εξαρτάται ουσιωδώς από τον τρόπο με τον οποίο τα στοιχεία των συνόλων αυτών είναι οργανωμένα στη μνήμη του ΗΥ. Η επιλογή της κατάλληλης δομής δεδομένων και του κατάλληλου αλγόριθμου δημιουργούν τις συνθήκες ώστε ένα πρόγραμμα να εκτελείται σε μερικά δευτερόλεπτα αντί σε μερικές ημέρες.

22 Η επιλογή της κατάλληλης δομής γίνεται ως εξής:
Αναλύουμε το πρόβλημα για να διαπιστώσουμε τους περιορισμούς των πόρων που πρέπει να ικανοποιεί μια λύση. Αποφασίζουμε τις βασικές λειτουργίες που πρέπει να υποστηρίζονται. Προσδιορίζουμε ποσοτικά τους περιορισμούς πόρων για κάθε λειτουργία. Επιλέγουμε τη δομή δεδομένων που αρμόζει καλύτερα στις προηγούμενες απαιτήσεις.

23 Η ανάγκη για Δομές Δεδομένων
Οι δομές δεδομένων οργανώνουν καλύτερα τα δεδομένα του προβλήματος  περισσότερο αποτελεσματικά προγράμματα Περισσότερο ισχυροί ΗΥ  πιο σύνθετες εφαρμογές Περισσότερο σύνθετες εφαρμογές  περισσότεροι υπολογισμοί

24 Ερωτήσεις που πρέπει να απαντηθούν
Τα δεδομένα θα εισαχθούν όλα στην αρχή ή η εισαγωγή τους θα διασκορπιστεί και σε άλλες ενδιάμεσες λειτουργίες; Τα δεδομένα μπορούν να διαγραφούν; Η προσπέλαση των δεδομένων θα γίνει με καλώς ορισμένο τρόπο ή θα επιτρέπεται η τυχαία πρόσβαση σε αυτά;

25 Φιλοσοφία των δομών δεδομένων
Κάθε δομή δεδομένων έχει κόστος και οφέλη. Μια δομή δεδομένων απαιτεί : Χώρο για κάθε στοιχείο που θα αποθηκευτεί Χρόνο για να πραγματοποιηθεί κάθε βασική λειτουργία Προγραμματιστική προσπάθεια Κάθε πρόβλημα έχει περιορισμούς για το διαθέσιμο χώρο και χρόνο Μόνο ύστερα από προσεκτική ανάλυση των χαρακτηριστικών του προβλήματος μπορούμε να επιλέξουμε την καταλληλότερη δομή δεδομένων για κάθε διεργασία Παράδειγμα : τραπεζικές εργασίες Άνοιγμα λογαριασμού : μερικά λεπτά Κινήσεις : μερικά δευτερόλεπτα Κλείσιμο λογαριασμού : overnight

26 Αποτίμηση αλγορίθμων Οι αλγόριθμοι και τα προγράμματα μπορούν να αποτιμηθούν ως προς την : Απλότητα καθαρότητα Δυνατότητα κλιμάκωσης ανθεκτικότητα Δυνατότητα επαναχρησιμοποίησης Πολλά από τα ανωτέρω κριτήρια είναι υποκειμενικά. Ένα σπουδαίο είναι η αποτελεσματικότητα ή αποδοτικότητα (efficiency): Ποσό χρόνου που απαιτεί η εκτέλεση του αλγορίθμου Ποσό κεντρικής μνήμης που απαιτείται Ποσό του εύρους ζώνης του δικτύου που απαιτείται Ποσό εξωτερικής μνήμης που απαιτείται

27 Πως μετράται η απόδοση των αλγορίθμων
Ποια χαρακτηριστικά απαιτείται να χρησιμοποιηθούν για να εκτιμηθούν οι αλγόριθμοι; Το μήκος του προγράμματος (πλήθος γραμμών κώδικα) Ευκολία στον προγραμματισμό (σφάλματα, συντήρηση) Μνήμη που απαιτείται Χρόνος εκτέλεσης (Running time) Ο χρόνος εκτέλεσης είναι το κυρίαρχο πρότυπο (dominant standard) Μπορεί να ποσοτικοποιηθεί και είναι εύκολο να συγκριθεί Είναι συχνά το κρίσιμο σημείο

28 Αποτελεσματικότητα αλγορίθμων (algorithms efficiency)
Κεντρικό σημείο της σχεδίασης προγραμμάτων Η/Υ είναι δύο συχνά αντικρουόμενοι στόχοι : Η σχεδίαση ενός αλγορίθμου που θα είναι εύκολος στην κατανόηση, την κωδικοποίηση και την εκσφαλμάτωση (debugging) (αφορά την Τεχνολογία Λογισμικού) Η σχεδίαση ενός αλγορίθμου που θα κάνει αποτελεσματική χρήση των πόρων του Η/Υ (αφορά τις Δομές Δεδομένων και την Ανάλυση Αλγορίθμων)

29 Παραδείγματα Έστω ο έλεγχος αν ένα στοιχείο είναι μέλος ενός συνόλου δεδομένων με n στοιχεία. Ο χρόνος που απαιτείται είναι : Ανάλογος του n σε γραμμικές λίστες Ανάλογος του log2n σε ισοζυγισμένα δυαδικά δένδρα αναζήτησης Αν ο χρόνος που απαιτείται σε γραμμικές λίστες είναι 1 ώρα , για το ίδιο πλήθος δεδομένων σε ΔΔΑ είναι 25,8μsec!!. Σε πλήθος n=106 απαιτούνται 106 ή log2106= log2220=20 συγκρίσεις

30 Υπολογισμός της ορίζουσας ενός πίνακα n X n
Με τον αλγόριθμο απαλοιφής Gauss-Jordan απαιτούνται πράξεις της τάξης n3 Tαξινόμηση ενός πίνακα n στοιχείων Πλήθος συγκρίσεων n2 Πλήθος συγκρίσεων nlog2n Για n=106 και για χρόνο μιας σύγκρισης 10-6 sec τότε οι χρόνοι αντίστοιχα είναι 11,5 ημέρες και 20 sec

31 Αλγόριθμοι Αλγόριθμος είναι ένα διατεταγμένο και πεπερασμένο σύνολο καθορισμένων αριθμητικών ή λογικών πράξεων ή εντολών, που όταν εφαρμόζονται σε ένα σύνολο δεδομένων εισόδου ενός συγκεκριμένου και καλώς προσδιορισμένου προβλήματος παράγουν μια λύση σε πεπερασμένο χρόνο. Κάθε λύση προσδιορίζεται από ένα σύνολο αποτελεσμάτων που λέγονται δεδομένα εξόδου.

32 Παραδείγματα διάσημων αλγορίθμων
Newton's root finding Fast Fourier Transform Compression (Huffman, Lempel-Ziv, GIF, MPEG) DES, RSA encryption Simplex algorithm for linear programming Shortest Path Algorithms (Dijkstra, Bellman-Ford) Error correcting codes (CDs, DVDs) TCP congestion control, IP routing Pattern matching (Genomics) Delaunay Triangulation (FEM, Simulation)

33 Ο ρόλος των αλγορίθμων στον σύγχρονο κόσμο
Enormous amount of data e-commerce (Amazon, Ebay) Network traffic (telecom billing, monitoring) Database transactions (Sales, inventory) Scientific measurements (astrophysics, geology) Sensor networks Bioinformatics (genome, protein bank)

34 Αλγόριθμοι επεξεργασίας δεδομένων
Ποιοι είναι οι Κ καλύτεροι πωλητές? Υπάρχει συσχέτιση μεταξύ του χρόνου παραμονής σε ένα web site και των αγορών που πραγματοποιούνται; Ποιες ροές δεδομένων σε δρομολογητές δικτύων υπερβαίνουν το 1% της συνολικής κυκλοφορίας; Μπορεί μια πηγή S να στείλει ένα πακέτο δεδομένων σε s seconds? Έλεγχος ομοιότητας σε βάσεις δεδομένων του DNA

35 Ιδιότητες αλγορίθμων Καθοριστικότητα (οι πράξεις που χρησιμοποιεί ένας αλγόριθμος πρέπει να είναι καλώς καθορισμένες) Περατότητα ( το πρόβλημα επιλύεται σε πεπερασμένο πλήθος πράξεων ή εντολών). Μια διαδικασία που δεν πληροί την ιδιότητα της περατότητας λέγεται υπολογιστική μέθοδος. Αποτελεσματικότητα (όλες οι πράξεις πρέπει να είναι ικανοποιητικά απλές ώστε να εκτελούνται από μια μηχανή ή από έναν άνθρωπο με μολύβι και χαρτί).

36 Δομές δεδομένων Γραμμικές (κάθε στοιχείο έχει το πολύ ένα επόμενο και ένα προηγούμενο) Μη γραμμικές κάθε ένα στοιχείο έχει το πολύ ένα προηγούμενο και ένα ή περισσότερα επόμενα. Η δομή ονομάζεται δενδρική δομή ή ιεραρχική. κάθε ένα στοιχείο έχει το ένα ή περισσότερα προηγούμενο και ένα ή περισσότερα επόμενα. Η δομή ονομάζεται γράφημα

37 Προβλήματα και στιγμιότυπα
Ένα πρόβλημα εκφράζεται συνήθως με μια εντολή ή ένα ερώτημα που πρέπει να απαντηθεί. Με την εξειδίκευση του προβλήματος ορίζονται τα αποδεκτά δεδομένα εισόδου που εκφράζονται συνήθως με τις παραμέτρους του. Ορίζονται επίσης επακριβώς τα αναμενόμενα αποτελέσματα εξόδου, ως συνάρτηση επί των δεδομένων εισόδου. Ένα πρόβλημα επιλύεται όταν έχει αναπτυχθεί ο κατάλληλος αλγόριθμος που μετασχηματίζει όλα τα αποδεκτά δεδομένα εισόδου σε ορθά αποτελέσματα εξόδου.

38 Στιγμιότυπο Ένα στιγμιότυπο ενός προβλήματος είναι μια ανάθεση τιμών στις παραμέτρους του. Πεδίο ορισμού ενός προβλήματος είναι το σύνολο των στιγμιοτύπων του. Ένας αλγόριθμος λέγεται ορθός αν και μόνον αν επιλύει κάθε στιγμιότυπο ενός προβλήματος.

39 Κατηγορίες προβλημάτων
Με κριτήριο το είδος των ερωτημάτων που ζητούνται να απαντηθούν : Αναζήτησης Δόμησης Κατασκευής Βελτιστοποίησης Απόφασης ή απόκρισης (ναι – όχι)

40 Με κριτήριο την επιλυσιμότητα (δυνατότητα αλγοριθμικής επίλυσης):
Υπολογιστικώς επιλύσιμα ή αλγοριθμικά Υπολογιστικώς μη επιλύσιμα ή μη αλγοριθμικά Θετική λύση : αποδεικνύεται ότι μπορεί να υπάρξει ένας αλγόριθμος επίλυσης. Το πρόβλημα λέγεται υπολογιστικά επιλύσιμο ή αλγοριθμικό Αρνητική λύση : κανένας αλγόριθμος δεν υπάρχει αλλά έχει αποδειχθεί και μαθηματικά ότι τέτοιοι αλγόριθμοι είναι αδύνατο να υπάρξουν. Το πρόβλημα λέγεται υπολογιστικά μη επιλύσιμο ή μη αλγοριθμικό.

41 Μη επιλύσιμα προβλήματα
Ιστορικά μέχρι και τον 19ο αιώνα τα μαθηματικά ασχολούνταν άμεσα ή έμμεσα με το να βρίσκουν θετικές λύσεις στα προβλήματα απόφασης, δηλ. να παράγουν αλγόριθμους για την επίλυσή τους. Αρνητικές λύσεις παρουσιάστηκαν μόλις τον 20ο αιώνα. Το δέκατο πρόβλημα του Hilbert : υπάρχει ένας αλγόριθμος που να αποφασίζει για κάθε πολυωνυμική εξίσωση P(x1,x2,…,xn)=0 με ακέραιους συντελεστές αν αυτή έχει ακέραιες λύσεις; (μη επιλύσιμο)

42 Το πρόβλημα του σταματήματος (μη επιλύσιμο) :
Δίνεται ένα πρόγραμμα ΗΥ, έστω Ρ, και ένα σύνολο δεδομένων εισόδου Ι και ζητείται να αποφασιστεί αν η εκτέλεση του Ρ θα τερματιστεί με τα δεδομένα εισόδου Ι Αν το Ι δεν αποτελεί ένα αποδεκτό σύνολο δεδομένων για το Ρ τότε το Ρ σταματά μόλις αρχίσει Αν το Ι αποτελεί ένα αποδεκτό σύνολο δεδομένων και το Ρ έχει λάθος σχεδιασμό, τότε το πρόγραμμα εισέρχεται σε μια άπειρη ανακύκλωση και δεν τερματίζει ποτέ. Επιθυμητή η ύπαρξη ενός προγράμματος Q (διαδικασία απόφασης) για να ελέγχει κάθε πρόβλημα Ρ, Ι.

43 Ο Alan Turing (1912-1954) το 1931 απέδειξε ότι μια τέτοια αλγοριθμική διαδικασία είναι αδύνατη.
Συνέπειες της μη επιλυσιμότητας του προβλήματος του σταματήματος : Καμία περαιτέρω προσπάθεια αναζήτησης λύσης Μια μεγάλη κατηγορία άλλων προβλημάτων μπορούν να αποδειχθούν υπολογιστικά ισοδύναμα με το πρόβλημα του σταματήματος, άρα δεν επιλύονται. Οι διαπιστώσεις αυτές (προβλήματα που δεν έχουν αλγοριθμική λύση) έγιναν πριν κατασκευαστούν οι πρώτοι υπολογιστές.

44 Υπολογισιμότητα - Πολυπλοκότητα
Η θεωρία της υπολογισιμότητας (computability) ασχολείται με τον χαρακτηρισμό των υπολογιστικών προβλημάτων σε αλγοριθμικά και μη αλγοριθμικά Η θεωρία της πολυπλοκότητας (complexity) ασχολείται με τον προσδιορισμό του βαθμού δυσκολίας επίλυσης ενός προβλήματος. Ειδικότερα ασχολείται με τον προσδιορισμό συναρτήσεων χώρου μνήμης και χρόνου κάθε αλγορίθμου σε σχέση με το μέγεθος των δεδομένων εισόδου. Η γνώση των συναρτήσεων αυτών μας επιτρέπει να προσδιορίσουμε το μέγιστο μέγεθος των προβλημάτων των οποίων η επίλυση είναι εφικτή με τα υπολογιστικά μέσα που διαθέτουμε. Αλγοριθμική σκέψη έναντι μαθηματικής σκέψης (σε μαθηματικές φόρμες εισέρχεται η έννοια του χρόνου)

45 Η αλγοριθμική γλώσσα Δομικές εντολές Ανάθεσης (εκχώρησης)
Αντιμετάθεσης Δημιουργίας block εντολών Σειριακές δομές Δομές επιλογής (απλή – πολλαπλή – εμφωλιασμένη) Δομές επανάληψης Ισοδυναμία δομών επανάληψης Συναρτήσεις – κλήση συνάρτησης

46 Στοιχεία υπολογιστικής πολυπλοκότητας
Η απόδειξη ύπαρξης ενός αλγορίθμου εξασφαλίζει ότι το πρόβλημα είναι υπολογιστικά επιλύσιμο. Σε δεύτερο στάδιο ενδιαφέρει περισσότερο η εκτίμηση των υπολογιστικών απαιτήσεων των προβλημάτων σε χρόνο και χώρο μνήμης ως συνάρτηση του μεγέθους τους. Παράδειγμα : ο αριθμός 2n

47 Η γνώση των απαιτήσεων σε υπολογιστικό χρόνο και χώρο μνήμης ενός αλγορίθμου έχει τεράστια πρακτική σημασία : (θεωρία υπολογιστικής πολυπλοκότητας ή ανάλυση αλγορίθμων – COMPUTATIONAL COMPLEXITY ή ALGORITHMS ANALYSIS). Πολυπλοκότητα χώρου και χρόνου

48 Η έννοια της πολυπλοκότητας ενός αλγορίθμου δεν σχετίζεται με το πόσο πολύπλοκος ή περίπλοκος είναι ο αλγόριθμος αυτός. Το πιο ευρέως αποδεκτό μέτρο προσδιορισμού της αποτελεσματικότητας ενός αλγορίθμου είναι η πολυπλοκότητα χρόνου.

49 Πειραματικός και θεωρητικός προσδιορισμός της πολυπλοκότητας
Μειονεκτήματα του πειραματικού προσδιορισμού: κόστος και σπατάλη χρόνου Η πειραματική ανάλυση περιορίζεται στην επίλυση σχετικά μικρού μεγέθους στιγμιοτύπων του προβλήματος Θεωρητικός προσδιορισμός Βασίζεται αποκλειστικά στη λογική δομή Οι υπολογιστικές απαιτήσεις προσδιορίζονται με μια μαθηματική σχέση που είναι συνάρτηση του μεγέθους κάθε στιγμιότυπου του προβλήματος Η θεωρία πολυπλοκότητας είναι απαλλαγμένη από τα τεχνικά χαρακτηριστικά του ΗΥ και τις ικανότητες του προγραμματιστή. Υπάρχει γνώση των απαιτήσεων χωρίς εκτέλεση του αντίστοιχου προγράμματος

50 Μέτρηση του μεγέθους ενός στιγμιότυπου
Το μέγεθος ενός στιγμιότυπου μετράται με τον αριθμό των δυαδικών ψηφίων (bits) που απαιτούνται για την κωδικοποίησή του. n=bi2i+bi-12i-1+…+b121+b020 n>=2i  log2n>=i (αν n=1000, i=10) (η άποψη αυτή μπορεί να επηρεάζει σε ορισμένες περιπτώσεις την πολυπλοκότητα του αλγορίθμου) Για διευκόλυνση της ανάλυσης ως μέγεθος στιγμιότυπου θα χρησιμοποιείται ένας ακέραιος αριθμός που μετρά το πλήθος των φυσικών μονάδων του στιγμιότυπου.

51 Παραδείγματα Ταξινόμηση των στοιχείων μιας λίστας  πλήθος στοιχείων
Προβλήματα πινάκων  διαστάσεις των πινάκων Επίλυση ενός συστήματος γραμμικών εξισώσεων  αριθμός εξισώσεων ή των αγνώστων ή και τα δύο

52 Μέτρηση της υπολογιστικής προσπάθειας
Ο προσδιορισμός της θεωρητικής πολυπλοκότητας ενός αλγορίθμου γίνεται ανεξάρτητα από : Το είδος του Η/Υ Τον τύπο του μεταγλωττιστή Τη γλώσσα προγραμματισμού Την ποιότητα και τα χαρακτηριστικά του προγράμματος

53 Παραδοχές Χρήση του παρακάτω μοντέλου μνήμης:
Απόδοση : Πως συμπεριφέρεται ο αλγόριθμος καθώς το μέγεθος του προβλήματος γίνεται διαρκώς μεγαλύτερο? Χρόνος εκτέλεσης Προδιαγραφές μνήμης Χρήση του παρακάτω μοντέλου μνήμης: Όλες οι θέσεις μνήμης έχουν τον ίδιο χρόνο προσπέλασης Δεν υπάρχουν ταυτόχρονες λειτουργίες Όλες οι εντολές απαιτούν μια μονάδα χρόνου Εκτός από τις κλήσεις συναρτήσεων

54 Η έννοια της στοιχειώδους πράξης
Η μονάδα μέτρησης (αναφέρεται συνήθως ως στοιχειώδης πράξη) των υπολογιστικών απαιτήσεων ενός αλγορίθμου θα πρέπει να ικανοποιεί την αρχή του αναλλοίωτου: Διαφορετικές υλοποιήσεις του αλγορίθμου δεν θα πρέπει να διαφέρουν σε πολυπλοκότητα περισσότερο από μια πολλαπλασιαστική σταθερά που θα είναι ανεξάρτητη από το μέγεθος του στιγμιότυπου. Στοιχειώδης πράξη είναι αυτή της οποίας ο χρόνος εκτέλεσης φράσσεται από πάνω με μια σταθερά. Η σταθερά αυτή είναι ανεξάρτητη από το μέγεθος του προβλήματος και εξαρτάται μόνον από τις ιδιαιτερότητες υλοποίησης του αλγορίθμου.

55 Οι στοιχειώδεις πράξεις διαφέρουν σε κάθε αλγόριθμο.
Κάθε στοιχειώδης πράξη υποθέτουμε ότι εκτελείται σε μια μονάδα χρόνου Ο χρόνος εκτέλεσης του αλγορίθμου είναι ο αριθμός των στοιχειωδών πράξεων που απαιτούνται και όχι ο ακριβής χρόνος που απαιτείται για την εκτέλεσή τους. Παραδείγματα : αριθμητικές πράξεις, συγκρίσεις, εντολές διακλάδωσης,διάβασμα περιεχομένου θέσης μνήμης κλπ

56 Παραδείγματα

57 Παραδείγματα (συνέχεια)
(1) εκτελείται μια πράξη , σταθερός χρόνος (2) λογαριθμική συμπεριφορά, η ανακύκλωση εκτελείται φορές (3) η πράξη εκτελείται n φορές (4) εκτελούνται n X n = n2 πράξεις (5) εκτελούνται n(n+1)/2 πράξεις

58 Το πλήθος των πράξεων που εκτελούνται σε κάθε αλγόριθμο εξαρτάται άμεσα από τον αριθμό των επαναλήψεων. Η εκτίμηση του μεγέθους των υπολογιστικών απαιτήσεων ενός αλγορίθμου μπορεί να γίνει με ακρίβεια αν μετρηθεί το πλήθος των ανακυκλώσεων που εκτελούνται.

59 Μέτρηση της αποτελεσματικότητας του αλγορίθμου
Τρεις αλγόριθμοι για τον υπολογισμό του αθροίσματος … n για έναν ακέραιο n > 0

60 Το πλήθος των λειτουργιών που απαιτούνται για τους 3 προηγούμενους αλγορίθμους

61 Το πλήθος των λειτουργιών που απαιτούνται από τους 3 αλγορίθμους σαν συνάρτηση του n

62 Αποτελεσματικότητα χρόνου
Πως μπορούμε να βελτιώσουμε την αποτελεσματικότητα χρόνου ενός προγράμματος; Ο κανόνας 90/10 90% του χρόνου εκτέλεσης ενός προγράμματος ξοδεύεται για την εκτέλεση του 10% του κώδικα του προγράμματος Τι πρέπει να γίνει για να εντοπιστεί αυτό το κρίσιμο τμήμα του 10%? εργαλεία μέτρησης της τεχνολογίας λογισμικού γενικοί μετρητές για να εντοπιστούν εντολές επανάληψης και κλήσεις συναρτήσεων

63 Βελτιώσεις της αποτελεσματικότητας χρόνου
μετακίνηση τμημάτων κώδικα εκτός των ανακυκλώσεων (τα τμήματα αυτά δεν ανήκουν στην πραγματικότητα εκεί) διαγραφή λειτουργιών I/O που δεν είναι απαραίτητες και σπαταλούν χρόνο αποτελεσματική κωδικοποίηση αντικατάσταση ενός μη αποτελεσματικού αλγορίθμου ( η καλύτερη λύση!) ΕΠΙΛΟΓΗ του πλέον κατάλληλου αλγορίθμου ΠΡΙΝ την ανάπτυξη του προγράμματος

64 Ανάλυση πολυπλοκότητας
Γιατί αργεί τόσο πολύ;

65 Ανάλυση πολυπλοκότητας
Ανάλογα με το είδος των δεδομένων εισόδου η συμπεριφορά του αλγορίθμου μεταβάλλεται : Πολυπλοκότητα της χειρότερης περίπτωσης (worst-case complexity) Πολυπλοκότητα της καλύτερης περίπτωσης (best-case complexity) Πολυπλοκότητα της μέσης περίπτωσης (average-case complexity). Είναι η πιο αντιπροσωπευτική και η δυσκολότερη να υπολογιστεί.

66

67 Πολυπλοκότητα της χειρότερης περίπτωσης (Worst-case complexity)
Η συνάρτηση πολυπλοκότητας εκφράζει τον μέγιστο αριθμό στοιχειωδών πράξεων που απαιτούνται για την επίλυση μιας κατηγορίας δεδομένων μεγέθους n. Η συνάρτηση πολυπλοκότητας χειρότερης περίπτωσης είναι αυτή που χρησιμοποιείται περισσότερο. Κάποιος όρος της συνάρτησης, καθώς το n μεγαλώνει, μπορεί να υπερισχύσει πάνω στους υπόλοιπους. Ο όρος που υπερισχύει ονομάζεται ασυμπτωτική συμπεριφορά του αλγορίθμου.

68

69 Η κατανόηση της πλήρους συμπεριφοράς του αλγορίθμου, δηλαδή η ακριβής γνώση της συνάρτησης που εκφράζει το πλήθος των πόρων που χρησιμοποιούνται σε σχέση με το μέγεθος n, είναι πολύ δύσκολη. Έτσι αρκεί μόνον η γνώση της ασυμπτωτικής συμπεριφοράς του αλγορίθμου που είναι γνωστή ως ασυμπτωτική πολυπλοκότητα χρόνου (asymptotic time complexity).

70 Ασυμπτωτική πολυπλοκότητα
Είναι αυτή που εκφράζει αν ο αλγόριθμος είναι εφικτός (feasible) ή μη εφικτός (infeasible) ή δυσχείριστος (intractable). Χρησιμοποιείται ως κριτήριο αποτελεσματικότητας χρόνου στην αξιολόγηση κάθε αλγορίθμου. Η γνώση της συνάρτησης αυτής, έστω TA(n) μας επιτρέπει να υπολογίσουμε το μεγαλύτερο μέγεθος ενός προβλήματος που μπορεί να επιλύσει ο συγκεκριμένος αλγόριθμος σε μια συγκεκριμένη χρονική περίοδο.

71 Οι αλγόριθμοι με ασυμπτωτική συμπεριφορά 2n ή γενικά cn όπου c=σταθερά λέγονται εκθετικοί (exponential). Είναι ανέφικτοι για όλα τα δεδομένα εκτός από εκείνα που έχουν πολύ μικρό μέγεθος. Οι αλγόριθμοι με ασυμπτωτική συμπεριφορά n, n2,nc λέγονται πολυωνυμικοί (polynomial) αλγόριθμοι. Πολλοί πολυωνυμικοί αλγόριθμοι είναι εφικτοί για πρακτικά μήκη δεδομένων εισόδου αλλά δυστυχώς αρκετοί άλλοι δεν είναι.

72 Παράδειγμα-1 – μονάδα μέτρησης 1 sec
αλγόριθμος TA(n) Μέγιστο μέγεθος προβλήματος (n) 1 ώρα 2 ώρες Α1 100n 36 72 Α2 15n2 15 21 Α3 2n3 12 Α4 n! 6 7 Α5 2n 11

73 Παράδειγμα-2 χρόνος εκτέλεσης σε sec
n log2n n2 2n 10 0.0001 0.01 100 1014 αιώνες 1000 0.001 1 Αστρονομικός 10000 1.7 min 100000 0.1 2.8 hours

74 10 20 25 200 400 600 800 n Run time f(n)=10n f(n)=n2

75 Complexity 10 20 50 100 1 000 10 000 100 000 O(1) O(log(n)) O(n)
< 1 s O(log(n)) O(n) O(n*log(n)) O(n2) 2 s 3-4 min O(n3) 20 s 5 hours 231 days O(2n) 260 days hangs O(n!) O(nn)

76 Εκθετικές συναρτήσεις
Οι εκθετικές συναρτήσεις αυξάνονται ταχύτατα, πχ. Η συνάρτηση 2n θα διπλασιάζεται κάθε φορά που το n αυξάνεται κατά 1 31.7 years 1015 50 1018 1012 109 106 103 2n 0.001 s 10 1 s 20 16.7 mins 30 11.6 days 40 31710 years 60 1ms x 2n n

77 Βαθμός πολυπλοκότητας (Order of complexity)
Ο βαθμός πολυπλοκότητας ενός αλγορίθμου Α, που έχει ασυμπτωτική συνάρτηση χρόνου TA(n) ορίζεται ως O(TA(n)). Λέγεται και συμβολισμός του μεγάλου όμικρον (big-Oh notation). Όταν η πολυπλοκότητα εκφράζεται με big-O το αποτέλεσμα ονομάζεται τάξη ή βαθμός (order) του αλγορίθμου. Ο συμβολισμός του big-O αναφέρεται στον ρυθμό αύξησης όταν το n∞

78 Big-O notation Ο συμβολισμός του Big-O αποτυπώνει τον ρυθμό αύξησης. Είναι η τάξη ενός μαθηματικού τύπου που περιγράφει με τον καλύτερο τρόπο την εκτέλεση ενός αλγορίθμου και βρίσκεται αναζητώντας το πλήθος των στοιχειωδών πράξεών του. Ο συμβολισμός του Big-O είναι μια συνάρτηση με παράμετρο συνήθως N, όπου N είναι συνήθως το πλήθος των πράξεων που εκτελεί ο αλγόριθμος : π.χ. αν ένας αλγόριθμος που εξαρτάται από μια τιμή n έχει πλήθος πράξεων an2 + bn + c (a, b, c είναι σταθερές) τότε έχει απόδοση O(N2) επειδή για μεγάλες τιμές n ο όρος n2 κυριαρχεί. Μόνον ο κυρίαρχος όρος περιλαμβάνεται στον συμβολισμό του Big-O.

79 Παραδείγματα n O(n) O(n) + 2 O(n2) O(n2) + n 2 2 4 4 6 4 4 6 16 20

80 Παραδείγματα 4n3 + 20n + 30 = O(n3) n + 10000 = O(n)
8

81 Βαθμός του αλγορίθμου Είναι η σχέση που υποδηλώνει τον ρυθμό αύξησης του υπολογιστικού χρόνου σε συνάρτηση με τις παραμέτρους που καθορίζουν το μέγεθος του προβλήματος και για τη δυσμενέστερη μορφή δεδομένων που αντιστοιχούν στον συγκεκριμένο αλγόριθμο (worst-case analysis) Η τάξη του αλγορίθμου είναι γενικά περισσότερο σημαντική από την ταχύτητα του επεξεργαστή.

82 Ο συμβολισμός του μεγάλου Ο (big Oh) παρέχει έναν ασφαλή τρόπο αποτίμησης της αποτελεσματικότητας ενός αλγορίθμου που δεν εξαρτάται από τον υπολογισμό του χρόνου εκτέλεσης ή τη μέτρηση των εκτελούμενων εντολών.

83 Ασυμπτωτική Ανάλυση Αλγορίθμου
Η ασυμπτωτική ανάλυση ενός αλγορίθμου καθορίζει τον χρόνο εκτέλεσης χρησιμοποιώντας τον συμβολισμό του μεγάλου Ο (big-Oh) Για να υλοποιηθεί η ασυμπτωτική ανάλυση : Βρίσκουμε το πλήθος των βασικών λειτουργιών που εκτελούνται στην χειρότερη περίπτωση ως συνάρτηση του μεγέθους των δεδομένων εισόδου Εκφράζουμε αυτή τη συνάρτηση με τον συμβολισμό του μεγάλου Ο (big-Oh) Παράδειγμα: Έστω ότι ένας αλγόριθμος arrayMax εκτελεί κατά μέγιστο 7n  1 βασικές λειτουργίες Ο αλγόριθμος arrayMax “εκτελείται σε O(n) χρόνο” Οι σταθεροί συντελεστές και οι όροι μικρότερης τάξης τελικά παραλείπονται, έτσι μπορούμε να τις αγνοήσουμε όταν γίνεται απαρίθμηση των βασικών λειτουργιών.

84 Ένας αλγόριθμος είναι O(1) όταν ο χρόνος εκτέλεσής του είναι ανεξάρτητος του πλήθους των δεδομένων εισόδου. Ο αλγόριθμος εκτελείται σε σταθερό χρόνο. Ένας αλγόριθμος είναι O(n) όταν ο χρόνος εκτέλεσής του είναι ανάλογος του μεγέθους των δεδομένων εισόδου. Οι αλγόριθμοι με χρόνο εκτέλεσης O(n2) είναι αποτελεσματικοί μόνον για μικρές τιμές του n. Οι αλγόριθμοι με χρόνο εκτέλεσης O(n3) είναι γενικά αναποτελεσματικοί.

85 Εκθετικοί (Exponential) Αλγόριθμοι

86 Αλγόριθμοι λογαριθμικού χρόνου
Ο λογάριθμος του n, με βάση το 2, χρησιμοποιείται συχνά στην ανάλυση των αλγορίθμων. log2(2) = 1 log2(75) = Συγκρινόμενη με τις συναρτήσεις n και n2, η συνάρτηση log2 n αυξάνεται πολύ αργά

87 Ταχύτερος Η/Υ ή αλγόριθμος ;
Τι θα συμβεί αν αγοράσουμε έναν Η/Υ 10 φορές ταχύτερο; Ενδιαφέρει ο ρυθμός αύξησης T(n) n n’ Change n’/n 10n 1,000 10,000 n’ = 10n 10 20n 500 5,000 5n log n 250 1,842 10 n < n’ < 10n 7.37 2n2 70 223 n’ = 10n 3.16 2n 13 16 n’ = n + 3 -----

88 Ιδιότητες c · O (TA(n))  O (TA(n)) O (O (TA(n)) )  O (TA(n))
O (TA(n)) · O (TB(n))  Ο (TA(n) · TB(n)) O (TA(n)) + O (TB(n))  Ο (TA(n) + TB(n)) Οι παραπάνω σχέσεις βοηθούν στον προσδιορισμό του βαθμού πολυπλοκότητας ενός αλγορίθμου που είναι σύνθεση άλλων αλγορίθμων γνωστού βαθμού πολυπλοκότητας.

89 “Big-O” Examples

90 Υπολογισμός της πολυπλοκότητας χρόνου σε απλούς αλγορίθμους
Ο βαθμός πολυπλοκότητας υπολογίζεται εφαρμόζοντας 5 απλούς κανόνες.

91 ΚΑΝΟΝΑΣ #1: Οι απλές εντολές προγράμματος θεωρείται ότι απαιτούν ένα σταθερό ποσό χρόνου που είναι O(1) ΔΕΝ εξαρτώνται από το n. ΚΑΝΟΝΑΣ #2: Οι διαφορές στο χρόνο εκτέλεσης των απλών εντολών αγνοούνται

92 ΚΑΝΟΝΑΣ #3: Στις εντολές ελέγχου (conditional statements), χρησιμοποιείται πάντοτε η χειρότερη περίπτωση (worst case). ΚΑΝΟΝΑΣ #4: Ο χρόνος μιας ακολουθίας βημάτων έχει την τάξη του χρόνου του χρονικά μεγαλύτερου βήματος (ο κανόνας του αθροίσματος)

93 ΚΑΝΟΝΑΣ #4 (παράδειγμα)
Αν δύο σειριακά βήματα έχουν χρόνους O(n) και O(n2), τότε ο χρόνος της ακολουθίας είναι O(n2). Αν η τιμή του n είναι μεγάλη τότε ο χρόνος που σχετίζεται με αυτήν δεν είναι σημαντικός όταν συγκρίνεται με τον χρόνο για την τιμή n2 (π.χ. αν n=1000 τότε το 1000 δεν είναι σημαντικό όταν συγκρίνεται με το )

94 ΚΑΝΟΝΑΣ #5: Αν δύο διαδικασίες εμπλέκονται με τρόπο ώστε η δεύτερη διαδικασία να επαναλαμβάνεται m φορές για κάθε μία από τις n επαναλήψεις της πρώτης διαδικασίας τότε η πολυπλοκότητα O είναι ίση με το γινόμενο m X n (ο κανόνας του γινομένου)

95 ΚΑΝΟΝΑΣ #5 (παράδειγμα)
Για την εμφάνιση των στοιχείων ενός τετραγωνικού πίνακα δύο διαστάσεων, μεγέθους n X n, απαιτούνται δύο εμφωλιασμένες ανακυκλώσεις κάθε μια από τις οποίες θα εκτελείται n φορές Η πολυπλοκότητα O είναι n2

96 Παραδείγματα Nested Loops Sequential statements Conditional statements More nested loops

97 Nested Loops Running time of a loop equals running time of code within the loop times the number of iterations Nested loops: analyze inside out O(n) O(1)

98 O(1*n) = O(n) Nested Loops
Running time of a loop equals running time of code within the loop times the number of iterations Nested loops: analyze inside out O(1*n) = O(n)

99 Nested Loops Running time of a loop equals running time of code within the loop times the number of iterations Nested loops: analyze inside out O(n) O(n)

100 O(n*n) = O(n2) Nested Loops
Running time of a loop equals running time of code within the loop times the number of iterations Nested loops: analyze inside out O(n*n) = O(n2)

101 Nested Loops Running time of a loop equals running time of code within the loop times the number of iterations Nested loops: analyze inside out Note: Running time grows with nesting rather than the length of the code O(n2) O(n)

102 Sequential Statements
For a sequence S1; S2; : : : Sk of statements, running time is maximum of running times of individual statements O(n) O(n2) Running time is: max(O(n), O(n2)) = O(n2)

103 Conditional Statements
The running time of if ( cond ) S1 else S2 is running time of cond plus the max of running times of S1 and S2 O(n) O(1)

104 Conditional Statements
The running time of if ( cond ) S1 else S2 is running time of cond plus the max of running times of S1 and S2 = O(n) O(n2) = O(max(n, 1)) = O(n)

105 More Nested Loops ?

106 Λύση ενός προβλήματος με 2 διαφορετικούς αλγορίθμους
procedure who_knows(a1, a2, …, an: integers) m = 0 for i = 1 to n-1 for j = i + 1 to n if |ai – aj| > m then m = |ai – aj| {m is the maximum difference between any two numbers in the input sequence} Comparisons: n-1 + n-2 + n-3 + … + 1 = (n – 1)n/2 = 0.5n2 – 0.5n Time complexity is O(n2).

107 procedure max_diff(a1, a2, …, an: integers) min = a1 max = a1 for i = 2 to n if ai < min then min = ai else if ai > max then max = ai m = max - min Comparisons: 2n - 2 Time complexity is O(n)

108 Παράδειγμα Two algorithms, A and B ,have time complexities f and g respectively, where f(n) = 3 n2 - 3n + 1 and g(n)=n2. Determine which algorithm is faster. Solution First, find the value of n such that f(n)=g(n).Thus n2 = 3 n2 - 3n n2 - 3n + 1 = 0 (2n - 1)(n - 1) = 0 n = 1/2 or n = 1

109 Take the larger value of n, that is for n > 1,
suppose n = 2, then f(2) = 3(2)2 - 3(2) + 1 = 7 and g(2) = 22 = 4 Thus g(n) < f(n) for all n > 1. Hence g(n) is faster, so algorithm B is faster

110 ΑΣΚΗΣΗ-1 Να βρεθεί η πολυπλοκότητα του αλγορίθμου
Algorithm prefixAverages1(X, n) Input array X of n integers Output array A of prefix averages of X A  new array of n integers for i  0 to n  1 do s  X[0] for j  1 to i do s  s + X[j] A[i]  s / (i + 1) return A Να βρεθεί η πολυπλοκότητα του αλγορίθμου

111 Λύση Ο αλγόριθμος prefixAverages1 εκτελείται σε O(n2) χρόνο
Algorithm prefixAverages1(X, n) Input array X of n integers Output array A of prefix averages of X #operations A  new array of n integers n for i  0 to n  1 do n s  X[0] n for j  1 to i do …+ (n  1) s  s + X[j] …+ (n  1) A[i]  s / (i + 1) n return A Ο αλγόριθμος prefixAverages1 εκτελείται σε O(n2) χρόνο

112 ΑΣΚΗΣΗ-2 Algorithm prefixAverages2(X, n) Input array X of n integers
Output array A of prefix averages of X #operations A  new array of n integers s  0 for i  0 to n  1 do s  s + X[i] A[i]  s / (i + 1) return A Να βρεθεί η πολυπλοκότητα του αλγορίθμου

113 Λύση Ο αλγόριθμος prefixAverages2 εκτελείται σε O(n) χρόνο
Algorithm prefixAverages2(X, n) Input array X of n integers Output array A of prefix averages of X #operations A  new array of n integers n s  for i  0 to n  1 do n s  s + X[i] n A[i]  s / (i + 1) n return A Ο αλγόριθμος prefixAverages2 εκτελείται σε O(n) χρόνο

114 Ταξινόμηση με επιλογή

115 Ως προς την απόδοση κατατάσσονται σε :
Ο βαθμός πολυπλοκότητας χρησιμοποιείται ως κριτήριο για την αξιολόγηση των αλγορίθμων. Ως προς την απόδοση κατατάσσονται σε : αποτελεσματικούς (efficient) Η συνάρτηση ασυμπτωτικής πολυπλοκότητας είναι πολυωνυμικής μορφής μη αποτελεσματικούς (inefficient) Η συνάρτηση ασυμπτωτικής πολυπλοκότητας είναι εκθετικής μορφής

116 Σε προβλήματα που επιλύονται με αλγορίθμους πολυωνυμικού χρόνου καλύτερος αλγόριθμος θεωρείται αυτός με συνάρτηση ασυμπτωτικής πολυπλοκότητας το πολυώνυμο με τον μικρότερο βαθμό. Ένας αλγόριθμος εκθετικού χρόνου ΔΕΝ ΘΕΩΡΕΙΤΑΙ ΠΟΤΕ καλύτερος από έναν άλλο πολυωνυμικού χρόνου. Ο βαθμός πολυπλοκότητας δεν εκφράζει μια συγκεκριμένη ποσότητα αλλά την τάξη μεγέθους της ασυμπτωτικής συνάρτησης.

117 Άνω και κάτω φράγμα Η πολυπλοκότητα του καλύτερου αλγορίθμου που γνωρίζουμε ως τώρα για ένα πρόβλημα είναι το άνω φράγμα (upper bound) της πολυπλοκότητας. Το ελάχιστο πλήθος πόρων που απαιτείται για την επίλυση είναι το κάτω φράγμα (lower bound) της πολυπλοκότητας.

118 Κατηγορίες αλγορίθμων
Logarithmic : O(logn) Linear : O(n) Quadratic : O(n2) Polynomial : O(nk), k ≥ 1 Exponential : O(an), n > 1

119 Παραδείγματα O(1) ή O(c) : σταθερός ρυθμός αύξησης
O(lοgn) : λογαριθμική αύξηση π.χ. δυαδική αναζήτηση O(n) : γραμμική αύξηση π.χ. σειριακή αναζήτηση, οποιαδήποτε ανακύκλωση σε στοιχεία μονοδιάστατου πίνακα (άθροισμα, εκτύπωση κλπ) O(nlοgn) : αλγόριθμοι ταξινόμησης που χρησιμοποιούν συγκρίσεις μεταξύ στοιχείων π.χ. merge sort, Quicksort

120 O(nk) : πολυωνυμική αύξηση
Bubble sort (O(n2)) Selection (exchange) sort (O(n2)) Insertion sort (O(n2))

121 O(2n) : εκθετική αύξηση. Ο χρόνος εκτέλεσης αυξάνεται δραματικά καθώς αυξάνεται το πλήθος των στιγμιοτύπων n. Αλγόριθμοι με τέτοια ασυμπτωτική πολυπλοκότητα είναι ουσιαστικά μη αποτελεσματικοί εκτός από πολύ μικρές τιμές του n. O(sqrt(n)) O(n!)

122 Tractable  Exponential  Factorial  Intractable!

123 Ρυθμός αύξησης ορισμένων συναρτήσεων
O(log n), O(log2n), O(n0.5), O(n), O(n log n), O(n1.5), O(n log2n), O(n2), O(n3), O(n4) O(nlog n), O(2n), O(3n), O(4n), O(nn), O(n!) Polynomial Functions Exponential Functions

124 Δύσκολα Προβλήματα Εννοιολογικά δύσκολο: δεν έχουμε αλγόριθμο, επειδή δεν καταλαβαίνουμε καλά το πρόβλημα. Αναλυτικά δύσκολο: έχουμε αλγόριθμο που λύνει το πρόβλημα, αλλά δεν μπορούμε να υπολογίσουμε τις επιδόσεις του. Υπολογιστικά δύσκολο: έχουμε αλγόριθμο, αλλά είναι απελπιστικά αργός. Υπολογιστικά άλυτο: δεν υπάρχει αλγόριθμος που να λύνει το πρόβλημα.

125 Προβλήματα πολυωνυμικού χρόνου
Ταξινόμηση Γραμμικός προγραμματισμός Ελάχιστο δένδρο ζεύξης (minimum spanning tree) – η εύρεση ενός δένδρου που περιλαμβάνει όλες τις κορυφές του γραφήματος με το ελάχιστο άθροισμα βαρών στις ακμές.

126 Πανεπιστήμιο Αιγαίου Τμήμα Μηχ/κών Σχεδίασης Προϊόντων & Συστημάτων : Αλγόριθμοι & Δομές Δεδομένων ο έτος Πέμπτη, 20 Απριλίου 2017 Μικρότερη Διαδρομή Φτιάξτε οικονομικά γέφυρες που να συνδέουν όλα τα νησιά Υπάρχει γρήγορη λύση Ιωάννης Γαβιώτης

127 Περιπλανόμενος Πωλητής
Πανεπιστήμιο Αιγαίου Τμήμα Μηχ/κών Σχεδίασης Προϊόντων & Συστημάτων : Αλγόριθμοι & Δομές Δεδομένων ο έτος Πέμπτη, 20 Απριλίου 2017 Περιπλανόμενος Πωλητής Traveling salesman Φτιάξτε το συντομότερο δρομολόγιο πλοίου που περνάει από όλα τα νησιά ΔΕΝ ΥΠΑΡΧΕΙ ΓΡΗΓΟΡΗ ΛΥΣΗ Ιωάννης Γαβιώτης

128 Προβλήματα εκθετικού χρόνου
Το πρόβλημα του περιοδεύοντος πωλητή (TSP) – μια κλειστή διαδρομή με τη συνολικά μικρότερη απόσταση που περνά από όλα τα σημεία του γραφήματος και καταλήγει στην αφετηρία. Οι αλγόριθμοι που έχουν αναπτυχθεί εξετάζουν εξαντλητικά κάθε λύση, στη χειρότερη περίπτωση με πολυπλοκότητα Ο(n!). Το πρόβλημα του ακέραιου προγραμματισμού Το πρόβλημα του μέγιστου ανεξάρτητου συνόλου – ένα υποσύνολο ανεξάρτητων κορυφών ενός γραφήματος με τον μέγιστο αριθμό στοιχείων, με πολυπλοκότητα Ο(2n) Το πρόβλημα του ωρολογίου προγράμματος (scheduling problems)

129 Η σημασία αποτελεσματικών αλγορίθμων
έστω N = 106 Ένα PC μπορεί να επεξεργαστεί N εγγραφές σε 1 sec. Αλλά αν κάποιος αλγόριθμος εκτελεί N*N υπολογισμούς, απαιτούνται 1M seconds = 11 ημέρες!!! 100 πόλεις στο Traveling Salesman Problem. Ένας supercomputer που ελέγχει 100 δισεκατομμύρια tours/sec θα χρειαστεί έτη! γρήγοροι αναλυτικοί αλγόριθμοι μπορούν να διασπάσουν κρυπτογραφημένα σχήματα. Σε κάθε εποχή πρέπει να αποφασιστεί ποιο είναι το ασφαλές μήκος (σε ψηφία) των μεθόδων κρυπτογράφησης (> 100 ψηφία)

130 Θεωρία της NP – πληρότητας (NP–completeness)
Είναι οι αλγόριθμοι εκθετικής πολυπλοκότητας οι καλύτεροι δυνατοί αλγόριθμοι για τα προβλήματα αυτά ή θα ήταν δυνατή η ανάπτυξη πολυωνυμικών αλγορίθμων; Δεν έχουν βρεθεί ακόμη πολυωνυμικοί αλγόριθμοι ούτε έχει αποδειχθεί ότι η ανάπτυξη πολυωνυμικών αλγορίθμων είναι αδύνατη Θεωρία της NP – πληρότητας (NP–completeness)

131 Πολυπλοκότητα προβλημάτων
Ένα πρόβλημα που μπορεί να λυθεί με αλγόριθμο πολυωνυμικού (ή καλύτερου) χρόνου και με πολυπλοκότητα της χειρότερης περίπτωσης καλείται tractable. Τα προβλήματα που δεν είναι tractable είναι intractable. P είναι το σύνολο όλων των προβλημάτων που επιλύονται σε πολυωνυμικό χρόνο (tractable problems). NP είναι το σύνολο όλων των προβλημάτων που δεν επιλύονται με οποιονδήποτε γνωστό αλγόριθμο πολυωνυμικού χρόνου. Ωστόσο η δυνατότητα επίλυσή τους μπορεί να ελεγχθεί σε πολυωνυμικό χρόνο. P  NP

132 NP-Complete Η κλάση NP-Complete περιλαμβάνει εκείνα τα γνωστά προβλήματα τα οποία είναι πιθανόν δυσεπίλυτα (intractable) ανεξάρτητα από το αν αυτό έχει αποδειχθεί ή όχι. Η κλάση NP-Complete είναι ένα σύνολο προβλημάτων για τα οποία πιστεύεται ότι δεν υπάρχουν αλγόριθμοι πολυωνυμικού χρόνου Έτσι θεωρούνται δύσκολα (hard) προβλήματα Αν ένα πρόβλημα είναι NP-complete, δεν υπάρχει ελπίδα αποτελεσματικής επίλυσής του.

133 Η θεωρία της NP - πληρότητας
Παρέχει έναν ενιαίο τρόπο αντιμετώπισης προβλημάτων που έχουν τον ίδιο βαθμό υπολογιστικής δυσκολίας με το πρόβλημα του περιοδεύοντος πωλητή ή του μέγιστου ανεξάρτητου συνόλου. Θεμελιώνει μια διαδικασία που αποδεικνύει ότι ένα πρόβλημα είναι το ίδιο υπολογιστικά δύσκολο με τα παραπάνω αλλά και με χιλιάδες άλλα που ονομάζονται NP-complete προβλήματα. Η κλάση των NP-complete προβλημάτων περιλαμβάνει χιλιάδες προβλήματα από κάθε επιστημονική περιοχή.

134 Τα NP-complete προβλήματα έχουν την εξής ιδιότητα:
Κάθε NP-complete πρόβλημα μπορεί να μετασχηματιστεί σε ένα οποιοδήποτε άλλο NP-complete με έναν αλγόριθμο πολυωνυμικού χρόνου. Άρα αν αναπτυχθεί αλγόριθμος πολυωνυμικού χρόνου για τη επίλυση οποιουδήποτε NP-complete προβλήματος θα υπάρχει δυνατότητα ανάπτυξης πολυωνυμικού αλγορίθμου για χιλιάδες άλλα προβήματα NP-complete.

135 Παράδειγμα NP-Complete είναι το πρόβλημα της ικανοποιησιμότητας (satisfiability): μια παράσταση με δυαδικές μεταβλητές πότε γίνεται αληθής; Για να βρεθεί η απάντηση (Ναι/Όχι) πρέπει να εξετάσουμε όλους τους συνδυασμούς τιμών των μεταβλητών. Η καλύτερη γνωστή λύση για όλα τα NP-complete προβλήματα είναι η λύση της εξαντλητικής απαρίθμησης.

136 Τα αντίστοιχα προβλήματα βελτιστοποίησης των προβλημάτων NP-complete ανήκουν στην κατηγορία των NP-hard. Garey M.R, & Johnson D.S, “Computers and Intractability : A Guide to the Theory of NP-Completeness”, W.H.Freeman and Co., 1979

137 Exponential time problems
NP problems NP-Complete problems P problems

138 Τύποι λύσεων για προβλήματα NP-complete
Αλγόριθμοι εκθετικού χρόνου Αλγόριθμοι ειδικών περιπτώσεων Προσεγγιστικοί αλγόριθμοι Ευρετικοί (Heuristic) αλγόριθμοι

139 Αντιμετώπιση προβλημάτων
Για κάθε πρόβλημα προσπαθούμε να βρούμε αλγόριθμο πολυωνυμικού χρόνου. Αν δεν βρούμε χρησιμοποιούμε την NP θεωρία για να ελέγξουμε αν το πρόβλημα ανήκει στα NP-complete. Αν ανήκει στα NP-complete προσπαθούμε να βρούμε μια προσεγγιστική λύση. Αν δεν ανήκει ούτε στα NP-complete τότε κατατάσσεται στα αναποφάσιστα προβλήματα.

140 Αντιμετώπιση δύσκολων υπολογιστικά προβλημάτων
Τα δύσκολα προβλήματα (NP-hard) επιλύονται με αλγορίθμους εκθετικού χρόνου. Η πιθανότητα να βρεθεί αλγόριθμος πολυωνυμικού χρόνου απομακρύνεται καθημερινά. Η απόδειξη ότι ένα πρόβλημα είναι NP-complete έχει σημαντική πρακτική αξία. Προσπαθούμε να βρίσκουμε κατά περίπτωση κάποια εφικτή λύση, μειώνοντας τις απαιτήσεις μας.

141 Δυνατότητες Ανάπτυξη ενός πιθανοτικού αλγορίθμου πολυωνυμικού χρόνου (βρίσκει μια ορθή λύση εκτός από ένα μικρό ποσοστό του συνόλου των περιπτώσεων) Εύρεση μιας προσεγγιστικής λύσης με αλγόριθμο πολυωνυμικού χρόνου – Ευρετικοί αλγόριθμοι (heuristics) Χρησιμοποίηση παράλληλων αλγορίθμων

142 Θεμελιώδη για την αλγοριθμική επίλυση προβλημάτων
Κατανόηση συγκεκριμένων τεχνικών για τη σχεδίαση λύσεων Διαίρει και βασίλευε ( divide & conquer ) Ωμή βία ( brute force ) Οπισθοχώρηση ( backtracking ) Κατάλληλη επιλογή της Δομής Δεδομένων για να διευκολυνθεί η λύση του προβλήματος Ασφαλής εκτίμηση της πολυπλοκότητας του προτεινόμενου αλγορίθμου

143 Οκτώ Βασίλισσες στη Σκακιέρα
Πανεπιστήμιο Αιγαίου Τμήμα Μηχ/κών Σχεδίασης Προϊόντων & Συστημάτων : Αλγόριθμοι & Δομές Δεδομένων ο έτος Πέμπτη, 20 Απριλίου 2017 Τοποθετείστε 8 βασίλισσες έτσι ώστε καμιά να μην απειλεί κάποια άλλη. 92 λύσεις ! Recursive Backtracking Algorithm Ιωάννης Γαβιώτης

144 Με πόσα το λιγότερο χρώματα μπορώ να χρωματίσω ένα χάρτη;

145 Αποτελεσματική αποστολή δεδομένων

146 Ευρετικοί αλγόριθμοι Είναι γρήγοροι αλγόριθμοι που δίνουν μια «καλή» λύση. Ένας ευρετικός αλγόριθμος είναι καλύτερος από έναν άλλο ευρετικό αν στις περισσότερες περιπτώσεις (διαφορετικά δεδομένα για το ίδιο μέγεθος προβλήματος) δίνει λύση που πλησιάζει περισσότερο στη βέλτιστη (την οποία φυσικά δεν γνωρίζουμε!!!) Σε μερικούς ευρετικούς αλγορίθμους η μέγιστη δυνατή απόκλιση της αποκτηθείσας λύσης από τη βέλτιστη μπορεί να εκφραστεί με μια συνάρτηση των μεταβλητών που προσδιορίζουν το πρόβλημα. Δεν υπάρχουν γενικοί κανόνες για την ανάπτυξη ευρετικών αλγορίθμων

147 Minimum Chromatic Number
Ο χρωματικός αριθμός ενός γραφήματος G(V,E) είναι ο ελάχιστος αριθμός χρωμάτων που απαιτούνται για τον χρωματισμό του γραφήματος έτσι ώστε κάθε ζεύγος κορυφών που συνδέονται με μια ακμή να χρωματίζεται διαφορετικά. Το πρόβλημα της εύρεσης του χρωματικού αριθμού είναι NP-complete για γενικού τύπου γραφήματα

148 it is very difficult for me to check whether you are right.
If you tell me that this graph is 3-colourable, it is very difficult for me to check whether you are right.

149 But if you tell me that this graph is 3-colorable and
give me a solution, it is very easy for me to verify whether you are right. Loosely speaking, problems that are difficult to compute, but easy to verify are known as Non-deterministic Polynomial.

150 Chromatic Number

151 Chromatic Number Observation: Each color class is an independent set

152 Maximum Independent Set (MIS)
Ένα ανεξάρτητο σύνολο (independent set) ενός γραφήματος G(V,E) είναι ένα σύνολο κορυφών V’ V τέτοιο ώστε κανένα ζεύγος κορυφών του V’ δεν θα συνδέεται με ακμή To MIS πρόβλημα είναι η εύρεση ενός αριθμού, του αριθμού ανεξαρτησίας ενός γραφήματος δηλ. το μέγεθος του μέγιστου ανεξάρτητου συνόλου στο γράφημα. Το πρόβλημα είναι NP-complete για γενικού τύπου γραφήματα.

153 Παράδειγμα - 1 Δίνεται το γράφημα G=(V,E,W). Να βρεθεί ένα ελάχιστο μείζον ανεξάρτητο υποσύνολό του. Ένα ελάχιστο μείζον ανεξάρτητο υποσύνολο ενός γραφήματος G με βάρη είναι ένα υποσύνολο S του V που είναι μείζον ανεξάρτητο και το άθροισμα των βαρών που αντιστοιχούν στις κορυφές του S να είναι ελάχιστο.

154 2 (4) 1 (3) 4 (5) 6 (2) 3 (8) 5 (7)

155 Ανάθεση εργασιών σε μηχανές
Έστω M1,M2,…Mm m όμοιες μηχανές και Ε1, Ε2,…,Εn (n>>m) διαφορετικές εργασίες που μπορούν να εκτελεσθούν και να ολοκληρωθούν σε οποιαδήποτε μηχανή. Η εργασία Εi χρειάζεται χρόνο ti για να ολοκληρωθεί. Κάθε εργασία πρέπει να ολοκληρωθεί για να ξεκινήσει μια επόμενη. Οι m μηχανές μπορούν να λειτουργήσουν ταυτόχρονα. Ζητείται να εντοπισθεί η διατεταγμένη ακολουθία εργασιών ώστε ο συνολικός χρόνος ολοκλήρωσης όλων των εργασιών να είναι ελάχιστος. Αριθμητικό παράδειγμα m=2, n=5, t1=4, t2=1, t3=4, t4=2, t5=5

156 Παράλληλοι αλγόριθμοι
Ένας παράλληλος αλγόριθμος συνίσταται από ένα σύνολο διαδικασιών που εφαρμόζονται ταυτόχρονα με σκοπό τη γρηγορότερη ολοκλήρωσή τους. Για να επιλυθεί ένα πρόβλημα με παράλληλο αλγόριθμο πρέπει να διαμεριστεί σε ανεξάρτητες διαδικασίες και κάθε διαδικασία να εφαρμόζεται σε διαφορετικό επεξεργαστή. Η σύνθεση των αποτελεσμάτων που θα προκύψουν σε κάθε επεξεργαστή δίνει τη λύση του αρχικού προβλήματος. Αυτό επιβάλλει την ύπαρξη συστήματος με πολλαπλούς επεξεργαστές, συγκεκριμένη αρχιτεκτονική του δικτύου διασύνδεσής τους, ύπαρξη κοινής μνήμης κλπ

157 Παραδείγματα προβλημάτων για παράλληλη επεξεργασία
Sparse Matrix Multiplication Sparse matrices, are matrices in which most elements are zero. To save space and running time it is critical to only store the nonzero elements. A standard representation of sparse matrices in sequential languages is to use an array with one element per row each of which contains a linked-list of the nonzero values in that row along with their column number. A similar representation can be used in parallel.

158 Fast Fourier Transformations (FFT)
Finding the k-th smallest element of a set Find all the prime numbers less than n

159 Παρατηρήσεις Όλοι οι σειριακοί αλγόριθμοι δεν προσαρμόζονται σε αντίστοιχο παράλληλο. Ο βαθμός πολυπλοκότητας χρόνου για την επίλυση ενός προβλήματος με παράλληλη επεξεργασία μπορεί να βελτιωθεί κατά ένα παράγοντα m, όπου m το πλήθος των επεξεργαστών. Τι προκύπτει για τους αλγόριθμους εκθετικού χρόνου με την παράλληλη επεξεργασία;

160 Classes P & NP Resource : The Design & Analysis of Algorithms, Anany Levitin, PEARSON / Addison Wesley

161 Classifying Problem Complexity
Is the problem tractable, i.e., is there a polynomial-time (O(p(n)) algorithm that solves it? Possible answers: yes (give example polynomial time algorithms) no because it’s been proved that no algorithm exists at all (e.g., Turing’s halting problem) because it’s been be proved that any algorithm for it would require exponential time unknown. Try to classify their (relative) complexity using reduction

162 Problem Types: Optimization and Decision
Optimization problem: find a solution that maximizes or minimizes some objective function Decision problem: answer yes/no to a question Many problems have decision and optimization versions. E.g.: traveling salesman problem optimization: find Hamiltonian cycle of minimum length decision: find Hamiltonian cycle of length  L Decision problems are more convenient for formal investigation of their complexity.

163 Class P P: the class of decision problems that are solvable in O(p(n)) time, where p(n) is a polynomial of problem’s input size n Examples: searching element uniqueness graph connectivity graph acyclicity primality testing

164 Class NP NP (nondeterministic polynomial): class of decision problems whose proposed solutions can be verified in polynomial time = solvable by a nondeterministic polynomial algorithm A nondeterministic polynomial algorithm is an abstract two-stage procedure that: generates a solution of the problem (on some input) by guessing checks whether this solution is correct in polynomial time By definition, it solves the problem if it’s capable of generating and verifying a solution on one of its tries Why this definition? led to development of the rich theory called “computational complexity” Big (million dollar) question: P = NP ?


Κατέβασμα ppt "Υπολογιστική Πολυπλοκότητα (Computational Complexity)"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google