ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 2

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 2"

Transcript

1 Αλγόριθμοι 51 ΚΕΦΑΛΑΙΟ 2 ΑΛΓΟΡΙΘΜΟΙ 2.1 Πολυπλοκότητα Αλγορίθμων 2.2 Δομές Δεδομένων 2.3 Διερευνήσεις Γραφημάτων 2.4 Τοπολογική Ταξινόμηση και Μεταβατικά Τουρνουά Προαπαιτούμενη Γνώση Γνώσεις ενός τυπικού προπτυχιακού μαθήματος Δομών Δεδομένων και καλή γνώση βασικών θεμάτων Σχεδίασης και Ανάλυσης Αλγορίθμων.

2 52 Αλγοριθμική Θεωρία Γραφημάτων 2.1 Πολυπλοκότητα Αλγορίθμων Ένας επιστημονικός τομέας με εντυπωσιακά γρήγορη ανάπτυξη τις τελευταίες δεκαετίες είναι αυτός της ανάλυσης της πολυπλοκότητας αλγορίθμων (complexity analysis of algorithms). Γενικά, σε κάθε επιστήμη, ο όρος αλγόριθμος (algorithm) χρησιμοποιείται για να περιγράψει μία βήμα-προς-βήμα διαδικασία για την επίλυση ενός προβλήματος. Ειδικότερα στην Πληροφορική, ο όρος χρησιμοποιείται για να περιγράψει μία βήμα-προς-βήμα, πεπερασμένη (finite), αποτελεσματική (affective) και κατάλληλη για υλοποίηση (implementation) μέθοδο επίλυσης του προβλήματος. Είναι ενδιαφέρον να σημειώσουμε ότι οι αλγόριθμοι προϋπάρχουν των Η/Υ, καθώς είναι γνωστό ότι έχουν διατυπωθεί αποτελεσματικοί αλγόριθμοι για πλήθος προβλημάτων εδώ και χρόνια. Κλασικό παράδειγμα ο αλγόριθμος του Ευκλείδη για τον υπολογισμό του μέγιστου κοινού διαιρέτη (greater common divisor) δύο ακέραιων αριθμών. Περιγράφοντας την έννοια του αλγόριθμου ως μία βήμα-προς-βήμα διαδικασία για την επίλυση ενός προβλήματος, γεννιούνται άμεσα δύο εύλογα ερωτήματα στα οποία θα πρέπει να απαντήσουμε. Το πρώτο σχετίζεται με τη δυνατότητα να συγκρίνουμε τις σχετικές αποδόσεις διαφόρων αλγορίθμων που επιλύουν το ίδιο πρόβλημα, ενώ το δεύτερο σχετίζεται με τη δυνατότητα να γνωρίζουμε αν ένα πρόβλημα είναι εγγενώς δυσκολότερο να λυθεί από ένα άλλο πρόβλημα. Επιπρόσθετα, θα μπορούσαμε να ισχυριστούμε ότι για κάθε (επιλύσιμο) πρόβλημα υπάρχει ένα σύνολο αλγορίθμων που το επιλύουν,. Με άλλα λόγια, για το πρόβλημα υπάρχει αλγόριθμος,, τέτοιος ώστε κάθε στιγμιότυπο του ή, ισοδύναμα, για κάθε είσοδο ο αλγόριθμος δίδει σωστό αποτέλεσμα. Έχοντας αυτό ως δεδομένο, ας επεκτείνουμε τα δύο προηγούμενα ερωτήματα κάνοντας παρατηρήσεις όσον αφορά στην αλγοριθμική επίλυση ενός προβλήματος. Έστω ότι διαθέτουμε δύο αλγορίθμους Α και Β που επιλύουν το ίδιο πρόβλημα. Είναι φυσικό να δημιουργούνται ερωτήματα, όπως: Είναι ο αλγόριθμος αποτελεσματικότερος του αλγόριθμου Με άλλα λόγια, επιλύει ο αλγόριθμος το πρόβλημα σε λιγότερο χρόνο από τον αλγόριθμο ; Πόσο θα αυξηθεί ο χρόνος εκτέλεσης του αλγόριθμου ή, ισοδύναμα, ο χρόνος επίλυσης του προβλήματος, εάν διπλασιάσουμε τα δεδομένα εισόδου του ; Μπορώ να χρησιμοποιήσω τον αλγόριθμο, όταν τα δεδομένα εισόδου του προβλήματος Π είναι πολύ μεγάλα; Υπάρχει αλγόριθμος (ή μπορώ να σχεδιάσω κάποιον) που επιλύει το πρόβλημα σε δεδομένο χρόνο ; Στα ερωτήματα αυτά μπορούμε να έχουμε απαντήσεις. Μπορούμε ακόμη να αποδείξουμε ότι είναι πάρα πολύ δύσκολο για έναν υπολογιστή να λύσει κάποιο πρόβλημα μέσα σε εύλογο χρονικό διάστημα. Επίσης, μπορούμε να έχουμε μία εκτίμηση του κόστους (κυρίως σε χρόνο και χώρο) που προκύπτει από την εφαρμογή των διαφόρων αλγορίθμων, η οποία στον τομέα των αλγορίθμων χαρακτηρίζεται αναγκαία, μεγάλης σημασίας και με πολλές και ποικίλες ερευνητικές προεκτάσεις. Στη συνέχεια, ας εστιάσουμε την προσοχή μας στις διαφορές μεταξύ των όρων υπολογισιμότητα (computability) και υπολογιστική πολυπλοκότητα (computational complexity), οι οποίοι

3 Αλγόριθμοι 53 προσδιορίζουν μαζί με τις κανονικές γλώσσες (formal languages) δύο τομείς που αποτελούν τους βασικούς πυλώνες της θεωρίας υπολογισμού. Υπολογισιμότητα. Η υπολογισιμότητα απαντά κυρίως σε ερωτήματα ύπαρξης: Υπάρχει αλγόριθμος που να επιλύει το πρόβλημα ; Αποτελεί έκπληξη για πολλούς φοιτητές των μαθηματικών και της πληροφορικής το γεγονός ότι κάποιος μπορεί να αποδείξει μαθηματικά ότι ένας υπολογιστής δεν μπορεί να κάνει τα πάντα. Ένα παράδειγμα αποτελεί η μη-επιλυσιμότητα του προβλήματος του τερματισμού (halting problem). Γενικά μιλώντας, το πρόβλημα του τερματισμού μας λέει ότι: είναι αδύνατον κάποιος, για παράδειγμα ένας καθηγητής να γράψει ένα πρόγραμμα που να δέχεται ως δεδομένα εισόδου οποιαδήποτε προγραμματιστική εργασία ενός φοιτητή του και να απαντά Ναι, το πρόγραμμα αυτού του φοιτητή θα τερματίσει σε πεπερασμένο χρόνο ή, αντίστοιχα, Όχι, το πρόγραμμα αυτού του φοιτητή (έχει ένα ατέρμονο βρόγχο και) θα εκτελείται για πάντα. Η απόδειξη ότι ένα πρόβλημα είναι υπολογίσιμο (computable) επιτυγχάνεται συνήθως, αλλά όχι πάντα, με τη διατύπωση ενός αλγορίθμου που τερματίζει δίνοντας σωστή απάντηση για οποιαδήποτε είσοδο. Η ποσότητες των πόρων (χρόνος και χώρος) που χρησιμοποιούνται για τον υπολογισμό, αν και πεπερασμένες, θεωρούνται απεριόριστες. Επομένως, η υπολογισιμότητα βοηθά στην κατανόηση των δυνατοτήτων και των περιορισμών των υπολογιστικών μηχανών που μπορεί να κατασκευάσει ο άνθρωπος, χωρίς να λαμβάνονται υπόψη οι περιορισμοί των διαθέσιμων πόρων. Υπολογιστική Πολυπλοκότητα. Από την άλλη πλευρά, η υπολογιστική πολυπλοκότητα αναφέρεται κυρίως σε ποσοτικά ζητήματα της επίλυσης προβλημάτων. Πιο συγκεκριμένα, η υπολογιστική πολυπλοκότητα ασχολείται με το τι μπορεί να υπολογιστεί μέσα σε μία πρακτική (ή λογική) ποσότητα χρόνου και χώρου, υπολογίζοντας τις ποσότητες του χρόνου και του χώρου είτε με ακρίβεια είτε μέσω του ορισμού άνω και κάτω φραγμάτων. Η πολυπλοκότητα καθορίζεται σε τρία επίπεδα: του προβλήματος, του αλγόριθμου και της υλοποίησης. Ιδανικά, επιθυμούμε να έχουμε τον καλύτερο αλγόριθμο που επιλύει το πρόβλημά μας, καθώς και την καλύτερη υλοποίηση του. Για τη μελέτη της αποτελεσματικότητας (efficiency) των αλγόριθμων χρειαζόμαστε ένα μοντέλο υπολογισμού (model of computation). Ιστορικά, το πρώτο μοντέλο που προτάθηκε ήταν η μηχανή Turing (Turing machine). Η απλότητα των μηχανών Turing τις κάνει πολύ χρήσιμες για μία υψηλού-επιπέδου μελέτη της υπολογιστικής πολυπλοκότητας, αλλά δεν είναι αρκετά ρεαλιστικές, ώστε να επιτρέπουν μία ακριβή ανάλυση πρακτικών αλγορίθμων. Για ένα τέτοιο σκοπό, ένα αποτελεσματικότερο μοντέλο είναι η μηχανή τυχαίας-προσπέλασης (random-access machine or RAM). Και τα δύο αυτά μοντέλα, μηχανή Turing και μηχανή τυχαίας-προσπέλασης, μοιράζονται δύο ίδιες ιδιότητες: (1) είναι ακολουθιακά (sequential), δηλαδή εκτελούν ένα μόνο υπολογιστικό βήμα στη μονάδα του χρόνου, και (2) είναι αιτιοκρατικά (deterministic), δηλαδή η μελλοντική συμπεριφορά τους σε χρόνο (future behavior) καθορίζεται μοναδικά από την κατάσταση τους στο χρόνο (present configuration).

4 54 Αλγοριθμική Θεωρία Γραφημάτων Ένα ερώτημα που τίθεται είναι εάν μία μηχανή τυχαίας-προσπέλασης μπορεί να χειρίζεται αριθμούς οποιουδήποτε μεγέθους σε σταθερό χρόνο εκτελώντας ή να εκτελεί παράλληλους υπολογισμούς κωδικοποιώντας αρκετούς αριθμούς σε ένα. Θα θεωρήσουμε ότι μία μηχανή τυχαίας-προσπέλασης χειρίζεται ακέραιους αριθμούς μεγέθους το πολύ, όπου μία μικρή σταθερά, και επιτρέπει συγκρίσεις, προσθέσεις και μερικές φορές πολλαπλασιασμούς επί των τιμών εισόδου ως λειτουργίες επάνω σε πραγματικούς αριθμούς χωρίς ιδιαίτερες και έξυπνες κωδικοποιήσεις. Επομένως, όλες οι λειτουργίες μίας μηχανής τυχαίας-προσπέλασης θεωρούμε ότι εκτελούντα σε σταθερό χρόνο. Μερικές φορές αναφερόμαστε στις λειτουργίες αυτές ως βασικές πράξεις (elementary operations). Επομένως, επιλέγουμε τη μηχανή τυχαίας-προσπέλασης ως μοντέλο υπολογισμού και την βασική πράξη ως τη μονάδα μέτρησης της αποτελεσματικότητας (πολυπλοκότητα) ενός αλγόριθμου. Ένας αλγόριθμος θα λέγεται αποτελεσματικός, εάν ελαχιστοποιεί παραμέτρους, όπως: χρόνος εκτέλεσης, απαιτούμενη μνήμη, βαθμός δυσκολίας υλοποίησης, επικοινωνία (σε κατανεμημένα συστήματα). Θα εστιάσουμε κυρίως στην παράμετρο που αφορά στο χρόνο εκτέλεσης ενός αλγόριθμου (οι περισσότεροι αλγόριθμοι που θα μελετήσουμε απαιτούν μνήμη που φράσσεται από συνάρτηση γραμμική ως προς το μέγεθος της εισόδου του αλγόριθμου). Γενικά, ένας αλγόριθμος με μικρό χρόνο εκτέλεσης - θα λέμε ότι - έχει χαμηλού-επιπέδου πολυπλοκότητα (low-lever complexity) ή μικρή πολυπλοκότητα χρόνου, ενώ αντίθετα ένας με μεγάλο χρόνο εκτέλεσης - θα λέμε ότι - έχει υψηλού-επιπέδου πολυπλοκότητα (high-lever complexity) ή μεγάλη πολυπλοκότητα. Για τον υπολογισμό ή, ισοδύναμα, την εκτίμηση της πολυπλοκότητας ενός αλγόριθμου, υπάρχουν δύο κυρίως προσεγγίσεις: η εμπειρική (posteriori) και η θεωρητική (priori). Εμπειρική Πολυπλοκότητα. Η εμπειρική πολυπλοκότητα ενός αλγόριθμου υπολογίζεται μετρώντας το χρόνο εκτέλεσης του αλγόριθμου σε συγκεκριμένη μηχανή. Για τον υπολογισμό της εμπειρικής πολυπλοκότητας ενός αλγόριθμου εκείνο που συνήθως κάνουμε είναι: κωδικοποιούμε τον αλγόριθμο σε μία γλώσσα προγραμματισμού, τον εκτελούμε σε μία υπολογιστική μηχανή με πολλά και διάφορα μεγέθη εισόδων και μετρούμε το χρόνο εκτέλεσης του αλγόριθμου στη συγκεκριμένη μηχανή (χρόνος μηχανής). Θεωρητική Πολυπλοκότητα. Αντίθετα, η θεωρητική πολυπλοκότητα καθορίζει μαθηματικά το χρόνο που απαιτεί ο αλγόριθμος για την εκτέλεσή του, ως συνάρτηση του μεγέθους των εξεταζόμενων εισόδων του. Το πλεονέκτημα της θεωρητικής προσέγγισης του υπολογισμού της πολυπλοκότητας ενός αλγόριθμου είναι ότι: δεν εξαρτάται από τη μηχανή, δεν εξαρτάται από τη γλώσσα προγραμματισμού, και δεν εξαρτάται από τις ικανότητες του προγραμματιστή. Ως μονάδα έκφρασης της θεωρητικής πολυπλοκότητας χρόνου ενός αλγόριθμου θα χρησιμοποιήσουμε τη βασική πράξη. Για την εκτίμηση της πολυπλοκότητας θα χρειαστούμε μόνο το πλήθος των βασικών πράξεων που εκτελούνται από έναν αλγόριθμο και όχι τον ακριβή χρόνο που απαιτούν κάθε μία από τις πράξεις αυτές.

