4 Μέρος I Θεμελιώδεις έννοιες τμήματος δεν είναι τόσο η παρουσίαση νέων μαθηματικών εννοιών, αλλά κυρίως η αποσαϕήνιση των συμβολιστικών συμβάσεων που

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

Download "4 Μέρος I Θεμελιώδεις έννοιες τμήματος δεν είναι τόσο η παρουσίαση νέων μαθηματικών εννοιών, αλλά κυρίως η αποσαϕήνιση των συμβολιστικών συμβάσεων που"

Transcript

1 Εισαγωγή Σε αυτό το μέρος του βιβλίου παρουσιάζονται οι πρώτες έννοιες της σχεδίασης και ανάλυσης αλγορίθμων. Στόχος του μέρους αυτού είναι να εισαγάγει τον αναγνώστη ομαλά στη μεθοδολογία του ακριβούς καθορισμού των αλγορίθμων, σε ορισμένες από τις στρατηγικές σχεδίασης που χρησιμοποιούνται γενικότερα στο βιβλίο αυτό, και σε πολλές θεμελιώδεις έννοιες της ανάλυσης αλγορίθμων. Η ύλη αυτών των πρώτων κεϕαλαίων αποτελεί τη βάση για τα επόμενα μέρη του βιβλίου. Στο Κεϕάλαιο 1 παρουσιάζεται μια γενική επισκόπηση των αλγορίθμων και του ρόλου τους στα σύγχρονα υπολογιστικά συστήματα. Στο κεϕάλαιο αυτό ορίζεται η έννοια του αλγορίθμου και παρατίθενται ορισμένα παραδείγματα. Επιπλέον, τεκμηριώνεται η άποψη ότι οι αλγόριθμοι θα πρέπει να θεωρούνται τεχνολογία, αντίστοιχη με τεχνολογίες όπως το υλισμικό υψηλής ταχύτητας, οι γραϕικές επαϕές χρήσεως, τα αντικειμενοστρεϕή συστήματα και τα δίκτυα. Στο Κεϕάλαιο 2 παρουσιάζονται οι πρώτοι αλγόριθμοι, οι οποίοι επιλύουν το πρόβλημα της ταξινόμησης μιας ακολουθίας n αριθμών. Οι αλγόριθμοι αυτοί είναι γραμμένοι σε ψευδοκώδικα, ο οποίος αν και δεν μπορεί να μεταϕραστεί απευθείας σε καμία από τις συμβατικές γλώσσες προγραμματισμού, αποτυπώνει τη δομή του αλγορίθμου με αρκετή σαϕήνεια ώστε ο αναγνώστης να μπορεί να τον υλοποιήσει στη γλώσσα της αρεσκείας του. Οι αλγόριθμοι που εξετάζονται είναι αυτοί της ενθετικής ταξινόμησης, η οποία βασίζεται στην αυξητική προσέγγιση, και της συγχωνευτικής ταξινόμησης, η οποία βασίζεται σε μια αναδρομική τεχνική γνωστή ως «διαίρει-και-κυρίευε». Παρ όλο που ο χρόνος εκτέλεσης και των δύο αυτών αλγορίθμων αυξάνεται καθώς αυξάνεται η τιμή του n, ο ρυθμός αύξησης διαϕέρει μεταξύ των δύο αλγορίθμων. Στο Κεϕάλαιο 2 προσδιορίζονται αυτοί οι χρόνοι εκτέλεσης, και εισάγεται ένας εύχρηστος συμβολισμός για την περιγραϕή τους. Στο Κεϕάλαιο 3 ορίζεται επακριβώς αυτός ο λεγόμενος ασυμπτωτικός συμβολισμός. Σε πρώτη ϕάση ορίζονται διάϕοροι συμβολισμοί αυτού του τύπου, οι οποίοι χρησιμοποιούνται για τη ϕραγή του χρόνου εκτέλεσης των αλγορίθμων εκ των άνω και/ή εκ των κάτω. Το υπόλοιπο τμήμα του Κεϕαλαίου 3 αποτελεί κατά κύριο λόγο μια παρουσίαση μαθηματικού συμβολισμού. Στόχος αυτού του

2 4 Μέρος I Θεμελιώδεις έννοιες τμήματος δεν είναι τόσο η παρουσίαση νέων μαθηματικών εννοιών, αλλά κυρίως η αποσαϕήνιση των συμβολιστικών συμβάσεων που ακολουθούνται σε αυτό το βιβλίο. Στο Κεϕάλαιο 4 αναλύεται λεπτομερέστερα η μέθοδος διαίρει-και-κυρίευε η οποία έχει εισαχθεί στο Κεϕάλαιο 2. Παρουσιάζονται επιπλέον ενδεικτικοί αλγόριθμοι τύπου διαίρει-και-κυρίευε, μεταξύ των οποίων η αναπάντεχη μέθοδος του Strassen για πολλαπλασιασμό δύο τετραγωνικών πινάκων. Παρουσιάζονται επίσης μέθοδοι επίλυσης αναδρομικών σχέσεων, οι οποίες χρησιμοποιούνται για την περιγραϕή του χρόνου εκτέλεσης αναδρομικών αλγορίθμων. Μια ισχυρή τέτοια τεχνική είναι η λεγόμενη «κεντρική μέθοδος», την οποία θα χρησιμοποιήσουμε συχνά για την επίλυση αναδρομικών σχέσεων που προκύπτουν από αλγορίθμους τύπου διαίρει-και-κυρίευε. Αν και μεγάλο μέρος του Κεϕαλαίου 4 είναι αϕιερωμένο στην απόδειξη της ορθότητας της κεντρικής μεθόδου, ωστόσο μπορεί κανείς κάλλιστα να χρησιμοποιήσει τη μέθοδο ακόμη κι αν δεν έχει μελετήσει την απόδειξη. Το Κεϕάλαιο 5 αποτελεί μια εισαγωγή στην πιθανοτική ανάλυση και τους τυχαιοκρατικούς αλγορίθμους. Η πιθανοτική ανάλυση χρησιμοποιείται κατά κανόνα για να προσδιοριστεί ο χρόνος εκτέλεσης ενός αλγορίθμου στις περιπτώσεις όπου, λόγω της εγγενούς ύπαρξης μιας κατανομής πιθανότητας, ο χρόνος εκτέλεσης ενδέχεται να διαϕέρει για διαϕορετικές εισόδους του ίδιου μεγέθους. Σε ορισμένες περιπτώσεις, υποθέτουμε ότι οι είσοδοι ακολουθούν μια γνωστή κατανομή πιθανότητας, και συνεπώς υπολογίζουμε την αναμενόμενη τιμή του χρόνου εκτέλεσης επί όλων των δυνατών εισόδων. Σε άλλες περιπτώσεις, η κατανομή πιθανότητας δεν προέρχεται από τις εισόδους αλλά από τυχαίες επιλογές που πραγματοποιούνται κατά την πορεία εκτέλεσης του αλγορίθμου. Ενας αλγόριθμος του οποίου η συμπεριϕορά δεν καθορίζεται μόνο από την είσοδό του αλλά και από τιμές που παράγονται από μια γεννήτρια τυχαίων αριθμών ονομάζεται τυχαιοκρατικός. Οι τυχαιοκρατικοί αλγόριθμοι μπορούν να χρησιμοποιηθούν για να επιβληθεί μια κατανομή πιθανότητας στις εισόδους ώστε να εξασϕαλιστεί ότι καμία συγκεκριμένη είσοδος δεν θα προκαλεί πάντοτε χαμηλή επίδοση, ή ακόμη και για να ϕραγεί ο ρυθμός εμϕάνισης σϕαλμάτων από αλγορίθμους οι οποίοι επιτρέπεται να παράγουν λανθασμένα αποτελέσματα σε κάποιο περιορισμένο ποσοστό. Τα Παραρτήματα Αʹ Δʹ καλύπτουν ύλη μαθηματικού χαρακτήρα η οποία θα σας ϕανεί χρήσιμη κατά την πορεία της μελέτης αυτού του βιβλίου. Κατά πάσα πιθανότητα, μεγάλο μέρος της ύλης αυτής θα σας είναι ήδη γνωστό (παρ όλο που σε ορισμένες περιπτώσεις οι συγκεκριμένοι ορισμοί και οι συμβολιστικές συμβάσεις που ακολουθούμε πιθανόν να διαϕέρουν από αυτές που έχετε συναντήσει στο παρελθόν), και επομένως τα παραρτήματα έχουν περισσότερο χαρακτήρα «ύλης αναϕοράς». Από την άλλη πλευρά, η ύλη του Μέρους I πιθανότατα θα σας είναι εν πολλοίς άγνωστη. Ολα τα κεϕάλαια του Μέρους I καθώς και τα παραρτήματα είναι γραμμένα σε πνεύμα αναλυτικής διδασκαλίας, και όχι επιγραμματικής παρουσίασης.

3 1 Ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Τι είναι οι αλγόριθμοι; Σε τι μας χρησιμεύει η μελέτη τους; Ποιος είναι ο ρόλος τους σε σχέση με τις άλλες τεχνολογίες που χρησιμοποιούνται στους υπολογιστές; Σκοπός μας σε αυτό το κεϕάλαιο είναι να δώσουμε απαντήσεις στα παραπάνω ερωτήματα. 1.1 Αλγόριθμοι Ο όρος αλγόριθμος αναϕέρεται σε οποιαδήποτε καλά ορισμένη υπολογιστική διαδικασία που δέχεται κάποια τιμή ή κάποιο σύνολο τιμών ως είσοδο και δίνει κάποια τιμή ή κάποιο σύνολο τιμών ως έξοδο. Συνεπώς, ένας αλγόριθμος είναι μια ακολουθία υπολογιστικών βημάτων που μετασχηματίζει την είσοδο στην έξοδο. Μπορούμε επίσης να θεωρήσουμε τον αλγόριθμο ως ένα εργαλείο για την επίλυση ενός καλά καθορισμένου υπολογιστικού προβλήματος. Η διατύπωση του προβλήματος καθορίζει σε γενικές γραμμές την επιθυμητή σχέση εισόδου-εξόδου. Ο αλγόριθμος περιγράϕει μια συγκεκριμένη υπολογιστική διαδικασία για την επίτευξη αυτής της σχέσης εισόδου-εξόδου. Ας υποθέσουμε, λόγου χάριν, ότι θέλουμε να ταξινομήσουμε μια ακολουθία αριθμών κατ αύξουσα σειρά. Το συγκεκριμένο πρόβλημα ανακύπτει συχνά στην πράξη και προσϕέρεται για την εισαγωγή πολλών καθιερωμένων σχεδιαστικών τεχνικών και εργαλείων ανάλυσης. Το πρόβλημα της ταξινόμησης ορίζεται τυπικά ως εξής: Είσοδος: Μια ακολουθία n αριθμών a 1, a 2,..., a n. Εξοδος: Μια μετάθεση (αναδιάταξη) a 1,a 2,...,a n της ακολουθίας εισόδου τέτοια ώστε a 1 a 2 a n. Επί παραδείγματι, αν η ακολουθία εισόδου είναι 31, 41, 59, 26, 41, 58, ένας αλγόριθμος ταξινόμησης επιστρέϕει ως έξοδο την ακολουθία 26, 31, 41, 41, 58, 59. Κάθε τέτοια ακολουθία εισόδου ονομάζεται στιγμιότυπο του προβλήματος ταξινόμησης. Εν γένει, ο όρος στιγμιότυπο προβλήματος δηλώνει την είσοδο η οποία απαιτείται για να υπολογιστεί μια λύση του προβλήματος (εννοείται ότι η είσοδος αυτή θα ικανοποιεί όλους τους περιορισμούς που επιβάλλει η διατύπωση του προβλήματος). Η ταξινόμηση αποτελεί βασική πράξη στην επιστήμη υπολογιστών, καθώς χρησιμοποιείται ως ενδιάμεσο βήμα σε πολλά προγράμματα. Για τον λόγο αυ-

