O Χρόνος Εκτέλεσης. προγραμμάτων ΚΕΦΑΛΑΙΟ 3. Τα θέματα αυτού του κεφαλαίου

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

Download "O Χρόνος Εκτέλεσης. προγραμμάτων ΚΕΦΑΛΑΙΟ 3. Τα θέματα αυτού του κεφαλαίου"

Transcript

1 ΚΕΦΑΛΑΙΟ 3 O Χρόνος Εκτέλεσης Προγραμμάτων Στο Κεφάλαιο 2 είδαμε δύο ριζικά διαφορετικούς αλγόριθμους ταξινόμησης: τον αλγόριθμο ταξινόμησης με εισαγωγή και τον αλγόριθμο ταξινόμησης με συγχώνευση. Υπάρχουν, στην πραγματικότητα, αρκετοί αλγόριθμοι ταξινόμησης. Η κατάσταση αυτή είναι τυπική: κάθε πρόβλημα το οποίο μπορεί να λυθεί εξ ολοκλήρου με αλγόριθμο, μπορεί να λυθεί από περισσότερους του ενός αλγόριθμους. Πώς, τότε, θα πρέπει να επιλέξουμε έναν αλγόριθμο για να λύσουμε ένα δεδομένο πρόβλημα; Ως γενικό κανόνα, θα πρέπει πάντα να επιλέγουμε έναν αλγόριθμο που είναι εύκολο να κατανοήσουμε, να υλοποιήσουμε και να τεκμηριώσουμε. Όταν είναι σημαντική η επίδοση, όπως συμβαίνει συχνά, χρειάζεται επίσης να επιλέγουμε έναν αλγόριθμο που εκτελείται γρήγορα και χρησιμοποιεί αποδοτικά τους διαθέσιμους υπολογιστικούς πόρους. Οδηγούμαστε έτσι στο να θεωρήσουμε το συχνά λεπτό θέμα του πώς θα μετρήσουμε τον χρόνο εκτέλεσης ενός προγράμματος ή ενός αλγόριθμου και τι βήματα μπορούμε να κάνουμε για να καταφέρουμε ένα πρόγραμμα να εκτελείται πιο γρήγορα. 3.1 Τα θέματα αυτού του κεφαλαίου Στο κεφάλαιο αυτό θα καλύψουμε τα εξής θέματα: Τα σημαντικά μέτρα της επίδοσης για τα προγράμματα Τις μεθόδους αξιολόγησης των επιδόσεων των προγραμμάτων Τον συμβολισμό Ο Την εκτίμηση του χρόνου εκτέλεσης των προγραμμάτων με χρήση του συμβολισμού Ο Τη χρήση των αναδρομικών σχέσεων για τον υπολογισμό του χρόνου εκτέλεσης των αναδρομικών προγραμμάτων Η εισαγωγή του συμβολισμού Ο στις Ενότητες 3.4 και 3.5 απλοποιεί τη διεργασία εκτίμησης του χρόνου εκτέλεσης των προγραμμάτων καθώς μας επιτρέπει να αποφεύγουμε την ενασχόληση με σταθερές που είναι σχεδόν αδύνατο να προσδιορίσουμε, όπως είναι ο αριθμός των εντολών μηχανής που θα δημιουργηθούν από έναν τυπικό μεταγλωττιστή της C για ένα δεδομένο πηγαίο πρόγραμμα. Εισάγουμε τις τεχνικές υπολογισμού που απαιτούνται για την εκτίμηση του χρόνου εκτέλεσης των προγραμμάτων σταδιακά. Στις Ενότητες 3.6 και 3.7 παρουσιάζουμε τις μεθόδους -1-

2 που χρησιμοποιούνται στην ανάλυση προγραμμάτων χωρίς κλήσεις συναρτήσεων. Η Ενότητα 3.8 επεκτείνει τη δυνατότητά μας σε προβλήματα με κλήσεις μη αναδρομικών συναρτήσεων. Στη συνέχεια, στις Ενότητες 3.9 και 3.10 δείχνουμε πώς να αντιμετωπίζουμε τις αναδρομικές συναρτήσεις. Τέλος, στην Ενότητα 3.11 εξετάζουμε λύσεις σε αναδρομικές σχέσεις, οι οποίες είναι επαγωγικοί ορισμοί συναρτήσεων που προκύπτουν όταν αναλύουμε τον χρόνο εκτέλεσης αναδρομικών συναρτήσεων. 3.2 Απλότητα Σαφήνεια Αποδοτικότητα Επιλογή αλγορίθμου Αν χρειαστεί να γράψουμε ένα πρόγραμμα που θα χρησιμοποιηθεί μία φορά σε μικρές ποσότητες δεδομένων και μετά θα τεθεί σε αχρηστία, τότε θα πρέπει να επιλέξουμε τον πιο εύκολο προς υλοποίηση αλγόριθμο που γνωρίζουμε, να συντάξουμε και να διορθώσουμε από ενδεχόμενα σφάλματα το πρόγραμμα και μετά να προχωρήσουμε σε κάτι άλλο. Όμως, όταν χρειάζεται να γράψουμε ένα πρόγραμμα που θα πρέπει να χρησιμοποιηθεί και να διατηρηθεί από πολλούς ανθρώπους για ένα μεγάλο χρονικό διάστημα, προκύπτουν άλλα ζητήματα. Ένα είναι η κατανοησιμότητα, ή απλότητα, του υποκείμενου αλγορίθμου. Είναι επιθυμητοί απλοί αλγόριθμοι για διάφορους λόγους. Ο πιο σημαντικός είναι ίσως το γεγονός ότι ένας απλός αλγόριθμος είναι ευκολότερο να υλοποιηθεί σωστά απ ότι ένας πολύπλοκος. Το πρόγραμμα που θα προκύψει είναι επίσης λιγότερο πιθανό να έχει ανεπαίσθητα σφάλματα που γίνονται φανερά όταν το πρόγραμμα δεχτεί μια μη αναμενόμενη είσοδο αφού έχει χρησιμοποιηθεί για ένα όχι ευκαταφρόνητο χρονικό διάστημα. Τα προγράμματα θα πρέπει να γράφονται με σαφήνεια και να τεκμηριώνονται προσεκτικά για να μπορούν να διατηρούνται και από άλλους. Αν ένας αλγόριθμος είναι απλός και κατανοητός, περιγράφεται πιο εύκολα. Με καλή τεκμηρίωση, οι τροποποιήσεις στο αρχικό πρόγραμμα μπορούν να πραγματοποιηθούν εύκολα από κάποιον άλλο που δεν είναι ο αρχικός συντάκτης (ο οποίος συχνά δεν θα είναι διαθέσιμος να τις κάνει) ή ακόμη και από τον αρχικό συντάκτη αν το πρόγραμμα δημιουργήθηκε κάποια προγενέστερη χρονική στιγμή. Υπάρχουν πολλές ιστορίες προγραμματιστών που έγραψαν αποδοτικούς και έξυπνους αλγόριθμους, μετά αποχώρησαν από την εταιρία και ανακάλυψαν ότι οι αλγόριθμοί τους είχαν παραμεληθεί και αντικατασταθεί με πιο αργούς αλλά περισσότερο κατανοητούς από τους συντηρητές του κώδικα. Όταν ένα πρόγραμμα πρόκειται να εκτελεστεί επανειλημμένα, η αποδοτικότητά του και αυτή του υποκείμενου αλγορίθμου του αποκτούν σημασία. Γενικά συσχετίζουμε την αποδοτικότητα με τον χρόνο που απαιτεί ένα πρόγραμμα για την εκτέλεσή του, αν και υπάρχουν και άλλοι πόροι τους οποίους πρέπει ένα πρόγραμμα να διατηρεί, όπως είναι 1. Η ποσότητα του αποθηκευτικού χώρου που απαιτούν οι μεταβλητές του. 2. Η ποσότητα της επιβάρυνσης (traffic) που δημιουργεί σε ένα δίκτυο υπολογιστών. 3. Η ποσότητα των δεδομένων που πρέπει να μετακινηθούν από και προς τους δίσκους. Για μεγάλα προβλήματα, όμως, είναι ο χρόνος εκτέλεσης που προσδιορίζει το κατά πόσο ένα δεδομένο πρόγραμμα μπορεί να χρησιμοποιηθεί, και ο χρόνος εκτέλεσης είναι το κύριο θέμα αυτού του κεφαλαίου. Θα θεωρήσουμε, στην πραγματικότητα, την αποδοτικότητα ενός προγράμματος ως την ποσότητα του χρόνου που απαιτεί, μετρημένη ως συνάρτηση του μεγέθους της εισόδου του. Συχνά η κατανοησιμότητα και η αποδοτικότητα είναι αντικρουόμενοι σκοποί. Παραδείγματος χάρη, ο αναγνώστης που συγκρίνει το πρόγραμμα της ταξινόμησης με επιλογή της Εικ. -2-

3 2.3 (1) με το πρόγραμμα της ταξινόμησης με συγχώνευση της Εικ (2) θα συμφωνήσει σίγουρα στο ότι το τελευταίο είναι όχι μόνο πιο μακροσκελές, αλλά και αρκετά πιο δυσνόητο. Αυτό θα εξακολουθούσε να είναι αληθές ακόμη κι αν συνοψίζαμε τις εξηγήσεις που δίνονται στις Ενότητες 2.2 και 2.8 τοποθετώντας καλά διατυπωμένα σχόλια στα προγράμματα. Όπως θα μάθουμε, όμως, η ταξινόμηση με συγχώνευση είναι πολύ πιο αποδοτική από την ταξινόμηση με επιλογή, όσο το πλήθος των στοιχείων προς ταξινόμηση είναι περισσότερο από εκατό. Δυστυχώς αυτή η κατάσταση είναι αρκετά τυπική: οι αλγόριθμοι που είναι αποδοτικοί για μεγάλες ποσότητες δεδομένων τείνουν να είναι πιο πολύπλοκοι στη σύνταξη και την κατανοησιμότητα απ ότι είναι οι σχετικά μη αποδοτικοί αλγόριθμοι. Η κατανοησιμότητα, ή απλότητα, ενός αλγορίθμου είναι κατά κάποιον τρόπο υποκειμενική. Μπορούμε να θυσιάσουμε την απλότητα ενός αλγορίθμου, σε κάποιο βαθμό, εξηγώντας καλά τον αλγόριθμο στα σχόλια και την τεκμηρίωση του προγράμματος. Αυτός που κάνει την τεκμηρίωση θα πρέπει πάντα να έχει κατά νου τον αναγνώστη του κώδικα και των σχολίων του: μπορεί ένας εύλογα έξυπνος άνθρωπος να κατανοήσει ό,τι γράφεται ή χρειάζονται περαιτέρω εξηγήσεις, λεπτομέρειες, ορισμοί και παραδείγματα; Από την άλλη μεριά, η αποδοτικότητα ενός προγράμματος είναι κάτι το αντικειμενικό: ένα πρόγραμμα απαιτεί τον χρόνο που χρειάζεται για την εκτέλεσή του και δεν υπάρχει χώρος για αμφισβήτηση. Δυστυχώς δεν μπορούμε να εκτελέσουμε το πρόγραμμα για όλα τα πιθανά δεδομένα εισόδου τα οποία είναι τυπικά άπειρα σε αριθμό. Έτσι, αναγκαζόμαστε να κάνουμε μέτρα του χρόνου εκτέλεσης ενός προγράμματος τα οποία συνοψίζουν τις επιδόσεις του προγράμματος για όλες τις εισόδους, συνήθως ως μία έκφραση όπως είναι η n 2. Ο τρόπος με τον οποίο μπορούμε να το κάνουμε είναι το αντικείμενο αυτού του κεφαλαίου. 3.3 Μέτρηση του χρόνου εκτέλεσης Από τη στιγμή που έχουμε δεχτεί ότι μπορούμε να αξιολογήσουμε ένα πρόγραμμα μετρώντας τον χρόνο εκτέλεσής του, βρισκόμαστε αντιμέτωποι με το πρόβλημα του προσδιορισμού του τι είναι πραγματικά ο χρόνος εκτέλεσης. Οι δυο κύριες προσεγγίσεις για να συνοψίσουμε τον χρόνο εκτέλεσης είναι οι εξής: 1. Μέτρηση επιδόσεων με χρήση «εισόδων αναφοράς» (Benchmarking) 2. Ανάλυση Θα τις θεωρήσουμε και τις δύο διαδοχικά, αλλά η κύρια έμφαση σ αυτό το κεφάλαιο θα δοθεί στις τεχνικές ανάλυσης ενός προγράμματος ή αλγορίθμου. Μέτρηση επιδόσεων με χρήση «εισόδων αναφοράς» (Benchmarking) Όταν συγκρίνουμε δύο ή περισσότερα προγράμματα που έχουν σχεδιαστεί για να πραγματοποιήσουν την ίδια εργασία, είναι σύνηθες να αναπτύσσουμε μια μικρή συλλογή από τυπικές εισόδους που χρησιμεύουν ως είσοδοι αναφοράς επιδόσεων (benchmark) και που θεωρούνται αντιπροσωπευτικές του συνόλου των δυνατών εισόδων. Συμφωνούμε, δηλαδή, να αποδεχόμαστε τις εισόδους αναφοράς επιδόσεων ως αντιπροσωπευτικές της όλης εργασίας ένα πρόγραμμα που έχει καλές επιδόσεις για τις εισόδους αναφοράς επιδόσεων αναμένεται να έχει καλές επιδόσεις για όλες τις εισόδους. 1 βλ. Σημείωση 1 στο τέλος του Κεφαλαίου. 2 βλ. Σημείωση 2 στο τέλος του Κεφαλαίου. -3-

4 Δυναμική ανάλυση Τοπικότητα και καίρια σημεία Ο κανόνας Σε σχέση με τη μέτρηση επιδόσεων με χρήση «εισόδων αναφοράς», συχνά είναι χρήσιμο να προσδιορίζουμε τα σημεία στα οποία το υπό θεώρηση πρόγραμμα καταναλώνει τον χρόνο του. Αυτή η μέθοδος αξιολόγησης της επίδοσης ενός προγράμματος ονομάζεται δυναμική ανάλυση (profiling) και τα περισσότερα προγραμματιστικά περιβάλλοντα περιέχουν ειδικά εργαλεία, τους δυναμικούς αναλυτές (profiler), που συσχετίζουν κάθε μια εντολή ενός προγράμματος με έναν αριθμό ο οποίος αντιπροσωπεύει το κλάσμα του συνολικού χρόνου που απαιτείται για την εκτέλεση της συγκεκριμένης εντολής. Ένα σχετικό βοηθητικό εργαλείο είναι ο λεγόμενος καταμετρητής εντολών, που προσδιορίζει για κάθε εντολή ενός πηγαίου προγράμματος πόσες φορές εκτελείται η εντολή αυτή για ένα συγκεκριμένο σύνολο δεδομένων εισόδου. Πολλά προγράμματα έχουν την ιδιότητα ότι το περισσότερο μέρος του χρόνου εκτέλεσής τους καταναλώνεται σε ένα μικρό κλάσμα του πηγαίου κώδικα. Υπάρχει ένας άτυπος κανόνας σύμφωνα με τον οποίο το 90% του χρόνου εκτέλεσης ξοδεύεται στο 10% του κώδικα. Αν και το ακριβές ποσοστό διαφέρει από πρόγραμμα σε πρόγραμμα, ο «κανόνας 90-10» μας λέει ότι τα περισσότερα προγράμματα επιδεικνύουν μια σημαίνουσα τοπικότητα ως προς το πού καταναλώνεται ο χρόνος εκτέλεσης. Ένας από τους πιο εύκολους τρόπους για την επιτάχυνση ενός προγράμματος είναι η δυναμική ανάλυση και μετά η εφαρμογή βελτιώσεων του κώδικα στα «καίρια σημεία» του, που είναι τα τμήματα του προγράμματος στα οποία καταναλώνεται ο περισσότερος χρόνος. Παραδείγματος χάρη, στο Κεφάλαιο 2 αναφέραμε ότι μπορούμε να επιταχύνουμε ένα πρόγραμμα αντικαθιστώντας μια αναδρομική συνάρτηση με μια ισοδύναμη επαναληπτική. Αυτό όμως έχει νόημα μόνο αν η αναδρομική συνάρτηση εμφανίζεται στα μέρη εκείνα του προγράμματος όπου καταναλώνεται ο περισσότερος χρόνος. Ως μια ακραία περίπτωση, ακόμα και αν μειώσουμε στο μηδέν τον χρόνο που απαιτείται από το 90% του κώδικα στο οποίο ξοδεύεται μόνο το 10% του χρόνου, θα έχουμε μειώσει τον συνολικό χρόνο εκτέλεσης του προγράμματος μόνο κατά 10%. Από την άλλη μεριά, η μείωση στο μισό του χρόνου εκτέλεσης του 10% του προγράμματος όπου ξοδεύεται το 90% του χρόνου μειώνει τον συνολικό χρόνο εκτέλεσης κατά 45%. Παραδείγματος χάρη, μια είσοδος αναφοράς επιδόσεων για την αξιολόγηση προγραμμάτων ταξινόμησης μπορεί να περιέχει ένα μικρό σύνολο αριθμών, όπως είναι τα 20 πρώτα ψηφία του αριθμού π ένα μετρίου μεγέθους σύνολο, όπως είναι το σύνολο των ταχυδρομικών κωδικών του Τέξας και ένα μεγάλου μεγέθους σύνολο αριθμών, όπως είναι το σύνολο των αριθμών τηλεφώνου στον τηλεφωνικό κατάλογο του Μπρούκλιν. Μπορεί επίσης να θελήσουμε να ελέγξουμε εάν ένα πρόγραμμα λειτουργεί αποδοτικά (και σωστά) όταν δίνεται ένα κενό σύνολο στοιχείων προς ταξινόμηση, ένα μονοσύνολο, και μια λίστα που είναι ήδη ταξινομημένη. Είναι αξιοσημείωτο το γεγονός ότι κάποιοι αλγόριθμοι ταξινόμησης έχουν φτωχές επιδόσεις όταν τους δίνεται μια λίστα στοιχείων που είναι ήδη ταξινομημένη. (3) Ανάλυση προγράμματος Για να αναλύσουμε ένα πρόγραμμα ξεκινάμε με την ομαδοποίηση των δεδομένων εισόδου σύμφωνα με το μέγεθος. Το τι επιλέγουμε να καλέσουμε μέγεθος μιας εισόδου μπορεί να διαφέρει από πρόγραμμα σε πρόγραμμα όπως είπαμε και στην Ενότητα 2.9 σε σχέση με τις απο- 3 Η ταξινόμηση με επιλογή και η ταξινόμηση με συγχώνευση δεν ανήκουν σ αυτούς απαιτούν τον ίδιο χρόνο για μια ταξινομημένη λίστα όπως θα απαιτούσαν για οποιαδήποτε άλλη λίστα του ίδιου μήκους. -4-