5 Αλγόριθμοι 55 Για παράδειγμα, ο υπολογισμός του εσωτερικού γινομένου δίδεται από τον επόμενο τύπο (αλγόριθμο) και πρόγραμμα σε ψευδοκώδικα: z 0; για i 1 έως n με βήμα 1 εκτέλεσε t x(i) y(i); z z + t; τέλος Είναι πολύ εύκολο να υπολογίσουμε το χρόνο εκτέλεσης του αλγόριθμου, μετρώντας το πλήθος των βασικών πράξεων του αντίστοιχου προγράμματος. Θεωρώντας ως βασική πράξη την ανάθεση τιμής σε μεταβλητή (assignment), έχουμε:. Εάν, και είναι ο (σταθερός) χρόνος εκτέλεσης των τεσσάρων αυτών εντολών ανάθεσης σε μία μηχανή, τότε η πολυπλοκότητα χρόνου του αλγόριθμου είναι:, η οποία γράφεται, όπου Είναι προφανές ότι το πλήθος των βασικών πράξεων ενός αλγόριθμου εξαρτάται άμεσα από το μέγεθος της εισόδου του. Θα συμβολίζουμε με το μέγεθος της εισόδου ενός αλγόριθμου, δηλαδή. Είδαμε ότι όλες οι βασικές πράξεις εκτελούνται σε σταθερό χρόνο. Από την αρχή της σταθερότητας ισχύει ότι: Δύο διαφορετικές εφαρμογές (implementations) του ίδιου αλγόριθμου, δηλαδή όταν εκτελούνται σε διαφορετικές μηχανές, όταν γράφονται σε διαφορετικές γλώσσες προγραμματισμού, όταν κωδικοποιούνται από διαφορετικούς προγραμματιστές κ.λπ., δεν διαφέρουν στην αποτελεσματικότητά τους περισσότερο από ένα σταθερό πολλαπλάσιο. Αυτό σημαίνει ότι, εάν είναι η αποτελεσματικότητα μίας εφαρμογής του αλγόριθμου και η αποτελεσματικότητα μίας άλλης εφαρμογής του ίδιου αλγόριθμου, τότε ισχύει, όπου μία σταθερά. Εστιάζοντας στην πολυπλοκότητα χρόνου ενός αλγόριθμου Α, ισχύει ότι, εάν και είναι οι χρόνοι εκτέλεσης δύο διαφορετικών εφαρμογών του αλγόριθμου Α, όπου είναι το μέγεθος της εισόδου, τότε υπάρχει πάντα μία σταθερά c, τέτοια ώστε, με αρκετά μεγάλο. Επιπρόσθετα, ισχύει ότι η πολυπλοκότητα χρόνου ενός αλγόριθμου είναι συνάρτηση του μεγέθους της εισόδου του, δηλαδή, όπου το μέγεθος της εισόδου. Αναλύοντας την πολυπλοκότητα χρόνου ενός αλγόριθμου, διακρίνουμε τις εξής δύο περιπτώσεις: Ανάλυση Χειρίστης-περίπτωσης (worst-case analysis) και Ανάλυση Μέσης-περίπτωσης (averagecase analysis). Χειρίστη-περίπτωση. Έστω είναι το σύνολο όλων των εισόδων μεγέθους. Για κάθε είσοδο, ας είναι το πλήθος των βασικών πράξεων που εκτελεί ο αλγόριθμος με είσοδο, δηλαδή :. Ορίζουμε την πολυπλοκότητα χρόνου χειρίστης-περίπτωσης του αλγόριθμου, συνήθως τη συμβολίζουμε, ως εξής: Μέση-περίπτωση. Έστω ότι μπορούμε να αντιστοιχίσουμε μία πιθανότητα σε κάθε είσοδο, έτσι ώστε να μας δίνει την πιθανότητα εμφάνισης της εισόδου. Ορίζουμε την

6 56 Αλγοριθμική Θεωρία Γραφημάτων πολυπλοκότητα χρόνου, ως εξής: μέσης-περίπτωσης του αλγόριθμου, συνήθως τη συμβολίζουμε Γενικά, η ανάλυση χειρίστης περίπτωσης δεν απαιτεί κάποια γνώση για τη μορφή της εισόδου και ισχύει για κάθε είσοδο. Αυτή η ανάλυση, αν και μας δίδει μία απαισιόδοξη εκτίμηση της πολυπλοκότητας των αλγορίθμων μας, ιδίως εάν η είσοδος χειρίστης περίπτωσης εμφανίζεται σπάνια, ωστόσο μας παρέχει μία ισχυρή εγγύηση για την αποτελεσματικότητα (πολυπλοκότητα) ενός αλγορίθμου και, όπως θα δούμε στη συνέχεια, ένα άνω φράγμα επίλυσης των προβλημάτων μας. Αντίθετα, η ανάλυση μέσης (ή αναμενόμενης) περίπτωσης εκτιμά τη μέση πολυπλοκότητα για όλες τις δυνατές εισόδους του αλγόριθμου. Η ανάλυση αυτή απαιτεί γνώση της κατανομής της εισόδου. Όταν η κατανομή δεν είναι γνωστή (κάτι που συμβαίνει συχνά), συνήθως υποθέτουμε ομοιόμορφη κατανομή. Έστω ότι έχουμε δύο αλγορίθμους Α και Β με τις ακόλουθες πολυπλοκότητες χειρίστηςπερίπτωσης και, αντίστοιχα: και Εύκολα μπορεί κάποιος να δει ότι ισχύει, για. Τότε, ο αλγόριθμος Α είναι αποτελεσματικότερος του αλγορίθμου Β. Όμως, χωρίς δυσκολία παρατηρούμε ότι για μεγάλες τιμές του (μέγεθος εισόδου), στο παράδειγμά μας για, ο αλγόριθμος Β είναι πολύ πιο αποτελεσματικός από τον αλγόριθμο Α. Από το προηγούμενο παράδειγμα γίνεται σαφές ότι χρειαζόμαστε ένα τρόπο να εξασφαλίσουμε μερικές κατηγορίες συναρτήσεων οι οποίες εξαλείφουν μη-σημαντικούς παράγοντες, όπως σταθερές, μικρού μεγέθους εισόδους κ.λπ. Ορίσουμε τρεις κατηγορίες τέτοιων συναρτήσεων και χρησιμοποιούμε τη συντομογραφία και, που συχνά ονομάζουμε ασυμπτωτικό συμβολισμό (asymptotic notation), για να εκφράσουμε την ασυμπτωτική πολυπλοκότητα (asymptotic complexity) ενός αλγόριθμου: Εάν και είναι δύο συναρτήσεις μη-αρνητικών μεταβλητών τότε γράφουμε: εάν υπάρχει θετική σταθερά, τέτοια ώστε, για όλες τις τιμές των μεταβλητών εάν, και, εάν και. Εύκολα μπορεί να αποδειχθεί ότι ισχύουν οι εξής ιδιότητες: 1. Μεταβατικότητα: και, 2. Αυτοπάθεια:, και 3. Συμμετρία:.

7 Αλγόριθμοι 57 Σύμφωνα με την αρχή της σταθερότητας, εάν μία εφαρμογή ενός αλγόριθμου εκτελείται σε χρόνο, τότε οποιαδήποτε άλλη εφαρμογή του ίδιου αλγόριθμου εκτελείται σε χρόνο τάξεως, όπου είναι το μέγεθος της εισόδου ή, ισοδύναμα, το μέγεθος του προβλήματος. Θα λέμε ότι ένα τέτοιος αλγόριθμος εκτελείται σε χρόνο τάξης, εάν η συνάρτηση είναι τέτοια ώστε: για αρκετά μεγάλο. Γενικά, εκφράζουμε την τάξη του χρόνου εκτέλεσης ενός αλγόριθμου με την απλούστερη δυνατή συνάρτηση για την οποία ισχύει. Ορίζουμε δύο βασικές κατηγορίες αλγορίθμων σε σχέση με το χρόνο εκτέλεσής τους: την κατηγορία των πολυωνυμικών (polynomial) και αυτή των εκθετικών (exponential) αλγορίθμων. Πολυωνυμικοί Αλγόριθμοι. Ένας αλγόριθμος λέγεται πολυωνυμικός, εάν έχει χρόνο εκτέλεσης, όπου είναι μία θετική σταθερά. Εκθετικοί Αλγόριθμοι. Ένας αλγόριθμος λέγεται εκθετικός, εάν έχει χρόνο εκτέλεσης, όπου. Εάν, τότε και ο αλγόριθμος ονομάζεται γραμμικός (linear). Επίσης, εάν, όπου είναι μία θετική σταθερά, τότε ο αλγόριθμος ονομάζεται λογαριθμικός. Σε όλο το σύγγραμμα, εκτός εάν προσδιορίζεται διαφορετικά, ισχύει. Με τον όρο αποτελεσματικός αλγόριθμος (efficient algorithm) εννοούμε τον αλγόριθμο του οποίου ο χρόνος εκτέλεσης στη χειρίστη περίπτωση φράσσεται άνω από μία πολυωνυμική συνάρτηση (πολυωνυμικός αλγόριθμος). Για κάθε άλλο αλγόριθμο χρησιμοποιούμε τον όρο μηαποτελεσματικός αλγόριθμος (inefficient algorithm). Στο Σχήμα 2.1 η τιμή της συνάρτησης εκφράζει το χρόνο εκτέλεσης (πολυπλοκότητα) ενός αλγόριθμου. Εδώ γίνεται εμφανές ότι ένας μη-αποτελεσματικός αλγόριθμος, για παράδειγμα ένας αλγόριθμος εκθετικής πολυπλοκότητας είναι απαγορευτικός για πρακτικές εφαρμογές, καθώς ο χρόνος για την επίλυση ενός προβλήματος μεγέθους θα μπορούσε να είναι μεγαλύτερος από αιώνες. Σχήμα Εκτίμηση χρόνου εκτέλεσης αλγορίθμων διαφόρων πολυπλοκοτήτων με διάφορες τιμές εισόδου. Κάθε υπολογιστικό βήμα απαιτεί ένα μικροδευτερόλεπτο (microsecond).