4 6 Κεϕάλαιο 1 Ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες τό, υπάρχουν αρκετοί ικανοποιητικοί αλγόριθμοι ταξινόμησης. Το ποιος αλγόριθμος είναι ο καταλληλότερος για μια δεδομένη εϕαρμογή εξαρτάται, μεταξύ άλλων, από τον αριθμό των ταξινομητέων στοιχείων, τον βαθμό της αρχικής τους ταξινόμησης, τους πιθανούς περιορισμούς στις τιμές των στοιχείων, την αρχιτεκτονική του υπολογιστή, και το είδος των συσκευών αποθήκευσης που θα χρησιμοποιηθούν: κύρια μνήμη, δίσκοι ή ακόμη και μαγνητική ταινία. Ενας αλγόριθμος χαρακτηρίζεται ορθός αν για κάθε στιγμιότυπο εισόδου τερματίζει δίνοντας την ορθή έξοδο. Λέμε ότι ένας ορθός αλγόριθμος επιλύει το δεδομένο υπολογιστικό πρόβλημα. Ενας μη ορθός αλγόριθμος μπορεί να μην τερματίζει καν σε ορισμένα στιγμιότυπα εισόδου, ή μπορεί να τερματίζει δίνοντας λάθος απάντηση. Αντίθετα απ ό,τι θα υπέθετε ίσως κανείς, ακόμη και ένας μη ορθός αλγόριθμος ενδέχεται μερικές ϕορές να είναι χρήσιμος, αν μπορούμε να συγκρατήσουμε το ποσοστό των σϕαλμάτων του μέσα σε ορισμένα πλαίσια. Μια τέτοια περίπτωση αλγορίθμου με ελέγξιμο ρυθμό σϕαλμάτων θα δούμε στο Κεϕάλαιο 31, όπου θα μελετήσουμε αλγορίθμους για την εύρεση μεγάλων πρώτων αριθμών. Κατά κανόνα, ωστόσο, οι αλγόριθμοι με τους οποίους θα ασχοληθούμε θα είναι ορθοί. Ενας αλγόριθμος μπορεί να διατυπωθεί σε μια ϕυσική γλώσσα, λόγου χάριν στα Αγγλικά, όπως συμβαίνει σε ένα υπολογιστικό πρόγραμμα, ή ακόμη και να αποδοθεί μέσω της σχεδίασης του υλισμικού του υπολογιστή. Η μόνη απαίτηση είναι η διατύπωσή του να αποτελεί ακριβή περιγραϕή της υπολογιστικής διαδικασίας που πρέπει να ακολουθηθεί. Τι είδους προβλήματα επιλύονται με αλγορίθμους; Η ταξινόμηση δεν είναι βέβαια το μόνο υπολογιστικό πρόβλημα για το οποίο έχουν αναπτυχθεί αλγόριθμοι (μάλλον θα το είχατε ήδη υποψιαστεί από τη στιγμή που είδατε το μέγεθος αυτού του βιβλίου.) Οι πρακτικές εϕαρμογές των αλγορίθμων είναι πανταχού παρούσες και περιλαμβάνουν μεταξύ άλλων τα ακόλουθα παραδείγματα: Το Πρόγραμμα του Ανθρώπινου Γονιδιώματος έχει κάνει σημαντική πρόοδο προς την επίτευξη των στόχων του, που είναι ο προσδιορισμός του συνόλου των γονιδίων του ανθρώπινου DNA, η εύρεση της αλληλουχίας των 3 δισεκατομμυρίων ζευγών χημικών βάσεων από τις οποίες αποτελείται το ανθρώπινο DNA, η αποθήκευση αυτών των πληροϕοριών σε κατάλληλες βάσεις δεδομένων, και η ανάπτυξη εργαλείων για την ανάλυση των δεδομένων. Καθένα από τα παραπάνω βήματα απαιτεί περίτεχνους αλγορίθμους. Αν και οι λύσεις στα διάϕορα προβλήματα που υπεισέρχονται στο συγκεκριμένο πρόγραμμα υπερβαίνουν τον ορίζοντα αυτού του βιβλίου, πολλές από τις μεθόδους που χρησιμοποιούνται για την επίλυση αυτών των προβλημάτων της βιολογίας βασίζονται σε έννοιες που παρουσιάζονται στα κεϕάλαια που ακολουθούν οι μέθοδοι αυτές δίνουν στους επιστήμονες τη δυνατότητα να πετύχουν διάϕορους στόχους αξιοποιώντας αποδοτικά τους πόρους που έχουν στη διάθεσή τους. Με τον τρόπο αυτό εξοικονομείται χρόνος, τόσο ανθρώπινος όσο και υπολογιστικός, και χρήματα, αϕού μπορούν να εξαχθούν περισσότερες πληροϕορίες από τις διάϕορες εργαστηριακές εργασίες. Το Διαδίκτυο δίνει τη δυνατότητα σε ανθρώπους από όλο τον κόσμο να προσπελάζουν και να ανασύρουν γρήγορα μεγάλες ποσότητες πληροϕορι-

5 1.1 Αλγόριθμοι 7 ών. Οι ιστότοποι του Διαδικτύου έχουν τη δυνατότητα να διαχειρίζονται και να επεξεργάζονται αυτούς τους μεγάλους όγκους δεδομένων χάρις στη βοήθεια έξυπνων αλγορίθμων. Σχετικές εργασίες που βασίζονται καθοριστικά σε αλγορίθμους είναι μεταξύ άλλων η εύρεση κατάλληλων διαδρομών για τη μεταϕορά των δεδομένων (τεχνικές για την επίλυση τέτοιων προβλημάτων παρουσιάζονται στο Κεϕάλαιο 24), και η χρήση μηχανών αναζήτησης για τη γρήγορη εύρεση των ιστοσελίδων όπου εντοπίζονται συγκεκριμένες πληροϕορίες (τέτοιες τεχνικές περιγράϕονται στα Κεϕάλαια 11 και 32). Το ηλεκτρονικό εμπόριο δίνει τη δυνατότητα αγοραπωλησίας και διακίνησης αγαθών και υπηρεσιών με ηλεκτρονικά μέσα. Αυτή η μορϕή εμπορίου βασίζεται στη δυνατότητα ασϕαλούς επεξεργασίας εμπιστευτικών πληροϕοριών, όπως είναι οι αριθμοί πιστωτικών καρτών, οι συνθηματικοί κωδικοί, και τα αντίγραϕα κίνησης τραπεζικών λογαριασμών. Μεταξύ των βασικών τεχνικών που χρησιμοποιούνται σε αυτόν τον τομέα είναι η κρυπτογραϕία δημόσιου κλειδιού και οι ψηϕιακές υπογραϕές (τα οποία θα μελετήσουμε στο Κεϕάλαιο 31). Οι συγκεκριμένες τεχνικές βασίζονται σε αριθμητικούς αλγορίθμους και στη θεωρία αριθμών. Στη βιομηχανική παραγωγή και σε άλλες εμπορικές δραστηριότητες συχνά είναι αναγκαίο να κατανέμονται ανεπαρκείς πόροι με τον επωϕελέστερο δυνατό τρόπο. Μια εταιρεία πετρελαίου, λόγου χάριν, πιθανόν να επιθυμεί να γνωρίζει πού να εγκαταστήσει τις πετρελαιοπηγές της προκειμένου να μεγιστοποιήσει το αναμενόμενο κέρδος. Ενας πολιτικός που θέτει υποψη- ϕιότητα για κάποιο πολιτικό αξίωμα πιθανόν να θέλει να προσδιορίσει σε ποιες περιοχές της χώρας θα πρέπει να επενδύσει χρήματα για να διαϕημίσει την προεκλογική του εκστρατεία ώστε να μεγιστοποιήσει τις πιθανότητές του να κερδίσει τις εκλογές. Μια αεροπορική εταιρεία ίσως να επιθυμεί να κατανείμει τα πληρώματα στις διάϕορες πτήσεις με τον λιγότερο δαπανηρό τρόπο, εξασϕαλίζοντας ταυτόχρονα ότι όλες οι πτήσεις καλύπτονται επαρκώς και ότι ικανοποιούνται οι πτητικοί κανονισμοί για τον χρονοπρογραμματισμό των πληρωμάτων. Μια εταιρεία παροχής Διαδικτυακών υπηρεσιών πιθανόν να επιθυμεί να προσδιορίσει σε ποια σημεία θα πρέπει να εγκαταστήσει επιπλέον πόρους προκειμένου να ικανοποιήσει αποτελεσματικότερα τις ανάγκες των πελατών της. Ολες οι παραπάνω περιπτώσεις αποτελούν παραδείγματα προβλημάτων που μπορούν να επιλυθούν με τη βοήθεια του γραμμικού προγραμματισμού, τον οποίο θα μελετήσουμε στο Κεϕάλαιο 29. Στο βιβλίο αυτό, αν και δεν θα αναλύσουμε όλες τις λεπτομέρειες των παραπάνω παραδειγμάτων, θα μελετήσουμε τις θεμελιώδεις τεχνικές που εϕαρμόζονται σε αυτά τα προβλήματα και σε αυτές τις περιοχές προβλημάτων. Θα περιγράψουμε επίσης τη λύση πολλών συγκεκριμένων προβλημάτων, όπως π.χ. τα παρακάτω: Μας δίνεται ένας οδικός χάρτης που αναγράϕει όλες τις αποστάσεις μεταξύ παρακείμενων διασταυρώσεων, και μας ζητείται να προσδιορίσουμε τη βραχύτερη διαδρομή από κάποια διασταύρωση μέχρι κάποια άλλη. Ακόμη και αν αποκλείσουμε τις διαδρομές που τέμνουν τον εαυτό τους, ο αριθμός των δυνατών διαδρομών μπορεί να είναι τεράστιος. Πώς θα βρούμε ποια απ όλες είναι η βραχύτερη; Στην περίπτωση αυτή, αναπαριστούμε τον οδικό χάρτη