5 δείξεις ιδιοτήτων των αναδρομικών προγραμμάτων. Για ένα πρόγραμμα ταξινόμησης, ένα καλό μέτρο του μεγέθους είναι ο αριθμός των στοιχείων προς ταξινόμηση. Για ένα πρόγραμμα που επιλύει n γραμμικές εξισώσεις με n αγνώστους, ενδείκνυται να παίρνουμε το n να είναι το μέγεθος του προβλήματος. Άλλα προγράμματα μπορεί να χρησιμοποιούν την τιμή κάποιας συγκεκριμένης εισόδου, ή το μήκος μιας λίστας που είναι μια είσοδος στο πρόγραμμα, ή το μέγεθος μιας συστοιχίας που είναι μια είσοδος, ή κάποιος συνδυασμός ποσοτήτων σαν αυτές. Χρόνος εκτέλεσης Αλγόριθμος γραμμικού χρόνου Χρόνος εκτέλεσης χειρότερης και μέσης περίπτωσης Είναι κατάλληλο να χρησιμοποιούμε μια συνάρτηση Τ(n) για να αναπαριστάνει τον αριθμό των μονάδων χρόνου που απαιτεί ένα πρόγραμμα ή ένας αλγόριθμος για μια είσοδο μεγέθους n. Θα ονομάσουμε T(n) τον χρόνο εκτέλεσης του προγράμματος. Παραδείγματος χάρη, ένα πρόγραμμα μπορεί να έχει χρόνο εκτέλεσης T(n) = cn, όπου c κάποια σταθερά. Με άλλα λόγια, ο χρόνος εκτέλεσης αυτού του προγράμματος είναι γραμμικά ανάλογος του μεγέθους της εισόδου για την οποία εκτελείται. Ένα τέτοιο πρόγραμμα ή αλγόριθμος λέγεται γραμμικού χρόνου ή απλά γραμμικό(ς). Μπορούμε να αναλογιστούμε τον χρόνο εκτέλεσης T(n) ως τον αριθμό των εντολών σε C που εκτελούνται από το πρόγραμμα ή ως τον χρόνο που απαιτείται για να εκτελεστεί το πρόγραμμα σε κάποιον τυπικό υπολογιστή. Τις περισσότερες φορές θα αφήνουμε τις μονάδες του Τ(n) ακαθόριστες. Πράγματι, όπως θα δούμε στην επόμενη ενότητα, έχει νόημα να αναφερόμαστε στον χρόνο εκτέλεσης ενός προγράμματος μόνο ως κάποιον (άγνωστο) σταθερό παράγοντα επί το Τ(n). Αρκετά συχνά, ο χρόνος εκτέλεσης ενός προγράμματος εξαρτάται από μια συγκεκριμένη είσοδο και όχι απλά από το μέγεθος της εισόδου. Σε αυτές τις περιπτώσεις ορίζουμε το Τ(n) να είναι ο χρόνος εκτέλεσης χειρότερης περίπτωσης, δηλαδή, ο μέγιστος χρόνος εκτέλεσης για μια οποιαδήποτε είσοδο μεταξύ όλων των εισόδων μεγέθους n. Ένα άλλο γνωστό μέτρο των επιδόσεων είναι το T avg (n), ο μέσος χρόνος εκτέλεσης του προγράμματος επί όλων των εισόδων μεγέθους n. Ο μέσος χρόνος εκτέλεσης είναι μερικές φορές ένα πιο ρεαλιστικό μέτρο των επιδόσεων που θα δούμε στην πράξη, αλλά συνήθως είναι πολύ πιο δύσκολο να τον υπολογίσουμε απ ότι τον χρόνο εκτέλεσης χειρότερης περίπτωσης. Η ιδέα ενός «μέσου» χρόνου εκτέλεσης συνεπάγεται επίσης ότι όλες οι είσοδοι μεγέθους n είναι εξίσου πιθανές, το οποίο μπορεί να ισχύει ή να μην ισχύει σε μια δεδομένη κατάσταση. Παράδειγμα 3.1. Ας εκτιμήσουμε τον χρόνο εκτέλεσης ενός αποσπάσματος του προγράμματος SelectionSort (ταξινόμηση με επιλογή), όπως φαίνεται στην Εικ Οι εντολές έχουν την αρχική αρίθμηση από την Εικ (4) Σκοπός του κώδικα είναι να τεθεί η small στον δείκτη του μικρότερου από τα στοιχεία που βρέθηκε στο τμήμα της συστοιχίας Α από το A[i] μέχρι το A[n-1]. (2) small=i; (3) for(j = i+1; j < n; j++) (4) if (A[j]<A[small]) (5) small = j Εικ Εσωτερικός βρόχος της ταξινόμησης με επιλογή 4 βλ. Σημείωση 3 στο τέλος του Κεφαλαίου. -5-

6 Αρχικά, πρέπει να αναπτύξουμε μια απλή έννοια των μονάδων χρόνου. Θα εξετάσουμε το θέμα αναλυτικά αργότερα, αλλά για την ώρα το ακόλουθο απλό σχήμα αρκεί. Θα μετράμε μία μονάδα χρόνου κάθε φορά που εκτελούμε μια εντολή ανάθεσης. Στη γραμμή (3) μετράμε μία μονάδα για την αρχικοποίηση του j στην αρχή του βρόχου for, μία μονάδα για τoν έλεγχο αν j < n και μία μονάδα για την προσαύξηση του j κάθε φορά που διατρέχουμε τον βρόχο. Επίσης χρεώνουμε μία μονάδα κάθε φορά που εκτελούμε τον έλεγχο στη γραμμή (4). Πρώτα απ όλα, ας θεωρήσουμε το σώμα του εσωτερικού βρόχου, γραμμές (4) και (5). Ο έλεγχος της γραμμής (4) εκτελείται πάντα, αλλά η ανάθεση στη γραμμή (5) εκτελείται μόνο αν ο έλεγχος είναι επιτυχής. Επομένως, το σώμα απαιτεί 1 ή 2 μονάδες χρόνου ανάλογα με τα δεδομένα στη συστοιχία Α. Αν θέλουμε να πάρουμε τη χειρότερη περίπτωση, τότε μπορούμε να υποθέσουμε ότι το σώμα απαιτεί 2 μονάδες. Διατρέχουμε τον βρόχο for n i 1 φορές και κάθε φορά εκτελούμε το σώμα (2 μονάδες), μετά αυξάνουμε την j και ελέγχουμε εάν j < n (άλλες 2 μονάδες). Έτσι, ο αριθμός των μονάδων που δαπανώνται καθώς διατρέχεται ο βρόχος είναι 4(n i 1). Στον αριθμό αυτό πρέπει να προσθέσουμε 1 για την αρχικοποίηση της small στη γραμμή (2), 1 για την αρχικοποίηση της j στη γραμμή (3) και 1 για τον πρώτο έλεγχο j < n στη γραμμή (3), ο οποίος δεν συνδέεται με το τέλος μιας οποιασδήποτε επανάληψης του βρόχου. Άρα, ο συνολικός χρόνος που απαιτείται από το απόσπασμα του προγράμματος στην Εικ. 3.1 είναι 4(n i) 1. Είναι λογικό να θεωρούμε ως «μέγεθος» m των δεδομένων στα οποία αναφέρεται η Εικ. 3.1 το m = n i, αφού αυτό είναι το μήκος της συστοιχίας Α[i..n 1] στην οποία αναφέρεται. Τότε ο χρόνος εκτέλεσης, ο οποίος είναι 4(n i) 1, ισούται με 4m 1. Επομένως ο χρόνος εκτέλεσης T(m) για την Εικ. 3.1 είναι 4m 1. Σύγκριση διαφορετικών χρόνων εκτέλεσης Ας υποθέσουμε ότι για κάποιο πρόβλημα έχουμε την επιλογή να χρησιμοποιήσουμε ένα πρόγραμμα Α γραμμικού χρόνου, του οποίου ο χρόνος εκτέλεσης είναι Τ Α (n) = 100n και ένα πρόγραμμα Β τετραγωνικού χρόνου, του οποίου ο χρόνος εκτέλεσης είναι T B (n) = 2n 2. Ας υποθέσουμε ότι αυτοί οι δύο χρόνοι εκτέλεσης είναι ο αριθμός των χιλιοστών του δευτερολέπτου (milliseconds) που απαιτούνται σε έναν συγκεκριμένο υπολογιστή για μια είσοδο μεγέθους n. (5) Οι γραφικές παραστάσεις των χρόνων εκτέλεσης παρουσιάζονται στην Εικ Από τη Εικ. 3.2 βλέπουμε ότι για εισόδους μεγέθους μικρότερου του 50, το πρόγραμμα Β είναι ταχύτερο από το πρόγραμμα Α. Όταν η είσοδος γίνεται μεγαλύτερη του 50, το πρόγραμμα Α γίνεται ταχύτερο, και από αυτό το σημείο, όσο μεγαλύτερη είναι η είσοδος τόσο μεγαλύτερο είναι το πλεονέκτημα που έχει το Α σε σχέση με το Β. Για εισόδους μεγέθους 100, το Α είναι δύο φορές ταχύτερο από το Β και για εισόδους μεγέθους 1000, το Α είναι 20 φορές ταχύτερο. Η συναρτησιακή μορφή του χρόνου εκτέλεσης ενός προγράμματος, σε τελευταία ανάλυση, προσδιορίζει το πόσο μεγάλα προβλήματα μπορούμε να λύσουμε με αυτό το πρόγραμμα. Καθώς η ταχύτητα των υπολογιστών αυξάνεται, πετυχαίνουμε μεγαλύτερη βελτίωση στα μεγέθη των προβλημάτων που μπορούμε να λύσουμε με προγράμματα των οποίων ο χρόνος ε- κτέλεσης αυξάνεται αργά, από προγράμματα των οποίων ο χρόνος εκτέλεσης αυξάνεται ραγδαία. 5 Αυτή η κατάσταση δεν διαφέρει πολύ από την κατάσταση κατά την οποία ο αλγόριθμος Α είναι η ταξινόμηση με συγχώνευση και ο αλγόριθμος Β η ταξινόμηση με επιλογή. Ωστόσο, ο χρόνος εκτέλεσης της ταξινόμησης με συγχώνευση αυξάνει σαν n log n, όπως θα δούμε στην Ενότητα

7 Μήκος εισόδου n Εικ Χρόνοι εκτέλεσης ενός γραμμικού και ενός τετραγωνικού προγράμματος. Αν υποθέσουμε ότι οι χρόνοι εκτέλεσης των προγραμμάτων που δίνονται στην Εικ. 3.2 είναι σε χιλιοστά του δευτερολέπτου, ο πίνακας στην Εικ. 3.3 υποδεικνύει πόσο μεγάλα προβλήματα μπορούμε να λύσουμε με κάθε πρόγραμμα στον ίδιο υπολογιστή για διάφορες ποσότητες χρόνου που δίνονται σε δευτερόλεπτα. Παραδείγματος χάρη, ας υποθέσουμε ότι μπορούμε να διαθέσουμε 100 δευτερόλεπτα χρόνου του υπολογιστή. Αν οι υπολογιστές γίνουν 10 φορές γρηγορότεροι, τότε σε 100 δευτερόλεπτα μπορούμε να φέρουμε σε πέρας προβλήματα μεγέθους που συνήθως απαιτούσαν 1000 δευτερόλεπτα. Με τον αλγόριθμο Α, μπορούμε τώρα να λύσουμε προβλήματα 10 φορές μεγαλύτερα, αλλά με τον αλγόριθμο Β μπορούμε να λύσουμε μόνο προβλήματα 3 φορές μεγαλύτερα. Επομένως, καθώς οι υπολογιστές γίνονται ταχύτεροι, κερδίζουμε ακόμα πιο σημαντικά πλεονεκτήματα χρησιμοποιώντας αλγόριθμους και προγράμματα με χαμηλότερο ρυθμό αύξησης. ΧΡΟΝΟΣ sec. ΜΕΓΙΣΤΟ ΜΕΓΕΘΟΣ ΠΡΟΒΛΗΜΑΤΟΣ ΕΠΙΛΥΣΙΜΟΥ ΜΕ ΤΟ ΠΡΟΓΡΑΜΜΑ Α ΜΕΓΙΣΤΟ ΜΕΓΕΘΟΣ ΠΡΟΒΛΗΜΑΤΟΣ ΕΠΙΛΥΣΙΜΟΥ ΜΕ ΤΟ ΠΡΟΓΡΑΜΜΑ Β Εικ Μέγεθος προβλήματος ως συνάρτηση του διαθέσιμου χρόνου. ΑΣΚΗΣΕΙΣ 3.3.1: Θεωρήστε το απόσπασμα του προγράμματος για το παραγοντικό στην Εικ. 2.13, (6) και έστω ότι το μέγεθος της εισόδου είναι η τιμή n που διαβάζεται. Μετρώντας μία μονάδα χρόνου για κάθε εντολή ανάθεσης, ανάγνωσης και εγγραφής, και μία μονάδα κάθε φορά που γίνεται ο έλεγχος της συνθήκης στην εντολή while, υπολογίστε τον χρόνο εκτέλεσης του προγράμματος : Για το απόσπασμα προγράμματος της Άσκησης 2.5.1: 6 βλ. Σημείωση 4 στο τέλος του Κεφαλαίου. -7-