8 58 Αλγοριθμική Θεωρία Γραφημάτων Ένα πρόβλημα Π το ονομάζουμε ευχείριστο (tractable), εάν υπάρχει αποτελεσματικός (πολυωνυμικός) αλγόριθμος που το επιλύει, ενώ ονομάζουμε δυσχείριστο ή δυσεπίλυτο (intractable) το Π, εάν δεν υπάρχει τέτοιος αλγόριθμος. Αναφέρουμε ότι η κλάση P (Polynomial) περιλαμβάνει τα προβλήματα που επιδέχονται λύση πολυωνυμικού χρόνου (δηλαδή υπάρχουν πολυωνυμικοί αλγόριθμοι που τα επιλύουν). Σχήμα Το φάσμα της υπολογιστικής πολυπλοκότητας. Το Σχήμα 2.2 αποτυπώνει αυτό που ονομάζουμε φάσμα υπολογιστικής πολυπλοκότητας σε μία γραφική παράσταση διαφόρων προβλημάτων σε σχέση με την πολυπλοκότητα του καλύτερου γνωστού αλγόριθμου που τα επιλύει. Υπάρχουν δύο διακριτές περιοχές που περιέχουν τα ευχείριστα και τα δυσχείριστα ή δυσεπίλυτα προβλήματα. Στη κορυφή της γραφικής παράστασης βρίσκονται τα μη-επιλύσιμα (undecidable) προβλήματα, για τα οποία δεν υπάρχει κάποιος αλγόριθμος που τα επιλύει. Πιο κάτω βρίσκονται τα προβλήματα για τα οποία υπάρχουν αλγόριθμοι που τα επιλύουν, αλλά είναι μη-αποτελεσματικοί, με χρόνους εκτέλεσης εκθετικούς (exponential) ή υπερεκθετικούς (superexponential). Όλα αυτά τα προβλήματα ορίζουν την περιοχή των προβλημάτων με υψηλού-επιπέδου πολυπλοκότητα. Στην περιοχή αυτή ανήκει μία σημαντική κατηγορία προβλημάτων, που είναι γνωστά ως NP-πλήρη (NP-complete) προβλήματα. Αναφέρουμε εδώ, κυρίως για μία αρχική εισαγωγή στην NP-πληρότητα, ότι στην περιοχή των προβλημάτων με υψηλού-επιπέδου πολυπλοκότητα η έμφαση εστιάζεται στην απόδειξη μηπολυωνυμικών κάτω φραγμάτων (non-polynomial lower bounds), που αφορούν στο χρόνο και χώρο διαφόρων προβλημάτων της (το υπολογιστικό μοντέλο που συνήθως χρησιμοποιούμε είναι η μηχανή Turing). Μεταξύ των προβλημάτων για τα οποία έχουμε αποδείξει εκθετικά κάτω φράγματα, υπάρχουν πολλά προβλήματα βελτιστοποίησης, που είναι πολύ ευκολότερα από τα

9 Αλγόριθμοι 59 υπόλοιπα, και είναι αυτά που ανήκουν στην κλάση NP (περιλαμβάνει όλα τα προβλήματα που επιλύονται πολυωνυμικά σε μία μη-αιτιοκρατική μηχανή Turing). Τώρα, μεταξύ των προβλημάτων της κλάσης NP υπάρχουν αυτά που είναι τα δυσκολότερα, με την έννοια ότι, εάν ένα από αυτά έχει αλγόριθμο πολυωνυμικού χρόνου, τότε κάθε πρόβλημα στην κλάση NP θα έχει τέτοιο αλγόριθμο. Τα προβλήματα αυτά είναι τα γνωστά NP-πλήρη προβλήματα. Τα προβλήματα που θα εξετάσουμε στο πλαίσιο αυτού του συγγράμματος, έχουν όλα αποτελεσματικούς αλγορίθμους και, επομένως, ανήκουν στην περιοχή των προβλημάτων με χαμηλού-επιπέδου πολυπλοκότητα (η περιοχή αυτή αποτυπώνεται στο κάτω ήμισυ της γραφικής παράστασης του Σχήματος 2.2). Για πολλά από αυτά τα προβλήματα δεν υπάρχουν κάτω φράγματα και η έμφαση δίδεται στη συνεχή επινόηση και διατύπωση νέων και ολοένα ταχύτερων αλγορίθμων με την εκμετάλλευση κατάλληλων δομών δεδομένων, έξυπνες αλγοριθμικές τεχνικές και ιδιότητες δομής αυτών καθ αυτών των προβλημάτων (π.χ. τέλεια γραφήματα, επίπεδα γραφήματα κ.λπ.). Σχήμα Εξέλιξη της πολυπλοκότητας του προβλήματος της επιπεδικότητας. Στο Σχήμα 2.3 δείχνουμε την εξέλιξη της πολυπλοκότητας του προβλήματος της επιπεδικότητας (planarity) διαχρονικά από το 1930 έως το Οι πολυπλοκότητες αναφέρονται σε αλγορίθμους για την αναγνώριση ενός επιπέδου γραφήματος τάξης (από το 1976 έως σήμερα η πολυπλοκότητα του προβλήματος δεν επιδέχεται περαιτέρω βελτίωση, γιατί;). Το πρόβλημα αυτό θα μελετηθεί διεξοδικά στο Κεφάλαιο 7 του συγγράμματος. Προβλήματα Απόφασης. Ένα πρόβλημα απόφασης (decision problem) είναι το πρόβλημα εκείνο το οποίο απαιτεί απλώς ένα ναι ή ένα όχι, προκειμένου να απαντηθεί. Ένα στιγμιότυπο (instance) ενός προβλήματος Π είναι ένας καθορισμός συγκεκριμένων τιμών για τις παραμέτρους του. Ένας αλγόριθμος για το πρόβλημα Π, όπως αναφέραμε και πριν, είναι μία βήμα-προς-βήμα διαδικασία που, όταν εφαρμοστεί σε οποιοδήποτε στιγμιότυπο (instance) του προβλήματος Π, παράγει μία λύση. Συνήθως μπορούμε να αναδιατυπώσουμε ένα πρόβλημα βελτιστοποίησης Π ως ένα πρόβλημα απόφασης Π *, το οποίο Π * αρχικά φαίνεται να μπορεί να επιλυθεί ευκολότερα σε σχέση με το

10 60 Αλγοριθμική Θεωρία Γραφημάτων αρχικό Π, ωστόσο αποδεικνύεται τελικά ότι η λύση του είναι το ίδιο δύσκολη με αυτή του Π. Ας δούμε τις εξής δύο εκδοχές του προβλήματος χρωματισμού γραφήματος. (Α) (Β) Χρωματισμός Γραφήματος (Πρόβλημα Βελτιστοποίησης) Στιγμιότυπο: Ένα μη κατευθυνόμενο γράφημα. Ερώτηση: Ποιός είναι ο μικρότερος αριθμός χρωμάτων που απαιτείται για τον κατάλληλο χρωματισμό (proper coloring) του ; Χρωματισμός Γραφήματος (Πρόβλημα Απόφασης) Στιγμιότυπο: Ένα μη κατευθυνόμενο γράφημα και ένας ακέραιος. Ερώτηση: Υπάρχει ένας -χρωματισμός ( -coloring) του ; Για ένα γράφημα n κόμβων το πρόβλημα βελτιστοποίησης μπορεί να επιλυθεί εφαρμόζοντας φορές έναν αλγόριθμο για το πρόβλημα απόφασης. Εάν τα προβλήματα απόφασης επιλυθούν ακολουθιακά, τότε ο απαιτούμενος χρόνος για την επίλυση του προβλήματος βελτιστοποίησης είναι μεγαλύτερος αυτού για την επίλυση του προβλήματος απόφασης κατά το πολύ ένα παράγοντα. Ωστόσο, εάν τα προβλήματα απόφασης επιλυθούν ταυτόχρονα (παράλληλα), τότε ο χρόνος που απαιτείται και για τις δύο εκδοχές των προβλημάτων (βελτιστοποίησης και απόφασης) είναι σχεδόν ίδιος. Άνω και Κάτω Φράγματα. Είναι σύνηθες να εκφράζουμε την πολυπλοκότητα ενός αλγόριθμου ως συνάρτηση του μεγέθους της εισόδου. Λέμε, λοιπόν, ότι ένας αλγόριθμος A για το Π εκτελείται σε χρόνο, αν για κάποια σταθερά υπάρχει μία υλοποίηση του αλγόριθμου Α, η οποία ολοκληρώνεται κάνοντας το πολύ υπολογιστικά βήματα ή, ισοδύναμα, εκτελώντας το πολύ βασικές πράξεις για όλα τα στιγμιότυπα μεγέθους n. Η πολυπλοκότητα ενός αλγορίθμου A είναι η μικρότερη συνάρτηση, τέτοια ώστε ο αλγόριθμος A να εκτελείται σε χρόνο. Η πολυπλοκότητα ενός προβλήματος Π είναι η μικρότερη συνάρτηση για την οποία υπάρχει αλγόριθμος -χρόνου για το Π, δηλαδή η ελάχιστη πολυπλοκότητα ανάμεσα σε όλους τους δυνατούς (possible) αλγορίθμους που επιλύουν το πρόβλημα Π. Επομένως, ο υπολογισμός της πολυπλοκότητας ενός συγκεκριμένου αλγορίθμου για το πρόβλημα Π μας παρέχει ένα άνω φράγμα στην πολυπλοκότητα του Π. Για τον υπολογισμό της πολυπλοκότητας ενός προβλήματος Π χρειαζόμαστε δύο φράγματα: 1. Το άνω φράγμα (upper bound) η μικρότερη πολυπλοκότητα μεταξύ όλων των γνωστών (known) αλγορίθμων για το πρόβλημα Π. 2. Το κάτω φράγμα (lower bound) η μεγαλύτερη συνάρτηση για την οποία έχει αποδειχθεί (μαθηματικά) ότι όλοι οι πιθανοί αλγόριθμοι για το πρόβλημα Π με είσοδο n απαιτούν τουλάχιστον υπολογιστικά βήματα για κάποια σταθερά ή, ισοδύναμα, απαιτούν να έχουν πολυπλοκότητα χρόνου. Εάν αυτά τα δύο όρια συμπίπτουν, τότε έχουμε μία ακριβή γνώση για την πολυπλοκότητα του προβλήματος Π. Αυτό, εκτός από την ακριβή πολυπλοκότητα του προβλήματος, επιπλέον μας δίδει δύο πολύ σημαντικές πληροφορίες για το πρόβλημα Π:

11 Αλγόριθμοι 61 δεν μπορεί ποτέ στο μέλλον να επινοηθεί κάποιος νέος αλγόριθμος με πολυπλοκότητα μικρότερη από αυτή του ήδη γνωστού αλγόριθμου που ορίζει το άνω φράγμα του προβλήματος Π, και δεν μπορεί ποτέ στο μέλλον να αποδειχθεί (μαθηματικά) ότι υπάρχει ένα κάτω φράγμα του προβλήματος Π μεγαλύτερο από. Εάν το άνω και το κάτω φράγμα ενός προβλήματος Π δεν συμπίπτουν, τότε μπορούμε πιθανώς να μειώσουμε το άνω φράγμα του Π (επινοώντας ένα νέο αλγόριθμο για το Π με πολυπλοκότητα μικρότερη από αυτή του ήδη γνωστού αλγόριθμου που ορίζει το άνω φράγμα του προβλήματος) ή να αυξήσουμε το κάτω φράγμα του Π (αποδεικνύοντας ότι υπάρχει ένα κάτω φράγμα του προβλήματος Π μεγαλύτερο από το ήδη υπάρχον) ή να βελτιώσουμε και τα δύο. Επιπλέον, το κενό (gap) μεταξύ αυτών των δύο ορίων δίδει μία ένδειξη της ερευνητικής προσπάθειας που πρέπει να καταβληθεί για τη βελτίωση του άνω ή/και κάτω φράγματος του προβλήματος Π. Έως σήμερα, για πολλά προβλήματα το κενό μεταξύ του άνω και του κάτω φράγματός τους παραμένει πεισματικά μεγάλο. Ένα παράδειγμα τέτοιων προβλημάτων είναι και αυτό του πολλαπλασιασμού πινάκων (matrix multiplication). Για το πρόβλημα του πολλαπλασιασμού δύο n n πινάκων υπάρχει ο απλός και γνωστός μας αλγόριθμος πολυπλοκότητας. Ο Strassen το 1969 πρότεινε έναν αλγόριθμο που επιλύει το ίδιο πρόβλημα σε χρόνο, βελτιώνοντας έτσι το άνω φράγμα του προβλήματος του πολλαπλασιασμού πινάκων. Από τότε έχουν προταθεί αρκετοί αλγόριθμοι για το πρόβλημα με μικρότερες πολυπλοκότητες, όπως για παράδειγμα οι αλγόριθμοι του Pan με πολυπλοκότητες και για πολύ μεγάλα n, βελτιώνοντας έτσι και αυτοί με τη σειρά τους το άνω φράγμα του προβλήματος. Όμως, το κάτω φράγμα του προβλήματος, που είναι γνωστό μέχρι σήμερα, είναι μόνο (για πληρέστερη μελέτη του θέματος, ο αναγνώστης παραπέμπεται στο βιβλίο (σελίδα 438) των Aho, Hopcroft, και Ullman). Ας εξετάσουμε τώρα το κενό μεταξύ του άνω και του κάτω φράγματος του προβλήματος του πολλαπλασιασμού δύο n n πινάκων. Παρατηρούμε, ότι τα δύο φράγματα του προβλήματος ορίζονται από δύο πολυωνυμικές συναρτήσεις: για το άνω φράγμα με,, και για το κάτω φράγμα με. Όμως, αυτό δεν ισχύει πάντα! Για παράδειγμα, υπάρχουν προβλήματα με άνω φράγμα που ορίζεται από μία εκθετική συνάρτηση,, ενώ το κάτω φράγμα από μία πολυωνυμική συνάρτηση. Τέτοια προβλήματα συμπεριλαμβάνονται στην κλάση των NP-πλήρων προβλημάτων (NP-complete problems). NP-πλήρη Προβλήματα. Το μεγαλύτερο ανοικτό ερώτημα της Πληροφορικής αφορά στα λεγόμενα NP-πλήρη προβλήματα και σχετίζεται με το κενό μεταξύ των άνω και κάτω φραγμάτων τους. Τα NP-πλήρη προβλήματα αποτελούν μία πολυπληθή και σημαντική κλάση προβλημάτων.