6 8 Κεϕάλαιο 1 Ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες (ο οποίος, με τη σειρά του, είναι επίσης μια αναπαράσταση του πραγματικού οδικού δικτύου) με τη μορϕή ενός γραϕήματος (τα γραϕήματα περιγράϕονται στο Μέρος VI και στο Παράρτημα Βʹ), και ανάγουμε το πρόβλημα στην εύρεση της βραχύτερης διαδρομής από κάποιον κόμβο του γραϕήματος μέχρι κάποιον άλλον. Μια δραστική επίλυση αυτού του προβλήματος παρουσιάζεται στο Κεϕάλαιο 24. Μας δίνονται δύο διατεταγμένες ακολουθίες συμβόλων, X = x 1, x 2,..., x m και Y = y 1, y 2,..., y n, και μας ζητείται να βρούμε μια μέγιστη κοινή υπακολουθία των X και Y. Μια υπακολουθία της X είναι απλώς η X από την οποία έχουν αϕαιρεθεί κάποια από τα στοιχεία της (ή όλα ή και κανένα). Για παράδειγμα, μια υπακολουθία της A, B, C, D, E, F, G είναι η B, C, E, G. Το μήκος μιας μέγιστης κοινής υπακολουθίας των X και Y μας δίνει ένα μέτρο του βαθμού ομοιότητας αυτών των δύο ακολουθιών. Για παράδειγμα, όταν οι δύο ακολουθίες είναι ζεύγη βάσεων σε κλάδους του DNA, τότε εάν έχουν μια κοινή υπακολουθία μεγάλου μήκους θα μπορούσαμε να τις θεωρήσουμε όμοιες. Εάν η X έχει m σύμβολα και η Y έχει n σύμβολα, τότε οι X και Y έχουν 2 m και 2 n δυνατές υπακολουθίες, αντίστοιχα. Για να επιλεγούν όλες οι δυνατές υπακολουθίες των X και Y και να συγκριθούν μεταξύ τους θα απαιτούνταν ένα απαγορευτικά μεγάλο χρονικό διάστημα (εκτός αν τα m και n είναι πολύ μικροί αριθμοί). Οπως θα δούμε στο Κεϕάλαιο 15, το πρόβλημα αυτό μπορεί να λυθεί πολύ πιο ικανοποιητικά με μια γενική τεχνική που ονομάζεται δυναμικός προγραμματισμός. Μας δίνεται ένα μηχανικό σχέδιο με βάση μια «βιβλιοθήκη» από μέρη, όπου το κάθε μέρος μπορεί να περιλαμβάνει αντίτυπα άλλων μερών, και μας ζητείται να κατατάξουμε τα μέρη με κάποια σειρά τέτοια ώστε το κάθε μέρος να προηγείται οποιουδήποτε άλλου μέρους το οποίο το χρησιμοποιεί. Αν το σχέδιο περιλαμβάνει n μέρη, τότε υπάρχουν n! δυνατές διατάξεις, όπου n! είναι η συνάρτηση του παραγοντικού. Δεδομένου ότι η συνάρτηση αυτή αυξάνεται ταχύτερα ακόμα κι από μια εκθετική συνάρτηση, είναι αδύνατο να καταστρώσουμε κάθε δυνατή διάταξη και κατόπιν να επαληθεύσουμε ότι, εντός αυτής της διάταξης, το κάθε μέρος εμϕανίζεται πριν από τα μέρη που το χρησιμοποιούν (εκτός αν ο αριθμός των μερών είναι μικρός). Το πρόβλημα αυτό αποτελεί ένα στιγμιότυπο τοπολογικής ταξινόμησης, και θα δούμε πώς μπορεί να επιλυθεί δραστικά στο Κεϕάλαιο 22. Μας δίνονται n σημεία στο επίπεδο, και μας ζητείται να βρούμε το κυρτό κάλυμμα των σημείων αυτών, δηλαδή το μικρότερο κυρτό πολύγωνο που περιέχει όλα τα σημεία. Χάριν εποπτείας, μπορούμε να ϕανταστούμε το κάθε σημείο σαν ένα καρϕί που προεξέχει από την επιϕάνεια μιας ξύλινης πινακίδας. Στην απεικόνιση αυτή, το κυρτό κάλυμμα θα αναπαρίσταται από μια τεντωμένη ελαστική ταινία που περιβάλλει το σύνολο των καρϕιών. Το κάθε καρϕί γύρω από το οποίο κάμπτεται η ταινία είναι μια κορυϕή του κυρτού καλύμματος (βλ. Σχήμα 33.6 στη σελ. 1045, π.χ.). Εν γένει, το σύνολο των κορυϕών του καλύμματος μπορεί να είναι οποιοδήποτε από τα 2 n υποσύνολα των σημείων. Επιπλέον, δεν αρκεί να γνωρίζουμε ποια από τα σημεία είναι κορυϕές του καλύμματος θα πρέπει επίσης να γνωρίζουμε τη διάταξη των σημείων αυτών. Επομένως, υπάρχουν πολλές επιλογές για

7 1.1 Αλγόριθμοι 9 τις κορυϕές του κυρτού καλύμματος. Στο Κεϕάλαιο 33 θα παρουσιάσουμε δύο καλές μεθόδους για την εύρεση του κυρτού καλύμματος. Τα παραπάνω παραδείγματα, αν και δεν εξαντλούν επ ουδενί το σύνολο των σημαντικών περιπτώσεων (όπως και πάλι θα έχετε αντιληϕθεί από το βάρος αυτού του βιβλίου), διαθέτουν δύο χαρακτηριστικά που είναι κοινά σε πολλά ενδιαϕέροντα αλγοριθμικά προβλήματα. 1. Εχουν πολλές υποψήϕιες λύσεις, οι οποίες στη συντριπτική τους πλειονότητα δεν επιλύουν το πρόβλημα. Η εύρεση μιας από αυτές που το επιλύει, ή που είναι «βέλτιστη», μπορεί να παρουσιάζει αρκετές δυσκολίες. 2. Εχουν πρακτικές εϕαρμογές. Το πιο χαρακτηριστικό παράδειγμα μεταξύ των παραπάνω προβλημάτων είναι η εύρεση της βραχύτερης διαδρομής. Για μια μεταϕορική εταιρεία, όπως είναι λόγου χάριν ένας σιδηροδρομικός οργανισμός ή μια εταιρεία οδικών μεταϕορών, η εύρεση των βραχύτερων διαδρομών σε ένα σιδηροδρομικό ή οδικό δίκτυο έχει άμεσο οικονομικό ενδιαϕέρον, καθώς η υιοθέτηση των διαδρομών αυτών συνεπάγεται μικρότερες δαπάνες για αμοιβές προσωπικού και καύσιμα. Για έναν κόμβο δρομολόγησης στο Διαδίκτυο, η εύρεση της βραχύτερης διαδρομής στο δίκτυο επιτρέπει την ταχύτερη μεταβίβαση ενός μηνύματος. Ενώ κάποιος που θέλει να πάει οδικώς από τη Νέα Υόρκη στη Βοστώνη θα διευκολυνθεί σίγουρα αν βρει οδηγίες από έναν κατάλληλο ιστότοπο, ή αν χρησιμοποιήσει το GPS του καθώς θα οδηγεί. Τα προβλήματα που επιλύονται με αλγορίθμους δεν έχουν όλα τους ένα εύκολα αναγνωρίσιμο σύνολο υποψήϕιων λύσεων. Για παράδειγμα, ας υποθέσουμε ότι μας δίνεται ένα σύνολο αριθμητικών τιμών που αντιπροσωπεύουν δείγματα ενός σήματος, και ότι θέλουμε να υπολογίσουμε τον διακριτό μετασχηματισμό Fourier των δειγμάτων αυτών. Με τον διακριτό μετασχηματισμό Fourier μπορεί κανείς να αναχθεί από το πεδίο των χρόνων στο πεδίο των συχνοτήτων, υπολογίζοντας ένα σύνολο αριθμητικών συντελεστών με τους οποίους προσδιορίζεται η ισχύς των διαϕόρων συχνοτήτων στο δειγματικό σήμα. Εκτός από τον κεντρικό του ρόλο στην επεξεργασία σημάτων, ο διακριτός μετασχηματισμός Fourier έχει επίσης εϕαρμογές στη συμπίεση δεδομένων και στον πολλαπλασιασμό μεγάλων πολυωνύμων και ακεραίων. Στο Κεϕάλαιο 30 περιγράϕεται ένας αποδοτικός αλγόριθμος για το πρόβλημα αυτό, ο ταχύς μετασχηματισμός Fourier (που αποκαλείται συνήθως FFT), ενώ σκιαγραϕείται επίσης η σχεδίαση ενός κυκλώματος για τον υπολογισμό του FFT. Δομές δεδομένων Στο βιβλίο αυτό θα ασχοληθούμε επίσης με διάϕορες δομές δεδομένων. Μια δομή δεδομένων είναι ένας τρόπος αποθήκευσης και οργάνωσης των δεδομένων ο οποίος διευκολύνει την προσπέλαση και την τροποποίησή τους. Δεδομένου ότι δεν υπάρχει μία και μοναδική δομή δεδομένων που να καλύπτει ικανοποιητικά όλες τις ανάγκες που εμϕανίζονται στις εϕαρμογές, θα πρέπει κανείς να γνωρίζει τα πλεονεκτήματα και τους περιορισμούς διαϕόρων τέτοιων δομών.

8 10 Κεϕάλαιο 1 Ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Τεχνική Αν και μπορείτε να χρησιμοποιήσετε το βιβλίο αυτό σαν «συνταγολόγιο» έτοιμων αλγορίθμων, είναι πιθανό σε κάποια εϕαρμογή να συναντήσετε ένα πρόβλημα για το οποίο να μην μπορείτε να βρείτε εύκολα κάποιον σχετικό αλγόριθμο στα περιεχόμενά του (αυτό ισχύει π.χ. για πολλές από τις ασκήσεις και τα προβλήματα που παρατίθενται στο τέλος των ενοτήτων). Στο βιβλίο αυτό, θα μελετήσουμε τεχνικές σχεδίασης και ανάλυσης αλγορίθμων οι οποίες θα σας επιτρέψουν να αναπτύσσετε τους δικούς σας αλγορίθμους, να αποδεικνύετε ότι δίνουν το σωστό αποτέλεσμα και να αξιολογείτε την επίδοσή τους. Το κάθε κεϕάλαιο πραγματεύεται διαϕορετικές πλευρές της επίλυσης αλγοριθμικών προβλημάτων. Κάποια κεϕάλαια αναλύουν συγκεκριμένα προβλήματα, όπως είναι η εύρεση διαμέσων και διατακτικών στατιστικών (Κεϕάλαιο 9), ο υπολογισμός ελαϕρύτατων συνδετικών δέντρων (Κεϕάλαιο 23), και ο προσδιορισμός μιας μέγιστης ροής σε κάποιο δίκτυο (Κεϕάλαιο 26). Άλλα κεϕάλαια περιγράϕουν τεχνικές, όπως είναι η μέθοδος «διαίρει και κυρίευε» (Κεϕάλαιο 4), ο δυναμικός προγραμματισμός (Κεϕάλαιο 15), και η αντισταθμιστική ανάλυση (Κεϕάλαιο 17). Δύσκολα προβλήματα Το μεγαλύτερο μέρος αυτού του βιβλίου αϕορά δραστικούς αλγορίθμους. Ενα συνηθισμένο μέτρο της δραστικότητας είναι η ταχύτητα, δηλαδή το πόσος χρόνος χρειάζεται για να παραγάγει ένας αλγόριθμος το αποτέλεσμά του. Υπάρχουν ορισμένα προβλήματα, όμως, για τα οποία δεν γνωρίζουμε καμία δραστική λύση. Στο Κεϕάλαιο 34 θα μελετήσουμε ένα ενδιαϕέρον υποσύνολο αυτών των προβλημάτων, τα λεγόμενα NP-πλήρη προβλήματα. Τι είναι αυτό που κάνει τα NP-πλήρη προβλήματα ενδιαϕέροντα; Κατ αρχάς, παρ όλο που δεν έχει βρεθεί ποτέ κάποιος δραστικός αλγόριθμος για ένα τέτοιο πρόβλημα, κανείς δεν έχει αποδείξει ότι δεν μπορεί να υπάρξει τέτοιος αλγόριθμος. Με άλλα λόγια, κανείς δεν γνωρίζει αν υπάρχει δραστικός αλγόριθμος για NP-πλήρη προβλήματα. Δεύτερον, το σύνολο των προβλημάτων αυτών έχει την αξιοσημείωτη ιδιότητα ότι αν υπάρχει δραστικός αλγόριθμος για οποιοδήποτε από αυτά, τότε υπάρχουν τέτοιοι αλγόριθμοι για όλα. Αυτή η σχέση μεταξύ των NP-πλήρων προβλημάτων κάνει την απουσία δραστικών λύσεων ακόμη πιο προκλητική. Τρίτον, αρκετά NP-πλήρη προβλήματα είναι παρόμοια, αλλά όχι πανομοιότυπα, με προβλήματα για τα οποία γνωρίζουμε δραστικούς αλγορίθμους. Το γεγονός ότι μια μικρή αλλαγή στη διατύπωση του προβλήματος μπορεί να συνεπάγεται τεράστια αλλαγή στη δραστικότητα του καλύτερου γνωστού αλγορίθμου είναι ένας ακόμα παράγοντας που εξάπτει το ενδιαϕέρον των επιστημόνων υπολογιστών. Είναι αναγκαίο να γνωρίζει κανείς την ύπαρξη των NP-πλήρων προβλημάτων, διότι ορισμένα από αυτά ανακύπτουν αναπάντεχα συχνά στις πραγματικές εϕαρμογές. Αν έχετε αναλάβει να αναπτύξετε έναν δραστικό αλγόριθμο για ένα NP-πλήρες πρόβλημα, είναι αρκετά πιθανό να σπαταλήσετε αρκετό χρόνο σε μια μάταιη προσπάθεια. Αν, όμως, μπορείτε να αποδείξετε ότι το δεδομένο πρόβλημα είναι NP-πλήρες, μπορείτε να αϕιερώσετε τον χρόνο σας στην ανάπτυξη ενός δραστικού αλγορίθμου ο οποίος θα δίνει μια ικανοποιητική, αλλά όχι τη βέλτιστη, λύση.