8 Μη σε νοιάζει η αποδοτικότητα αλγορίθμων απλά περίμενε μερικά χρόνια Συχνά ακούμε την άποψη ότι δεν υπάρχει λόγος να βελτιώνουμε τον χρόνο εκτέλεσης των αλγορίθμων ή να επιλέγουμε αποδοτικούς αλγόριθμους, επειδή οι ταχύτητες των υπολογιστών διπλασιάζονται κάθε λίγα χρόνια και δεν απέχουμε από το σημείο που ένας αλγόριθμος, οσοδήποτε μη αποδοτικός, θα κάνει τόσο λίγο χρόνο που δεν θα ενδιαφέρει κανέναν. Αυτός ο ισχυρισμός διατυπώνεται για πολλές δεκαετίες, ωστόσο δεν υπάρχει όριο σε σχέση με την ανάγκη για υπολογιστικούς πόρους. Έτσι, απορρίπτουμε γενικά την άποψη ότι οι βελτιώσεις του υλικού θα καταστήσουν περιττή τη μελέτη αποδοτικών αλγορίθμων. Υπάρχουν όμως και καταστάσεις που δεν χρειάζεται να ασχολούμαστε υπερβολικά με την αποδοτικότητα. Παραδείγματος χάρη, σε ένα σχολείο στο τέλος κάθε εξαμήνου ανακοινώνονται βαθμοί που έχουν εγγραφεί σε ηλεκτρονικά βαθμολογικά φύλλα και αποθηκεύονται σε υπολογιστή. Ο χρόνος που απαιτείται για τη διαδικασία είναι ενδεχομένως γραμμικός ως προς τον αριθμό των βαθμολογιών που ανακοινώνονται, όπως με τον υποθετικό αλγόριθμο Α. Αν το σχολείο αντικαταστήσει τον υπολογιστή του με έναν άλλο 10 φορές ταχύτερο, αυτός θα κάνει την εργασία στο 1/10 του χρόνου. Είναι αμφίβολο όμως αν το σχολείο θα εγγράψει 10 φορές περισσότερους μαθητές για τον λόγο αυτό ή θα απαιτήσει από κάθε μαθητή να εγγραφεί σε 10 φορές περισσότερα μαθήματα. Η αύξηση ταχύτητας του υπολογιστή δεν θα επηρεάσει το μέγεθος της εισόδου στο πρόγραμμα βαθμολογιών, επειδή αυτό το μέγεθος υπόκειται σε περιορισμούς από άλλους παράγοντες. Από την άλλη μεριά, υπάρχουν μερικά προβλήματα που αρχίζουμε να τα βρίσκουμε προσεγγίσιμα με τους αναδυόμενους υπολογιστικούς πόρους, αλλά των οποίων το «μέγεθος» είναι πολύ μεγάλο για να τα αντιμετωπίσουμε με την υπάρχουσα τεχνολογία. Στα προβλήματα αυτά συγκαταλέγεται η κατανόηση της φυσικής γλώσσας, η ικανότητα όρασης του υπολογιστή (η κατανόηση των ψηφιακών εικόνων) και η «ευφυής» αλληλεπίδραση μεταξύ υπολογιστών και ανθρώπων σε κάθε είδους προσπάθεια. Η αύξηση της ταχύτητας, είτε μέσω βελτιωμένων αλγορίθμων είτε από τις βελτιώσεις των μηχανών, θα αυξήσει τη δυνατότητά μας να αντιμετωπίσουμε αυτά τα προβλήματα στα επόμενα χρόνια. Επιπλέον, όταν αυτά τα προβλήματα γίνουν «απλά», μια νέα γενιά προκλήσεων που τώρα ούτε καν μπορούμε να διανοηθούμε θα πάρει τη θέση τους στα σύνορα του τι είναι δυνατό να κάνουμε με τους υπολογιστές. και το απόσπασμα προγράμματος της Εικ. 2.14: δώστε ένα κατάλληλο μέγεθος για την είσοδο. Χρησιμοποιώντας τους κανόνες καταμέτρησης της Άσκησης 3.3.1, προσδιορίστε τους χρόνους εκτέλεσης των προγραμμάτων : Υποθέστε ότι το πρόγραμμα Α απαιτεί 2 n /1000 μονάδες χρόνου και το πρόγραμμα Β απαιτεί 1000n 2 μονάδες. Για ποιες τιμές του n το πρόγραμμα Α απαιτεί λιγότερο χρόνο από το -8-

9 πρόγραμμα Β; 3.3.4: Για κάθε ένα από τα προγράμματα της Άσκησης 3.3.3, πόσο μεγάλο πρόβλημα μπορεί να λυθεί σε (α) 10 6 μονάδες χρόνου, (β) 10 9 μονάδες χρόνου και (c) μονάδες χρόνου; 3.3.5: Επαναλάβετε τις Ασκήσεις και αν το πρόγραμμα Α απαιτεί 1000n 4 μονάδες χρόνου και το πρόγραμμα Β απαιτεί n 10 μονάδες χρόνου. 3.4 Συμβολισμός Ο και προσεγγιστικός χρόνος εκτέλεσης Υποθέστε ότι έχουμε γράψει ένα πρόγραμμα σε C και έχουμε επιλέξει συγκεκριμένη είσοδο με την οποία επιθυμούμε να εκτελεστεί το πρόγραμμα. Ο χρόνος εκτέλεσης του προγράμματος για την είσοδο αυτή εξαρτάται ακόμα από δύο παράγοντες: 1. Ο υπολογιστής στον οποίο εκτελείται το πρόγραμμα. Μερικοί υπολογιστές εκτελούν γρηγορότερα εντολές σε σχέση με άλλους ο λόγος μεταξύ των ταχυτήτων των ταχύτερων υ- περ-υπολογιστών και των βραδύτερων προσωπικών υπολογιστών είναι σαφώς πάνω από 1000 προς Ο εκάστοτε μεταγλωττιστής C που χρησιμοποιείται για να δημιουργηθεί το πρόγραμμα το οποίο θα εκτελέσει ο υπολογιστής. Διαφορετικά προγράμματα μπορούν να χρειαστούν διαφορετικά χρονικά διαστήματα για να εκτελεστούν στο ίδιο μηχάνημα, ακόμα κι αν τα προγράμματα καταλήγουν στο ίδιο αποτέλεσμα. Κατά συνέπεια, δεν μπορούμε να κοιτάξουμε ένα πρόγραμμα σε C και την είσοδό του, και να πούμε «αυτή η εργασία θα απαιτήσει 3.21 δευτερόλεπτα» εκτός κι αν γνωρίζουμε ποια υπολογιστική μηχανή θα χρησιμοποιηθεί και ποιος μεταγλωττιστής. Επιπλέον, ακόμα κι αν γνωρίζουμε το πρόγραμμα, την είσοδο, την υπολογιστική μηχανή και τον μεταγλωττιστή, είναι πολύ περίπλοκο να προβλέψουμε ακριβώς τον αριθμό των εντολών μηχανής που θα εκτελεστούν. Γι αυτούς τους λόγους, εκφράζουμε συνήθως τον χρόνο εκτέλεσης ενός προγράμματος χρησιμοποιώντας τον συμβολισμό Ο (του «μεγάλου όμικρον»), ο οποίος σχεδιάστηκε για να μας επιτρέπει να παραλείπουμε σταθερούς παράγοντες, όπως είναι 1. Ο μέσος αριθμός των εντολών μηχανής που παράγει ένας συγκεκριμένος μεταγλωττιστής. 2. Ο μέσος αριθμός των εντολών μηχανής που εκτελεί μια συγκεκριμένη μηχανή ανά δευτερόλεπτο. Παραδείγματος χάρη, αντί να πούμε, όπως κάναμε στο Παράδειγμα 3.1, ότι το απόσπασμα του SelectionSort που μελετήσαμε απαιτεί χρόνο 4m 1 για μια συστοιχία μήκους m, θα μπορούσαμε να πούμε ότι απαιτεί χρόνο Ο(m), το οποίο διαβάζεται «μεγάλο όμικρον του m» ή απλά «Ο του m» και που άτυπα σημαίνει «κάποια σταθερά επί το m». Η έννοια «κάποια σταθερά επί το m» μας επιτρέπει όχι μόνο να αγνοήσουμε άγνωστες σταθερές που σχετίζονται με τον μεταγλωττιστή και την υπολογιστική μηχανή, αλλά μας επιτρέπει επίσης να κάνουμε μερικές απλουστευτικές υποθέσεις. Στο Παράδειγμα 3.1, παραδείγματος χάρη, υποθέσαμε ότι όλες οι εντολές ανάθεσης απαιτούν την ίδια ποσότητα χρόνου και ότι αυτή η ποσότητα χρόνου απαιτείται επίσης κατά τον έλεγχο για τερματισμό του βρόχου for, την προσαύξηση του j με την ολοκλήρωση του βρόχου, την αρχικοποίηση, κ.ο.κ.. Δεδομένου ότι καμία από αυτές τις υποθέσεις δεν ισχύει στην πράξη, οι σταθερές 4 και 1 στον τύπο του χρόνου εκτέλεσης T(m) = 4m 1 είναι στην καλύτερη περίπτωση προσεγγίσεις της -9-

10 αλήθειας. Θα ήταν πιο βολικό να περιγράψουμε το T(m) ως «κάποια σταθερά επί το m, συν ή πλην μια άλλη σταθερά» η ακόμα και ως «το πολύ ανάλογο του m». Ο συμβολισμός Ο(m) μας επιτρέπει να διατυπώνουμε αυτές τις προτάσεις χωρίς να εμπλεκόμαστε με σταθερές που δεν είναι γνωστοποιήσιμες ή δεν έχουν νόημα. Από την άλλη μεριά, η αναπαράσταση του χρόνου εκτέλεσης του αποσπάσματος ως Ο(m) μας λέει όντως κάτι πολύ σημαντικό. Λέει ότι ο χρόνος για να εκτελεστεί το απόσπασμα αυτό με σταδιακά μεγαλύτερες συστοιχίες αυξάνει γραμμικά, όπως το υποθετικό Πρόγραμμα Α των Εικόνων 3.2 και 3.3 που εξετάσαμε στο τέλος της Ενότητας 3.3. Έτσι, ο αλγόριθμος που εκφράζεται από αυτό το απόσπασμα θα είναι ανώτερος από τους ανταγωνιστικούς αλγόριθμους των οποίων ο χρόνος εκτέλεσης αυξάνει ταχύτερα, όπως το υποθετικό πρόγραμμα Β που εξετάσαμε εκεί. Ορισμός του Ο Θα δώσουμε τώρα έναν τυπικό ορισμό της έννοιας ότι μια συνάρτηση είναι Ο μιας άλλης. Έστω ότι Τ(n) είναι μια συνάρτηση η οποία τυπικά είναι ο χρόνος εκτέλεσης κάποιου προγράμματος, που μετριέται ως συνάρτηση του μεγέθους n της εισόδου. Όπως αρμόζει σε μια συνάρτηση που μετρά τον χρόνο εκτέλεσης ενός προγράμματος, θα υποθέσουμε ότι 1. Το όρισμα n περιορίζεται να είναι ένας μη αρνητικός ακέραιος, και 2. Η τιμή Τ(n) είναι μη αρνητική για όλα τα ορίσματα n. Έστω f (n) μια συνάρτηση ορισμένη στους μη αρνητικούς ακεραίους n. Λέμε ότι «η T(n) είναι O(f (n))» αν η Τ(n) είναι το πολύ μια σταθερά επί την f (n), εκτός ενδεχομένως για μερικές μικρές τιμές του n. Τυπικά, λέμε ότι η T(n) είναι Ο(f (n)) αν υπάρχει ακέραιος n 0 και σταθερά c > 0 τέτοια, ώστε για όλους τους ακεραίους n > n 0, να είναι T(n) c f (n). Ενδείξεις Καλούμε το ζεύγος n 0 και c ενδείξεις του γεγονότος ότι η T(n) είναι O(f (n)). Οι ενδείξεις «βεβαιώνουν» τη σχέση Ο των T(n) και f (n) σε μία μορφή απόδειξης που θα παρουσιάσουμε στη συνέχεια. Απόδειξη σχέσεων Ο Μπορούμε να εφαρμόσουμε τον ορισμό του Ο για να αποδείξουμε ότι η T(n) είναι O(f (n)) για συγκεκριμένες συναρτήσεις T και f. Το κάνουμε επιδεικνύοντας μια συγκεκριμένη επιλογή των ενδείξεων n 0 και c και μετά αποδεικνύοντας ότι T(n) cf (n). Στην απόδειξη πρέπει να υποθέσουμε μόνο ότι το n είναι ένας μη αρνητικός ακέραιος μεγαλύτερος ή ίσος του επιλεγμένου n 0. Συνήθως η απόδειξη εμπλέκει άλγεβρα και χειρισμό ανισοτήτων. Παράδειγμα 3.2. Ας υποθέσουμε ότι έχουμε ένα πρόγραμμα του οποίου ο χρόνος εκτέλεσης είναι T(0) = 1, T(1) = 4, T(2) = 9 και γενικώς T(n) = (n + 1) 2. Μπορούμε να πούμε ότι η T(n) είναι O(n 2 ), ή ότι η T(n) είναι τετραγωνική, επειδή μπορούμε να επιλέξουμε τις ενδείξεις n 0 = 1 και c = 4. Πρέπει τότε να αποδείξουμε ότι (n + 1) 2 4n 2, με την προϋπόθεση ότι n 1. Στην απόδειξη αναπτύσσουμε το (n + 1) 2 σε n 2 + 2n + 1. Καθώς n 1, είναι γνωστό ότι n n 2 και 1 n 2. Έτσι n 2 + 2n + 1 n 2 + 2n 2 + n 2 = 4n 2-10-

11 Πρότυπο αποδείξεων με Ο Να θυμόμαστε: όλες οι αποδείξεις με Ο ακολουθούν ουσιαστικά την ίδια μορφή. Μόνο ο αλγεβρικός χειρισμός διαφέρει. Πρέπει να κάνουμε μόνο δύο πράγματα για να αποδείξουμε ότι η T(n) είναι O(f (n)). 1. Διατυπώνουμε τις ενδείξεις n 0 και c. Αυτές οι ενδείξεις πρέπει να είναι συγκεκριμένες σταθερές, π.χ. n 0 = 47 και c = Επίσης, το n 0 πρέπει να είναι ένας μη αρνητικός ακέραιος και το c πρέπει να είναι ένας θετικός πραγματικός αριθμός. 2. Με κατάλληλο αλγεβρικό χειρισμό, δείχνουμε ότι αν n n 0 τότε T(n) cf (n), για τις συγκεκριμένες ενδείξεις n 0 και c που έχουμε επιλέξει. Εναλλακτικά θα μπορούσαμε να επιλέξουμε τις ενδείξεις n 0 = 3 και c = 2, επειδή, όπως ο α- ναγνώστης μπορεί να ελέγξει, (n + 1) 2 2n 2, για κάθε n 3. Όμως, δεν μπορούμε να επιλέξουμε n 0 = 0 με οποιοδήποτε c, επειδή με n = 0, θα είχαμε να δείξουμε ότι (0 + 1) 2 c0 2, δηλαδή ότι το 1 είναι μικρότερο ή ίσο του c επί το 0. Δεδομένου ότι c 0 = 0 ανεξαρτήτως του c που επιλέγουμε και 1 0 ψευδής, είμαστε καταδικασμένοι εάν επιλέξουμε n 0 = 0. Αυτό δεν έχει σημασία, ωστόσο, επειδή προκειμένου να δείξουμε ότι (n + 1) 2 είναι Ο(n 2 ), έπρεπε μόνο να βρούμε μια επιλογή των ενδείξεων n 0 και c που να λειτουργεί. Μπορεί να φαίνεται περίεργο ότι παρόλο που το (n + 1) 2 είναι μεγαλύτερο του n 2, μπορούμε ακόμα να πούμε ότι το (n + 1) 2 είναι Ο(n 2 ). Πράγματι, μπορούμε επίσης να πούμε ότι το (n + 1) 2 είναι Ο μιας συνάρτησης του n 2, για παράδειγμα, Ο(n 2 /100). Για να δούμε γιατί, επιλέγουμε τις ενδείξεις n 0 = 1 και c = 400. Τότε αν n 1, είναι γνωστό ότι (n + 1) 2 400(n 2 /100) = 4n 2 με τον ίδιο συλλογισμό που χρησιμοποιήσαμε στο Παράδειγμα 3.2. Οι γενικές αρχές που υ- δηλώνονται σε αυτές τις παρατηρήσεις είναι ότι 1. Οι σταθεροί παράγοντες δεν έχουν σημασία. Για μια θετική σταθερά d και μια συνάρτηση T(n), η T(n) είναι O(dT(n)), ανεξαρτήτως από το εάν το d είναι ένας μεγάλος αριθμός ή ένα πολύ μικρό κλάσμα, εφόσον d > 0. Για να δούμε γιατί, επιλέγουμε τις ενδείξεις n 0 = 0 και c = 1/d. (7) Τότε T(n) c(dt(n)), αφού cd = 1. Παρόμοια, αν ξέρουμε ότι η T(n) είναι O(f (n)), τότε ξέρουμε επίσης ότι η T(n) είναι O(df (n)), για οποιοδήποτε d > 0, ακόμη και για ένα πολύ μικρό d. Ο λόγος είναι ότι ξέρουμε πως T(n) c 1 f (n) για κάποια σταθερά c 1 και κάθε n n 0. Αν επιλέξουμε c = c 1 /d, μπορούμε να δούμε ότι T(n) c(df (n)), για n n Οι χαμηλής τάξης όροι δεν έχουν σημασία. Ας υποθέσουμε ότι T(n) είναι ένα πολυώνυμο της μορφής k k 1 2 an k + ak 1n + + an 2 + an 1 + a0 όπου ο μεγιστοβάθμιος συντελεστής, a k, είναι θετικός. Τότε μπορούμε να διαγράψουμε όλους τους όρους εκτός από τον πρώτο (ο όρος με τον υψηλότερο εκθέτη, k) και, με βάση τον κανόνα (1), να αγνοήσουμε την σταθερά a k αντικαθιστώντας την με το 1. Δηλαδή, 7 Να σημειωθεί ότι αν και μας ζητείται να επιλέγουμε σταθερές ως ενδείξεις και όχι συναρτήσεις, δεν υπάρχει κάποιο λάθος με την επιλογή c = 1/d, επειδή το d είναι μια σταθερά. -11-