12 62 Αλγοριθμική Θεωρία Γραφημάτων Η κλάση των NP-πλήρων προβλημάτων χαρακτηρίζεται από δύο θεμελιώδεις ιδιότητες: για κάθε NP-πλήρες πρόβλημα έως τώρα υπάρχουν γνωστοί μόνο εκθετικοί αλγόριθμοι, δηλαδή αλγόριθμοι πολυπλοκότητας,, ενώ το καλύτερο έως τώρα κάτω φράγμα των προβλημάτων αυτών ορίζεται από πολυωνυμικές συνάρτησεις,. εάν υπάρξει ένας πολυωνυμικός αλγόριθμος, δηλαδή αλγόριθμος πολυπλοκότητας,, για ένα πρόβλημα της κλάσης, τότε θα υπάρξουν πολυωνυμικοί αλγόριθμοι για όλα τα NP-πλήρη προβλήματα. Προσοχή! Οι προηγούμενες ιδιότητες δεν αποτελούν ορισμό της κλάσης των NP-πλήρων προβλημάτων. Στη συνέχεια, θα δώσουμε συνοπτικά τη βάση της θεωρίας των προβλημάτων αυτών. Ακολούθως, μελετάμε δύο κλάσεις προβλημάτων, γνωστές ως P και NP. Γενικά, η κλάση των προβλημάτων για τα οποία υπάρχει κάποιος αλγόριθμος που μπορεί να τα επιλύσει σε πολυωνυμικό χρόνο ονομάζεται κλάση P ή απλώς P. Για ορισμένα προβλήματα δεν υπάρχει κάποιος γνωστός αλγόριθμος που να τα επιλύει σε πολυωνυμικό χρόνο, αλλά αν κάποιος ισχυριστεί ότι διαθέτει μία λύση, είναι δυνατόν να εξακριβωθεί γρήγορα εάν πράγματι είναι λύση του προβλήματος. Η κλάση των προβλημάτων για τα οποία η λύση τους μπορεί να επαληθευτεί σε πολυωνυμικό χρόνο ονομάζεται NP. Ας έρθουμε τώρα να δώσουμε ένα τυπικότερο ορισμό των κλάσεων P και NP. Έστω Π ένα πρόβλημα. Τότε: Π P, εάν υπάρχει ένας αιτιοκρατικός (deterministic) πολυωνυμικού χρόνου αλγόριθμος που επιλύει το πρόβλημα Π, και Π ΝP, εάν υπάρχει ένας μη-αιτιοκρατικός (nondeterministic) πολυωνυμικού χρόνου αλγόριθμος που επιλύει το πρόβλημα Π. Υπενθυμίζουμε ότι ένας αλγόριθμος ονομάζεται αιτιοκρατικός, εάν κάθε στάδιο (stage) εκτέλεσης εντολών καθορίζει μοναδικά το πολύ ένα επόμενο στάδιο, ενώ μη-αιτιοκρατικός, εάν ένα στάδιο (stage) μπορεί να καθορίζει πολλά επόμενα στάδια και να μεταβαίνει σε κάθε ένα από αυτά ταυτόχρονα (simultaneously). Προφανώς, P ΝP, διότι ένα πρόβλημα Π που επιλύεται με ένα αιτιοκρατικό αλγόριθμο μπορεί να επιλυθεί και με ένα μη-αιτιοκρατικό. Ένα από τα σημαντικότερα ανοικτά ερωτήματα στη θεωρία υπολογισμού είναι εάν ισχύει P ΝP ή, ισοδύναμα, εάν ισχύει P = ΝP, δηλαδή κατά πόσο ισχύει ότι τα NP-πλήρη προβλήματα έχουν πολυωνυμική λύση (βλέπε, Σχήμα 2.4). Το ερώτημα αυτό έθεσε πρώτος ο Stephen Cook το 1971 στην εργασία του με τίτλο: The Complexity of Theorem Proving Procedures (για πληροφοριακούς λόγους σημειώνεται πως το πρόβλημα αυτό ανήκει σε ένα από τα επτά Millennium Prize Problems, τα οποία είναι επιλεγμένα από το Clay Mathematics Institute που προσφέρει US$ στην πρώτη σωστή λύση).

13 Αλγόριθμοι 63 Σχήμα Γραφική απεικόνιση κλάσεων προβλημάτων P, NP, NP-πλήρη και NP-δύσκολα, στις περιπτώσεις όπου P ΝP και P = ΝP. Στη θεωρία υπολογισιμότητας και στη θεωρία πολυπλοκότητας, η αναγωγή (reduction) είναι ένας αλγόριθμος για τη μετατροπή ενός προβλήματος σε ένα άλλο πρόβλημα Π 2. Μία αναγωγή από ένα πρόβλημα στο Π 2 συνήθως χρησιμοποιείται για να δείξουμε ότι το δεύτερο πρόβλημα Π 2 είναι τουλάχιστον τόσο δύσκολο όσο το πρώτο. Η μαθηματική δομή που δημιουργείται σε ένα σύνολο προβλημάτων από αναγωγές συγκεκριμένου τύπου, γενικά δημιουργεί μία προ-διάταξη (preorder) αυτών, οι κλάσεις ισοδυναμίας των οποίων μπορεί να χρησιμοποιηθούν για να καθορίσουμε βαθμούς μη-επιλυσιμότητας (degrees of unsolvability) και τάξεις πολυπλοκότητας (complexity classes). Διαισθητικά, το πρόβλημα ανάγεται στο πρόβλημα, εάνν ένας αλγόριθμος για την αποτελεσματική επίλυση του προβλήματος (αν υπήρχε), θα μπορούσε, επίσης, να χρησιμοποιηθεί σαν υποπρόγραμμα (subroutine) για την αποτελεσματική επίλυση του προβλήματος. Εάν αυτό ισχύει, τότε η επίλυση του δεν μπορεί να είναι δυσκολότερη από την επίλυση του. Γράφουμε Π 1 Π 2, συνήθως με ένα δείκτη στο σύμβολο της αναγωγής, για να δείξουμε το είδος της αναγωγής που χρησιμοποιούμε. Για παράδειγμα, γράφουμε για αναγωγή απεικόνισης (mapping reduction), ενώ γράφουμε για πολυωνυμική αναγωγή (polynomial reduction). Αναλυτικότερα, ένα πρόβλημα που είναι πολυωνυμικά αναγώγιμο (polynomially transformable) σε ένα άλλο πρόβλημα, το συμβολίσουμε, εάν υπάρχει συνάρτηση που αντιστοιχίζει τα στιγμιότυπα του στα στιγμιότυπα του Π 2, έτσι ώστε: να είναι αιτιοκρατικά υπολογίσιμη (computable deterministically) σε πολυωνυμικό χρόνο, και μία λύση του προβλήματος για το στιγμιότυπο δίδει μία λύση του προβλήματος για το στιγμιότυπου, για κάθε.

14 64 Αλγοριθμική Θεωρία Γραφημάτων Διαισθητικά, αυτό σημαίνει ότι το πρόβλημα έχει ίδιας δυσκολίας λύση με το, γιατί μπορούμε να πάρουμε μία λύση του προβλήματος συνδυάζοντας το μετασχηματισμό με τον καλύτερο αλγόριθμο για την επίλυση του. Επομένως, εάν, τότε: όπου. +, Εάν για το πρόβλημα υπάρχει ένας αιτιοκρατικός πολυωνυμικού χρόνου αλγόριθμος, τότε υπάρχει ένας τέτοιος αλγόριθμος και για το πρόβλημα. Αντίθετα, εάν κάθε αιτιοκρατικός αλγόριθμος που επιλύει το πρόβλημα απαιτεί εκθετικό χρόνο, τότε το ίδιο ισχύει και για το πρόβλημα. Ένα πρόβλημα προτάσεις: είναι NP-δύσκολο (NP-hard), εάν ισχύει μία από τις εξής ισοδύναμες 1., για όλα τα προβλήματα NP. 2. P P = ΝP. 3. (ύπαρξη πολυωνυμικού αλγόριθμου για το ) (ύπαρξη πολυωνυμικού αλγόριθμου για κάθε πρόβλημα στην κλάση ΝP). Ένα πρόβλημα είναι NP-πλήρες, εάν ανήκει στην κλάση NP και είναι NP-δύσκολο (βλέπε Σχήμα 2.4) Σχήμα Μερικά NP-πλήρη προβλήματα από διάφορες περιοχές των διακριτών μαθηματικών. Η έννοια της NP-πληρότητας (NP-completeness) εισήχθη το 1971 από τον Stephen Cook που απέδειξε ότι το πρόβλημα SATISFIABILITY (SAT) της μαθηματικής λογικής είναι NP-πλήρες (Θεώρημα Cook) και, ταυτόχρονα, πρότεινε μία σειρά προβλημάτων που πιθανώς να είναι NPπλήρη. Ο Karp το 1972 παρουσίασε μία μεγάλη συλλογή NP-πλήρων προβλημάτων από τις περιοχές της συνδυαστικής, λογικής, θεωρίας συνόλων, και άλλων περιοχών των διακριτών μαθηματικών. Στο Σχήμα 2.5 δίδουμε μία ιεράρχηση μερικών NP-πλήρων προβλημάτων.

15 Αλγόριθμοι 65 Μία τυπική τεχνική που εφαρμόζεται για την απόδειξη της NP-πληρότητας ενός προβλήματος και, παράλληλα, σκιαγραφεί τη διαδικασία δημιουργίας και διατήρησης ενός αποθετηρίου (repository) NP-προβλημάτων, είναι η εξής: Αρχικά, τοποθέτησε το πρόβλημα SAT στο αποθετήριο των NP-πλήρων προβλημάτων (από το θεώρημα του Cook). Στη συνέχεια, επανάλαβε τα παρακάτω τέσσερα βήμάτα: 1. Βρες ένα υποψήφιο πρόβλημα που θεωρείς ότι πιθανώς να είναι NP-πλήρες. 2. Επίλεξε ένα κατάλληλο πρόβλημα από το αποθετήριο των NP-προβλημάτων. 3. Απόδειξε ότι NP και. 4. Πρόσθεσε το πρόβλημα στο αποθετήριο των NP-προβλημάτων. Τονίζουμε ότι η σωστή επιλογή του προβλήματος Π και η εύρεση μίας πολυωνυμικής αναγωγής Π Π απαιτούν γνώση, πείρα και, πολλές φορές, ιδιαίτερη ευφυΐα! 2.2 Δομές Δεδομένων Επιπροσθέτως των ακεραίων και πραγματικών αριθμών, καθώς και των bits (ένα bit έχει τιμή 0 (false) ή 1 (true)), θα ασχοληθούμε και με πιο πολύπλοκα αντικείμενα, που θεωρούνται βασικά στην περιοχή μελέτης μας. Αυτά είναι τα διαστήματα (intervals), οι λίστες (lists), τα σύνολα (sets) και οι απεικονίσεις (maps). Στη συνέχεια, θα παρουσιάσουμε τρόπους εσωτερικής αναπαράστασης των αντικειμένων αυτών με πίνακες (arrays) και συνδεδεμένες λίστες (linked lists), καθώς και βασικές αναπαραστάσεις γραφημάτων με πίνακες και συνδεδεμένες λίστες. Διαστήματα. Ένα διάστημα είναι μία ακολουθία ακεραίων. Επεκτείνουμε την έννοια αυτή, για να ορίσουμε αριθμητικές προόδους (arithmetic progressions): συμβολίζουμε την ακολουθία, όπου και (εάν το είναι ένας πραγματικός αριθμός, με συμβολίζουμε το μεγαλύτερο ακέραιο με τιμή μικρότερη ή ίση του, ενώ με συμβολίζουμε το μικρότερο ακέραιο με τιμή μεγαλύτερη ή ίση του ). Εάν, η αριθμητική πρόοδος είναι κενή, ενώ, εάν, η αριθμητική πρόοδος δεν ορίζεται. Όταν γράφουμε ή, ισοδύναμα,, εννοούμε ότι είναι ακέραιος τέτοιος ώστε. Λίστες. Μία λίστα είναι μία ακολουθία από οποιαδήποτε στοιχεία, μερικά από τα οποία μπορεί να επαναλαμβάνονται. Το στοιχείο ονομάζεται κεφαλή (head) της λίστας και το στοιχείο ουρά (tail) της λίστας. Τα στοιχεία και είναι η αρχή και το τέλος της λίστας, αντίστοιχα. Θα συμβολίζουμε το μέγεθος (size) της λίστας με. Ένα διατεταγμένο ζεύγος είναι μία λίστα δύο στοιχείων. Την κενή λίστα, που δεν περιλαμβάνει κάποιο στοιχείο, τη συμβολίζουμε. Υπάρχουν τρεις βασικές λειτουργίες σε λίστες: πρόσβαση (access). Δεδομένης μίας λίστας και ενός ακεραίου, επιστρέφει το -οστό στοιχείο της λίστας. Εάν, τότε έχει την ειδική τιμή null.