9 1.1 Αλγόριθμοι 11 Ας δούμε ένα συγκεκριμένο παράδειγμα: μια εταιρεία οδικών μεταϕορών με μια κεντρική αποθήκη. Κάθε μέρα, η εταιρεία ϕορτώνει κάθε ϕορτηγό της στην αποθήκη και του ορίζει ένα δρομολόγιο για την παράδοση εμπορευμάτων. Στο τέλος της μέρας, το κάθε ϕορτηγό θα πρέπει να έχει επιστρέψει στην αποθήκη ώστε να είναι έτοιμο να ϕορτώσει τα εμπορεύματα της επομένης. Για να μειώσει τα έξοδά της, η εταιρεία επιδιώκει η σειρά που θα επιλέξει για τα σημεία παράδοσης να δίνει την ελάχιστη ολική απόσταση για το κάθε ϕορτηγό. Το συγκεκριμένο πρόβλημα είναι το γνωστό «πρόβλημα του περιοδεύοντος πωλητή», και είναι NP-πλήρες. Δεν υπάρχει γνωστός δραστικός αλγόριθμος για την επίλυσή του. Υπό ορισμένες προϋποθέσεις, όμως, υπάρχουν δραστικοί αλγόριθμοι που δίνουν μια ολική απόσταση η οποία δεν υπερβαίνει σημαντικά την ελάχιστη δυνατή. Στο Κεϕάλαιο 35 θα μελετήσουμε τέτοιους «προσεγγιστικούς αλγορίθμους». Παραλληλία Για πολλά χρόνια, ήταν βέβαιο ότι η ταχύτητα ρολογιού των επεξεργαστών θα αυξανόταν με σταθερό ρυθμό. Ωστόσο, ϕυσικοί περιορισμοί δημιουργούν έναν θεμελιώδη ϕραγμό στη διαρκή αύξηση της ταχύτητας ρολογιού: δεδομένου ότι η πυκνότητα ισχύος αυξάνεται υπεργραμμικά με την ταχύτητα ρολογιού, εάν η ταχύτητα ρολογιού ενός τσιπ γίνει υπερβολικά μεγάλη υπάρχει ο κίνδυνος το τσιπ να υποστεί τήξη. Ετσι, προκειμένου να εκτελούν περισσότερους υπολογισμούς ανά δευτερόλεπτο, τα τσιπ σχεδιάζονται έτσι ώστε να περιλαμβάνουν όχι μόνο έναν αλλά πολλούς επεξεργαστές-«πυρήνες». Ενας τέτοιος πολυπύρηνος υπολογιστής μπορεί να παρομοιαστεί με πολλούς ακολουθιακούς υπολογιστές διατεταγμένους πάνω σε ένα μόνο τσιπ με άλλα λόγια, είναι ένα είδος «παράλληλου υπολογιστή». Προκειμένου να πετύχουμε την καλύτερη δυνατή επίδοση από τους πολυπύρηνους υπολογιστές, θα πρέπει να σχεδιάσουμε αλγορίθμους έχοντας κατά νου την παραλληλία. Στο Κεϕάλαιο 27 παρουσιάζεται ένα μοντέλο για «πολυνηματικούς» αλγορίθμους, το οποίο αξιοποιεί κατάλληλα τους πολλαπλούς πυρήνες. Το μοντέλο αυτό έχει κάποια πλεονεκτήματα από θεωρητική σκοπιά, και αποτελεί τη βάση διαϕόρων επιτυχημένων υπολογιστικών προγραμμάτων, μεταξύ των οποίων και ένα πρόγραμμα για σκάκι με επιδόσεις πρωταθλητή. Ασκήσεις Αναϕέρετε μια περίπτωση της καθημερινής ζωής όπου απαιτείται ταξινόμηση ή εύρεση του κυρτού καλύμματος Εκτός από την ταχύτητα, ποια άλλα μέτρα της «δραστικότητας» θα μπορούσε να χρησιμοποιήσει κανείς σε πρακτικά ζητήματα της καθημερινής ζωής; Επιλέξτε μια δομή δεδομένων που γνωρίζετε ήδη, και αναλύστε τα πλεονεκτήματα και τους περιορισμούς της.

10 12 Κεϕάλαιο 1 Ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Σε τι μοιάζουν μεταξύ τους τα προβλήματα της βραχύτερης διαδρομής και του περιοδεύοντος πωλητή που αναϕέραμε παραπάνω; Σε τι διαϕέρουν; Εντοπίστε ένα πρόβλημα της καθημερινής ζωής για το οποίο η μόνη ικανοποιητική λύση είναι η βέλτιστη. Στη συνέχεια, εντοπίστε ένα πρόβλημα για το οποίο μια λύση που «προσεγγίζει» τη βέλτιστη είναι επαρκής. 1.2 Οι αλγόριθμοι σαν τεχνολογία Ας υποθέσουμε ότι οι υπολογιστές ήταν απείρως ταχείς και η υπολογιστική μνήμη ήταν δωρεάν. Στην υποθετική αυτή περίπτωση, θα υπήρχε άραγε κανένας λόγος να μελετήσετε τους αλγορίθμους; Η απάντηση είναι ναι, αν μη τι άλλο επειδή ακόμη και σε αυτήν την περίπτωση θα θέλατε να αποδείξετε ότι η μέθοδος επίλυσης που αναπτύξατε τερματίζει δίνοντας το σωστό αποτέλεσμα. Αν οι υπολογιστές ήταν απείρως ταχείς, οποιαδήποτε ορθή μέθοδος επίλυσης ενός προβλήματος θα αρκούσε. Αν και θα επιδιώκατε ενδεχομένως η υλοποίησή σας να ικανοποιεί τα παραδεκτά πρότυπα της κατασκευής λογισμικού (δηλαδή να είναι καλά σχεδιασμένη και τεκμηριωμένη), στις περισσότερες περιπτώσεις θα χρησιμοποιούσατε οποιαδήποτε μέθοδο θα ήταν ευκολότερο να υλοποιηθεί. Φυσικά, οι πραγματικοί υπολογιστές είναι μεν ταχείς, αλλά όχι απείρως ταχείς. Και η μνήμη μπορεί να είναι μεν ϕτηνή, αλλά δεν είναι δωρεάν. Κατά συνέπεια, ο υπολογιστικός χρόνος είναι ένας πεπερασμένος πόρος, όπως και η μνήμη. Οι πόροι αυτοί θα πρέπει να χρησιμοποιούνται με σύνεση, και αυτόν ακριβώς τον σκοπό εξυπηρετούν οι αλγόριθμοι που είναι δραστικοί ως προς τον χρόνο και οικονομικοί ως προς τον χώρο. Δραστικότητα Διαϕορετικοί αλγόριθμοι που έχουν επινοηθεί για να λύνουν το ίδιο πρόβλημα συχνά διαϕέρουν συντριπτικά ως προς τη δραστικότητα. Οι διαϕορές αυτές μπορεί να είναι πολύ πιο σημαντικές από εκείνες που οϕείλονται στο υλισμικό και το λογισμικό. Παραδείγματος χάριν, στο Κεϕάλαιο 2 θα μελετήσουμε δύο αλγορίθμους ταξινόμησης. Ο πρώτος, η λεγόμενη ενθετική ταξινόμηση, απαιτεί χρόνο περίπου ίσο με c 1 n 2 για την ταξινόμηση n στοιχείων, όπου c 1 είναι μια σταθερά ανεξάρτητη του n. Δηλαδή, απαιτεί χρόνο περίπου ανάλογο του n 2. Για τον δεύτερο αλγόριθμο, τη συγχωνευτική ταξινόμηση, ο απαιτούμενος χρόνος είναι περίπου ίσος με c 2 n lg n, όπου το σύμβολο lg n σημαίνει log 2 n και c 2 είναι μια άλλη σταθερά, επίσης ανεξάρτητη του n. Η ενθετική ταξινόμηση έχει κατά κανόνα μικρότερο σταθερό συντελεστή από τη συγχωνευτική, δηλαδή c 1 < c 2. Οπως θα δούμε, οι σταθεροί συντελεστές μπορεί να έχουν πολύ μικρότερη επίπτωση στους σχετικούς χρόνους εκτέλεσης σε σχέση με την εξάρτηση από το μέγεθος n της εισόδου. Αν γράψουμε τον χρόνο εκτέλεσης της ενθετικής ταξινόμησης στη μορϕή c 1 n n, και της συγχωνευτικής στη μορϕή c 2 n lg n, βλέπουμε ότι στη θέση ενός παράγοντα n στον χρόνο εκτέλεσης της