12 Εσφαλμένα επιχειρήματα για το Ο Ο ορισμός του Ο είναι «πονηρός», ως προς το ότι απαιτεί από μας, αφού εξετάσουμε τις T(n) και f (n), να επιλέξουμε τις ενδείξεις n 0 και c μια για πάντα, και μετά να δείξουμε ότι T(n) cf(n) για κάθε n n 0. Δεν επιτρέπεται να επιλέγουμε το c και/ή το n 0 εκ νέου για κάθε τιμή του n. Παραδείγματος χάρη, βλέπει κανείς περιστασιακά την εξής εσφαλμένη «απόδειξη» ότι n 2 είναι O(n). «Επιλέγουμε n 0 = 0, και για κάθε n, επιλέγουμε c = n. Τότε n 2 cn». Αυτό το επιχείρημα δεν είναι έγκυρο, επειδή μας ζητείται να επιλέξουμε το c μια για πάντα, χωρίς να γνωρίζουμε το n. μπορούμε να καταλήξουμε ότι το T(n) είναι Ο(n k ). Στην απόδειξη, έστω n 0 = 1 και έστω c το άθροισμα όλων των θετικών συντελεστών μεταξύ των a i, 0 i k. Αν ένας συντελεστής a j είναι 0 ή αρνητικός, τότε σίγουρα είναι a j n j 0. Αν το a j είναι θετικό, τότε a j n j a j n k, για κάθε j < k, εφόσον n 1. Έτσι, το T(n) δεν είναι μεγαλύτερο από το n k επί το ά- θροισμα των θετικών συντελεστών, ή το cn k. Παράδειγμα 3.3. Σαν παράδειγμα του κανόνα (1) («Οι σταθερές δεν έχουν σημασία»), μπορούμε να δούμε ότι το 2n 3 είναι O(0.001n 3 ). Έστω n 0 = 0 και c = 2/.001 = Τότε προφανώς 2n (.001n 3 ) = 2n 3, για κάθε n > 0. Σαν παράδειγμα του κανόνα (2) («οι χαμηλής τάξης όροι δεν έχουν σημασία»), θεωρούμε το πολυώνυμο T(n) = 3n n 4 4n 3 + n + 1 Ο υψηλότερης τάξης όρος είναι n 5 και ισχυριζόμαστε ότι το T(n) είναι O(n 5 ). Για να ελέγξουμε τον ισχυρισμό, έστω n 0 = 1 και έστω c το άθροισμα των θετικών συντελεστών. Οι όροι με θετικούς συντελεστές είναι εκείνοι με εκθέτες 5, 4, 1 και 0, των οποίων οι συντελεστές είναι 3, 10, 1 και 1, αντίστοιχα. Έτσι, έστω c = 15. Ισχυριζόμαστε ότι για n 1, 3n n 4 4n 3 + n + 1 3n n 5 + n 5 + n 5 = 15n 5 (3.1) Ρυθμός αύξησης Μπορούμε να ελέγξουμε ότι η ανισότητα (3.1) ισχύει αντιστοιχίζοντας τους θετικούς όρους δηλαδή, 3n 5 3n 5, 10n 4 10n 5, n n 5 και 1 n 5.. Επίσης, ο αρνητικός όρος στο πρώτο μέλος της (3.1) μπορεί να αγνοηθεί, αφού 4n 3 0. Έτσι, το πρώτο μέλος της (3.1), που είναι το T(n), είναι μικρότερο ή ίσο του δεύτερου μέλους, που είναι 15n 5, ή cn 5. Μπορούμε να καταλήξουμε στο συμπέρασμα ότι το T(n) είναι O(n 5 ). Στην πραγματικότητα, η αρχή ότι οι χαμηλής τάξης όροι μπορούν να διαγραφούν δεν ε- φαρμόζεται μόνο στα πολυώνυμα, αλλά σε οποιοδήποτε άθροισμα εκφράσεων. Δηλαδή, αν ο λόγος h(n)/g(n) τείνει στο 0 όταν το n τείνει στο άπειρο, τότε η h(n) «αυξάνει πιο αργά» από την g(n), ή «έχει έναν χαμηλότερο ρυθμό αύξησης» από την g(n), και μπορούμε να αγνοήσουμε την h(n). Δηλαδή το g(n) + h(n) είναι O(g(n)). Παραδείγματος χάρη, έστω T(n) = 2 n + n 3. Είναι γνωστό ότι κάθε πολυώνυμο, όπως το n 3, αυξάνει πιο αργά από κάθε εκθετικό, όπως το 2 n. Αφού το n 3 /2 n προσεγγίζει το 0 καθώς το n αυξάνει, μπορούμε να απαλείψουμε τον χαμηλής τάξης όρο και να καταλήξουμε ότι η T(n) είναι O(2 n ). -12-

13 Για να αποδείξουμε τυπικά ότι 2 n + n 3 είναι Ο(2 n ), έστω n 0 = 10 και c = 2. Πρέπει να δείξουμε ότι για n 10, έχουμε 2 n + n n Αν αφαιρέσουμε το 2 n και από τα δύο μέλη, βλέπουμε ότι αρκεί να δείξουμε ότι για n > 10, ισχύει n 3 2 n. Για n = 10 έχουμε 2 10 = 1024 και 10 3 = 1000, κι έτσι n 3 2 n για n = 10. Κάθε φορά προσθέτουμε 1 στο n, το 2 n διπλασιάζεται, ενώ το n 3 πολλαπλασιάζεται με μια ποσότητα (n+1) 3 /n 3 που είναι μικρότερη του 2 όταν n 10. Κατά συνέπεια, καθώς το n αυξάνει πέρα από το 10, το n 3 γίνεται σταδιακά μικρότερο του 2 n. Συμπεραίνουμε λοιπόν ότι n 3 2 n για n 10, άρα και ότι το 2 n + n 3 είναι O(2 n ). Αποδείξεις ότι μια σχέση Ο δεν ισχύει Αν μια σχέση με Ο ισχύει μεταξύ δύο συναρτήσεων, τότε μπορούμε να την αποδείξουμε βρίσκοντας ενδείξεις. Όμως, τι γίνεται αν κάποια συνάρτηση Τ(n) δεν είναι Ο κάποιας άλλης συνάρτησης f (n); Μπορούμε ποτέ να ελπίζουμε ότι θα είμαστε σίγουροι πως δεν υπάρχει μια τέτοια σχέση Ο; Η απάντηση είναι ότι αρκετά συχνά μπορούμε να αποδεικνύουμε ότι μια συγκεκριμένη συνάρτηση T(n) δεν είναι O(f (n)). Η μέθοδος απόδειξης είναι να υποθέσουμε ότι υπάρχουν ενδείξεις n 0 και c και να καταλήξουμε σε άτοπο. Το ακόλουθο είναι ένα παράδειγμα μιας τέτοιας απόδειξης. Παράδειγμα 3.4. Στο πλαίσιο «Εσφαλμένα επιχειρήματα για το Ο», ισχυριστήκαμε ότι το n 2 δεν είναι Ο(n). Μπορούμε να δείξουμε τον ισχυρισμό αυτόν ως εξής. Υποθέτουμε ότι είναι. Τότε θα υπάρχουν ενδείξεις n 0 και c τέτοιες, ώστε n 2 cn για κάθε n n 0. Αλλά αν επιλέξουμε n 1 ίσο με το μεγαλύτερο των 2c και n 0, τότε η ανισότητα (n 1 ) 2 cn 1 (3.2) πρέπει να ισχύει (γιατί n 1 n 0 και η n 2 cn υποτίθεται ότι ισχύει για κάθε n n 0 ). Αν διαιρέσουμε και τα δύο μέλη της (3.2) με n 1, έχουμε n 1 c. Όμως, επιλέγουμε επίσης το n 1 να είναι τουλάχιστον 2c. Αφού η ένδειξη c πρέπει να είναι θετικός αριθμός, το n 1 δεν μπορεί να είναι ταυτόχρονα μικρότερο του c και μεγαλύτερο του 2c. Άρα, οι ενδείξεις n 0 και c που θα μας έδειχναν ότι το n 2 είναι Ο(n) δεν υπάρχουν, οπότε καταλήγουμε ότι το n 2 δεν είναι O(n). ΑΣΚΗΣΕΙΣ 3.4.1: Θεωρήστε τις τέσσερις συναρτήσεις f 1 : n 2 f 2 : n 3 f 3 : n 2 αν n περιττός, και n 3 αν n άρτιος f 4 : n 2 αν n πρώτος, και n 3 αν n σύνθετος Για κάθε i και j ίσα με 1, 2, 3, 4, προσδιορίστε εάν η f i (n) είναι O(f j (n)). Δώστε τιμές n 0 και c που αποδεικνύουν τη σχέση Ο, ή υποθέστε ότι υπάρχουν τέτοιες τιμές n 0 και c και έπειτα καταλήξτε σε άτοπο για να αποδείξετε ότι η f i (n) δεν είναι O(f j (n)). Υπόδειξη: υπενθυμίζουμε ότι όλοι οι πρώτοι, εκτός του 2, είναι περιττοί. Υπενθυμίζουμε επίσης ότι υπάρχει ένα άπειρο πλή- -13-

14 Πρότυπο απόδειξης του ότι μια σχέση Ο είναι ψευδής Τα ακόλουθα είναι τα κύρια σημεία μιας τυπικής απόδειξης του ότι μια συνάρτηση T(n) δεν είναι O(f (n)). Το Παράδειγμα 3.4 επεξηγεί μια τέτοια απόδειξη. 1. Αρχίζουμε υποθέτοντας ότι υπάρχουν ενδείξεις n 0 και c τέτοιες, ώστε για κάθε n n 0, έ- χουμε f (n) cg(n). Εδώ, τα n 0 και c είναι σύμβολα στη θέση αγνώστων ενδείξεων. 2. Ορίζουμε έναν συγκεκριμένο ακέραιο n 1, που εξαρτάται από τα n 0 και c (παραδείγματος χάρη, στο Παράδειγμα 3.4 έχουμε επιλέξει n 1 = max(n 0, 2c)). Αυτό το n 1 θα είναι η τιμή του n για την οποία δείχνουμε ότι η Τ(n 1 ) cf (n 1 ) είναι ψευδής. 3. Δείχνουμε ότι για το επιλεγμένο n 1 έχουμε n 1 n 0. Αυτό το τμήμα μπορεί να είναι πολύ εύκολο, διότι μπορούμε να επιλέξουμε το n 1 να είναι τουλάχιστο το n 0 στο βήμα (2). 4. Ισχυριζόμαστε ότι επειδή n 1 n 0, πρέπει να έχουμε Τ(n 1 ) cf (n 1 ). 5. Καταλήγουμε σε άτοπο δείχνοντας ότι για το επιλεγμένο n 1 έχουμε T(n 1 ) > cf (n 1 ). Η επιλογή του n 1 συναρτήσει του c μπορεί να κάνει αυτό το τμήμα εύκολο, όπως έγινε στο Παράδειγμα 3.4. θος περιττών και ένα άπειρο πλήθος σύνθετων αριθμών (όχι πρώτοι) : Παρακάτω είναι μερικές σχέσεις Ο. Για κάθε μία, δώστε ενδείξεις n 0 και c που μπορούν να χρησιμοποιηθούν για την απόδειξη της σχέσης. Επιλέξτε τις ενδείξεις να είναι οι ελάχιστες, υπό την έννοια ότι n 0 1 και c δεν είναι ενδείξεις και αν d < c, τότε n 0 και d δεν είναι ενδείξεις. a) n 2 είναι Ο(.001n 3 ) b) 25n 4 19n n 2 106n + 77 είναι O(n 4 ) c) 2 n+10 είναι O(2 n ) d) n 10 είναι O(3 n ) e)* log 2 n είναι O( n ) *: Αποδείξτε ότι αν f (n) g(n) για κάθε n, τότε f (n) + g(n) είναι O(g(n)) **: Υποθέτουμε ότι η f (n) είναι O(g(n)) και η g(n) είναι O(f (n)). Τι μπορείτε να πείτε για τις f (n) και g(n); Είναι αναγκαία αληθές ότι f (n) = g(n); Υπάρχει αναγκαία το όριο του f(n)/g(n) καθώς το n τείνει στο άπειρο; 3.5 Απλοποίηση εκφράσεων Ο Όπως είδαμε στην προηγούμενη παράγραφο, είναι δυνατό να απλοποιούμε εκφράσεις Ο απαλείφοντας σταθερούς παράγοντες και όρους χαμηλής τάξης. Θα δούμε πόσο σημαντικό είναι να κάνουμε τέτοιου είδους απλουστεύσεις όταν αναλύουμε προγράμματα. Είναι σύνηθες για τον χρόνο εκτέλεσης ενός προγράμματος να οφείλεται σε πολλές διαφορετικές εντολές ή α- ποσπάσματα του προγράμματος, αλλά είναι επίσης φυσιολογικό για μερικά από τα τμήματα αυτά να αντιπροσωπεύουν το μεγαλύτερο ποσοστό του χρόνου εκτέλεσης (σύμφωνα με τον κανόνα «90-10»). Απαλείφοντας όρους χαμηλής τάξης και συνδυάζοντας ίσους ή σχεδόν ίσους όρους μπορούμε συχνά να απλοποιούμε σημαντικά τις εκφράσεις για τον χρόνο εκτέλεσης. -14-