16 66 Αλγοριθμική Θεωρία Γραφημάτων υπολίστα (sublist). Δεδομένης μίας λίστας και ενός ζεύγους ακεραίων και, επιστρέφει τη λίστα. Με θα συμβολίζουμε τη λίστα, ενώ με θα συμβολίζουμε τη λίστα. συνένωση (concatenation). Δεδομένων δύο λιστών και, επιστρέφει τη λίστα Μπορούμε να αναπαραστήσουμε τις λειτουργίες της εισαγωγής και της διαγραφής σε λίστες με κατάλληλο συνδυασμό των διαδικασιών της υπολίστας και της συνένωσης. Ιδιαίτερης σημασίας είναι οι ακόλουθες ειδικές περιπτώσεις των διαδικασιών πρόσβασης, υπολίστας και συνένωσης που χειρίζονται τα άκρα μίας λίστας: πρόσβαση-στην-αρχή (access head). Δεδομένης μίας λίστας, επιστρέφει το στοιχείο. εισαγωγή-στην-αρχή (push). Δεδομένης μίας λίστας και ενός στοιχείου, επιστρέφει τη λίστα. διαγραφή-από-αρχή (pop). Δεδομένης μίας λίστας, επιστρέφει τη λίστα. πρόσβαση-στο-τέλος (access tail). Δεδομένης μίας λίστας, επιστρέφει το στοιχείο. εισαγωγή-στο-τέλος (inject). Δεδομένης μίας λίστας και ενός στοιχείου, επιστρέφει τη λίστα. διαγραφή-από-τέλος (eject). Δεδομένης μίας λίστας, επιστρέφει τη λίστα. Μία λίστα όπου επιτρέπονται οι διαδικασίες πρόσβαση-στην-αρχή, εισαγωγή-στην-αρχή και διαγραφή-από-αρχή ονομάζεται στοίβα (stack). Σε σχέση με τις διαδικασίες εισαγωγής και διαγραφής οι στοίβες λειτουργούν κατά τρόπο LIFO (last-in, first-out). Από την άλλη, μία λίστα όπου επιτρέπονται οι διαδικασίες πρόσβαση-στην-αρχή, εισαγωγή-στην-αρχή και διαγραφή-απότέλος ονομάζεται ουρά (queue). Η ουρά λειτουργεί κατά τρόπο FIFO (first-in, first-out). Σύνολα. Ένα σύνολο είναι μία συλλογή από διαφορετικά μεταξύ τους στοιχεία. Σε αντίθεση με τη λίστα, το σύνολο δεν απαιτεί διάταξη των στοιχείων του. Επεκτείνουμε την έννοια του μεγέθους (size) και στα σύνολα και έτσι. Θα συμβολίζουμε ή το κενό σύνολο. Οι σημαντικότερες πράξεις σε σύνολα είναι η ένωση (union ), η τομή (intersection ) και η αφαίρεση (difference ): εάν και είναι δύο σύνολα, τότε είναι το σύνολο όλων των στοιχείων του που δεν είναι στοιχεία του. Επεκτείνουμε την πράξη της αφαίρεσης συνόλων στις λίστες ως εξής: εάν είναι μία λίστα και ένα σύνολο, τότε είναι η λίστα που λαμβάνεται από την αφαιρώντας από αυτή κάθε στοιχείο που ανήκει στο σύνολο. Απεικονίσεις. Μία απεικόνιση είναι ένα σύνολο από διατεταγμένα ζεύγη, όλα με διαφορετικές τις πρώτες συντεταγμένες (κεφαλές). Το πεδίο ορισμού (domain) της είναι το σύνολο των πρώτων συντεταγμένων των ζευγών της, Το πεδίο τιμών (range) της είναι το σύνολο των δεύτερων συντεταγμένων των ζευγών της, Θεωρούμε την απεικόνιση ως μία συνάρτηση από το