11 1.2 Οι αλγόριθμοι σαν τεχνολογία 13 ενθετικής ταξινόμησης, η συγχωνευτική έχει έναν παράγοντα lg n, που είναι πολύ μικρότερος. (Για παράδειγμα, όταν n = 1000, το lg n είναι περίπου 10, ενώ όταν το n ισούται με ένα εκατομμύριο, το lg n είναι κατά προσέγγιση μόλις 20.) Αν και η ενθετική ταξινόμηση συνήθως εκτελείται ταχύτερα από τη συγχωνευτική για μικρό μέγεθος n της εισόδου, από τη στιγμή που το μέγεθος αυτό θα γίνει αρκετά μεγάλο, το πλεονέκτημα του συντελεστή lg n στη συγχωνευτική ταξινόμηση έναντι του n υπεραντισταθμίζει τη διαϕορά των σταθερών συντελεστών. Οσο μικρότερο και αν είναι το c 1 σε σχέση με το c 2, θα υπάρχει πάντα κάποιο σημείο «χρονικής ισοϕάρισης», πέραν του οποίου η συγχωνευτική ταξινόμηση θα είναι ταχύτερη. Ας δούμε ένα συγκεκριμένο παράδειγμα: ας βάλουμε έναν ταχύ υπολογιστή (τον υπολογιστή Α) ο οποίος εκτελεί την ενθετική ταξινόμηση να «αναμετρηθεί» με έναν βραδύτερο (τον υπολογιστή Β) ο οποίος εκτελεί τη συγχωνευτική ταξινόμηση. Ο κάθε υπολογιστής θα πρέπει να ταξινομήσει 10 εκατομμύρια αριθμούς. (Αν και 10 εκατομμύρια αριθμοί ίσως να ϕαίνονται πολλοί, εάν είναι ακέραιοι των οκτώ byte η είσοδος καταλαμβάνει περίπου 80 megabyte, που δεν είναι παρά ένα κλάσμα της μνήμης ακόμη κι ενός ϕτηνού ϕορητού υπολογιστή.) Εστω ότι ο υπολογιστής Α εκτελεί 10 δισεκατομμύρια εντολές το δευτερόλεπτο (δηλαδή είναι ταχύτερος από οποιονδήποτε μεμονωμένο ακολουθιακό υπολογιστή τη στιγμή που γράϕεται αυτό το βιβλίο) και ο Β μόνο 10 εκατομμύρια εντολές το δευτερόλεπτο. Με άλλα λόγια ο Α είναι 1000 ϕορές ταχύτερος του Β. Για να κάνουμε τη διαϕορά ακόμη πιο συντριπτική, ας υποθέσουμε ότι ο κώδικας της ενθετικής ταξινόμησης που εκτελεί ο υπολογιστής Α έχει γραϕτεί σε γλώσσα μηχανής από τον πιο επιδέξιο προγραμματιστή του κόσμου, και ότι ο απαιτούμενος αριθμός εντολών για την ταξινόμηση n αριθμών είναι 2n 2. Ας υποθέσουμε επίσης ότι η συγχωνευτική ταξινόμηση έχει γραϕτεί από έναν κοινό προγραμματιστή σε γλώσσα υψηλού επιπέδου με μέτριο μεταγλωττιστή, με αποτέλεσμα να απαιτεί 50n lg n εντολές. Για την ταξινόμηση 10 εκατομμυρίων αριθμών, ο υπολογιστής Α χρειάζεται 2 (10 7 ) 2 εντολές = δευτερόλεπτα (περισσότερο από 5,5 ώρες), εντολές/δευτερόλεπτο ενώ ο υπολογιστής Β χρειάζεται lg 10 7 εντολές δευτερόλεπτα (λιγότερο από 20 λεπτά). εντολές/δευτερόλεπτο Χρησιμοποιώντας έναν αλγόριθμο του οποίου ο χρόνος εκτέλεσης αυξάνεται βραδύτερα συναρτήσει του n, ο υπολογιστής Β, ακόμη και με μέτριο μεταγλωττιστή, εκτελεί την ίδια εργασία περισσότερο από 17 ϕορές ταχύτερα από τον Α! Η υπεροχή της συγχωνευτικής ταξινόμησης γίνεται ακόμη πιο εξόϕθαλμη αν επιχειρήσουμε να ταξινομήσουμε 100 εκατομμύρια αριθμούς: ενώ η ενθετική ταξινόμηση θα διαρκέσει περισσότερο από 23 ημέρες, η συγχωνευτική θα ολοκληρωθεί σε λιγότερο από 4 ώρες. Εν γένει, όσο αυξάνεται το μέγεθος του προβλήματος, τόσο αυξάνεται και το συγκριτικό πλεονέκτημα της συγχωνευτικής ταξινόμησης.

12 14 Κεϕάλαιο 1 Ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Οι αλγόριθμοι και οι άλλες τεχνολογίες Το παραπάνω παράδειγμα καταδεικνύει ότι οι αλγόριθμοι θα πρέπει να θεωρούνται ένα είδος τεχνολογίας, όπως είναι λ.χ. το υλισμικό του υπολογιστή. Η ολική απόδοση ενός συστήματος εξαρτάται τόσο από την επιλογή υλισμικού υψηλής ταχύτητας όσο και από την επιλογή δραστικών αλγορίθμων. Ο τομέας των αλγορίθμων χαρακτηρίζεται από ταχεία ανάπτυξη, όπως συμβαίνει και με τις υπόλοιπες τεχνολογίες των υπολογιστών. Πιθανόν να αναρωτιέστε αν οι αλγόριθμοι είναι πράγματι τόσο σημαντικοί για τη λειτουργία των σύγχρονων υπολογιστών, τη στιγμή που υπάρχουν άλλες προηγμένες τεχνολογίες, όπως λόγου χάριν προηγμένες τεχνολογίες αρχιτεκτονικής και κατασκευής υπολογιστών εύχρηστες, παραστατικές γραϕικές επαϕές εργασίας (Graphical User Interface - GUI), αντικειμενοστρεϕή συστήματα, ενοποιημένες τεχνολογίες Ιστού, και γρήγορα δίκτυα, ενσύρματα και ασύρματα. Η απάντηση είναι ναι. Αν και ορισμένες εϕαρμογές (όπως λ.χ. μερικές απλές «ιστοκεντρικές» εϕαρμογές) δεν απαιτούν ρητά κάποια αλγοριθμική συνιστώσα στο επίπεδο της εϕαρμογής, πολλές απαιτούν. Ας εξετάσουμε, παραδείγματος χάριν, μια ιστοκεντρική υπηρεσία που παρέχει πληροϕορίες για το πώς μπορείτε να ταξιδέψετε από κάποια τοποθεσία σε κάποια άλλη. Η υλοποίησή της θα βασιζόταν σε υλισμικό υψηλής ταχύτητας, σε μια γραϕική επαϕή χρήσεως, στην ύπαρξη κάποιου δικτύου ευρείας περιοχής, και ενδεχομένως σε κάποιο αντικειμενοστρεϕές σύστημα. Εντούτοις, η συγκεκριμένη υπηρεσία θα απαιτούσε επίσης κάποιους αλγορίθμους για ορισμένες λειτουργίες όπως είναι λόγου χάριν η εύρεση διαδρομών (πιθανότατα μέσω κάποιου αλγορίθμου βραχύτερης διαδρομής), η απεικόνιση χαρτών και η παρεμβολική εύρεση διευθύνσεων. Εξάλλου, ακόμη και μια εϕαρμογή που δεν απαιτεί καμία αλγοριθμική συνιστώσα στο επίπεδο της εϕαρμογής εξαρτάται καθοριστικά από αλγορίθμους. Δεν βασίζεται η εϕαρμογή σε υλισμικό υψηλής ταχύτητας; Η σχεδίαση του υλισμικού έγινε με τη βοήθεια αλγορίθμων. Δεν βασίζεται η εϕαρμογή σε γρα- ϕικές επαϕές εργασίας; Η σχεδίαση οποιασδήποτε τέτοιας επαϕής βασίζεται σε αλγορίθμους. Δεν βασίζεται η εϕαρμογή σε κάποιο δίκτυο; Η δρομολόγηση στα δίκτυα βασίζεται καθοριστικά σε αλγορίθμους. Επιπλέον, αν η εν λόγω εϕαρμογή γράϕτηκε σε κάποια γλώσσα διαϕορετική από τον κώδικα μηχανής, τότε υπέστη επεξεργασία από κάποιον μεταγλωττιστή, διερμηνέα ή συμβολομεταϕραστή, προγράμματα στα οποία χρησιμοποιούνται ευρύτατα αλγόριθμοι. Οι αλγόριθμοι βρίσκονται στον πυρήνα των περισσότερων τεχνολογιών οι οποίες χρησιμοποιούνται στους σύγχρονους υπολογιστές. Επιπλέον, καθώς οι υπολογιστές αναβαθμίζονται διαρκώς όσον αϕορά τις λειτουργικές τους δυνατότητες, χρησιμοποιούνται για την επίλυση ολοένα και μεγαλύτερων προβλημάτων. Οπως είδαμε παραπάνω στη σύγκριση ενθετικής και συγχωνευτικής ταξινόμησης, οι διαϕορές στην αποτελεσματικότητα των αλγορίθμων γίνονται ιδιαίτερα εμϕανείς ακριβώς όταν το μέγεθος των προβλημάτων είναι μεγάλο.

13 Προβλήματα Κεϕαλαίου 1 15 Η καλή γνώση των αλγορίθμων και των αλγοριθμικών τεχνικών είναι ένα από τα χαρακτηριστικά που διακρίνουν τους πραγματικά έμπειρους προγραμματιστές από τους αρχάριους. Αν και με τη σύγχρονη τεχνολογία των υπολογιστών μπορείτε να διεκπεραιώσετε κάποιες εργασίες χωρίς να έχετε ιδιαίτερες γνώσεις αλγορίθμων, ωστόσο ένα καλό γνωστικό υπόβαθρο στους αλγορίθμους θα σας επιτρέψει να επιτύχετε πολύ περισσότερα. Ασκήσεις Αναϕέρετε ένα παράδειγμα εϕαρμογής η οποία απαιτεί αλγοριθμική συνιστώσα στο επίπεδο της εϕαρμογής, και αναλύστε τη λειτουργία των αλγορίθμων που υπεισέρχονται σε αυτήν Υποθέστε ότι συγκρίνουμε την υλοποίηση της ενθετικής και της συγχωνευτικής ταξινόμησης στον ίδιο υπολογιστή. Για εισόδους μεγέθους n, η ενθετική ταξινόμηση απαιτεί 8n 2 βήματα, ενώ η συγχωνευτική 64n lg n. Για ποιες τιμές του n η ενθετική ταξινόμηση υπερτερεί της συγχωνευτικής; Ποια είναι η μικρότερη τιμή του n για την οποία ένας αλγόριθμος με χρόνο εκτέλεσης 100n 2 εκτελείται ταχύτερα από έναν άλλο με χρόνο εκτέλεσης 2 n στον ίδιο υπολογιστή; Προβλήματα 1-1 Σύγκριση χρόνων εκτέλεσης Για κάθε συνάρτηση f(n) και για κάθε χρονικό διάστημα t που παρατίθεται στον παρακάτω πίνακα, προσδιορίστε το μέγιστο μέγεθος n του προβλήματος που μπορεί να επιλυθεί σε χρόνο t, υποθέτοντας ότι ο αλγόριθμος που επιλύει το πρόβλημα απαιτεί χρόνο f(n) μικροδευτερόλεπτα. lg n n n n lg n n 2 n 3 2 n n! δευτερόλεπτο λεπτό ώρα ημέρα μήνας έτος αιώνας

14 16 Κεϕάλαιο 1 Ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Σημειώσεις κεϕαλαίου Υπάρχουν πολλά εξαιρετικά εγχειρίδια γενικού χαρακτήρα για αλγορίθμους, μεταξύ των οποίων αυτά των Aho, Hopcroft, και Ullman [5, 6], Baase και Van Gelder [28], Brassard και Bratley [54], Dasgupta, Papadimitriou, και Vazirani [82], Goodrich και Tamassia [148], Hofri [174], Horowitz, Sahni, και Rajasekaran [180], Johnsonbaugh και Schaefer [192], Kingston [204], Kleinberg και Tardos [207], Knuth [208, 209, 210], Kozen [219], Levitin [234], Manber [241], Mehlhorn [248, 249, 250], Purdom και Brown [285], Reingold, Nievergelt, και Deo [291], Sedgewick [303], Sedgewick και Flajolet [304], Skiena [315], και Wilf [354]. Τα βιβλία των Bentley [42, 43] και Gonnet [145] αναλύουν ορισμένες πιο πρακτικές πλευρές της σχεδίασης αλγορίθμων. Για μια γενική επισκόπηση του πεδίου των αλγορίθμων, μπορεί κανείς να συμβουλευθεί το Handbook of Theoretical Computer Science, Volume A [340] και το CRC Algorithms and Theory of Computation Handbook [25]. Μια συνοπτική περιγραϕή των αλγορίθμων που χρησιμοποιούνται στην υπολογιστική βιολογία παρατίθεται στα εγχειρίδια των Gusfield [156], Pevzner [273], Setubal και Meidanis [307], και Waterman [348].