15 Πολυωνυμικές και εκθετικές εκφράσεις Ο Ο βαθμός ενός πολυωνύμου είναι ο μεγαλύτερος εκθέτης που βρίσκεται μεταξύ των όρων του. Παραδείγματος χάρη, ο βαθμός του πολυωνύμου Τ(n) που αναφέρεται στα Παραδείγματα 3.3 και 3.5 είναι 5, επειδή το 3n 5 είναι ο υψηλότερης τάξης όρος. Από τις δύο αρχές που έχουμε διατυπώσει (σταθεροί παράγοντες δεν έχουν σημασία, και χαμηλής τάξης όροι δεν έχουν σημασία) και τον μεταβατικό νόμο για τις εκφράσεις Ο, γνωρίζουμε τα εξής: 1. Αν p(n) και q(n) είναι πολυώνυμα και ο βαθμός του q(n) είναι ίσος ή μεγαλύτερος του βαθμού του p(n), τότε το p(n) είναι O(q(n)). 2. Αν ο βαθμός του q(n) είναι μικρότερος από τον βαθμό του p(n), τότε το p(n) δεν είναι O(q(n)). Εκθετικό 3. Εκθετικά είναι εκφράσεις της μορφής a n για a > 1. Κάθε εκθετικό αυξάνει πιο γρήγορα από κάθε πολυώνυμο. Δηλαδή, μπορούμε να δείξουμε για ένα πολυώνυμο p(n), ότι p(n) είναι Ο(a n ). Παραδείγματος χάρη, το n 5 είναι Ο((1.01) n ). 4. Αντιστρόφως, κανένα εκθετικό a n, για a > 1, δεν είναι Ο(p(n)) για οποιοδήποτε πολυώνυμο p(n). Ο μεταβατικός νόμος για εκφράσεις Ο Κατ αρχήν, θα θεωρήσουμε έναν χρήσιμο κανόνα για τις εκφράσεις Ο. Μία σχέση όπως η λέγεται ότι είναι μεταβατική, επειδή υπακούει στον νόμο «αν Α Β και Β C τότε, Α C». Παραδείγματος χάρη, αφού 3 5 και 5 10, μπορούμε να είμαστε σίγουροι ότι Η σχέση «είναι Ο της» είναι άλλο ένα παράδειγμα μιας μεταβατικής σχέσης. Δηλαδή, αν η f (n) είναι O(g(n)) και η g(n) είναι Ο(h(n)), έπεται ότι η f (n) είναι Ο(h(n)). Για να δούμε γιατί, αρχικά υποθέτουμε ότι η f (n) είναι Ο(g(n)). Τότε υπάρχουν ενδείξεις n 1 και c 1 τέτοιες, ώ- στε f(n) c 1 g(n) για κάθε n n 1. Παρόμοια, αν η g(n) είναι O(h(n)), τότε υπάρχουν ενδείξεις n 2 και c 2 τέτοιες, ώστε g(n) c 2 h(n) για κάθε n n 2. Έστω ότι n 0 είναι το μεγαλύτερο των n 1 και n 2, και έστω c = c 1 c 2. Ισχυριζόμαστε ότι τα n 0 και c είναι ενδείξεις του γεγονότος ότι η f (n) είναι Ο(h(n)). Πράγματι, έστω ότι n n 0. Αφού n 0 = max(n 1, n 2 ), γνωρίζουμε ότι n n 2. Επομένως, f (n) c 1 g(n) και g(n) c 2 h(n). Τώρα αντικαθιστούμε την g(n) με c 2 h(n) στην ανισότητα f (n) cg(n), για να αποδείξουμε ότι f (n) c 1 c 2 h(n). Η ανισότητα αυτή δείχνει ότι η f (n) είναι O(h(n)). Παράδειγμα 3.5. Γνωρίζουμε από το Παράδειγμα 3.3 ότι η T(n) = 3n n 4 + n + 1 είναι Ο(n 5 ). Επίσης γνωρίζουμε από τον κανόνα ότι «οι σταθεροί παράγοντες δεν έχουν σημασία» ότι το n 5 είναι Ο(.01n 5 ). Από τον μεταβατικό νόμο για το O, γνωρίζουμε ότι η Τ(n) είναι Ο(.01n 5 ). Περιγραφή του χρόνου εκτέλεσης ενός προγράμματος Ορίσαμε τον χρόνο εκτέλεσης T(n) ενός προγράμματος ως τον μέγιστο αριθμό των μονάδων χρόνου που απαιτούνται για μια οποιαδήποτε είσοδο μεγέθους n. Επίσης είπαμε ότι ο προσδιορισμός ενός ακριβούς τύπου για την Τ(n) είναι ένα δύσκολο, αν όχι αδύνατο, έργο. Συχνά -15-

16 μπορούμε να απλοποιήσουμε τα πράγματα σημαντικά χρησιμοποιώντας μια έκφραση Ο(f (n)) ως ένα άνω φράγμα της Τ(n). Παραδείγματος χάρη, ένα άνω φράγμα του χρόνου εκτέλεσης Τ(n) του SelectionSort (ταξινόμηση με επιλογή) είναι το an 2, για κάποια σταθερά a και οποιοδήποτε n 1 θα κάνουμε μια επίδειξη του γεγονότος στην Ενότητα 3.6. Τότε μπορούμε να πούμε ότι ο χρόνος εκτέλεσης του SelectionSort είναι O(n 2 ). Αυτή η πρόταση είναι διαισθητικά η πιο χρήσιμη για να την κάνουμε, επειδή το n 2 είναι μια πολύ απλή συνάρτηση, και ισχυρότερες προτάσεις για άλλες απλές συναρτήσεις, όπως «η T(n) είναι O(n)», είναι ψευδείς. Ωστόσο, επειδή από τη φύση του συμβολισμού Ο μπορούμε επίσης να δηλώσουμε ότι ο χρόνος εκτέλεσης T(n) είναι O(.01n 2 ) ή Ο(7n 2 4n + 26), ή στην πραγματικότητα, Ο ενός δευτεροβάθμιου πολυωνύμου. Ο λόγος είναι ότι το n 2 είναι Ο ενός δευτεροβάθμιου πολυωνύμου, και έτσι ο μεταβατικός νόμος συν το γεγονός ότι T(n) είναι Ο(n 2 ) μας λέει ότι η Τ(n) είναι Ο ενός οποιουδήποτε δευτεροβάθμιου πολυωνύμου. Χειρότερα, το n 2 είναι Ο ενός οποιουδήποτε πολυωνύμου τρίτου βαθμού ή μεγαλύτερου, ή ενός οποιουδήποτε εκθετικού. Έτσι πάλι από τη μεταβατικότητα, το T(n) είναι Ο(n 3 ), O(2 n + n 4 ) κ.ο.κ. Όμως, θα εξηγήσουμε γιατί το O(n 2 ) είναι ο προτιμότερος τρόπος να εκφράσουμε τον χρόνο εκτέλεσης του SelectionSort. Αυστηρότητα Κατ αρχήν, γενικά θέλουμε το «αυστηρότερο» Ο άνω φράγμα που μπορούμε να αποδείξουμε. Δηλαδή, αν η T(n) είναι Ο(n 2 ), θέλουμε να το διατυπώσουμε έτσι, αντί να κάνουμε την τεχνικά αληθή αλλά ασθενέστερη πρόταση ότι η T(n) είναι Ο(n 3 ). Από την άλλη μεριά αυτός ο τρόπος μοιάζει τρελός, επειδή αν μας αρέσει το Ο(n 2 ) σαν έκφραση του χρόνου εκτέλεσης, θα έπρεπε να μας αρέσει το Ο(0.5n 2 ) ακόμα περισσότερο, επειδή είναι «αυστηρότερο», και θα έπρεπε να μας αρέσει ακόμα περισσότερο το Ο(.01n 2 ), κ.ο.κ.. Όμως, αφού οι σταθεροί παράγοντες δεν έχουν σημασία στις εκφράσεις Ο, δεν υπάρχει κανένας λόγος να προσπαθούμε να κάνουμε την εκτίμηση του χρόνου εκτέλεσης «αυστηρότερη» σμικρύνοντας τον σταθερό παράγοντα. Έτσι, οποτεδήποτε είναι δυνατόν, προσπαθούμε να χρησιμοποιούμε μια έκφραση Ο η οποία έχει έναν σταθερό παράγοντα 1. Η Εικ. 3.4 παρουσιάζει τους πλέον συνήθεις χρόνους εκτέλεσης για προγράμματα και τα άτυπα ονόματά τους. Να σημειωθεί ότι το Ο(1) είναι μια ιδιωματική συντομογραφία για το «κάποια σταθερά» και θα χρησιμοποιούμε το Ο(1) επανειλημμένα για τον σκοπό αυτό. Ο Ο(1) Ο(log n) Ο(n) Ο(n log n) O(n 2 ) Ο(n 3 ) Ο(2 n ) ΑΤΥΠΟ ΟΝΟΜΑ σταθερός λογαριθμικός γραμμικός n log n τετραγωνικός κυβικός εκθετικός Εικ Άτυπα ονόματα για μερικούς συνήθεις χρόνους εκτέλεσης σε συμβολισμό Ο. Αυστηρό φράγμα Ακριβέστερα, θα λέμε ότι η f (n) είναι ένα αυστηρό Ο φράγμα της Τ(n) αν -16-

17 1. Η Τ(n) είναι O(f (n)), και 2. Αν η T(n) είναι Ο(g(n)), τότε είναι επίσης αληθές ότι η f (n) είναι O(g(n)). Άτυπα, δεν μπορούμε να βρούμε μια συνάρτηση που αυξάνει τουλάχιστο τόσο γρήγορα όσο η Τ(n) αλλά αυξάνει πιο αργά απ ότι η f (n). Παράδειγμα 3.6. Έστω Τ(n) = 2n 2 + 3n και f (n) = n 2. Ισχυριζόμαστε ότι η f (n) είναι ένα αυστηρό φράγμα της T(n). Για να δούμε γιατί, υποθέτουμε ότι η Τ(n) είναι Ο(g(n)). Τότε υ- πάρχουν σταθερές c και n 0 τέτοιες, ώστε για κάθε n n 0 να έχουμε T(n) = 2n 2 + 3n cg(n). Τότε g(n) (2/c)n 2 για n n 0. Αφού η f (n) είναι n 2, έχουμε f (n) (c/2)g(n) για n n 0. Άρα, η f (n) είναι O(g(n)). Από την άλλη μεριά, η f (n) = n 3 δεν είναι ένα αυστηρό Ο φράγμα της Τ(n). Τώρα μπορούμε να πάρουμε g(n) = n 2. Έχουμε δει ότι η T(n) είναι Ο(g(n)), αλλά δεν μπορούμε να δείξουμε ότι η f (n) είναι O(g(n)), αφού το n 3 δεν είναι Ο(n 2 ). Έτσι το n 3 δεν είναι ένα αυστηρό Ο φράγμα της T(n). Απλότητα Απλή συνάρτηση Ο άλλος σκοπός στην επιλογή ενός Ο φράγματος είναι η απλότητα στην έκφραση της συνάρτησης. Σε αντίθεση με την αυστηρότητα, η απλότητα μπορεί μερικές φορές να είναι θέμα γούστου. Όπως και να έχει, θα θεωρούμε γενικά μια συνάρτηση f (n) ως απλή αν 1. Αποτελείται από έναν μόνο όρο και 2. Ο συντελεστής αυτού του όρου είναι 1. Παράδειγμα 3.7. Η συνάρτηση n 2 είναι απλή η 2n 2 δεν είναι απλή γιατί ο συντελεστής δεν είναι 1, και η n 2 + n δεν είναι απλή γιατί υπάρχουν δύο όροι. Η αυστηρότητα και η απλότητα μπορεί να είναι αντικρουόμενες Υπάρχουν μερικές περιπτώσεις ωστόσο, όπου η αυστηρότητα ενός Ο άνω φράγματος και η απλότητα του φράγματος είναι αντικρουόμενοι σκοποί. Αυτό που παραθέτουμε παρακάτω είναι ένα παράδειγμα όπου το απλό φράγμα δεν μας λέει όλη την ιστορία. Ευτυχώς τέτοιες περιπτώσεις είναι σπάνιες στην πράξη. int PowersOfTwo (int n) { int i ; (1) i = 0 ; (2) while (n%2 == 0) { (3) n = n/2 ; (4) i++; } (5) return i ; } Εικ Πόσες φορές εμφανίζεται το 2 ως παράγοντας ενός θετικού ακεραίου n. Παράδειγμα 3.8. Θεωρούμε τη συνάρτηση PowerOfTwo στην Εικ. 3.5, η οποία δέχεται ένα θετικό όρισμα n και μετράει τις φορές που το 2 διαιρεί το n. Δηλαδή, ο έλεγχος στη γραμμή 2 διερευνά αν το n είναι άρτιος, και αν ναι, απαλείφει έναν παράγοντα 2 στη γραμμή 3-17-

18 Χρήση του συμβολισμού Ο σε μαθηματικές εκφράσεις Κυριολεκτικά, ο μόνος μαθηματικά σωστός τρόπος είναι να χρησιμοποιήσουμε μια έκφραση Ο μετά τη λέξη «είναι», όπως στο «2n 2 είναι O(n 3 )». Όμως, στο Παράδειγμα 3.8 και για στο υπόλοιπο του κεφαλαίου, θα αποκτήσουμε μια ελευθερία και θα χρησιμοποιούμε εκφράσεις Ο σαν τελεστέους της πρόσθεσης και άλλων αριθμητικών πράξεων, όπως στην O(n) + O(n 2 ). Θα πρέπει να ερμηνεύουμε μια έκφραση Ο που χρησιμοποιούμε με αυτό τον τρόπο σαν να σημαίνει «κάποια συνάρτηση που είναι Ο τής». Παραδείγματος χάρη, η O(n) + O(n 2 ) σημαίνει «το άθροισμα κάποιας γραμμικής συνάρτησης και κάποιας τετραγωνικής συνάρτησης». Επίσης, η O(n) + T(n) θα έπρεπε να ερμηνευτεί ως το άθροισμα κάποιας γραμμικής συνάρτησης και της συγκεκριμένης συνάρτησης Τ(n). του σώματος του βρόχου. Επίσης στον βρόχο αυξάνουμε το i, το οποίο μετράει το πλήθος των παραγόντων που έχουν απαλειφθεί από την αρχική τιμή του n. Έστω ότι το μέγεθος της εισόδου είναι η τιμή του ίδιου του n. Το σώμα του βρόχου while αποτελείται από δύο εντολές ανάθεσης της C, οι γραμμές 3 και 4, και έτσι μπορούμε να πούμε ότι ο χρόνος που εκτελούμε το σώμα μία φορά είναι Ο(1), δηλαδή, κάποια σταθερή ποσότητα χρόνου, ανεξάρτητη του n. Αν ο βρόχος εκτελείται m φορές, τότε ο συνολικός χρόνος που καταναλώνεται για τον βρόχο θα είναι Ο(m), ή κάποια ποσότητα χρόνου που είναι ανάλογη του m. Σε αυτή την ποσότητα πρέπει να προσθέσουμε Ο(1), ή κάποια σταθερά για τις μεμονωμένες εκτελέσεις των γραμμών 1 και 5, συν τον πρώτο έλεγχο της συνθήκης while ο οποίος δεν είναι τεχνικά μέρος μιας επανάληψης βρόχου. Έτσι ο χρόνος που καταναλώνεται από το πρόγραμμα είναι Ο(m) + O(1). Από τον κανόνα μας ότι οι όροι χαμηλής τάξης μπορούν να παραληφθούν, έπεται ότι ο χρόνος είναι O(m), εκτός αν m = 0, που στην περίπτωση αυτή είναι O(1). Θέτοντάς το διαφορετικά, ο χρόνος που καταναλώνεται για είσοδο n είναι ανάλογος του 1 συν το πλήθος των φορών που το 2 διαιρεί το n. Πόσες φορές το 2 διαιρεί το n ; Για κάθε περιττό n, η απάντηση είναι 0, έτσι και η συνάρτηση PowersOfTwo απαιτεί χρόνο Ο(1) για κάθε περιττό n. Όμως όταν το n είναι μια δύναμη του 2 δηλαδή, όταν n = 2 k για κάποιο k το 2 διαιρεί το n ακριβώς k φορές. Όταν n = 2 k, μπορούμε να λογαριθμίσουμε με βάση το 2 τα δύο μέλη και να συμπεράνουμε ότι log 2 n = k. Δηλαδή, το m είναι το πολύ λογαριθμικό ως προς n ή m = Ο(log n). (8) Εικ H συνάρτηση f (n) = m(n) + 1, όπου m(n) το πλήθος των φορών που το 2 διαιρεί το n. 8 Να σημειωθεί ότι όταν αναφερόμαστε για λογάριθμους σε μια έκφραση Ο, δεν χρειάζεται να καθορίζουμε τη βάση. Ο λόγος είναι ότι αν a και b είναι δύο βάσεις, τότε log a n = (log b n)(log a b). Αφού log a b είναι μια σταθερά, βλέπουμε ότι οι log a n και log b n διαφέρουν μόνο κατά έναν σταθερό παράγοντα. Έτσι, οι συναρτήσεις log x n ως προς διαφορετικές βάσεις x είναι η μία Ο της άλλης και μπορούμε, με τον μεταβατικό νόμο, να αντικαταστήσουμε σε μια έκφραση Ο οποιοδήποτε log a n με log b n, όπου b είναι μια βάση διαφορετική της a. -18-