17 Αλγόριθμοι 67 πεδίο ορισμού στο πεδίο τιμών και, έτσι, η τιμή της στο στοιχείο του πεδίου ορισμού είναι η αντίστοιχη δεύτερη συντεταγμένη. Εάν, τότε Το μέγεθος (size) της απεικόνισης είναι το μέγεθος του πεδίου ορισμού της. Σημαντικές λειτουργίες σε συναρτήσεις είναι η πρόσβαση (accessing) και επανακαθορισμός (redefining) τιμών. Η ανάθεση διαγράφει το ζεύγος (εάν υπάρχει) από την και προσθέτει το ζεύγος. Η ανάθεση απλώς διαγράφει το ζεύγος (εάν υπάρχει) από την. Μπορούμε να θεωρήσουμε μία λίστα ως μία απεικόνιση με πεδίο ορισμού. Υπάρχουν αρκετοί καλοί τρόποι για να αναπαραστήσουμε (represent) τα σύνολα, τις λίστες και τις απεικονίσεις χρησιμοποιώντας βασικές δομές δεδομένων, όπως παρατάξεις ή πίνακες (arrays): συλλογή κόμβων σε διαδοχικές θέσεις μνήμης, και συνδεδεμένες λίστες (linked lists): συλλογή κόμβων διασυνδεδεμένων με δείκτες. Αναφέρουμε ότι οι δομές δεδομένων παρέχουν ένα συστηματικό τρόπο οργάνωσης των υπό επεξεργασία δεδομένων (μεταβλητών εισόδου και εσωτερικών μεταβλητών ενός αλγόριθμου ή προγράμματος). Πίνακες. Στην περιοχή των αλγορίθμων και του προγραμματισμού αναφερόμαστε συνήθως στις παρατάξεις, λόγω της διαδοχικής αποθήκευσής τους στη μνήμη μίας μηχανής, με τον όρο πίνακες. Έτσι, ένας 0-διάστασης πίνακας (0-dimensional array) είναι μία απλή μεταβλητή ή, ισοδύναμα, ένας απλός χώρος αποθήκευσης. Ένας δ-διάστασης πίνακας μπορεί να οριστεί αναδρομικά ως μία πεπερασμένη ακολουθία από (δ-1)-διάστασης πίνακες ίδιου μεγέθους (size). Ένα διάνυσμα (vector) υποθηκεύεται συνήθως σε ένα 1-διάστασης πίνακα και ένας πίνακας (matrix) σε ένα 2-διάστασης πίνακα. Οι καταχωρίσεις σε ένα πίνακα είναι ομογενείς, δηλαδή όλες έχουν τον ίδιο τύπο και όλες απαιτούν τον ίδιο χώρο. Οι θέσεις των καταχωρίσεων ή, ισοδύναμα, οι θέσεις των στοιχείων του πίνακα, προσδιορίζονται με τη χρήση ακεραίων δεικτών. Για παράδειγμα, εάν είναι ένας μονοδιάστατος (1-διάστασης) πίνακας μήκους, τότε ή είναι η -οστή καταχώριση ή - οστό στοιχείο του πίνακα, ενώ, εάν είναι ένας δισδιάστατος (2-διάστασης) πίνακας μεγέθους, τότε ή είναι η καταχώριση ή το στοιχείο στην -οστή γραμμή και στην -οστή στήλη του πίνακα, όπου και Επίσης, με τη χρήση ακεραίων δεικτών αναθέτουμε τιμές στους πίνακες (π.χ. με την εντολή αναθέτουμε την τιμή στο στοιχείο του πίνακα. Σχήμα Ένας μονοδιάστατος πίνακας μήκους και ένα δισδιάστατος πίνακας μεγέθους. Οι δύο πίνακες είναι τύπου ακέραιος.

18 68 Αλγοριθμική Θεωρία Γραφημάτων Στο Σχήμα 2.6 παρουσιάζουμε δύο πίνακες, ένα μονοδιάστατο πίνακα μήκους και ένα δισδιάστατο πίνακα Β μεγέθους, ίδιου τύπου: και οι δύο πίνακες είναι τύπου ακέραιος. Παρατηρούμε ότι το στοιχείο του πίνακα είναι το, δηλαδή, ενώ το στοιχείο του πίνακα στη η γραμμή και στην στήλη είναι το, δηλαδή. Η κύρια ιδιότητα ενός πίνακα είναι η δυνατότητα ευρετηρίασης (indexing). Αυτό σημαίνει ότι οι πίνακες παρέχουν τη δυνατότητα άμεσου εντοπισμού της θέσης αποθήκευσης ενός στοιχείου. Οι καταχωρίσεις ενός πίνακα αποθηκεύονται σε διαδοχικές θέσεις μνήμης και μπορούμε να έχουμε άμεση πρόσβαση στο περιεχόμενο μίας καταχώρησης ή, ισοδύναμα, στο περιεχόμενο μίας θέσης μνήμης του πίνακα σε σταθερό χρόνο ανεξάρτητα από το μέγεθος του πίνακα. Έτσι, μία ερώτηση τύπου έχει το στοιχείο θετική τιμή; μπορεί να απαντηθεί σε σταθερό χρόνο, σε ένα οποιοδήποτε δισδιάστατο πίνακα μεγέθους. Αυτό επιτυγχάνεται από ένα σύστημα διευθυνσιοδότησης με τη χρήση πολλαπλασιαστών (multipliers). Στη συνέχεια, θα σκιαγραφήσουμε την τεχνική της διευθυνσιοδότησης με πολλαπλασιαστές σε ένα δισδιάστατο πίνακα μεγέθους. Θα θεωρήσουμε ότι οι καταχωρίσεις του πίνακα αποθηκεύονται σε διαδοχικές θέσεις μνήμης μεγέθους με την εξής σειρά (γραμμή-προςγραμμή): O χώρος (μνήμη) που απαιτείται για κάθε γραμμή του πίνακα είναι. Τώρα, η άμεση πρόσβαση στην καταχώριση μπορεί να επιτευχθεί αρχίζοντας από την πρώτη καταχώριση, παραβλέποντας τις πρώτες γραμμές του πίνακα και, στη συνέχεια, μετακινούμενοι στην γραμμή παραβλέποντας στήλες. Έτσι, εάν είναι η διεύθυνση της πρώτης καταχώρισης του πίνακα, τότε η διεύθυνση της καταχώρισης δίδεται από τον τύπο: Ένας ανάλογος τύπος μπορεί να δοθεί στην περίπτωση που οι καταχωρίσεις του πίνακα αποθηκεύονται σε διαδοχικές θέσεις μνήμης στήλη-προς-στήλη. Η τεχνική αυτή της διευθυνσιοδότησης μπορεί εύκολα να επεκταθεί, δίνοντας ανάλογους τύπους και για οποιουσδήποτε πίνακες δ-διάστασης, δ (η επέκταση αυτή αφήνεται ως άσκηση στον αναγνώστη). Σε όλο το σύγγραμμα, με το συμβολισμό ή θα αναφερόμαστε σε ένα μονοδιάστατο πίνακα μήκους, ενώ με το συμβολισμό ή σε ένα δισδιάστατο πίνακα μεγέθους. Αποθήκευση Δισδιάστατου Πίνακα ως Μονοδιάστατου. Σε πολλές εφαρμογές προκύπτουν πίνακες με ειδική μορφή, όπως συμμετρικοί, άνω ή κάτω τριγωνικοί, αραιοί πίνακες. Σε τέτοιες περιπτώσεις μπορούμε να αποθηκεύσουμε τα στοιχεία ενός ειδικής μορφής πίνακα σε ένα μονοδιάστατο πίνακα για εξοικονόμηση χώρου. Υπό μορφή παραδειγμάτων θα δώσουμε έναν τρόπο συμπίεσης ενός τέτοιου πίνακα μεγέθους σε ένα μονοδιάστατο πίνακα.

19 Αλγόριθμοι 69 Σχήμα Ένας συμμετρικός και ένας άνω τριγωνικός πίνακας διαστάσεων μαζί με τον πίνακα συμπίεσής τους ανά γραμμές (οι δύο πίνακες έχουν τον ίδιο πίνακα συμπίεσης). Αναφέρουμε ότι στη γενική περίπτωση, το πλήθος των στοιχείων του μονοδιάστατου πίνακα συμπίεσης είναι, ενώ των αρχικών πινάκων είναι. Εάν είναι ένας αραιός (sparse) πίνακας, τότε το πλήθος των μη-μηδενικών στοιχείων του είναι, δηλαδή πολύ μικρότερο από (συχνά χρησιμοποιούμε τη συντομογραφία, για να εκφράσουμε ότι ). Ακολουθώντας μία παρόμοια προσέγγιση, αποθηκεύουμε τα μη μηδενικά στοιχεία του πίνακα διαδοχικά ανά γραμμές σε ένα μονοδιάστατο πίνακα. Στο Σχήμα 2.8 παρουσιάζουμε έναν αραιό πίνακα και τον πίνακα συμπίεσης του. Σχήμα Ένας αραιός πίνακας διαστάσεων μαζί με τον πίνακα συμπίεσής του ανά γραμμές. Επιπλέον, στην τεχνική συμπίεσης ενός αραιού πίνακα, για λόγους ανάκτησης διατηρούμε δύο μονοδιάστατους πίνακες στους οποίους αποθηκεύουμε τη στήλη και γραμμή που αντιστοιχεί σε κάθε μη μηδενικό στοιχείο του πίνακα, τους οποίους ονομάζουμε και, αντίστοιχα. Για τον πίνακα του Σχήματος 2.8, οι δύο αυτοί πίνακες είναι οι εξής: Έτσι, τα μη μηδενικά στοιχεία του πίνακα του Σχήματος 2.8 είναι τα,. Σημειώσουμε ότι στην τεχνική αυτή o απαιτούμενος χώρος είναι και όχι, που απαιτεί η αποθήκευση του αρχικού πίνακα.

20 70 Αλγοριθμική Θεωρία Γραφημάτων Συνδεδεμένες Λίστες. Μία συνδεδεμένη λίστα είναι μία δυναμική (dynamic) δομή δεδομένων αποτελούμενη από μία συλλογή από κόμβους που συνδέονται μεταξύ τους, με καθορισμένο τρόπο, με δείκτες (pointers). Κάθε κόμβος μίας λίστας έχει την ίδια δομή αποτελούμενη από ένα ή περισσότερα πεδία για δεδομένα (data) και από ένα ή περισσότερα πεδία για δείκτες. Το μέγεθος (size) μίας λίστας ή, ισοδύναμα, το μήκος (length) μίας λίστας, ισούται με το πλήθος των κόμβων της. Θα συμβολίζουμε ή το μήκος μία λίστα. Στο Σχήμα 2.9 παρουσιάζουμε δύο απλά συνδεδεμένες λίστες και, μήκους 3 και 4, αντίστοιχα, κάθε κόμβος των οποίων περιέχει ένα πεδίο για τα δεδομένα του, τύπου ακέραιος, και ένα πεδίο για το δείκτη του. Στις λίστες έχουμε πρόσβαση μόνο από το δείκτη κεφαλή (head), ο οποίος συνήθως προσδιορίζει και το όνομα της λίστας. Έτσι, οι δύο λίστες του σχήματος ονομάζονται και και η πρόσβαση σε αυτές γίνεται από τους δύο αυτούς δείκτες. Ο δείκτης του τελευταίου κόμβου μίας λίστας έχει απροσδιόριστη τιμή. Θα λέμε ότι είναι null και θα τη συμβολίσουμε με Λ. Σχήμα Δύο απλά συνδεδεμένες λίστες. Αντίθετα από τον πίνακα, όπου τα δεδομένα αποθηκεύονται ακολουθιακά σε διαδοχικές θέσεις μνήμης, στη λίστα τα δεδομένα (οι κόμβοι της) αποθηκεύονται σε οποιοδήποτε μέρος της μνήμης και οι δείκτες μεριμνούν, ώστε να διατηρείται η δομή και η συνοχή της λίστας. Αυτό επιτρέπει την εισαγωγή ενός στοιχείου στη λίστα ή τη διαγραφή οποιουδήποτε στοιχείου από αυτή να γίνεται αποτελεσματικά με την αλλαγή μόνον ορισμένων δεικτών και όχι όπως στον πίνακα, όπου οι πράξεις της εισαγωγής και διαγραφής απαιτούν συνήθως τη μετατόπιση εντός του πίνακα ενός μεγάλου μέρους δεδομένων. Η διάσχιση μίας λίστας και η εκτύπωση των δεδομένων της μπορεί να γίνει εύκολα και σε χρόνο ανάλογο του μήκους της. Για παράδειγμα, η εκτύπωση όλων των δεδομένων της λίστας του Σχήματος 2.9 μπορεί να γίνει με τον επόμενο απλό αλγόριθμο: 1. ; 2. while do print ; ; Οι συνδεδεμένες λίστες μπορούν να υλοποιηθούν αποτελεσματικά με τη χρήση πινάκων (στατική υλοποίηση). Συνήθως, σε μία τέτοια υλοποίηση, χρησιμοποιούμε κυρίως δύο μονοδιάστατους πίνακες μήκους μεγαλύτερου ή ίσου με το μήκος της λίστας. Στον ένα πίνακα αποθηκεύουμε τα δεδομένα της λίστας (περιεχόμενο πεδίου ), ενώ στον άλλο τους δείκτες (περιεχόμενο πεδίου ). Επίσης, μπορούμε να υλοποιήσουμε περισσότερες από μία λίστες στον ίδιο πίνακα. Μία τέτοια υλοποίηση δίνεται στο Σχήμα 2.10 για τις δύο λίστες και του Σχήματος 2.9.

21 Αλγόριθμοι 71 Χρησιμοποιούμε δύο πίνακες με όνομα και μήκους ( ) και δύο μεταβλητές και Η μεταβλητή (αντίστοιχα ) έχει τη θέση του πίνακα, όπου είναι αποθηκευμένα τα δεδομένα του πρώτου κόμβου της λίστας (αντίστοιχα ). Έτσι, στο Σχήμα 2.10, και που είναι τα δεδομένα των πρώτων κόμβων των λιστών και Χρησιμοποιώντας κατάλληλα τις τιμές του πίνακα μπορούμε να πάρουμε όλα τα δεδομένα των και Εύκολα μπορεί να δει κάποιος ότι οι εισαγωγές και οι διαγραφές στοιχείων σε μία τέτοια υλοποίηση μπορεί να γίνουν αποτελεσματικά (σε σταθερό χρόνο), αλλάζοντας μερικές τιμές των πινάκων και χωρίς να απαιτηθεί μετατόπιση δεδομένων εντός του πίνακα. Η υλοποίηση αυτή ονομάζεται στατική απεικόνιση (static representation) μίας συνδεδεμένης λίστας. Σχήμα Μία υλοποίηση των δύο λιστών και του Σχήματος 2.9 με τη χρήση πινάκων. Είδαμε ότι οι στοίβες (stacks) και οι ουρές (queues) αποτελούν ειδικούς τύπους λιστών: σε μία στοίβα επιτρέπονται οι διαδικασίες πρόσβαση-στην-αρχή, εισαγωγή-στην-αρχή και διαγραφή-απόαρχή, ενώ σε μία ουρά οι διαδικασίες πρόσβαση-στην-αρχή, εισαγωγή-στην-αρχή και διαγραφήαπό-τέλος. Μπορούμε να υλοποιήσουμε τις στοίβες και τις ουρές με απλά συνδεδεμένες λίστες (δυναμικά ή με τη στατική αναπαράστασή τους). Για να εξασφαλίσουμε την αποτελεσματική εκτέλεση (σταθερό χρόνο) των προηγούμενων διαδικασιών, κυρίως της διαδικασίας διαγραφήαπό-τέλος, εισάγουμε επιπρόσθετους δείκτες σε μία απλά συνδεδεμένη λίστα προκύπτοντας έτσι διάφοροι τύποι συνδεδεμένων λιστών, όπως διπλά συνδεδεμένες λίστες (doubly linked list) και συνδεδεμένες κυκλικές λίστες (circular linked list) (για μία εις βάθος μελέτη των δομών αυτών προτείνονται τα βιβλία Δομών Δεδομένων και Αλγορίθμων της βιβλιογραφίας του συγγράμματος). Πίνακας Γειτνίασης ενός Γραφήματος. Έστω ένα γράφημα τάξης με σύνολο κόμβων Ο πίνακας γειτνίασης του γραφήματος είναι ένας πίνακας, τέτοιος ώστε:

22 72 Αλγοριθμική Θεωρία Γραφημάτων Εξ ορισμού, τα στοιχεία της κυρίας διαγωνίου του πίνακα είναι μηδέν και ο είναι συμμετρικός (symmetric) ως προς την κύρια διαγώνιο, εάν το γράφημα είναι μη-κατευθυνόμενο. Εάν ο πίνακας αναπαρασταθεί εσωτερικά σε έναν υπολογιστή με ένα 2-διάστασης πίνακα (βλέπε Σχήμα 2.11), τότε πολλές ερωτήσεις ή εντολές που αφορούν στο γράφημα, όπως είναι το ζεύγος κόμβων ακμή του γραφήματος; ή διάγραψε την ακμή, μπορούν να απαντηθούν ή να εκτελεστούν σε χρόνο (σταθερό χρόνο). Ωστόσο, σε μία τέτοια αναπαράσταση, υπάρχουν ερωτήσεις και εντολές που απαιτούν ή χρόνο. Για παράδειγμα η εντολή βρες όλους τους κόμβους που γειτνιάζουν με τον κόμβο στο απαιτεί χρόνο, ενώ η εντολή βρες όλες τις ακμές του γραφήματος απαιτεί χρόνο. Ένα έμβαρο γράφημα μπορεί επίσης να αναπαρασταθεί εσωτερικά με έναν ίδιο τρόπο χρησιμοποιώντας τον πίνακα : εάν είναι ακμή του με βάρος, τότε,. Σημειώνουμε ότι, εάν δεν είναι ακμή του, τότε ανάλογα με την εφαρμογή, ή. (α) (β) Σχήμα (α) Ένα κατευθυνόμενο γράφημα τάξης 6 και (β) ο πίνακας γειτνίασης του. Είναι σημαντικό να αναφέρουμε ότι ο χρόνος εκτέλεσης πολλών εντολών (ή ερωτήσεων) που αφορούν στο γράφημα μπορεί να βελτιωθεί, εάν ο πίνακας και, επομένως, ο πίνακας εσωτερικής αναπαράστασης είναι αραιός (sparse), δηλαδή εάν (το πλήθος των ακμών του είναι πολύ μικρότερο το ). Μία σημαντική κατηγορία τέτοιων γραφημάτων αποτελούν τα επίπεδα (planar) γραφήματα, για τα οποία ο Euler απέδειξε ότι Λίστα Γειτνίασης ενός Γραφήματος. Για κάθε κόμβο του γραφήματος δημιουργούμε μία λίστα που περιέχει όλους τους κόμβους του που γειτνιάζουν με τον κόμβο,. Τη λίστα κάθε κόμβου μπορούμε να την αναπαραστήσουμε εσωτερικά σε έναν υπολογιστή με μία συνδεδεμένη λίστα μήκους ή, όπου ο βαθμός του κόμβου,

23 Αλγόριθμοι 73 εάν το είναι μη-κατευθυνόμενο και ο βαθμός εξόδου του κόμβου, εάν το είναι κατευθυνόμενο (βλέπε Σχήμα 2.12). (α) (β) Σχήμα (α) Ένα κατευθυνόμενο γράφημα τάξης 6 και (β) λίστα γειτνίασης του. Τη λίστα την ονομάζουμε λίστα γειτνίασης του κόμβου και τη δομή που αποτελείται από τις συνδεδεμένες λίστες των κόμβων του την ονομάζουμε λίστα γειτνίασης (adjacency list) του γραφήματος και τη συμβολίζουμε. Μερικές φορές θα χρησιμοποιούμε το συμβολισμό ή το συμβολισμό για τη λίστα γειτνίασης του κόμβου,. Ο χώρος που απαιτείται για την αποθήκευση στη μνήμη του υπολογιστή της λίστας γειτνίασης ενός γραφήματος τάξης (πλήθος κόμβων) και μεγέθους (πλήθος ακμών), είναι: όπου ή,. Γίνεται, επομένως, προφανές ότι για την εσωτερική αναπαράσταση ενός αραιού γραφήματος είναι προτιμότερο, όσον αφορά στο χώρο αποθήκευσης, να χρησιμοποιούμε τη λίστα γειτνίασης του αντί του πίνακα γειτνίασής του. Συχνά, η λίστα γειτνίασης είναι, επίσης, προτιμότερη όσον αφορά ακόμα και στο χρόνο εκτέλεσης ορισμένων ερωτήσεων ή εντολών σχετικά με το γράφημα. Πράγματι, η εντολή βρες όλους τους κόμβους που γειτνιάζουν με τον κόμβο στο απαιτεί τη διερεύνηση της λίστας και, επομένως, εκτελείται σε χρόνο. Όμοια, η εντολή βρες όλες τις ακμές του γραφήματος απαιτεί χρόνο. Αντίθετα, η διαγραφή μίας ακμής απαιτεί πιο πολύπλοκη και χρονοβόρα διαδικασία στη λίστα γειτνίασης από ό,τι στον πίνακα γειτνίασης. Επομένως, μπορούμε με βεβαιότητα να πούμε ότι δεν υπάρχει αναπαράσταση γραφήματος η οποία να είναι ιδανική, ή καλύτερη σε σχέση με το χρόνο και το χώρο για όλες τις λειτουργίες και διαδικασίες.

24 74 Αλγοριθμική Θεωρία Γραφημάτων Στατική Υλοποίηση Λίστας Γειτνίασης. Είδαμε ότι οι συνδεδεμένες λίστες μπορούν να υλοποιηθούν αποτελεσματικά με τη χρήση πινάκων (στατική υλοποίηση). Μία τέτοια υλοποίηση δύο λιστών και παρουσιάζεται στο Σχήμα Επειδή η λίστα γειτνίασης ενός γραφήματος τάξης αποτελείται από τις λίστες γειτνίασης των κόμβων του, μπορούμε να την υλοποιήσουμε το ίδιο αποτελεσματικά με τη χρήση πινάκων. Στο Σχήμα 2.13α παρουσιάζουμε τη στατική υλοποίηση της λίστας γειτνίασης του Σχήματος Εδώ τώρα χρησιμοποιούμε δύο πίνακες με όνομα και μήκους ( ) και έναν πίνακα μήκους Η τιμή του πίνακα ισούται με τη θέση του πίνακα, όπου είναι αποθηκευμένα τα δεδομένα του πρώτου κόμβου της λίστας γειτνίασης του κόμβου,. Αναφέρουμε ότι η υλοποίηση αυτή χρησιμοποιεί μη-διαδοχικές θέσεις αποθήκευσης των δεδομένων της λίστας γειτνίασης εντός του πίνακα. Μία διαφορετική υλοποίηση, αλλά ίδιας προσέγγισης και τεχνικής με αυτήν που μόλις περιγράψαμε, παρουσιάζουμε στο Σχήμα 2.13β, όπου τώρα τα δεδομένα της λίστας γειτνίασης αποθηκεύονται σε διαδοχικές θέσεις στον πίνακα. Αυτή η προσέγγιση απαιτεί τη γνώση των βαθμών των κόμβων του γραφήματος, τους οποίους αποθηκεύουμε στον πίνακα μήκους και καταργεί τη χρήση των δεικτών του πίνακα, τον οποίο και αγνοούμε στην υλοποίηση αυτή. (α) (β) Σχήμα Δύο υλοποιήσεις της λίστας γειτνίασης του Σχήματος 2.12 με τη χρήση πινάκων. (α) Υλοποίηση σε μη-διαδοχικές θέσεις σε πίνακα. (β) Υλοποίηση σε διαδοχικές θέσεις σε πίνακα. Ταξινόμηση Λίστας Γειτνίασης. Ένας αλγόριθμος, για κάποιο πρόβλημα Π επάνω σε ένα γράφημα τάξης και μεγέθους, θα λέμε ότι είναι γραμμικός ως προς το μέγεθος (linear in

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων Τι θα κάνουμε σήμερα Εισαγωγή Πολυταινιακές Μηχανές Turing (3.2.1) Μη Ντετερμινιστικές Μηχανές

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Υπολογιστικό Πρόβληµα

Υπολογιστικό Πρόβληµα Υπολογιστικό Πρόβληµα Μετασχηµατισµός δεδοµένων εισόδου σε δεδοµένα εξόδου. Δοµή δεδοµένων εισόδου (έγκυρο στιγµιότυπο). Δοµή και ιδιότητες δεδοµένων εξόδου (απάντηση ή λύση). Τυπικά: διµελής σχέση στις

Διαβάστε περισσότερα

Πολυπλοκότητα. Παράμετροι της αποδοτικότητας ενός αλγόριθμου: Χρόνος εκτέλεσης. Απαιτούμενοι πόροι, π.χ. μνήμη, εύρος ζώνης. Προσπάθεια υλοποίησης

Πολυπλοκότητα. Παράμετροι της αποδοτικότητας ενός αλγόριθμου: Χρόνος εκτέλεσης. Απαιτούμενοι πόροι, π.χ. μνήμη, εύρος ζώνης. Προσπάθεια υλοποίησης Παράμετροι της αποδοτικότητας ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, εύρος ζώνης Προσπάθεια υλοποίησης Παράμετροι της αποδοτικότητας ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι

Διαβάστε περισσότερα

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Ενότητα 4 Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών 1 Συναρτήσεις και ο υπολογισµός τους 2 Μηχανές Turing 3 Καθολικές γλώσσες προγραµµατισµού 4 Μια µη υπολογίσιµη συνάρτηση 5 Πολυπλοκότητα προβληµάτων 1 Συναρτήσεις Μία συνάρτηση

Διαβάστε περισσότερα

Κλάσεις Πολυπλοκότητας

Κλάσεις Πολυπλοκότητας Κλάσεις Πολυπλοκότητας Παύλος Εφραιμίδης pefraimi ee.duth.gr Κλάσεις Πολυπλοκότητας 1 Οι κλάσεις πολυπλοκότητας P και NP P: Polynomial ΗκλάσηP περιλαμβάνει όλα τα υπολογιστικά προβλήματα που μπορούν

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 5.1 Επίδοση αλγορίθμων Μέχρι τώρα έχουμε γνωρίσει διάφορους αλγόριθμους (αναζήτησης, ταξινόμησης, κ.α.). Στο σημείο αυτό θα παρουσιάσουμε ένα τρόπο εκτίμησης της επίδοσης (performance) η της αποδοτικότητας

Διαβάστε περισσότερα

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Εισαγωγικές Έννοιες ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 15 Ιουνίου 2009 1 / 26 Εισαγωγή Η ϑεωρία

Διαβάστε περισσότερα

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ 2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Α2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών Α3. Ο αλγόριθμος

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος Περιγραφή μαθήματος Θεωρία Υπολογισμού Άρτιοι ΑΜ Σκοπός του μαθήματος είναι η εισαγωγή στη Θεωρία Υπολογισμού και στη Θεωρία Υπολογιστικής Πολυπλοκότητας (Θεωρία Αλγορίθμων). Διδάσκων: Σταύρος Κολλιόπουλος

Διαβάστε περισσότερα

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr Θεωρία Υπολογισμού Άρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr Περιγραφή μαθήματος Σκοπός του μαθήματος είναι η εισαγωγή στη Θεωρία Υπολογισμού και στη Θεωρία Υπολογιστικής Πολυπλοκότητας

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών ΚΕΦΑΛΑΙΟ : Θεωρία υπολογισµών. Συναρτήσεις και ο υπολογισµός τους. Μηχανές Turig.3 Καθολικές γλώσσες προγραµµατισµού.4 Μια µη υπολογίσιµη συνάρτηση.5 Πολυπλοκότητα προβληµάτων.6 Κρυπτογραφία δηµόσιου κλειδιού.

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ανάλυση Αλγορίθμων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανάλυση Αλγορίθμων Η ανάλυση αλγορίθμων περιλαμβάνει τη διερεύνηση του τρόπου

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Βιβλιογραφία Robert Sedgewick, Αλγόριθμοι σε C, Μέρη 1-4 (Θεμελιώδεις Έννοιες, Δομές Δεδομένων, Ταξινόμηση,

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ Περιεχόμενα Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23 Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ 1. Επαναληπτικοί αλγόριθμοι: Μέτρα προόδου και αναλλοίωτες συνθήκες.....................................................29

Διαβάστε περισσότερα

L A P. w L A f(w) L B (10.1) u := f(w)

L A P. w L A f(w) L B (10.1) u := f(w) Κεφάλαιο 10 NP -πληρότητα Σύνοψη Οι γλώσσες στην κλάση πολυπλοκότητας P μπορούν να αποφασίζονται σε πολωνυμικό χρόνο. Οι επιστήμονες πιστεύουν, αν και δε μπορούν να το αποδείξουν ότι η P είναι ένα γνήσιο

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

Διαβάστε περισσότερα

CSC 314: Switching Theory

CSC 314: Switching Theory CSC 314: Switching Theory Course Summary 9 th January 2009 1 1 Θέματα Μαθήματος Ερωτήσεις Τι είναι αλγόριθμος? Τι μπορεί να υπολογιστεί? Απαντήσεις Μοντέλα Υπολογισμού Δυνατότητες και μη-δυνατότητες 2

Διαβάστε περισσότερα

NP-πληρότητα. Λεωνίδας Παληός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων

NP-πληρότητα. Λεωνίδας Παληός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων NP-πληρότητα Λεωνίδας Παληός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων Πολυωνυμικός μετασχηματισμός Ένας πολυωνυμικός μετασχηματισμός από την L 1 Σ 1 * στην L 2 Σ 2 * είναι μια συνάρτηση

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός

Διαβάστε περισσότερα

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική

Διαβάστε περισσότερα

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

Διαβάστε περισσότερα

Chapter 7, 8 : Time, Space Complexity

Chapter 7, 8 : Time, Space Complexity CSC 314: Switching Theory Chapter 7, 8 : Time, Space Complexity 12 December 2008 1 1 Υπολογίσιμα και Εφικτά Υπολογίσιμα Προβλήματα Είδαμε ότι 1. Οτιδήποτεμπορούμεναπεριγράψουμεμεένααλγόριθμο μπορεί να

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου Εισαγωγή στις Αρχές της επιστήμης των Η/Υ Β Λυκείου Επιστήμη των υπολογιστών μελετά Θεωρητικά θεμέλια Φύση πληροφοριών Φύση αλγορίθμων Φύση υπολογισμών Και τις τεχνολογικές εφαρμογές τους Από τις σκοπιές

Διαβάστε περισσότερα

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο Σύνοψη Στο κεφάλαιο αυτό παρουσιάζεται η ιδέα του συμπτωτικού πολυωνύμου, του πολυωνύμου, δηλαδή, που είναι του μικρότερου δυνατού βαθμού και που, για συγκεκριμένες,

Διαβάστε περισσότερα

Ταξινομώντας τον πίνακα σε φθίνουσα σειρά ως προς τις πωλήσεις, μπορούμε να δούμε ποιοι ήταν οι καλύτεροι πωλητές. Ζωή Μάνος Δημήτρης Κατερίνα Γιάννα Πωλήσεις Μαρτίου Πωλητής Πωλήσεις (χιλιάδες κουτιά)

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

Διαβάστε περισσότερα

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 8 NP και Υπολογιστική Δυσεπιλυσιμότητα Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 πρόβλημα αναζήτησης (search problem) Ένα πρόβλημα αναζήτησης είναι ένα πρόβλημα στο

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

9. Συστολικές Συστοιχίες Επεξεργαστών

9. Συστολικές Συστοιχίες Επεξεργαστών Κεφάλαιο 9: Συστολικές συστοιχίες επεξεργαστών 208 9. Συστολικές Συστοιχίες Επεξεργαστών Οι συστολικές συστοιχίες επεξεργαστών είναι επεξεργαστές ειδικού σκοπού οι οποίοι είναι συνήθως προσκολλημένοι σε

Διαβάστε περισσότερα

Το πρόβλημα μονοδρόμησης (The One-Way Street Problem)

Το πρόβλημα μονοδρόμησης (The One-Way Street Problem) Το πρόβλημα μονοδρόμησης (The One-Way Street Problem) Το πρόβλημα Σχετίζεται με τη διαχείριση της κίνησης οχημάτων στους δρόμους Αν δεν υπήρχαν καθυστερήσεις στην κίνηση στις πόλεις Αποφυγή σπατάλης ενέργειας

Διαβάστε περισσότερα

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΦΕΒΡΟΥΑΡΙΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α :

Διαβάστε περισσότερα

Λύσεις 4ης Σειράς Ασκήσεων

Λύσεις 4ης Σειράς Ασκήσεων Λύσεις 4ης Σειράς Ασκήσεων Άσκηση 1 Αναγάγουμε τν Κ 0 που γνωρίζουμε ότι είναι μη-αναδρομική (μη-επιλύσιμη) στην γλώσσα: L = {p() η μηχανή Turing Μ τερματίζει με είσοδο κενή ταινία;} Δοσμένης της περιγραφής

Διαβάστε περισσότερα

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ροή Δικτύου Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μοντελοποίηση Δικτύων Μεταφοράς Τα γραφήματα χρησιμοποιούνται συχνά για την μοντελοποίηση

Διαβάστε περισσότερα

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Ενότητα 1 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΓΡΑΦΗΜΑΤΩΝ Σταύρος Δ. Νικολόπουλος 2017-18 www.cs.uoi.gr/~stavros Σχετικά με το Μάθημα Ώρες γραφείου: Δευτέρα Παρασκευή

Διαβάστε περισσότερα

Κλάση NP, NP-Complete Προβλήματα

Κλάση NP, NP-Complete Προβλήματα Κλάση NP, NP-Complete Προβλήματα Βαγγέλης ούρος douros@aueb.gr 1 11/6/2012 Αλγόριθμοι, Εαρινό Εξάμηνο 2012, Φροντιστήριο #14 Προβλήματα Απόφασης & Βελτιστοποίησης 2 Πρόβλημα Απόφασης: Κάθε πρόβλημα που

Διαβάστε περισσότερα

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας Εισαγωγή στους Αλγόριθμους Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr 1 Περιεχόμενα Μαθήματος Εισαγωγή στου Αλγόριθμους Πολυπλοκότητα Αλγορίθμων Ασυμπτωτική Ανάλυση Θεωρία Γράφων Κλάσεις Πολυπλοκότητας

Διαβάστε περισσότερα

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα

Διαβάστε περισσότερα

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

Κεφάλαιο 5 Ανάλυση Αλγορίθμων Κεφάλαιο 5 Ανάλυση Αλγορίθμων 5.1 Επίδοση αλγορίθμων Τα πρωταρχικά ερωτήματα που προκύπτουν είναι: 1. πώς υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 2. πώς μπορούν να συγκριθούν μεταξύ τους οι διάφοροι

Διαβάστε περισσότερα

Υπολογιστική Πολυπλοκότητα

Υπολογιστική Πολυπλοκότητα Υπολογιστική Πολυπλοκότητα ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Υπολογιστική Πολυπλοκότητα Γιατί κάποια (επιλύσιμα) προβλήματα είναι δύσκολο

Διαβάστε περισσότερα

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ Θέματα μελέτης Ορθότητα και απόδοση αλγορίθμων Παρουσίαση και ανάλυση αλγορίθμου για πρόσθεση Al Khwarizmi Αλγόριθμοι Το δεκαδικό σύστημα εφευρέθηκε στην Ινδία περίπου το

Διαβάστε περισσότερα

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Αναγωγές

Θεωρία Υπολογισμού και Πολυπλοκότητα Αναγωγές Θεωρία Υπολογισμού και Πολυπλοκότητα Αναγωγές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ανεπίλυτα Προβλήματα από τη Θεωρία Γλωσσών (5.1) To Πρόβλημα της Περάτωσης Το Πρόβλημα της Κενότητα

Διαβάστε περισσότερα

HY118-Διακριτά Μαθηματικά. Θεωρία γράφων/ γραφήματα. Τι έχουμε δει μέχρι τώρα. Ισομορφισμός γράφων: Μία σχέση ισοδυναμίας μεταξύ γράφων.

HY118-Διακριτά Μαθηματικά. Θεωρία γράφων/ γραφήματα. Τι έχουμε δει μέχρι τώρα. Ισομορφισμός γράφων: Μία σχέση ισοδυναμίας μεταξύ γράφων. HY118-Διακριτά Μαθηματικά Θεωρία γράφων/ γραφήματα Τρίτη, 15/05/2018 Αντώνης Α. Αργυρός e-mail: argyros@csd.uoc.gr 16-May-18 1 1 16-May-18 2 2 Τι έχουμε δει μέχρι τώρα Κατευθυνόμενοι μη κατευθυνόμενοι

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

viii 20 Δένδρα van Emde Boas 543

viii 20 Δένδρα van Emde Boas 543 Περιεχόμενα Πρόλογος xi I Θεμελιώδεις έννοιες Εισαγωγή 3 1 Ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες 5 1.1 Αλγόριθμοι 5 1.2 Οι αλγόριθμοι σαν τεχνολογία 12 2 Προκαταρκτικές έννοιες και παρατηρήσεις

Διαβάστε περισσότερα

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων...

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων... Περιεχόμενα Ανάλυση προβλήματος 1. Η έννοια πρόβλημα...13 2. Επίλυση προβλημάτων...17 Δομή ακολουθίας 3. Βασικές έννοιες αλγορίθμων...27 4. Εισαγωγή στην ψευδογλώσσα...31 5. Οι πρώτοι μου αλγόριθμοι...54

Διαβάστε περισσότερα

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

Διαβάστε περισσότερα

Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα

Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα Αλγόριθμοι πολυωνυμικού χρόνου Ένας αλγόριθμος πολυωνυμικού χρόνου έχει χρόνο εκτέλεσης όπου είναι μία (θετική) σταθερά Κλάση πολυπλοκότητας : περιλαμβάνει τα προβλήματα που επιδέχονται λύση σε πολυωνυμικό

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα

Θεωρία Υπολογισμού και Πολυπλοκότητα Θεωρία Υπολογισμού και Πολυπλοκότητα Κλάσεις P, NP NP-πληρότητα 15 Απριλίου 2008 Δρ. Παπαδοπούλου Βίκη 1 Υπολογίσιμα και Εφικτά Υπολογίσιμα Προβλήματα Είδαμε ότι 1. Οτιδήποτε μπορούμε να περιγράψουμε με

Διαβάστε περισσότερα

t M (w) T ( w ) O( n) = O(n 2 )

t M (w) T ( w ) O( n) = O(n 2 ) Κεφάλαιο 9 Υπολογιστική Πολυπλοκότητα Σύνοψη Πέρα από το ερώτημα του αν για ένα πρόβλημα υπάρχει Μηχανή Turing, που το επιλύει, μας απασχολεί επίσης και το ερώτημα του αν ένα πρόβλημα είναι «πρακτικά»

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Οι παρούσες σημειώσεις αποτελούν βοήθημα στο μάθημα Αριθμητικές Μέθοδοι του 5 ου εξαμήνου του ΤΜΜ ημήτρης Βαλουγεώργης Καθηγητής Εργαστήριο Φυσικών

Διαβάστε περισσότερα

Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών

Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών Συμβολισμοί Σε αναλογία με τους ορισμούς συμβολίζουμε μια ακολουθία: 1 είτε μέσω του διανυσματικού ορισμού, παραθέτοντας αναγκαστικά

Διαβάστε περισσότερα

Σχεδίαση & Ανάλυση Αλγορίθμων

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 1 Αλγόριθμοι και Πολυπλοκότητα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Εισαγωγή Ας ξεκινήσουμε

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 1 Εισαγωγή 1 / 14 Δομές Δεδομένων και Αλγόριθμοι Δομή Δεδομένων Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ Κ Υ Κ Λ Ο Υ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Κ Α Ι Υ Π Η Ρ Ε Σ Ι Ω Ν Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Η

Διαβάστε περισσότερα

HY118-Διακριτά Μαθηματικά

HY118-Διακριτά Μαθηματικά HY118-Διακριτά Μαθηματικά Πέμπτη, 11/05/2017 Αντώνης Α. Αργυρός e-mail: argyros@csd.uoc.gr 11-May-17 1 1 Θεωρία γράφων / γραφήματα 11-May-17 2 2 Τι έχουμε δει μέχρι τώρα Κατευθυνόμενοι μη κατευθυνόμενοι

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ο ΚΕΦΑΛΑΙΟ 1) Τι είναι πρόβλημα (σελ. 3) 2) Τι είναι δεδομένο, πληροφορία, επεξεργασία δεδομένων (σελ. 8) 3) Τι είναι δομή ενός προβλήματος (σελ. 8)