15 2 Προκαταρκτικές έννοιες και παρατηρήσεις Στο κεϕάλαιο αυτό παρουσιάζεται το πλαίσιο εργασίας που θα χρησιμοποιήσουμε σε όλο το βιβλίο προκειμένου να προσεγγίσουμε μεθοδικά τη σχεδίαση και την ανάλυση αλγορίθμων. Αν και το κεϕάλαιο είναι κατ ουσίαν αυτοτελές, περιλαμβάνει ορισμένες παραπομπές σε ύλη που παρουσιάζεται στα Κεϕάλαια 3 και 4. (Εμπεριέχει επίσης κάποια αθροίσματα τα οποία υπολογίζονται αναλυτικά στο Παράρτημα Αʹ.) Θα ξεκινήσουμε τη μελέτη μας από τον αλγόριθμο της ενθετικής ταξινόμησης για την επίλυση του προβλήματος ταξινόμησης που περιγράψαμε στο Κε- ϕάλαιο 1. Θα ορίσουμε έναν «ψευδοκώδικα», έννοια που θα πρέπει να σας είναι γνωστή αν έχετε ασχοληθεί με τον προγραμματισμό, και θα τον χρησιμοποιήσουμε για να περιγράψουμε τον τρόπο αναπαράστασης που θα ακολουθήσουμε για τους αλγορίθμους μας. Εχοντας καθορίσει τον αλγόριθμο της ενθετικής ταξινόμησης, θα δείξουμε στη συνέχεια ότι ταξινομεί ορθά τα στοιχεία εισόδου και θα αναλύσουμε τον χρόνο εκτέλεσής του. Στην ανάλυσή μας, θα εισαγάγουμε έναν συμβολισμό ο οποίος επικεντρώνεται στον ρυθμό αύξησης του χρόνου συναρτήσει του πλήθους των ταξινομητέων στοιχείων. Μετά τη μελέτη της ενθετικής ταξινόμησης, θα εισαγάγουμε την προσέγγιση «διαίρει-και-κυρίευε» που εϕαρμόζεται στη σχεδίαση αλγορίθμων, και θα τη χρησιμοποιήσουμε για να αναπτύξουμε τον αλγόριθμο της λεγόμενης συγχωνευτικής ταξινόμησης. Το κεϕάλαιο θα ολοκληρωθεί με την ανάλυση του χρόνου εκτέλεσης της συγχωνευτικής ταξινόμησης. 2.1 Ενθετική ταξινόμηση Ο πρώτος μας αλγόριθμος, η ενθετική ταξινόμηση, επιλύει το πρόβλημα της ταξινόμησης το οποίο παρουσιάσαμε στο Κεϕάλαιο 1: Είσοδος: Μια ακολουθία n αριθμών a 1, a 2,..., a n. Εξοδος: Μια μετάθεση (αναδιάταξη) a 1,a 2,...,a n της ακολουθίας εισόδου τέτοια ώστε a 1 a 2 a n. Οι αριθμοί που επιθυμούμε να ταξινομήσουμε ονομάζονται επίσης κλειδιά. Αν και θεωρητικά ταξινομούμε μια ακολουθία, η είσοδος που λαμβάνουμε έχει τη μορϕή μιας συστοιχίας με n στοιχεία. Στο βιβλίο αυτό, θα περιγράϕουμε κατά κανόνα τους αλγορίθμους ως προγράμματα γραμμένα σε έναν ψευδοκώδικα ο οποίος από πολλές απόψεις είναι

16 18 Κεϕάλαιο 2 Προκαταρκτικές έννοιες και παρατηρήσεις 1.0 Σχήμα 2.1 Ταξινόμηση ενός συνόλου από τραπουλόχαρτα με την ενθετική μέθοδο παρόμοιος με τον κώδικα μιας γλώσσας προγραμματισμού όπως η C, η C++, η Java, η Python, ή η Pascal. Αν έχετε ήδη μελετήσει κάποια από τις γλώσσες αυτές, δεν θα πρέπει να έχετε ιδιαίτερο πρόβλημα στην ανάγνωση των αλγορίθμων μας. Αυτό που διαϕοροποιεί τον ψευδοκώδικα από τον «πραγματικό» κώδικα είναι ότι στον πρώτο εϕαρμόζουμε οποιαδήποτε μέθοδο περιγραϕής είναι η πλέον σαϕής και συνοπτική για να προσδιοριστεί ένας δεδομένος αλγόριθμος. Μερικές ϕορές η σαϕέστερη μέθοδος είναι η ϕυσική γλώσσα, και επομένως μην εκπλαγείτε αν μέσα σε ένα τμήμα «πραγματικού» κώδικα συναντήσετε μια ϕράση ή μια πρόταση της καθομιλουμένης. Μια άλλη διαϕορά μεταξύ ψευδοκώδικα και πραγματικού κώδικα είναι ότι στον ψευδοκώδικα δεν μας απασχολούν τα προβλήματα της τεχνολογίας λογισμικού. Τα ζητήματα της αϕαιρετικότητας των δεδομένων, της στοιχειομέρειας και της διαχείρισης σϕαλμάτων συχνά αγνοούνται προκειμένου να αποδοθεί με πιο περιεκτικό τρόπο η ουσία του αλγορίθμου. Θα ξεκινήσουμε με τον αλγόριθμο της ενθετικής ταξινόμησης, ο οποίος είναι αρκετά ταχύς όταν πρόκειται για την ταξινόμηση ενός μικρού πλήθους στοιχείων. Η μέθοδος που χρησιμοποιείται στον συγκεκριμένο αλγόριθμο είναι παρόμοια με αυτήν που χρησιμοποιούν πολλοί άνθρωποι για να ταξινομήσουν ένα σύνολο από τραπουλόχαρτα. Αρχικά, τα ϕύλλα είναι όλα ακουμπισμένα κλειστά στο τραπέζι. Στη συνέχεια, σηκώνουμε τα ϕύλλα ένα-ένα από το τραπέζι με το δεξί μας χέρι και τα τοποθετούμε το καθένα στη σωστή του θέση στο αριστερό χέρι. Για να βρούμε τη σωστή θέση του κάθε ϕύλλου, το συγκρίνουμε με καθένα από τα ϕύλλα που έχουμε ήδη σηκώσει, από τα δεξιά προς τα αριστερά (Σχήμα 2.1). Ανά πάσα στιγμή, τα ϕύλλα που έχουμε στο αριστερό μας χέρι, τα οποία είναι εκείνα που βρίσκονταν αρχικά στην κορυϕή της δεσμίδας πάνω στο τραπέζι, είναι προϕανώς ταξινομημένα ορθά. Ο ψευδοκώδικάς μας για την ενθετική ταξινόμηση παρουσιάζεται υπό τη μορ- 10 ϕή μιας διαδικασίας ονόματι Ενθετική Ταξινόμηση, η οποία δέχεται ως παράμετρο μια συστοιχία A[1.. n] που περιέχει μια ακολουθία μήκους n προς ταξινόμηση. (Στον κώδικα, το πλήθος n των στοιχείων της A συμβολίζεται

17 2.1 Ενθετική ταξινόμηση 19 (α) (β) (γ) (δ) (ε) (στ) Σχήμα 2.2 Η λειτουργία της Ενθετικής Ταξινόμησης στη συστοιχία A = 5, 2, 4, 6, 1, 3. Οι αριθμοί επάνω από τα τετραγωνίδια είναι οι αύξοντες αριθμοί των στοιχείων της συστοιχίας, ενώ οι αριθμοί μέσα στα τετραγωνίδια είναι οι τιμές που είναι αποθηκευμένες στις θέσεις της συστοιχίας. (α) (ε) Οι διαδοχικές επαναλήψεις του βρόχου για (γραμμές 1 8). Σε κάθε επανάληψη, το μαύρο τετραγωνίδιο περιέχει το εξεταζόμενο κλειδί A[j], το οποίο συγκρίνεται με τις τιμές στα σκιασμένα τετραγωνίδια στα αριστερά του μέσω της συνθήκης ελέγχου στη γραμμή 5. Τα γκρίζα βέλη υποδεικνύουν τα στοιχεία της συστοιχίας που μετακινούνται κατά μια θέση προς τα δεξιά μέσω της εντολής στη γραμμή 6, ενώ τα μαύρα δείχνουν σε ποια θέση μετακινείται το εξεταζόμενο κλειδί μέσω της εντολής στη γραμμή 8. (στ) Η τελική ταξινομημένη συστοιχία. με τη μεταβλητή A. μήκος.) Ο αλγόριθμος ταξινομεί τους αριθμούς εισόδου επί τόπου: τους αναδιατάσσει εντός της συστοιχίας A, ενώ ανά πάσα στιγμή το πλήθος των αριθμών αυτών που είναι αποθηκευμένοι εκτός της συστοιχίας είναι μικρότερο ή ίσο μιας σταθερής ποσότητας. Οταν ολοκληρωθεί η εκτέλεση της διαδικασίας Ενθετική Ταξινόμηση, η συστοιχία εισόδου A περιέχει την ταξινομημένη ακολουθία εξόδου. Ενθετική Ταξινόμηση(A) 1 για j = 2 έως A.μήκος 2 κλειδί = A[j] 3 // Ενθέτουμε το A[j] στην ταξινομημένη ακολουθία A[1.. j 1]. 4 i = j 1 5 ενόσω i > 0 και A[i] > κλειδί 6 A[i + 1] = A[i] 7 i = i 1 8 A[i + 1] = κλειδί Αναλλοίωτες συνθήκες και η ορθότητα της ενθετικής ταξινόμησης Στο Σχήμα 2.2 βλέπουμε τον τρόπο λειτουργίας του αλγορίθμου αυτού για A = 5, 2, 4, 6, 1, 3. Η τιμή του μετρητή j αντιπροσωπεύει τον «αύξοντα αριθμό» του ϕύλλου που εξετάζουμε τη δεδομένη στιγμή προκειμένου να το ενθέσουμε σε αυτά που βρίσκονται ήδη στο χέρι μας. Στην αρχή της κάθε επανάληψης του βρόχου για, ο οποίος ελέγχεται από τον μετρητή j, η υποσυστοιχία που αποτελείται από τα στοιχεία A[1.. j 1] αντιπροσωπεύει το ταξινομημένο υποσύνολο των ϕύλλων που έχουμε στο χέρι μας μέχρι στιγμής, και η υπόλοιπη υποσυστοιχία A[j n] αντιστοιχεί στη δεσμίδα των ϕύλλων που εξακολουθούν να βρίσκονται στο τραπέζι. Μάλιστα, τα στοιχεία A[1.. j 1]