19 Οι λογάριθμοι στους χρόνους εκτέλεσης Αν νομίζετε ότι οι λογάριθμοι είναι κάτι που έχει να κάνει με ολοκληρωτικό λογισμό (log e a = a 1 1 dx x ) μπορεί να εκπλαγείτε όταν θα τους βρείτε να εμφανίζονται σε αναλύσεις αλγορίθμων. Οι επιστήμονες των υπολογιστών γενικά θεωρούν ότι log n σημαίνει log 2 n, και όχι log e n ή log 10 n. Να σημειωθεί ότι log 2 n είναι το πλήθος των φορών που πρέπει να διαιρέσουμε το n με το 2 για να φτάσουμε μέχρι το 1, ή εναλλακτικά, το πλήθος των 2 που πρέπει να τα πολλαπλασιάσουμε μεταξύ τους για να φτάσουμε στο n. Μπορείτε εύκολα να ελέγξετε ότι η ισότητα n = 2 k είναι το ίδιο είναι σαν να λέμε log 2 n = k απλά λογαριθμίστε και τα δύο μέλη με βάση 2. Η συνάρτηση PowersOfTwo διαιρεί το n με το 2 όσες φορές μπορεί. Όταν το n είναι δύναμη του 2, τότε ο αριθμός των φορών που το n μπορεί να διαιρεθεί με το 2 είναι log 2 n. Οι λογάριθμοι ανακύπτουν αρκετά συχνά στην ανάλυση αλγορίθμων διαίρει και βασίλευε (π.χ. ταξινόμηση με συγχώνευση) που διαιρούν την είσοδό τους σε δύο ίσα ή σχεδόν ίσα μέρη σε κάθε στάδιο. Αν αρχίσουμε με μια είσοδο μεγέθους n, τότε το πλήθος των σταδίων στα οποία μπορούμε να διαιρούμε την είσοδο στη μέση μέχρι τα τμήματα να γίνουν μεγέθους 1 είναι log 2 n, ή αν το n δεν είναι δύναμη του 2, τότε είναι ο μικρότερος ακέραιος που δεν υπερβαίνει τον log 2 n. Μπορούμε επομένως να πούμε ότι ο χρόνος εκτέλεσης της PowersOfTwo είναι O(log n). Αυτό το φράγμα συμφωνεί με τον ορισμό της απλότητας που δώσαμε. Όμως, υπάρχει ένας άλλος πιο ακριβής τρόπος διατύπωσης ενός άνω φράγματος του χρόνου εκτέλεσης της PowersOfTwo, ο οποίος είναι να πούμε ότι είναι Ο της συνάρτησης f (n) = m(n) + 1, όπου m(n) είναι το πλήθος των φορών που το 2 διαιρεί το n. Αυτή η συνάρτηση δεν είναι και τόσο απλή, όπως δείχνει η Εικ Ταλαντώνεται τρελά αλλά ποτέ δεν πάει πάνω από το 1 + log 2 n. Αφού ο χρόνος εκτέλεσης της PowersOfTwo είναι O(f (n)), αλλά ο log n δεν είναι Ο(f (n)), ισχυριζόμαστε ότι ο log n δεν είναι ένα αυστηρό φράγμα του χρόνου εκτέλεσης. Από την άλλη μεριά, η f (n) είναι ένα αυστηρό φράγμα, αλλά δεν είναι απλή. Ο κανόνας του αθροίσματος Ας υποθέσουμε ότι ένα πρόγραμμα αποτελείται από δύο μέρη, το ένα απαιτεί χρόνο O(n 2 ) και το άλλο απαιτεί χρόνο O(n 3 ). Μπορούμε να «προσθέσουμε» αυτά τα δύο Ο φράγματα για να πάρουμε τον χρόνο εκτέλεσης ολόκληρου του προγράμματος. Σε πολλές περιπτώσεις, όπως αυτή, είναι δυνατό να «προσθέτουμε» εκφράσεις Ο κάνοντας χρήση του ακόλουθου κανόνα του αθροίσματος: Έστω ότι η T 1 (n) είναι γνωστό ότι είναι O(f 1 (n)), ενώ η T 2 (n) είναι γνωστό ότι είναι O(f 2 (n)). Επιπλέον, έστω ότι η f 2 δεν αυξάνει γρηγορότερα απ ότι η f 1 δηλαδή η f 2 (n) είναι Ο(f 1 (n)). Τότε μπορούμε να συμπεράνουμε ότι η T 1 (n) + T 2 (n) είναι O(f 1 (n)). Κατά την απόδειξη, γνωρίζουμε ότι υπάρχουν σταθερές n 1, n 2, n 3, c 1, c 2 και c 3 τέτοιες, ώστε 1. Αν n n 1, τότε T 1 (n) c 1 f 1 (n). 2. Αν n n 2, τότε Τ 2 (n) c 2 f 2 (n). 3. Αν n n 3, τότε f 2 (n) c 3 f 1 (n). -19-

20 Έστω n 0 το μεγαλύτερο από τα n 1, n 2 και n 3, έτσι ώστε οι (1), (2) και (3) να ισχύουν όταν n n 0. Έτσι, για n n 0 έχουμε T 1 (n) + T 2 (n) c 1 f 1 (n) + c 2 f 2 (n) Αν χρησιμοποιήσουμε την (3) για να δώσουμε ένα άνω φράγμα της f 2 (n), μπορούμε να α- γνοήσουμε την f 2 (n) εξ ολοκλήρου και να συμπεράνουμε ότι T 1 (n) + T 2 (n) c 1 f 1 (n) + c 2 c 3 f 1 (n) Επομένως, για κάθε n n 0 έχουμε T 1 (n) + T 2 (n) cf 1 (n) αν ορίσουμε το c να είναι c 1 + c 2 c 3. Αυτή η πρόταση είναι ακριβώς ό,τι χρειαζόμαστε για να συμπεράνουμε ότι η T 1 (n) + T 2 (n) είναι O(f 1 (n)). Παράδειγμα 3.9 Θεωρούμε το απόσπασμα προγράμματος στην Εικ Αυτό το πρόγραμμα μετατρέπει τον Α σε n n μοναδιαίο πίνακα. Οι γραμμές (2) μέχρι (4) τοποθετούν το 0 σε κάθε κελί της n n συστοιχίας, και μετά οι γραμμές (5) και (6) τοποθετούν το 1 σε όλες τις θέσεις της διαγωνίου από το Α[0][0] στο Α[n-1][n-1]. Το αποτέλεσμα είναι ο μοναδιαίος πίνακας Α με την ιδιότητα Α Μ = Μ Α = Μ για κάθε n n πίνακα Μ. (1) scanf("%d",&n); (2) for (i = 0; i < n; i++) (3) for (j = 0; j <n; j++) (4) A[i][j] = 0; (5) for (i = 0; i < n; i++) (6) A[i][i] = 1; Εικ Τμήμα προγράμματος για την μετατροπή του Α σε μοναδιαίο πίνακα. H γραμμή (1) που διαβάζει το n, απαιτεί χρόνο O(1), δηλαδή, κάποια σταθερή ποσότητα χρόνου, ανεξάρτητη από την τιμή n. H εντολή ανάθεσης στη γραμμή (6) απαιτεί επίσης χρόνο Ο(1) και διατρέχουμε τον βρόχο των γραμμών (5) και (6) ακριβώς n φορές, για ένα συνολικό χρόνο Ο(n) που καταναλώνεται στον βρόχο αυτό. Παρόμοια, η εντολή στη γραμμή (4) απαιτεί χρόνο Ο(1). Διατρέχουμε τον βρόχο των γραμμών (3) και (4) n φορές, απαιτώντας χρόνο Ο(n). Διατρέχουμε τον εξωτερικό βρόχο, γραμμές (2) έως (4), n φορές, απαιτώντας χρόνο Ο(n) ανά επανάληψη, για έναν συνολικό χρόνο Ο(n 2 ). Άρα, ο χρόνος που απαιτείται από το πρόγραμμα στην Εικ. 3.7 είναι Ο(1) + Ο(n 2 ) + O(n), για την εντολή (1), τον βρόχο των γραμμών (2) έως (4) και τον βρόχο των γραμμών (5) και (6), αντίστοιχα. Τυπικότερα, αν τότε T 1 (n) είναι ο χρόνος που απαιτείται από τη γραμμή (1). Τ 2 (n) είναι ο χρόνος που απαιτείται από τις γραμμές (2) έως (4), και Τ 3 (n) είναι ο χρόνος που απαιτείται από τις γραμμές (5) και (6), Τ 1 (n) είναι O(1), -20-

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

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

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

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr

I. ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ. math-gr I ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ i e ΜΕΡΟΣ Ι ΟΡΙΣΜΟΣ - ΒΑΣΙΚΕΣ ΠΡΑΞΕΙΣ Α Ορισμός Ο ορισμός του συνόλου των Μιγαδικών αριθμών (C) βασίζεται στις εξής παραδοχές: Υπάρχει ένας αριθμός i για τον οποίο ισχύει i Το σύνολο

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

Περιεχόμενα. Κεφάλαιο 3 Οι ιδιότητες των αριθμών... 37 3.1 Αριθμητικά σύνολα... 37 3.2 Ιδιότητες... 37 3.3 Περισσότερες ιδιότητες...

Περιεχόμενα. Κεφάλαιο 3 Οι ιδιότητες των αριθμών... 37 3.1 Αριθμητικά σύνολα... 37 3.2 Ιδιότητες... 37 3.3 Περισσότερες ιδιότητες... Περιεχόμενα Πρόλογος... 5 Κεφάλαιο Βασικές αριθμητικές πράξεις... 5. Τέσσερις πράξεις... 5. Σύστημα πραγματικών αριθμών... 5. Γραφική αναπαράσταση πραγματικών αριθμών... 6.4 Οι ιδιότητες της πρόσθεσης

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

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

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

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

5.1. Προσδοκώμενα αποτελέσματα

5.1. Προσδοκώμενα αποτελέσματα 5.1. Προσδοκώμενα αποτελέσματα Όταν θα έχεις ολοκληρώσει τη μελέτη αυτού του κεφαλαίου θα έχεις κατανοήσει τις τεχνικές ανάλυσης των αλγορίθμων, θα μπορείς να μετράς την επίδοση των αλγορίθμων με βάση

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

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

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

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

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Ανάλυση - Απόδοση Αλγορίθμων Έλεγχος Αλγορίθμων. Απόδοση Προγραμμάτων. Χωρική/Χρονική Πολυπλοκότητα. Ασυμπτωτικός Συμβολισμός. Παραδείγματα. Αλγόριθμοι: Βασικές Έννοιες

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική και τη συµµετρική ιδιότητα του Θ. Λύση Μεταβατική Ιδιότητα (ορισµός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)). Για

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

Μαθηματικά Γ Γυμνασίου

Μαθηματικά Γ Γυμνασίου Α λ γ ε β ρ ι κ έ ς π α ρ α σ τ ά σ ε ι ς 1.1 Πράξεις με πραγματικούς αριθμούς (επαναλήψεις συμπληρώσεις) A. Οι πραγματικοί αριθμοί και οι πράξεις τους Διδακτικοί στόχοι Θυμάμαι ποιοι αριθμοί λέγονται

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

Ε π ι μ έ λ ε ι α Κ Ο Λ Λ Α Σ Α Ν Τ Ω Ν Η Σ

Ε π ι μ έ λ ε ι α Κ Ο Λ Λ Α Σ Α Ν Τ Ω Ν Η Σ Ε π ι μ έ λ ε ι α Κ Ο Λ Λ Α Σ Α Ν Τ Ω Ν Η Σ 1 Συναρτήσεις Όταν αναφερόμαστε σε μια συνάρτηση, ουσιαστικά αναφερόμαστε σε μια σχέση ή εξάρτηση. Στα μαθηματικά που θα μας απασχολήσουν, με απλά λόγια, η σχέση

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

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

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 5η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Η Μέθοδος «Διαίρει & Βασίλευε» Η Μέθοδος

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

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

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

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

ΕΝΟΤΗΤΑ 2: Πραγματικοί Αριθμοί

ΕΝΟΤΗΤΑ 2: Πραγματικοί Αριθμοί Ενδεικτικός Προγραμματισμός ΕΝΟΤΗΤΑ 2: Πραγματικοί Αριθμοί 12 περίοδοι Δείκτες επιτυχίας: Ορίζουν την έννοια της νιοστής ρίζας ενός αριθμού α και αποδεικνύουν τις ιδιότητες ριζών, όταν ν N, ν 0, 1, α R

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

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής: Αυτό που πρέπει να θυμόμαστε, για να μη στεναχωριόμαστε, είναι πως τόσο στις εξισώσεις, όσο και στις ανισώσεις 1ου βαθμού, που θέλουμε να λύσουμε, ακολουθούμε ακριβώς τα ίδια βήματα! Εκεί που πρεπει να

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

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

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

ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ

ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ Βρέντζου Τίνα Φυσικός Μεταπτυχιακός τίτλος ΜEd: «Σπουδές στην εκπαίδευση» ΚΕΦΑΛΑΙΟ 1 Ο : Εξισώσεις - Ανισώσεις 1 1.1 Η ΕΝΝΟΙΑ ΤΗΣ ΜΕΤΑΒΛΗΤΗΣ ΑΛΓΕΒΡΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ ΟΡΙΣΜΟΙ Μεταβλητή

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

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών TINΑ ΒΡΕΝΤΖΟΥ www.ma8eno.gr www.ma8eno.gr Σελίδα 1 Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών Στους πραγματικούς αριθμούς ορίστηκαν οι

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

Συναρτήσεις Όρια Συνέχεια

Συναρτήσεις Όρια Συνέχεια Κωνσταντίνος Παπασταματίου Μαθηματικά Γ Λυκείου Κατεύθυνσης Συναρτήσεις Όρια Συνέχεια Συνοπτική Θεωρία Μεθοδολογίες Λυμένα Παραδείγματα Επιμέλεια: Μαθηματικός Φροντιστήριο Μ.Ε. «ΑΙΧΜΗ» Κ. Καρτάλη 8 (με

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

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού

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

Μαθηματικά: Αριθμητική και Άλγεβρα. Μάθημα 3 ο, Τμήμα Α. Τρόποι απόδειξης

Μαθηματικά: Αριθμητική και Άλγεβρα. Μάθημα 3 ο, Τμήμα Α. Τρόποι απόδειξης Μαθηματικά: Αριθμητική και Άλγεβρα Μάθημα 3 ο, Τμήμα Α Ο πυρήνας των μαθηματικών είναι οι τρόποι με τους οποίους μπορούμε να συλλογιζόμαστε στα μαθηματικά. Τρόποι απόδειξης Επαγωγικός συλλογισμός (inductive)

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

1.2 Εξισώσεις 1 ου Βαθμού

1.2 Εξισώσεις 1 ου Βαθμού 1.2 Εξισώσεις 1 ου Βαθμού Διδακτικοί Στόχοι: Θα μάθουμε: Να κατανοούμε την έννοια της εξίσωσης και τη σχετική ορολογία. Να επιλύουμε εξισώσεις πρώτου βαθμού με έναν άγνωστο. Να διακρίνουμε πότε μια εξίσωση

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

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων Με τον όρο μη γραμμικές εξισώσεις εννοούμε εξισώσεις της μορφής: f( ) 0 που προέρχονται από συναρτήσεις f () που είναι μη γραμμικές ως προς. Περιέχουν δηλαδή

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

ΜΑΘΗΜΑΤΙΚΑ Θετικής & Τεχνολογικής Κατεύθυνσης Β ΜΕΡΟΣ (ΑΝΑΛΥΣΗ) ΚΕΦ 1 ο : Όριο Συνέχεια Συνάρτησης

ΜΑΘΗΜΑΤΙΚΑ Θετικής & Τεχνολογικής Κατεύθυνσης Β ΜΕΡΟΣ (ΑΝΑΛΥΣΗ) ΚΕΦ 1 ο : Όριο Συνέχεια Συνάρτησης ΜΑΘΗΜΑΤΙΚΑ Θετικής & Τεχνολογικής Κατεύθυνσης Β ΜΕΡΟΣ (ΑΝΑΛΥΣΗ) ΚΕΦ ο : Όριο Συνέχεια Συνάρτησης Φυλλάδιο Φυλλάδι555 4 ο ο.α) ΕΝΝΟΙΑ ΣΥΝΑΡΤΗΣΗΣ - ΓΡΑΦΙΚΗ ΠΑΡΑΣΤΑΣΗ.α) ΕΝΝΟΙΑ ΣΥΝΑΡΤΗΣΗΣ - ΓΡΑΦΙΚΗ ΠΑΡΑΣΤΑΣΗ

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

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε Ναι Τέλος Α2 Διδακτική πρόταση ΕΝΟΤΗΤΑ 2η, Θέματα Θεωρητικής Επιστήμης των Υπολογιστών Κεφάλαιο 2.2. Παράγραφος 2.2.7.4 Εντολές Όσο επανάλαβε και Μέχρις_ότου Η διαπραγμάτευση των εντολών επανάληψης είναι σημαντικό

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