Διαβάστε περισσότερα

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

Διαβάστε περισσότερα

HY118-Διακριτά Μαθηματικά. Θεωρία γράφων / γραφήματα. Τι έχουμε δει μέχρι τώρα. Υπογράφημα. 24 -Γράφοι

HY118-Διακριτά Μαθηματικά. Θεωρία γράφων / γραφήματα. Τι έχουμε δει μέχρι τώρα. Υπογράφημα. 24 -Γράφοι HY118-Διακριτά Μαθηματικά Θεωρία γράφων / γραφήματα Πέμπτη, 11/05/2017 Αντώνης Α. Αργυρός e-mail: argyros@csd.uoc.gr 11-May-17 1 1 11-May-17 2 2 Τι έχουμε δει μέχρι τώρα Κατευθυνόμενοι μη κατευθυνόμενοι

Διαβάστε περισσότερα

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 8 NP και Υπολογιστική Δυσεπιλυσιµότητα Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 πρόβληµα αναζήτησης (search problem) Ένα πρόβληµα αναζήτησης είναι ένα πρόβληµα στο

Διαβάστε περισσότερα

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

Διαβάστε περισσότερα

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 1 : Σύνολα & Σχέσεις (1/2) Αλέξανδρος Τζάλλας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 1 : Σύνολα & Σχέσεις (1/2) Αλέξανδρος Τζάλλας 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Θεωρία Υπολογισμού Ενότητα 1 : Σύνολα & Σχέσεις (1/2) Αλέξανδρος Τζάλλας 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α ΑΝΑΚΕΦΑΛΑΙΩΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Γ' ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΠΕΜΠΤΗ 26 ΑΠΡΙΛΙΟΥ 2012 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: ΑΕσΠΠ 1 / 8 I. ΑΛΓΟΡΙΘΜΟΣ 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: i. Είσοδος : χρήση μιας μεταβλητής που δεν έχει πάρει προηγουμένως τιμή. ii. Έξοδος : ο αλγόριθμος δεν εμφανίζει