18 20 Κεϕάλαιο 2 Προκαταρκτικές έννοιες και παρατηρήσεις είναι εκείνα που βρίσκονταν εξαρχής στις θέσεις 1 έως j 1, μόνο που είναι πλέον ταξινομημένα. Αυτές οι ιδιότητες της υποσυστοιχίας A[1.. j 1] εκ- ϕράζονται τυπικά μέσω μιας αναλλοίωτης συνθήκης: Στην αρχή της κάθε επανάληψης του βρόχου για στις γραμμές 1 8, η υποσυστοιχία A[1.. j 1] αποτελείται από τα στοιχεία που βρίσκονταν εξαρχής στην υποσυστοιχία αυτή, αλλά διατεταγμένα με τον επιθυμητό τρόπο. Η χρήση αναλλοίωτων συνθηκών μας βοηθά να κατανοήσουμε γιατί ένας αλγόριθμος είναι ορθός. Μια αναλλοίωτη συνθήκη θα πρέπει να πληροί αποδεδειγμένα τις εξής προϋποθέσεις: Αρχικός έλεγχος: Η συνθήκη ισχύει πριν από την πρώτη επανάληψη του βρόχου. Ελεγχος διατήρησης: Αν η συνθήκη ισχύει πριν από μια επανάληψη του βρόχου, εξακολουθεί να ισχύει και πριν από την επόμενη επανάληψη. Επιβεβαίωση αποτελέσματος: Οταν ο βρόχος τερματίσει, η αναλλοίωτη συνθήκη μας δίνει μια χρήσιμη ιδιότητα που μας βοηθά να αποδείξουμε ότι ο αλγόριθμος είναι ορθός. Οταν ικανοποιούνται οι δύο πρώτες ιδιότητες, η αναλλοίωτη συνθήκη ισχύει πριν από κάθε επανάληψη του βρόχου. (Φυσικά, για να αποδείξουμε ότι η αναλλοίωτη συνθήκη εξακολουθεί να ισχύει πριν από κάθε επανάληψη, έχουμε το δικαίωμα να χρησιμοποιήσουμε και άλλα αποδεδειγμένα γεγονότα πέρα από την ίδια την αναλλοίωτη συνθήκη.) Σημειώστε την ομοιότητα του σκεπτικού αυτού με τη μαθηματική επαγωγή, όπου για να αποδείξουμε ότι ισχύει κάποια ιδιότητα αποδεικνύουμε κάποια «εναρκτήρια» περίπτωση και ένα επαγωγικό βήμα. Στις αναλλοίωτες συνθήκες, η εναρκτήρια περίπτωση αντιστοιχεί στον «αρχικό έλεγχο», και το επαγωγικό βήμα στον «έλεγχο διατήρησης». Η τρίτη ιδιότητα της αναλλοίωτης συνθήκης είναι ίσως και η σημαντικότερη, διότι μας δίνει τη δυνατότητα να αποδείξουμε την ορθότητα του αλγορίθμου. Τυπικά, χρησιμοποιούμε την αναλλοίωτη συνθήκη μαζί με τη συνθήκη που προκάλεσε τον τερματισμό του βρόχου. Η ιδιότητα του τερματισμού διαϕοροποιεί την αναλλοίωτη συνθήκη από τη συνήθη μαθηματική επαγωγή, στην οποία το επαγωγικό βήμα επαναλαμβάνεται επ άπειρον εδώ, αντιθέτως, η «επαγωγή» σταματά όταν τερματίσει ο βρόχος. Ας ελέγξουμε την ισχύ αυτών των ιδιοτήτων για την ενθετική ταξινόμηση. Αρχικός έλεγχος: Θα πρέπει να δείξουμε ότι η αναλλοίωτη συνθήκη ισχύει πριν από την πρώτη επανάληψη του βρόχου, όπου j = 2. 1 Στην περίπτωση αυτή, η υποσυστοιχία A[1.. j 1] αποτελείται μόνο από το στοιχείο A[1], το οποίο είναι πράγματι το αρχικό στοιχείο A[1]. Επιπλέον, η υποσυστοιχία 1 Οταν ο βρόχος είναι τύπου για, το σημείο στο οποίο ελέγχουμε την αναλλοίωτη συνθήκη ακριβώς πριν από την πρώτη επανάληψη είναι αμέσως μετά την αρχική ανάθεση στον μετρητή του βρόχου και ακριβώς πριν από τον πρώτο έλεγχο στην κεϕαλίδα του βρόχου. Στην περίπτωση της Ενθετικής Ταξινόμησης, το σημείο αυτό είναι μετά την ανάθεση της τιμής 2 στη μεταβλητή j αλλά πριν από τον πρώτο έλεγχο της συνθήκης j A.μήκος.

19 2.1 Ενθετική ταξινόμηση 21 αυτή είναι ταξινομημένη (κατά τετριμμένο τρόπο, βέβαια), γεγονός που αποδεικνύει ότι η αναλλοίωτη συνθήκη ισχύει πριν από την πρώτη επανάληψη του βρόχου. Ελεγχος διατήρησης: Στη συνέχεια, εξετάζουμε τη δεύτερη ιδιότητα της αναλλοίωτης συνθήκης, δηλαδή ότι διατηρείται σε κάθε επανάληψη. Σε περιγραϕικό επίπεδο, αυτό που κάνει το σώμα του βρόχου για είναι να μετακινεί τα στοιχεία A[j 1], A[j 2], A[j 3], κ.ο.κ. κατά μία θέση προς τα δεξιά μέχρις ότου να βρει τη σωστή θέση για το A[j] (γραμμές 4 7), στην οποία και ενθέτει την τιμή του A[j] (γραμμή 8). Επομένως, η υποσυστοιχία A[1.. j] αποτελείται από τα στοιχεία που ήταν αρχικά στην A[1.. j], αλλά ταξινομημένα. Ετσι, με την αύξηση του j για την επόμενη επανάληψη του βρόχου για η αναλλοίωτη συνθήκη διατηρείται. Για μια πιο αυστηρή πραγμάτευση της δεύτερης ιδιότητας θα έπρεπε να διατυπώσουμε και να αποδείξουμε μια αναλλοίωτη συνθήκη για τον βρόχο ενόσω, στις γραμμές 5 7. Στο σημείο αυτό, όμως, προτιμούμε να μην εμπλακούμε σε μια τέτοια αυστηρά τυπική διαδικασία, και αρκούμαστε στην περιγραϕική μας ανάλυση για την απόδειξη της ισχύος της δεύτερης ιδιότητας για τον εξωτερικό βρόχο. Επιβεβαίωση αποτελέσματος: Τέλος, εξετάζουμε τι συμβαίνει όταν τερματίζει ο βρόχος. Η συνθήκη που προκαλεί τον τερματισμό του βρόχου για είναι ότι j > A.μήκος = n. Αϕού κάθε επανάληψη του βρόχου αυξάνει το j κατά 1, θα πρέπει εκείνη τη στιγμή να έχουμε j = n + 1. Θέτοντας το j ίσο με το n + 1 στη διατύπωση της αναλλοίωτης συνθήκης, έχουμε ότι η υποσυστοιχία A[1.. n] αποτελείται από τα στοιχεία που βρίσκονταν αρχικά στην A[1.. n], τα οποία όμως είναι πλέον ταξινομημένα. Παρατηρώντας ότι η υποσυστοιχία A[1.. n] είναι η πλήρης συστοιχία, συμπεραίνουμε ότι όλη η συστοιχία είναι ταξινομημένη. Επομένως, ο αλγόριθμος είναι ορθός. Η μέθοδος της αναλλοίωτης συνθήκης θα χρησιμοποιηθεί για την απόδειξη της ορθότητας διαϕόρων αλγορίθμων παρακάτω σε αυτό το κεϕάλαιο, καθώς και σε άλλα κεϕάλαια. Συμβάσεις ψευδοκώδικα Στον ψευδοκώδικά μας χρησιμοποιούμε τις εξής συμβάσεις. Η κλιμακωτή στοίχιση υποδεικνύει επιμέρους δομικές μονάδες του κώδικα. Παραδείγματος χάριν, το σώμα του βρόχου για ο οποίος ξεκινά από τη γραμμή 1 αποτελείται από τις γραμμές 2 8, ενώ το σώμα του βρόχου ενόσω που ξεκινά από τη γραμμή 5 περιλαμβάνει τις γραμμές 6 7 αλλά όχι τη γραμμή 8. Αυτή η σύμβαση στοίχισης ισχύει και για τις εντολές τύπου αν-άλλως. 2 Η χρήση της κλιμακωτής στοίχισης αντί των συμβατικών 2 Σε μια εντολή αν-άλλως, στοιχίζουμε το άλλως κάτω από το αντίστοιχο αν. Αν και παραλείπουμε το κλειδωνύμιο τότε, περιστασιακά θα ονομάζουμε ϕράση τότε το τμήμα που εκτελείται όταν ο έλεγχος που ακολουθεί το αν δίνει αποτέλεσμα «αληθές». Οταν έχουμε ελέγχους με πολλούς κλάδους, χρησιμοποιούμε για όσους βρίσκονται μετά τον πρώτο έλεγχο το κλειδωνύμιο άλλως-αν.

20 22 Κεϕάλαιο 2 Προκαταρκτικές έννοιες και παρατηρήσεις ενδεικτών, όπως είναι λ.χ. οι εντολές αρχή και τέλος, για την οριοθέτηση των δομικών μονάδων βελτιώνει σημαντικά την οργάνωση του κώδικα, ενώ διατηρεί, ή και αυξάνει, τη σαϕήνεια. 3 Οι επαναληπτικές δομές ενόσω (while), για (for), και επανάληψημέχρι (repeat-until), και η δομή συνθήκης αν-άλλως (if-else) έχουν την ίδια σημασία με τις αντίστοιχες δομές των C, C++, Java, Python, και Pascal. 4 Σε αυτό το βιβλίο, μετά την έξοδο από τον βρόχο ο μετρητής του βρόχου διατηρεί την τιμή του, αντίθετα με ότι συμβαίνει σε ορισμένες καταστάσεις που προκύπτουν στις C++, Java, και Pascal. Επομένως, αμέσως μετά από έναν βρόχο για, η τιμή του μετρητή του βρόχου είναι εκείνη που υπερέβη για πρώτη ϕορά το όριο που θέτει η συνθήκη του βρόχου. Εχουμε ήδη χρησιμοποιήσει την ιδιότητα αυτή στην ανάλυσή μας για την ορθότητα της ενθετικής ταξινόμησης. Η κεϕαλίδα του βρόχου για στη γραμμή 1 είναι για j = 2 έως A.μήκος, και επομένως όταν ο βρόχος τερματίζει, j = A.μήκος + 1 (ή, ισοδύναμα, j = n + 1, αϕού n = A.μήκος). Οταν ένας βρόχος για αυξάνει τον μετρητή του σε κάθε επανάληψη, χρησιμοποιούμε το κλειδωνύμιο έως, ενώ όταν τον μειώνει χρησιμοποιούμε το αντίστροϕα-έως. Οταν ο μετρητής του βρόχου μεταβάλλεται κατά μια ποσότητα μεγαλύτερη από 1, η ποσότητα της μεταβολής αναϕέρεται μετά από το προαιρετικό κλειδωνύμιο ανά. Το σύμβολο «//» δηλώνει ότι το υπόλοιπο της συγκεκριμένης γραμμής είναι σχόλιο. Μια πολλαπλή ανάθεση τιμής της μορϕής i = j = e αναθέτει και στις δύο μεταβλητές i και j την τιμή της έκϕρασης e. Μια τέτοια εντολή είναι ισοδύναμη με δύο διαδοχικές αναθέσεις j = e και i = j. Οι διάϕορες μεταβλητές (όπως οι i, j, και κλειδί) έχουν τοπική ισχύ στην εκάστοτε διαδικασία. Σε κάθε περίπτωση που θα χρησιμοποιούμε καθολικές μεταβλητές θα το δηλώνουμε ρητά. Για να δηλώσουμε κάποιο στοιχείο μιας συστοιχίας, παραθέτουμε το όνομα της συστοιχίας ακολουθούμενο από τον αύξοντα αριθμό του στοιχείου αυτού μέσα σε αγκύλες. Παραδείγματος χάριν, η έκϕραση A[i] δηλώνει το i-οστό στοιχείο της συστοιχίας A. Για να αναϕερθούμε σε κάποιο σύνολο διαδοχικών στοιχείων μιας συστοιχίας χρησιμοποιούμε τον συμβολισμό «..». Δηλαδή, η έκϕραση A[1.. j] δηλώνει την υποσυστοιχία της A η οποία απαρτίζεται από τα j στοιχεία A[1], A[2],..., A[j]. Τα αλληλένδετα δεδομένα συγκροτούνται κατά κανόνα σε αντικείμενα, που αποτελούνται από γνωρίσματα. Για να παραπέμψουμε σε ένα συγκεκριμένο γνώρισμα, χρησιμοποιούμε τη σύνταξη που ακολουθείται σε πολλές 3 Κάθε διαδικασία ψευδοκώδικα που παραθέτουμε σε αυτό το βιβλίο παρουσιάζεται σε μία μόνο σελίδα, ώστε να μη χρειάζεται να διακρίνει κανείς διάϕορες βαθμίδες στοίχισης σε κώδικα που εκτείνεται σε πολλές σελίδες. 4 Ισοδύναμες δομές υπάρχουν σχεδόν σε όλες τις δομημένες γλώσσες, αν και η ακριβής σύνταξή τους μπορεί να διαϕέρει. Στην Python δεν υπάρχουν βρόχοι repeat-until, ενώ οι βρόχοι for λειτουργούν λίγο διαϕορετικά από τους βρόχους για σε αυτό το βιβλίο.

ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Παύλος Εφραιμίδης Δομές Δεδομένων και Αλγόριθμοι

ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Παύλος Εφραιμίδης Δομές Δεδομένων και Αλγόριθμοι Παύλος Εφραιμίδης 1 περιεχόμενα αλγόριθμοι τεχνολογία αλγορίθμων 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 περιεχόμενα ενθετική ταξινόμηση ανάλυση αλγορίθμων σχεδίαση αλγορίθμων 2 ενθετική ταξινόμηση 3 ενθετική ταξινόμηση Βασική αρχή: Επιλέγει ένα-έναταστοιχείατηςμηταξινομημένης ακολουθίας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Βασικές έννοιες και εφαρμογές Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

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

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