B Γυμνασίου. Ενότητα 9

B Γυμνασίου. Ενότητα 9 B Γυμνασίου Ενότητα 9 Γραμμικές εξισώσεις με μία μεταβλητή Διερεύνηση (1) Να λύσετε τις πιο κάτω εξισώσεις και ακολούθως να σχολιάσετε το πλήθος των λύσεων που βρήκατε σε καθεμιά. α) ( ) ( ) ( ) Διερεύνηση

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

ΣΥΣΤΗΜΑΤΑ. 6.1 ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ (Επαναλήψεις-Συμπληρώσεις)

ΣΥΣΤΗΜΑΤΑ. 6.1 ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ (Επαναλήψεις-Συμπληρώσεις) 6 ΣΥΣΤΗΜΑΤΑ 6.1 ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ (Επαναλήψεις-Συμπληρώσεις) Η εξίσωση αx βy γ Στο Γυμνάσιο διαπιστώσαμε με την βοήθεια παραδειγμάτων ότι η εξίσωση αx βy γ, με α 0 ή β 0, που λέγεται γραμμική εξίσωση,

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

ΜΑΘΗΜΑΤΙΚΗ ΛΟΓΙΚΗ ΚΑΙ ΑΠΟΔΕΙΞΗ

ΜΑΘΗΜΑΤΙΚΗ ΛΟΓΙΚΗ ΚΑΙ ΑΠΟΔΕΙΞΗ ΜΑΘΗΜΑΤΙΚΗ ΛΟΓΙΚΗ ΚΑΙ ΑΠΟΔΕΙΞΗ Περιεχόμενα : Α) Προτάσεις-Σύνθεση προτάσεων Β)Απόδειξη μιας πρότασης Α 1 ) Τι είναι πρόταση Β 1 ) Βασικές έννοιες Α ) Συνεπαγωγή Β ) Βασικές μέθοδοι απόδειξης Α 3 ) Ισοδυναμία

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

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

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΣΗΜΕΙΩΣΕΙΣ ΓΡΑΜΜΙΚΗΣ ΑΛΓΕΒΡΑΣ. ρ Χρήστου Νικολαϊδη

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΣΗΜΕΙΩΣΕΙΣ ΓΡΑΜΜΙΚΗΣ ΑΛΓΕΒΡΑΣ. ρ Χρήστου Νικολαϊδη ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΣΗΜΕΙΩΣΕΙΣ ΓΡΑΜΜΙΚΗΣ ΑΛΓΕΒΡΑΣ ρ Χρήστου Νικολαϊδη Δεκέμβριος Περιεχόμενα Κεφάλαιο : σελ. Τι είναι ένας πίνακας. Απλές πράξεις πινάκων. Πολλαπλασιασμός πινάκων.

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

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ.

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ. Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ. Σάλαρης Πολλές φορές μας δίνεται να λύσουμε ένα πρόβλημα που από την πρώτη

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

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

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

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

Α ΜΕΡΟΣ - ΑΛΓΕΒΡΑ. Α. Οι πραγματικοί αριθμοί και οι πράξεις τους

Α ΜΕΡΟΣ - ΑΛΓΕΒΡΑ. Α. Οι πραγματικοί αριθμοί και οι πράξεις τους Α ΜΕΡΟΣ - ΑΛΓΕΒΡΑ Κεφάλαιο 1 ο ΑΛΓΕΒΡΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ 1.1 Πράξεις με πραγματικούς αριθμούς Α. Οι πραγματικοί αριθμοί και οι πράξεις τους 1. Ποιοι αριθμοί ονομάζονται: α) ρητοί β) άρρητοι γ) πραγματικοί;

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

Μεταθέσεις και πίνακες μεταθέσεων

Μεταθέσεις και πίνακες μεταθέσεων Παράρτημα Α Μεταθέσεις και πίνακες μεταθέσεων Το παρόν παράρτημα βασίζεται στις σελίδες 671 8 του βιβλίου: Γ. Χ. Ψαλτάκης, Κβαντικά Συστήματα Πολλών Σωματιδίων (Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο,

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός:

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

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

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

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

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

Δύο λόγια από τη συγγραφέα

Δύο λόγια από τη συγγραφέα Δύο λόγια από τη συγγραφέα Τα μαθηματικά ή τα λατρεύεις ή τα μισείς! Για να λατρέψεις κάτι πρέπει να το κατανοήσεις, για τη δεύτερη περίπτωση τα πράγματα μάλλον είναι λίγο πιο απλά. Στόχος αυτού του βιβλίου

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

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035).

Ανάλυση Αλγορίθµων. Σύντοµη επανάληψη (ΕΠΛ 035). Ανάλυση Αλγορίθµων Σύντοµη επανάληψη (ΕΠΛ 035). Περίληψη Ανάλυση αλγορίθµων Ο, Θ, Ω Ανάλυση µη αναδροµικών αλγόριθµων Ανάλυση αναδροµικών αλγόριθµων Εµπειρική Ανάλυση Visualization Απόδοση Αλγορίθµων Απόδοση

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

Μαθηματικά Γ Γυμνασίου. Επαναληπτικές Ασκήσεις στο Κεφάλαιο 1: 1.2-1.5 Μονώνυμα - Πολυώνυμα - Ταυτότητες

Μαθηματικά Γ Γυμνασίου. Επαναληπτικές Ασκήσεις στο Κεφάλαιο 1: 1.2-1.5 Μονώνυμα - Πολυώνυμα - Ταυτότητες Μαθηματικά Γ Γυμνασίου Επαναληπτικές Ασκήσεις στο Κεφάλαιο 1: 1.2-1.5 Μονώνυμα - Πολυώνυμα - Ταυτότητες Αλγεβρικές παραστάσεις - Μονώνυμα Πράξεις με μονώνυμα Πολυώνυμα Πρόσθεση και Αφαίρεση πολυωνύμων

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον Τμήμα Μηχανικών Πληροφορικής Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Οκτώβριος 2014 Δρ. Δημήτρης Βαρσάμης Οκτώβριος 2014 1 / 42 Αριθμητικές Μέθοδοι

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

6 η Δραστηριότητα στο MicroWorlds Pro (1)

6 η Δραστηριότητα στο MicroWorlds Pro (1) 6 η Δραστηριότητα στο MicroWorlds Pro (1) Προχωρημένος Προγραμματισμός με Logo Δομή επιλογής Αν & ΑνΔιαφορετικά Στην δραστηριότητα που ακολουθεί, θα προσπαθήσουμε να βρούμε την απόλυτη τιμή ενός αριθμού,

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

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

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

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη Επιλογή και επανάληψη Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως, ότι στο

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

ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΑΥΓΕΡΙΝΟΣ ΒΑΣΙΛΗΣ

ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΑΥΓΕΡΙΝΟΣ ΒΑΣΙΛΗΣ ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΑΥΓΕΡΙΝΟΣ ΒΑΣΙΛΗΣ ΕΥΡΙΠΙΔΟΥ 80 ΝΙΚΑΙΑ ΝΕΑΠΟΛΗ ΤΗΛΕΦΩΝΟ 0965897 ΔΙΕΥΘΥΝΣΗ ΣΠΟΥΔΩΝ ΒΡΟΥΤΣΗ ΕΥΑΓΓΕΛΙΑ ΜΠΟΥΡΝΟΥΤΣΟΥ ΚΩΝ/ΝΑ ΑΥΓΕΡΙΝΟΣ ΒΑΣΙΛΗΣ ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ Η έννοια του μιγαδικού

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΙΛΟΓΗΣ 1) Ποιοι είναι οι τελεστές σύγκρισης και

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο 3.07 Να γραφεί αλγόριθμος που θα δημιουργεί πίνακα 100 θέσεων στον οποίο τα περιττά στοιχεία του θα έχουν την τιμή 1 και τα άρτια την τιμή 0. ΛΥΣΗ Θα δημιουργήσω άσκηση βάση κάποιων κριτηρίων. Δηλ. δεν

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

Από το Γυμνάσιο στο Λύκειο... 7. 3. Δειγματικός χώρος Ενδεχόμενα... 42 Εύρεση δειγματικού χώρου... 46

Από το Γυμνάσιο στο Λύκειο... 7. 3. Δειγματικός χώρος Ενδεχόμενα... 42 Εύρεση δειγματικού χώρου... 46 ΠEΡΙΕΧΟΜΕΝΑ Από το Γυμνάσιο στο Λύκειο................................................ 7 1. Το Λεξιλόγιο της Λογικής.............................................. 11. Σύνολα..............................................................

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

. (1) , lim να υπάρχουν και να είναι πεπερασμένα, δηλαδή πραγματικοί αριθμοί.

. (1) , lim να υπάρχουν και να είναι πεπερασμένα, δηλαδή πραγματικοί αριθμοί. O μετασχηματισμός Laplace αποτελεί περίπτωση ολοκληρωτικού μετασχηματισμού, κατά τον οποίο κατάλληλη συνάρτηση (χρονικό σήμα) μετατρέπεται σε συνάρτηση της «συχνότητας» μέσω της σχέσης. (1) Γενικότερα

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

Θεώρημα Βolzano. Κατηγορία 1 η. 11.1 Δίνεται η συνάρτηση:

Θεώρημα Βolzano. Κατηγορία 1 η. 11.1 Δίνεται η συνάρτηση: Κατηγορία η Θεώρημα Βolzano Τρόπος αντιμετώπισης:. Όταν μας ζητούν να εξετάσουμε αν ισχύει το θεώρημα Bolzano για μια συνάρτηση f σε ένα διάστημα [, ] τότε: Εξετάζουμε την συνέχεια της f στο [, ] (αν η

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

ΜΑΘΗΜΑΤΙΚΑ Γ Γυμνασίου

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

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

Γνωστό: P (M) = 2 M = τρόποι επιλογής υποσυνόλου του M. Π.χ. M = {A, B, C} π. 1. Π.χ.

Γνωστό: P (M) = 2 M = τρόποι επιλογής υποσυνόλου του M. Π.χ. M = {A, B, C} π. 1. Π.χ. Παραδείγματα Απαρίθμησης Γνωστό: P (M 2 M τρόποι επιλογής υποσυνόλου του M Τεχνικές Απαρίθμησης Πχ M {A, B, C} P (M 2 3 8 #(Υποσυνόλων με 2 στοιχεία ( 3 2 3 #(Διατεταγμένων υποσυνόλων με 2 στοιχεία 3 2

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

ΑΣΚΗΣΕΙΣ ΠΙΘΑΝΟΤΗΤΩΝ του Παν. Λ. Θεοδωρόπουλου 0

ΑΣΚΗΣΕΙΣ ΠΙΘΑΝΟΤΗΤΩΝ του Παν. Λ. Θεοδωρόπουλου 0 ΑΣΚΗΣΕΙΣ ΠΙΘΑΝΟΤΗΤΩΝ του Παν. Λ. Θεοδωρόπουλου 0 Η Θεωρία Πιθανοτήτων είναι ένας σχετικά νέος κλάδος των Μαθηματικών, ο οποίος παρουσιάζει πολλά ιδιαίτερα χαρακτηριστικά στοιχεία. Επειδή η ιδιαιτερότητα

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου, Τμήμα Μηχανικών Πληροφορικής ΤΕ Χειμερινό Εξάμηνο 2014-2015 (Παρουσίαση 5) 1 / 17 Απόδοση προγραμμάτων Συχνά χρειάζεται να εκτιμηθεί η απόδοση

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Τρίτη Διάλεξη Εντολές Επιλογής και Επανάληψης Εντολές επιλογής Εντολή if Η πιο απλή μορφή της if συντάσσεται ως εξής: if ( συνθήκη ) Οι εντολές μέσα στα άγκιστρα αποτελούν

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

ΑΡΙΘΜΗΤΙΚΗ ΠΡΟΟΔΟΣ. Σύμφωνα με τα παραπάνω, για μια αριθμητική πρόοδο που έχει πρώτο όρο τον ...

ΑΡΙΘΜΗΤΙΚΗ ΠΡΟΟΔΟΣ. Σύμφωνα με τα παραπάνω, για μια αριθμητική πρόοδο που έχει πρώτο όρο τον ... ΑΡΙΘΜΗΤΙΚΗ ΠΡΟΟΔΟΣ Ορισμός : Μία ακολουθία ονομάζεται αριθμητική πρόοδος, όταν ο κάθε όρος της, δημιουργείται από τον προηγούμενο με πρόσθεση του ίδιου πάντοτε αριθμού. Ο σταθερός αριθμός που προστίθεται

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

Περιεχόμενα. Κεφάλαιο 1 ΣΥΣΤΗΜΑΤΑ ΣΥΝΤΕΤΑΓΜΕΝΩΝ ΣΕ ΜΙΑ ΕΥΘΕΙΑ... 13 1.1 Οι συντεταγμένες ενός σημείου...13 1.2 Απόλυτη τιμή...14

Περιεχόμενα. Κεφάλαιο 1 ΣΥΣΤΗΜΑΤΑ ΣΥΝΤΕΤΑΓΜΕΝΩΝ ΣΕ ΜΙΑ ΕΥΘΕΙΑ... 13 1.1 Οι συντεταγμένες ενός σημείου...13 1.2 Απόλυτη τιμή...14 Περιεχόμενα Κεφάλαιο 1 ΣΥΣΤΗΜΑΤΑ ΣΥΝΤΕΤΑΓΜΕΝΩΝ ΣΕ ΜΙΑ ΕΥΘΕΙΑ... 13 1.1 Οι συντεταγμένες ενός σημείου...13 1.2 Απόλυτη τιμή...14 Κεφάλαιο 2 ΣΥΣΤΗΜΑΤΑ ΣΥΝΤΕΤΑΓΜΕΝΩΝ ΣΕ ΕΝΑ ΕΠΙΠΕΔΟ 20 2.1 Οι συντεταγμένες

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

Υποθετικές προτάσεις και λογική αλήθεια

Υποθετικές προτάσεις και λογική αλήθεια Υποθετικές προτάσεις και λογική αλήθεια Δρ. Παναγιώτης Λ. Θεοδωρόπουλος Σχολικός Σύμβουλος κλάδου ΠΕ03 www.p-theodoropoulos.gr Περίληψη Στην εργασία αυτή επιχειρείται μια ερμηνεία της λογικής αλήθειας

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

Μιγαδική ανάλυση Μέρος Α Πρόχειρες σημειώσεις 1. Μιγαδικοί αριθμοί. ΤΕΤΥ Εφαρμοσμένα Μαθηματικά Μιγαδική Ανάλυση Α 1

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

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

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

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

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

O n+2 = O n+1 + N n+1 = α n+1 N n+2 = O n+1. α n+2 = O n+2 + N n+2 = (O n+1 + N n+1 ) + (O n + N n ) = α n+1 + α n

O n+2 = O n+1 + N n+1 = α n+1 N n+2 = O n+1. α n+2 = O n+2 + N n+2 = (O n+1 + N n+1 ) + (O n + N n ) = α n+1 + α n Η ύλη συνοπτικά... Στοιχειώδης συνδυαστική Γεννήτριες συναρτήσεις Σχέσεις αναδρομής Θεωρία Μέτρησης Polyá Αρχή Εγκλεισμού - Αποκλεισμού Σχέσεις Αναδρομής Γραμμικές Σχέσεις Αναδρομής με σταθερούς συντελεστές

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

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

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΜΑΘΗΜΑΤΙΚΑ Ι (ΘΕ ΠΛΗ ) ΕΡΓΑΣΙΑ 4 η Ημερομηνία Αποστολής στον Φοιτητή: 5 Φεβρουαρίου 008 Ημερομηνία παράδοσης της Εργασίας: 4 Μαρτίου 008

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

Συνεχή Κλάσματα. Εμμανουήλ Καπνόπουλος Α.Μ 282

Συνεχή Κλάσματα. Εμμανουήλ Καπνόπουλος Α.Μ 282 Συνεχή Κλάσματα Εμμανουήλ Καπνόπουλος Α.Μ 282 5 Νοεμβρίου 204 Ορισμός και ιδιότητες: Ορισμός: Έστω a 0, a, a 2,...a n ανεξάρτητες μεταβλητές, n N σχηματίζουν την ακολουθία {[a 0, a,..., a n ] : n N} όπου

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

ΕΝΟΤΗΤΑ 12 ΠΡΑΞΕΙΣ ΜΕΧΡΙ ΤΟ 20

ΕΝΟΤΗΤΑ 12 ΠΡΑΞΕΙΣ ΜΕΧΡΙ ΤΟ 20 ΠΡΑΞΕΙΣ ΜΕΧΡΙ ΤΟ 20 ΔΕΙΚΤΕΣ ΕΠΙΤΥΧΙΑΣ ΑΡΙΘΜΟΙ Διερεύνηση αριθμών Αρ 1.6 Συνθέτουν και αναλύουν αριθμούς μέχρι το 100 με βάση την αξία θέσης ψηφίου, χρησιμοποιώντας αντικείμενα, εικόνες, και σύμβολα. Αρ

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

ΕΙΣΑΓΩΓΙΚΟ ΚΕΦΑΛΑΙΟ. a β a β.

ΕΙΣΑΓΩΓΙΚΟ ΚΕΦΑΛΑΙΟ. a β a β. ΕΙΣΑΓΩΓΙΚΟ ΚΕΦΑΛΑΙΟ Ε.1 ΤΟ ΛΕΞΙΛΟΓΙΟ ΤΗΣ ΛΟΓΙΚΗΣ Στη παράγραφο αυτή θα γνωρίσουμε μερικές βασικές έννοιες της Λογικής, τις οποίες θα χρησιμοποιήσουμε στη συνέχεια, όπου αυτό κρίνεται αναγκαίο, για τη σαφέστερη

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

ΠΑΡΑΔΕΙΓΜΑΤΑ ΘΕΜΑ Β. Να εξετάσετε αν ισχύουν οι υποθέσεις του Θ.Μ.Τ. για την συνάρτηση στο διάστημα [ 1,1] τέτοιο, ώστε: C στο σημείο (,f( ))

ΠΑΡΑΔΕΙΓΜΑΤΑ ΘΕΜΑ Β. Να εξετάσετε αν ισχύουν οι υποθέσεις του Θ.Μ.Τ. για την συνάρτηση στο διάστημα [ 1,1] τέτοιο, ώστε: C στο σημείο (,f( )) ΚΕΦΑΛΑΙΟ ο: ΔΙΑΦΟΡΙΚΟΣ ΛΟΓΙΣΜΟΣ ΕΝΟΤΗΤΑ 6: ΘΕΩΡΗΜΑ ΜΕΣΗΣ ΤΙΜΗΣ ΔΙΑΦΟΡΙΚΟΥ ΛΟΓΙΣΜΟΥ (Θ.Μ.Τ.) [Θεώρημα Μέσης Τιμής Διαφορικού Λογισμού του κεφ..5 Μέρος Β του σχολικού βιβλίου]. ΠΑΡΑΔΕΙΓΜΑΤΑ Παράδειγμα. ΘΕΜΑ

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

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (ΗΥ-119)

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (ΗΥ-119) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΙΩΑΝΝΗΣ Α. ΤΣΑΓΡΑΚΗΣ ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (ΗΥ-119) ΜΕΡΟΣ 5: ΔΙΑΝΥΣΜΑΤΙΚΟΙ ΥΠΟΧΩΡΟΙ ΓΡΑΜΜΙΚΗ ΑΝΕΞΑΡΤΗΣΙΑ ΒΑΣΕΙΣ & ΔΙΑΣΤΑΣΗ Δ.Χ. ΣΗΜΕΙΩΣΕΙΣ

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

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr VI Ολοκληρώματα Παντελής Μπουμπούλης, MSc, PhD σελ mth-grlogspotcom, ououlismyschgr ΜΕΡΟΣ Αρχική Συνάρτηση Ορισμός Έστω f μια συνάρτηση ορισμένη σε ένα διάστημα Δ Αρχική συνάρτηση ή παράγουσα της στο Δ

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

4.6 Η ΓΡΑΜΜΙΚΗ ΔΙΟΦΑΝΤΙΚΗ ΕΞΙΣΩΣΗ

4.6 Η ΓΡΑΜΜΙΚΗ ΔΙΟΦΑΝΤΙΚΗ ΕΞΙΣΩΣΗ 174 46 Η ΓΡΑΜΜΙΚΗ ΔΙΟΦΑΝΤΙΚΗ ΕΞΙΣΩΣΗ Εισαγωγή Ένα από τα αρχαιότερα προβλήματα της Θεωρίας Αριθμών είναι η αναζήτηση των ακέραιων αριθμών που ικανοποιούν κάποιες δεδομένες σχέσεις Με σύγχρονη ορολογία

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

Μιγαδικοί Αριθμοί. Μαθηματικά Γ! Λυκείου Θετική και Τεχνολογική Κατεύθυνση

Μιγαδικοί Αριθμοί. Μαθηματικά Γ! Λυκείου Θετική και Τεχνολογική Κατεύθυνση Μιγαδικοί Αριθμοί Μαθηματικά Γ! Λυκείου Θετική και Τεχνολογική Κατεύθυνση Θεωρία - Μέθοδοι Υποδειγματικά λυμένες ασκήσεις Ασκήσεις προς λύση Επιλεγμένα θέματα «Σας εύχομαι, καλό κουράγιο και μεγάλη δύναμη

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

II. Συναρτήσεις. math-gr

II. Συναρτήσεις. math-gr II Συναρτήσεις Παντελής Μπουμπούλης, MSc, PhD σελ blogspotcom, bouboulismyschgr ΜΕΡΟΣ 1 ΣΥΝΑΡΤΗΣΕΙΣ Α Βασικές Έννοιες Ορισμός: Έστω Α ένα υποσύνολο του συνόλου των πραγματικών αριθμών R Ονομάζουμε πραγματική

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

ΛΧ1004 Μαθηματικά για Οικονομολόγους

ΛΧ1004 Μαθηματικά για Οικονομολόγους ΛΧ1004 Μαθηματικά για Οικονομολόγους Μάθημα 1 ου Εξαμήνου 2Θ+2Φ(ΑΠ) Ι. Δημοτίκαλης, Επίκουρος Καθηγητής 1 ΤΕΙ ΚΡΗΤΗΣ-ΤΜΗΜΑ Λ&Χ: jdim@staff.teicrete.gr ΠΡΟΤΕΙΝΟΜΕΝΟ ΒΙΒΛΙΟ ΕΦΑΡΜΟΓΕΣ ΜΑΘΗΜΑΤΙΚΟΥ ΛΟΓΙΣΜΟΥ

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

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ Ι. Δημόπουλος Τμήμα Διοίκησης Μονάδων Υγείας και Πρόνοιας -ΤΕΙ Καλαμάτας ΚΑΠΟΙΟΙ ΒΑΣΙΚΟΙ ΣΥΜΒΟΛΙΣΜΟΙ ΚΑΙ ΕΝΝΟΙΕΣ Ν = {1,2,3,...} το σύνολο των φυσικών αριθμών Ζ = {0, ±1, ±2, ±3,..

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

Ασυμπτωτικός Συμβολισμός

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

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

math-gr Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr

math-gr Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr III Όριο Παντελής Μπουμπούλης, MSc, PhD σελ blogspotcom, bouboulismyschgr ΜΕΡΟΣ Πεπερασμένο Όριο στο Α Ορισμός Όριο στο : Όταν οι τιμές μιας συνάρτησης f προσεγγίζουν όσο θέλουμε έναν πραγματικό αριθμό,

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

5.1 Δραστηριότητα: Εισαγωγή στο ορισμένο ολοκλήρωμα

5.1 Δραστηριότητα: Εισαγωγή στο ορισμένο ολοκλήρωμα 5.1 Δραστηριότητα: Εισαγωγή στο ορισμένο ολοκλήρωμα Θέμα της δραστηριότητας Η δραστηριότητα εισάγει τους μαθητές στο ολοκλήρωμα Riemann μέσω του υπολογισμού του εμβαδού ενός παραβολικού χωρίου. Στόχοι

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

Κεφάλαιο 1 o Εξισώσεις - Ανισώσεις

Κεφάλαιο 1 o Εξισώσεις - Ανισώσεις 2 ΕΡΩΤΗΣΕΙΙΣ ΘΕΩΡΙΙΑΣ ΑΠΟ ΤΗΝ ΥΛΗ ΤΗΣ Β ΤΑΞΗΣ ΜΕΡΟΣ Α -- ΑΛΓΕΒΡΑ Κεφάλαιο 1 o Εξισώσεις - Ανισώσεις Α. 1 1 1. Τι ονομάζεται Αριθμητική και τι Αλγεβρική παράσταση; Ονομάζεται Αριθμητική παράσταση μια παράσταση

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

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΞΕΤΑΣΗ ΣΤΟ ΜΑΘΗΜΑ «ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ» - 6/2/2014 Διάρκεια Εξέτασης: 2 ώρες και 50 λεπτά Ομάδα Α

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΞΕΤΑΣΗ ΣΤΟ ΜΑΘΗΜΑ «ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ» - 6/2/2014 Διάρκεια Εξέτασης: 2 ώρες και 50 λεπτά Ομάδα Α ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΞΕΤΑΣΗ ΣΤΟ ΜΑΘΗΜΑ «ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ» - 6/2/2014 Διάρκεια Εξέτασης: 2 ώρες και 50 λεπτά Ομάδα Α 1. (2.5 μονάδες) Ο κ. Ζούπας παρέλαβε μία μυστηριώδη τσάντα από το ταχυδρομείο. Όταν

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

Αριθμητικές μέθοδοι σε ταλαντώσεις μηχανολογικών συστημάτων

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

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

Συσχέτιση μεταξύ δύο συνόλων δεδομένων

Συσχέτιση μεταξύ δύο συνόλων δεδομένων Διαγράμματα διασποράς (scattergrams) Συσχέτιση μεταξύ δύο συνόλων δεδομένων Η οπτική απεικόνιση δύο συνόλων δεδομένων μπορεί να αποκαλύψει με παραστατικό τρόπο πιθανές τάσεις και μεταξύ τους συσχετίσεις,

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης ΕΠ.1 Να αναπτυχθεί αλγόριθμος που θα εκτυπώνει τους διψήφιους άρτιους ακέραιους. Η άσκηση στην ουσία θα πρέπει να εκτυπώσει του αριθμούς 10, 12, 14,.,96, 98. Μεμιαπρώτηματιάθαμπορούσαμενατηνλύσουμεμετοναπροσπελάσουμετιςτιμές

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

Καθηγητήσ Μαθηματικών: Κωτςάκησ Γεώργιοσ e-mail: kotsakis @ windowslive. com.

Καθηγητήσ Μαθηματικών: Κωτςάκησ Γεώργιοσ e-mail: kotsakis @ windowslive. com. Καθηγητήσ Μαθηματικών: Κωτςάκησ Γεώργιοσ e-mail: kotsakis @ windowslive. com. A. Οι κανόνες De L Hospital και η αρχική συνάρτηση κάνουν πιο εύκολη τη λύση των προβλημάτων με το Θ. Rolle. B. Η αλγεβρική

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

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

Κεφάλαιο 10. Υποπρογράμματα Κεφάλαιο 10 Υποπρογράμματα 10.1 Γενικός διδακτικός σκοπός Ο γενικός σκοπός του κεφαλαίου είναι να καταστούν ικανοί οι μαθητές να χρησιμοποιούν υποπρογράμματα για τη δημιουργία συνθέτων προγραμμάτων. 194

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

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

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

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

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

ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ

ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ Πίνακας περιεχομένων Κεφάλαιο 1 - ΟΙ ΦΥΣΙΚΟΙ ΑΡΙΘΜΟΙ... 2 Κεφάλαιο 2 ο - ΤΑ ΚΛΑΣΜΑΤΑ... 6 Κεφάλαιο 3 ο - ΔΕΚΑΔΙΚΟΙ ΑΡΙΘΜΟΙ... 10 ΣΩΤΗΡΟΠΟΥΛΟΣ ΝΙΚΟΣ 1 Κεφάλαιο 1 - ΟΙ ΦΥΣΙΚΟΙ ΑΡΙΘΜΟΙ

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

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής:

ΣΕΙΡΕΣ TAYLOR. Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων. Πολυώνυµο είναι κάθε συνάρτηση της µορφής: ΣΕΙΡΕΣ TAYLOR Στην Ενότητα αυτή θα ασχοληθούµε µε την προσέγγιση συναρτήσεων µέσω πολυωνύµων Πολυώνυµο είναι κάθε συνάρτηση της µορφής: p( ) = a + a + a + a + + a, όπου οι συντελεστές α i θα θεωρούνται

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

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

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

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

1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν γράφοντας την ένδειξη Σωστό ή Λάθος και να δικαιολογήσετε την απάντησή σας.

1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν γράφοντας την ένδειξη Σωστό ή Λάθος και να δικαιολογήσετε την απάντησή σας. Κεφάλαιο Πραγματικοί αριθμοί. Οι πράξεις και οι ιδιότητές τους Κατανόηση εννοιών - Θεωρία. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν γράφοντας την ένδειξη Σωστό ή Λάθος και να δικαιολογήσετε την απάντησή

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

2. ΑΝΑΛΥΣΗ ΣΦΑΛΜΑΤΩΝ

2. ΑΝΑΛΥΣΗ ΣΦΑΛΜΑΤΩΝ 1. ΑΝΑΛΥΣΗ ΣΦΑΛΜΑΤΩΝ 1. Σφάλματα Κάθε μέτρηση ενός φυσικού μεγέθους χαρακτηρίζεται από μία αβεβαιότητα που ονομάζουμε σφάλμα, το οποίο αναγράφεται με τη μορφή Τιμή ± αβεβαιότητα π.χ έστω ότι σε ένα πείραμα

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) 2004 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) 2004 ΘΕΜΑ 1ο ΕΚΦΩΝΗΣΕΙΣ Α. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο Αν χ και y μεταβλητές με τιμές 5 και 10 αντίστοιχα να εξηγηθούν οι ακόλουθες εντολές εξόδου.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο Αν χ και y μεταβλητές με τιμές 5 και 10 αντίστοιχα να εξηγηθούν οι ακόλουθες εντολές εξόδου. 2.1 Αν χ και y μεταβλητές με τιμές 5 και 10 αντίστοιχα να εξηγηθούν οι ακόλουθες εντολές εξόδου. 1) Η τιμή του χ είναι,χ Ητιμή του χ είναι 5 Ηεντολή εμφανίζει ότι υπάρχει στα διπλά εισαγωγικά ως έχει.

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

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

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

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

Ποιες από τις παρακάτω προτάσεις είναι αληθείς; Δικαιολογήστε την απάντησή σας.

Ποιες από τις παρακάτω προτάσεις είναι αληθείς; Δικαιολογήστε την απάντησή σας. Ποιες από τις παρακάτω προτάσεις είναι αληθείς; Δικαιολογήστε την απάντησή σας. 1. Κάθε πολυώνυμο ανάγωγο επί του Z είναι ανάγωγο επί του Q. Σωστό. 2. Κάθε πολυώνυμο ανάγωγο επί του Q είναι ανάγωγο επί

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

Η ΙΣΧΥΣ ΕΝΟΣ ΕΛΕΓΧΟΥ. (Power of a Test) ΚΕΦΑΛΑΙΟ 21

Η ΙΣΧΥΣ ΕΝΟΣ ΕΛΕΓΧΟΥ. (Power of a Test) ΚΕΦΑΛΑΙΟ 21 ΚΕΦΑΛΑΙΟ 21 Η ΙΣΧΥΣ ΕΝΟΣ ΕΛΕΓΧΟΥ (Power of a Test) Όπως είδαμε προηγουμένως, στον Στατιστικό Έλεγχο Υποθέσεων, ορίζουμε δύο είδη πιθανών λαθών (κινδύνων) που μπορεί να συμβούν όταν παίρνουμε αποφάσεις

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

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

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

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