Διαβάστε περισσότερα

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Υπολογιστική Πολυπλοκότητα

Υπολογιστική Πολυπλοκότητα Υπολογιστική Πολυπλοκότητα ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Μ Α Θ Η Μ Α Τ Α Γ Λ Υ Κ Ε Ι Ο Υ

Μ Α Θ Η Μ Α Τ Α Γ Λ Υ Κ Ε Ι Ο Υ Μ Α Θ Η Μ Α Τ Α Γ Λ Υ Κ Ε Ι Ο Υ ΜΑΘΗΜΑΤΙΚΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΘΕΤΙΚΩΝ ΣΠΟΥΔΩΝ ΚΑΙ ΣΠΟΥΔΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ (Α ΜΕΡΟΣ: ΣΥΝΑΡΤΗΣΕΙΣ) Επιμέλεια: Καραγιάννης Ιωάννης, Σχολικός Σύμβουλος Μαθηματικών

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσhmμy 3η ενότητα: Βασικές έννοιες θεωρίας υπολογισμού: υπολογιστικά προβλήματα, υπολογισιμότητα, πολυπλοκότητα Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης

Διαβάστε περισσότερα

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος Εισαγωγή στους Αλγόριθµους Αλγόριθµοι Τι είναι αλγόριθµος; Τι µπορεί να υπολογίσει ένας αλγόριθµος; Πως αξιολογείται ένας αλγόριθµος; Παύλος Εφραιµίδης pefraimi@ee.duth.gr Αλγόριθµοι Εισαγωγικές Έννοιες

Διαβάστε περισσότερα

Προσεγγιστικοί Αλγόριθμοι

Προσεγγιστικοί Αλγόριθμοι Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. http://xkcd.com/287/ Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. Πως μπορούμε να αντιμετωπίσουμε το γεγονός ότι είναι απίθανη(;)

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 5: ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ-ΑΝΑΓΩΓΗ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 5: ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ-ΑΝΑΓΩΓΗ Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 5: ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ-ΑΝΑΓΩΓΗ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και

Διαβάστε περισσότερα

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1, Κεφάλαιο 8 NP και Υπολογιστική Δυσεπιλυσιμότητα Παύλος Εφραιμίδης V1.1, 2015-01-19 Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 πρόβλημα αναζήτησης (search problem) Ένα πρόβλημα

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 (Α) Σημειώστε δίπλα σε κάθε πρόταση «Σ» ή «Λ» εφόσον είναι σωστή ή λανθασμένη αντίστοιχα. 1. Τα συντακτικά λάθη ενός προγράμματος

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 9 P vs NP 1 / 13 Δυσκολία επίλυσης υπολογιστικών προβλημάτων Κάποια προβλήματα είναι εύκολα να λυθούν με

Διαβάστε περισσότερα

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

Διαβάστε περισσότερα

n ίδια n διαφορετικά n n 0 n n n 1 n n n n 0 4

n ίδια n διαφορετικά n n 0 n n n 1 n n n n 0 4 Διακριτά Μαθηματικά Ι Επαναληπτικό Μάθημα 1 Συνδυαστική 2 Μεταξύ 2n αντικειμένων, τα n είναι ίδια. Βρείτε τον αριθμό των επιλογών n αντικειμένων από αυτά τα 2n αντικείμενα. Μεταξύ 3n + 1 αντικειμένων τα

Διαβάστε περισσότερα

Πρόβλημα 37 / σελίδα 207

Πρόβλημα 37 / σελίδα 207 Πρόβλημα 37 / σελίδα 207 2.5. Ôåóô áõôïáîéïëüãçóçò Δίνονται οι παρακάτω ομάδες προτάσεων. Σε κάθε μία από αυτές, να κάνετε τις απαραίτητες διορθώσεις ώστε να ισχύουν οι προτάσεις 1. Η αναπαράσταση

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισμού

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισμού ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισμού 12.1 Συναρτήσεις και ο υπολογισμός τους 12.2 Μηχανές Turing 12.3 Καθολικές γλώσσες προγραμματισμού 12.4 Μια μη υπολογίσιμη συνάρτηση 12.5 Πολυπλοκότητα προβλημάτων 12.6

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΑΘΗΜΑ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Β ΛΥΚΕΙΟΥ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΑΘΗΜΑ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Β ΛΥΚΕΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΑΘΗΜΑ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Β ΛΥΚΕΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ Ιστότοπος Βιβλίου http://www.iep.edu.gr/ και «Νέα Βιβλία ΙΕΠ ΓΕΛ και ΕΠΑΛ» 2 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 2.0 Πολυπλοκότητα Αλγορίθμων Ασυμπτωτική Πολυπλοκότητα Αναδρομικές Σχέσεις Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων

Διαβάστε περισσότερα