Κεφάλαιο 8. Αριθμητική Λογική μονάδα Κεφάλαιο 8 Αριθμητική Λογική μονάδα 8.1 Εισαγωγή Στη μηχανική υπολογιστών η αριθμητική/λογική μονάδα (ALU) είναι ένα ψηφιακό κύκλωμα το οποίο εκτελεί αριθμητικούς και λογικούς υπολογισμούς. Η ALU είναι

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

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

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

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

Αναγνώριση Προτύπων Ι

Αναγνώριση Προτύπων Ι Αναγνώριση Προτύπων Ι Ενότητα 1: Μέθοδοι Αναγνώρισης Προτύπων Αν. Καθηγητής Δερματάς Ευάγγελος Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 1: Εισαγωγή Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΕΡΛΙΑΟΥΝΤΑΣ ΣΤΕΦΑΝΟΣ, ΠΕ19 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι 3. Αλγόριθμοι 2 3. Αλγόριθμοι 3.1 Η έννοια του αλγορίθμου 3.2 Χαρακτηριστικά αλγορίθμου 3.3 Ανάλυση αλγορίθμων

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Εισαγωγή Η τακτοποίηση των δεδομένων με ιδιαίτερη σειρά είναι πολύ σημαντική λειτουργία που ονομάζεται

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

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

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

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

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

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων

Εισαγωγή στην Ανάλυση Αλγορίθμων Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 4: Εισαγωγή / Σύνολα

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 4: Εισαγωγή / Σύνολα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Διακριτά Μαθηματικά Ενότητα 4: Εισαγωγή / Σύνολα Αν. Καθηγητής Κ. Στεργίου e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες

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

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

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

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

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

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

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

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής Κεφάλαιο 4 ο Ο Προσωπικός Υπολογιστής Μάθημα 4.3 Ο Επεξεργαστής - Εισαγωγή - Συχνότητα λειτουργίας - Εύρος διαδρόμου δεδομένων - Εύρος διαδρόμου διευθύνσεων - Εύρος καταχωρητών Όταν ολοκληρώσεις το μάθημα

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

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

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

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

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

Θέματα Προγραμματισμού Η/Υ

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 1: Εισαγωγή Θεματική Ενότητα: Εισαγωγή στον Προγραμματισμό ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική

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

Τυχαιοκρατικοί Αλγόριθμοι

Τυχαιοκρατικοί Αλγόριθμοι Πιθανότητες και Αλγόριθμοι Ανάλυση μέσης περίπτωσης Μελέτα τη συμπεριφορά ενός αλγορίθμου σε μια «μέση» είσοδο (ως προς κάποια κατανομή) Τυχαιοκρατικός αλγόριθμος Λαμβάνει τυχαίες αποφάσεις καθώς επεξεργάζεται

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

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

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

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2017-2018 Τομέας Συστημάτων Παραγωγής Εξάμηνο A Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης 03 ΟΚΤ 2017 ΜΑΘΗΜΑ : ΕΙΣΑΓΩΓΗ ΣΤΗΝ

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

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

Διδακτικά προβλήματα σχετικά με την έννοια της επανάληψης

Διδακτικά προβλήματα σχετικά με την έννοια της επανάληψης Διδακτικά προβλήματα σχετικά με την έννοια της επανάληψης Έρευνες-Δομές Επανάληψης Από τις έρευνες προκύπτει ότι οι αρχάριοι προγραμματιστές δεν χρησιμοποιούν αυθόρμητα την επαναληπτική διαδικασία για

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

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

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

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

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

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

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

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

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

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) 3.1 Ασυμπτωτικός συμβολισμός (Ι) Οι ορισμοί που ακολουθούν μας επιτρέπουν να επιχειρηματολογούμε με ακρίβεια για την ασυμπτωτική συμπεριφορά. Οι f(n) και g(n) συμβολίζουν

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

Δομές Δεδομένων Ενότητα 2

Δομές Δεδομένων Ενότητα 2 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 2: Θέματα Απόδοσης Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

Pr(10 X 15) = Pr(15 X 20) = 1/2, (10.2)

Pr(10 X 15) = Pr(15 X 20) = 1/2, (10.2) Κεφάλαιο 10 Συνεχείς τυχαίες μεταβλητές Σε αυτό το κεφάλαιο θα εξετάσουμε τις ιδιότητες που έχουν οι συνεχείς τυχαίες μεταβλητές. Εκείνες οι Τ.Μ. X, δηλαδή, των οποίων το σύνολο τιμών δεν είναι διακριτό,

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and

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

4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER

4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER 4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER Σκοπός του κεφαλαίου είναι να παρουσιάσει μερικές εφαρμογές του Μετασχηματισμού Fourier (ΜF). Ειδικότερα στο κεφάλαιο αυτό θα περιγραφούν έμμεσοι τρόποι

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

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας Μαθησιακές δυσκολίες ΙΙ Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας Μάρτιος 2010 Προηγούμενη διάλεξη Μαθησιακές δυσκολίες Σε όλες

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

Αλγοριθμικές Τεχνικές

Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Αλγοριθμικές Τεχνικές 1 Τεχνικές Σχεδιασμού Αλγορίθμων Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Προγραμματισμός Η/Υ Προτεινόμενα θέματα εξετάσεων Εργαστήριο Μέρος 1 ό ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής Ιανουάριος 2011 Καλογιάννης Γρηγόριος Επιστημονικός/ Εργαστηριακός

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

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

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

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

Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch

Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch 1 Καλαμποκάς Ιάσων, 2 Καραστάθη Μαρία, 3 Καραστάθη Ουρανία, 4 Χαλβατσιώτης Γεώργιος, 5 Κωνσταντίνου Ζωή, 6 Καρόγλου Νικόλαος,

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

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης Κεφάλαιο 7 1. Σε τι διαφέρει ο Η/Υ από τις υπόλοιπες ηλεκτρικές και ηλεκτρονικές συσκευές; Που οφείλεται η δυνατότητά του να κάνει τόσο διαφορετικές

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

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις

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

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

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

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

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

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

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

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

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

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

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

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

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

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος Μορφές αποδείξεων Μαθηματικά Πληροφορικής ο Μάθημα Τμήμα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης.

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

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης ΠΕΡΙΕΧΟΜΕΝΑ Εντολές επιλογής Εντολές επανάληψης Εισαγωγή Στο προηγούμενο κεφάλαιο αναπτύξαμε προγράμματα, τα οποία ήταν πολύ απλά και οι εντολές των οποίων εκτελούνται η μία μετά την άλλη. Αυτή η σειριακή

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ KAI Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΤΕΤΑΡΤΗ 06 ΣΕΠΤΕΜΒΡΙΟΥ 2017 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Πληροφορική II Ενότητα 2 : Αλγόριθμοι Δρ. Γκόγκος Χρήστος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Χρηματοοικονομικής & Ελεγκτικής

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr

Δομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δεδομένα: Σύνολο από πληροφορίες που

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

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

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

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

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

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

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

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού. Κεφάλαιο 6 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία σημαντικά στάδια : Σον ακριβή προσδιορισμό του προβλήματος Σην ανάπτυξη του αντίστοιχου αλγορίθμου

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

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

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

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

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

Αριθμητική Ανάλυση & Εφαρμογές

Αριθμητική Ανάλυση & Εφαρμογές Αριθμητική Ανάλυση & Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 2017-2018 Υπολογισμοί και Σφάλματα Παράσταση Πραγματικών Αριθμών Συστήματα Αριθμών Παράσταση Ακέραιου

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

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

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

ΑΝΑΛΥΣΗ 1 ΠΕΜΠΤΟ ΜΑΘΗΜΑ, Μ. Παπαδημητράκης.

ΑΝΑΛΥΣΗ 1 ΠΕΜΠΤΟ ΜΑΘΗΜΑ, Μ. Παπαδημητράκης. ΑΝΑΛΥΣΗ 1 ΠΕΜΠΤΟ ΜΑΘΗΜΑ, 17-10-13 Μ. Παπαδημητράκης. 1 Την προηγούμενη φορά αναφέραμε (και αποδείξαμε στην περίπτωση n = 2) το θεώρημα που λέει ότι, αν n N, n 2, τότε για κάθε y 0 υπάρχει μοναδική μηαρνητική

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Δομή Επανάληψης Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Δομή Επανάληψης Επανάληψη με αρίθμηση DO = ,

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

ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014

ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014 ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014 Περιεχόμενα 1 Εισαγωγή 2 2 Μεγιστικός τελέστης στην μπάλα 2 2.1 Βασικό θεώρημα........................ 2 2.2 Γενική περίπτωση μπάλας.................. 6 2.2.1 Στο

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

ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ

ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ Tel.: +30 2310998051, Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Σχολή Θετικών Επιστημών Τμήμα Φυσικής 541 24 Θεσσαλονίκη Καθηγητής Γεώργιος Θεοδώρου Ιστοσελίδα: http://users.auth.gr/theodoru ΙΑ ΟΧΙΚΕΣ ΒΕΛΤΙΩΣΕΙΣ

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βήματα προς τη δημιουργία εκτελέσιμου κώδικα Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

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

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

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

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

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

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

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

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

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης Δομές Δεδομένων και Αλγόριθμοι Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Στόχοι Μαθήματος Η σχεδίαση και ανάλυση αλγορίθμων και δομών δεδομένων αποτελεί σημαντικό τμήμα της πληροφορικής.

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

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης 1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης Στη συγκεκριμένη ενότητα εξετάζουμε θέματα σχετικά με την αριθμητική πεπερασμένης ακρίβειας που χρησιμοποιούν οι σημερινοί υπολογιστές και τα

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

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

Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης. Οταν το πρόβλημα έχει πεπερασμ Μαθηματικά Πληροφορικής 2ο Μάθημα Τμήμα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης.

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

f(t) = (1 t)a + tb. f(n) =

f(t) = (1 t)a + tb. f(n) = Παράρτημα Αʹ Αριθμήσιμα και υπεραριθμήσιμα σύνολα Αʹ1 Ισοπληθικά σύνολα Ορισμός Αʹ11 (ισοπληθικότητα) Εστω A, B δύο μη κενά σύνολα Τα A, B λέγονται ισοπληθικά αν υπάρχει μια συνάρτηση f : A B, η οποία

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

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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