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.

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

Ασκήσεις (2) Άσκηση 1

Ασκήσεις (2) Άσκηση 1 Άσκηση 1 Ασκήσεις () Εισαγωγή στην Ανάλυση Αλγορίθμων Υποθέστε ότι συγκρίνουμε την υλοποίηση της ταξινόμησης με εισαγωγή και της ταξινόμησης με συγχώνευση στον ίδιο υπολογιστή. Για εισόδους μεγέθους n,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε: Συµβολισµός Ω( ) Τάξη των Συναρτήσεων () Εκτίµηση Πολυπλοκότητας Αλγορίθµων Ορέστης Τελέλης telelis@unipi.gr Ορισµός. Εστω συναρτήσεις: f : N R και g : N R η f(n) είναι Ω( g(n) ) αν υπάρχουν σταθερές C

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

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

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

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

Περιεχόμενα. Κεφάλαιο 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 Οι ιδιότητες της πρόσθεσης

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

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

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

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

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

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

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

12. ΑΝΙΣΩΣΕΙΣ Α ΒΑΘΜΟΥ. είναι δύο παραστάσεις μιας μεταβλητής x πού παίρνει τιμές στο

12. ΑΝΙΣΩΣΕΙΣ Α ΒΑΘΜΟΥ. είναι δύο παραστάσεις μιας μεταβλητής x πού παίρνει τιμές στο ΓΕΝΙΚΑ ΠΕΡΙ ΑΝΙΣΩΣΕΩΝ Έστω f σύνολο Α, g Α ΒΑΘΜΟΥ είναι δύο παραστάσεις μιας μεταβλητής πού παίρνει τιμές στο Ανίσωση με έναν άγνωστο λέγεται κάθε σχέση της μορφής f f g g ή, η οποία αληθεύει για ορισμένες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Σημειώσεις Ανάλυσης Ι (ανανεωμένο στις 5 Δεκεμβρίου 2012)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Σημειώσεις Ανάλυσης Ι (ανανεωμένο στις 5 Δεκεμβρίου 2012) ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Σημειώσεις Ανάλυσης Ι (ανανεωμένο στις 5 Δεκεμβρίου 2012) Τμήμα Θ. Αποστολάτου & Π. Ιωάννου 1 Σειρές O Ζήνων ο Ελεάτης (490-430 π.χ.) στη προσπάθειά του να υποστηρίξει

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

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε; Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε; Πως θα υπολογίσουμε το χρόνο εκτέλεσης ενός αλγόριθμου; Για να απαντήσουμε

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

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

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

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

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

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

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

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

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

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

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

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

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

(18 ο ) ΚΛΑΣΜΑΤΙΚΗ ΑΝΑΓΩΓΗ - ΙI: «διάμεσος &θεσιακή επιλογή στοιχείου»

(18 ο ) ΚΛΑΣΜΑΤΙΚΗ ΑΝΑΓΩΓΗ - ΙI: «διάμεσος &θεσιακή επιλογή στοιχείου» (8 ο ) ΚΛΑΣΜΑΤΙΚΗ ΑΑΓΩΓΗ - ΙI: «διάμεσος &θεσιακή επιλογή στοιχείου» Το πρόβλημα του διαμέσου στοιχείου: ένα θεμελιακό πρόβλημα Συναντήσαμε ήδη αρκετές φορές το πρόβλημα του να «κόψουμε» ένα σύνολο στοιχείων

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

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

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

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

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

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

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

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

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

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

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

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

x < A y f(x) < B f(y).

x < A y f(x) < B f(y). Χειμερινό Εξάμηνο 2016 2017 Ασκήσεις στα Κεφάλαια 5 & 6 1. Αυτή είναι ουσιαστικά η Άσκηση 5.2 (σελ. 119), από τις σημειώσεις του Σκανδάλη. Εστω A, < καλά διατεταγμένο σύνολο και έστω στοιχείο a A. Αποδείξτε

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

Περιεχόμενα μεθόδευση του μαθήματος

Περιεχόμενα μεθόδευση του μαθήματος Περιεχόμενα μεθόδευση του μαθήματος. Πως ορίζεται η έννοια. Το όριο. To f() f() ; f() εφόσον υπάρχει είναι μονοσήμαντα ορισμένο; εξαρτιέται από τα άκρα α, β των ( α, ) και (, β ) ;. Πως ορίζονται τα πλευρικά

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

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018

Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018 Διακριτά Μαθηματικά [Rosen, κεφ. 3] Γιάννης Εμίρης Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Οκτώβριος 2018 Αλγόριθμοι Ρυθμός αύξησης συναρτήσεων [Rosen 3.2] Αριθμητικές συναρτήσεις Τάξη αριθμητικών συναρτήσεων

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

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

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

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

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2 Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Εµπειρική ανάλυση αλγορίθµων Μαθηµατική ανάλυση αλγορίθµων Αύξηση συναρτήσεων Συµβολισµός µεγάλου όµικρον Παραδείγµατα

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

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

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

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

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

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

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

Κεφάλαιο 9. Έλεγχοι υποθέσεων

Κεφάλαιο 9. Έλεγχοι υποθέσεων Κεφάλαιο 9 Έλεγχοι υποθέσεων 9.1 Εισαγωγή Όταν παίρνουμε ένα ή περισσότερα τυχαία δείγμα από κανονικούς πληθυσμούς έχουμε τη δυνατότητα να υπολογίζουμε στατιστικά, όπως μέσους όρους, δειγματικές διασπορές

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

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

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

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

Άλγεβρα Α Λυκείου Κεφάλαιο 2ο. οι πράξεις και οι ιδιότητές τους

Άλγεβρα Α Λυκείου Κεφάλαιο 2ο. οι πράξεις και οι ιδιότητές τους οι πράξεις και οι ιδιότητές τους Μερικές ακόμη ταυτότητες (επιπλέον από τις αξιοσημείωτες που βρίσκονται στο σχολικό βιβλίο) ) Διαφορά δυνάμεων με ίδιο εκθέτη: ειδικά αν ο εκθέτης ν είναι άρτιος υπάρχει

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

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

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Παραγώγιση Εισαγωγή Ορισμός 7. Αν y f x είναι μια συνάρτηση ορισμένη σε ένα διάστημα

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

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

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

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

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

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Ολοκλήρωση Εισαγωγή Έστω ότι η f είναι μία φραγμένη συνάρτηση στο πεπερασμένο

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

* * * ( ) mod p = (a p 1. 2 ) mod p.

* * * ( ) mod p = (a p 1. 2 ) mod p. Θεωρια Αριθμων Εαρινο Εξαμηνο 2016 17 Μέρος Α: Πρώτοι Αριθμοί Διάλεξη 1 Ενότητα 1. Διαιρετότητα: Διαιρετότητα, διαιρέτες, πολλαπλάσια, στοιχειώδεις ιδιότητες. Γραμμικοί Συνδυασμοί (ΓΣ). Ενότητα 2. Πρώτοι

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

Διάγραμμα Ροής. Σελίδα 1 από 10

Διάγραμμα Ροής. Σελίδα 1 από 10 Θεωρία επισκόπηση 3 Επανάληψη Σημείωση: Οι εντολές που συγκροτούν μια εντολή επανάληψης αποκαλούνται βρόχος 1. Εντολή Όσο.επανάλαβε Σύνταξη Όσο συνθήκη επανάλαβε εντολές Πώς Λειτουργεί. Αρχικά ελέγχεται

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

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

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

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

A N A B P Y T A ΑΣΚΗΣΕΙΣ ΠΟΛΥΩΝΥΜΩΝ. 1 (α + β + γ) [(α-β) 2 +(α-γ) 2 +(β-γ) 2 ] και τις υποθέσεις

A N A B P Y T A ΑΣΚΗΣΕΙΣ ΠΟΛΥΩΝΥΜΩΝ. 1 (α + β + γ) [(α-β) 2 +(α-γ) 2 +(β-γ) 2 ] και τις υποθέσεις ΑΣΚΗΣΕΙΣ ΠΟΛΥΩΝΥΜΩΝ ΑΣΚΗΣΗ η Αν α +β +γ = αβγ και α + β + γ, να δείξετε ότι το πολυώνυμο P()=(α β) +(β γ) + γ α είναι το μηδενικό πολυώνυμο. Από την ταυτότητα του Euler α +β +γ -αβγ = (α + β + γ)[(α-β)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΑΘΗΜΑ: ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ 1. α. Να βάλετε σε αύξουσα σειρά μεγέθους τις παρακάτω συναρτήσεις χρονικής πολυπλοκότητας αλγορίθμων: nlogn, n logn,

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

5. ΤΟ ΓΕΝΙΚΟ ΓΡΑΜΜΙΚΟ ΜΟΝΤΕΛΟ (GENERAL LINEAR MODEL) 5.1 Εναλλακτικά μοντέλα του απλού γραμμικού μοντέλου: Το εκθετικό μοντέλο

5. ΤΟ ΓΕΝΙΚΟ ΓΡΑΜΜΙΚΟ ΜΟΝΤΕΛΟ (GENERAL LINEAR MODEL) 5.1 Εναλλακτικά μοντέλα του απλού γραμμικού μοντέλου: Το εκθετικό μοντέλο 5. ΤΟ ΓΕΝΙΚΟ ΓΡΑΜΜΙΚΟ ΜΟΝΤΕΛΟ (GENERAL LINEAR MODEL) 5.1 Εναλλακτικά μοντέλα του απλού γραμμικού μοντέλου: Το εκθετικό μοντέλο Ένα εναλλακτικό μοντέλο της απλής γραμμικής παλινδρόμησης (που χρησιμοποιήθηκε

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κεφάλαιο 11 Ένωση Ξένων Συνόλων Κεφάλαιο 11 Ένωση Ξένων Συνόλων Περιεχόμενα 11.1 Εισαγωγή... 227 11.2 Εφαρμογή στο Πρόβλημα της Συνεκτικότητας... 228 11.3 Δομή Ξένων Συνόλων με Συνδεδεμένες Λίστες... 229 11.4 Δομή Ξένων Συνόλων με Ανοδικά

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

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

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

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

Φίλη μαθήτρια, φίλε μαθητή,

Φίλη μαθήτρια, φίλε μαθητή, Φίλη μαθήτρια φίλε μαθητή Η εργασία αυτή έγινε με σκοπό να συμβάλει στην κατανόηση στην εμπέδωση και στην εμβάθυνση των μαθηματικών εννοιών που αναπτύσσονται στην Άλγεβρα της Β Λυκείου. Η ύλη είναι γραμμένη

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Ενότητα 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα α. Θέση και προσανατολισμός της μορφής Η θέση της κάθε μορφής στο σκηνικό προσδιορίζεται

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

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

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

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

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1 Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 4 ης διάλεξης 4.1. (α) Αποδείξτε ότι αν η h είναι συνεπής, τότε h(n

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

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

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

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

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

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

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

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

ΑΝΑΛΥΣΗ 1 ΤΕΤΑΡΤΟ ΜΑΘΗΜΑ, Μ. Παπαδημητράκης. ΑΝΑΛΥΣΗ 1 ΤΕΤΑΡΤΟ ΜΑΘΗΜΑ, 15-10-13 Μ. Παπαδημητράκης. 1 Παράδειγμα. Ως εφαρμογή της Αρχιμήδειας Ιδιότητας θα μελετήσουμε το σύνολο { 1 } A = n N = {1, 1 n 2, 1 } 3,.... Κατ αρχάς το σύνολο A έχει προφανώς

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

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

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

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ. ΤΡΙΤΗ ΔΙΑΛΕΞΗ Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.): Σύνταξη τύπος όνομαα; τύπος όνομαβ{όνομαα}; όνομαβ

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

ττιαογή και επανάληψη

ττιαογή και επανάληψη Κεφάλαιο 8 ττιαογή και επανάληψη 8.1 Γενικός διδακτικός σκοπός Ο γενικός σκοπός του κεφαλαίου είναι να καταστούν ικανοί οι μαθητές να συντάσσουν και να εκτελούν σε δομημένη γλώσσα προγραμματισμού προγράμματα

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2 Ο ΠΟΛΥΩΝΥΜΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ - ΑΣΚΗΣΕΙΣ ΚΕΦΑΛΑΙΟ Ο ΠΟΛΥΩΝΥΜΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ - ΑΣΚΗΣΕΙΣ ΚΕΦΑΛΑΙΟ Ο ΠΟΛΥΩΝΥΜΑ 10 ΕΠΑΝΑΛΗΨΕΙΣ ΑΠΟ ΠΡΟΗΓΟΥΜΕΝΕΣ ΤΑΞΕΙΣ α ) Ταυτότητες 1. (a-β)(a+β)=a - b. (a ± b ) = a ± ab + b 3 3 3 3. (a ± b ) = a ± 3a b + 3ab

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

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Εισαγωγή ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Όπως για όλες τις επιστήμες, έτσι και για την επιστήμη της Πληροφορικής, ο τελικός στόχος της είναι η επίλυση προβλημάτων. Λύνονται όμως όλα τα προβλήματα;

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

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

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

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

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

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

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

Απειροστικός Λογισμός Ι Ασκήσεις

Απειροστικός Λογισμός Ι Ασκήσεις Απειροστικός Λογισμός Ι Ασκήσεις Μ. Παπαδημητράκης . Για καθεμία από τις ανισότητες ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ + >, +, + > +3 3+, ( )( 3) ( ) 0 γράψτε ως διάστημα ή ως ένωση διαστημάτων το σύνολο

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

Στατιστική Ι (ΨΥΧ-1202) ιάλεξη 3

Στατιστική Ι (ΨΥΧ-1202) ιάλεξη 3 (ΨΥΧ-1202) Λεωνίδας Α. Ζαμπετάκης Β.Sc., M.Env.Eng., M.Ind.Eng., D.Eng. Εmail: statisticsuoc@gmail.com ιαλέξεις: ftp://ftp.soc.uoc.gr/psycho/zampetakis/ ιάλεξη 3 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΨΥΧΟΛΟΓΙΑΣ Ρέθυμνο,

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

Μαθηματική Εισαγωγή Συναρτήσεις

Μαθηματική Εισαγωγή Συναρτήσεις Φυσικός Ραδιοηλεκτρολόγος (MSc) ο Γενικό Λύκειο Καστοριάς A. Μαθηματική Εισαγωγή Πράξεις με αριθμούς σε εκθετική μορφή Επίλυση βασικών μορφών εξισώσεων Συναρτήσεις Στοιχεία τριγωνομετρίας Διανύσματα Καστοριά,

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

ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 8. Πότε το γινόμενο δύο ή περισσοτέρων αριθμών παραγόντων είναι ίσο με το μηδέν ;

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης; 10. Τι ονομάζουμε Ευκλείδεια διαίρεση και τέλεια διαίρεση; Όταν δοθούν δύο φυσικοί αριθμοί Δ και δ, τότε υπάρχουν δύο άλλοι φυσικοί αριθμοί π και υ, έτσι ώστε να ισχύει: Δ = δ π + υ. Ο αριθμός Δ λέγεται

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

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

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

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

Ασκήσεις3 Διαγωνισιμότητα Βασικά σημεία Διαγωνίσιμοι πίνακες: o Ορισμός και παραδείγματα.

Ασκήσεις3 Διαγωνισιμότητα Βασικά σημεία Διαγωνίσιμοι πίνακες: o Ορισμός και παραδείγματα. Ασκήσεις 0 Ασκήσεις Διαγωνισιμότητα Βασικά σημεία Διαγωνίσιμοι πίνακες: o Ορισμός και παραδείγματα o H -στήλη του P P είναι E αν και μόνο αν η -στήλη του P είναι ιδιοδιάνυσμα του που αντιστοιχεί στην ιδιοτιμή

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

με Τέλος πάντων, έστω ότι ξεκινάει ένα άλλο υποθετικό σενάριο που απλά δεν διευκρινίζεται. Για το i) θα έχουμε , 2

με Τέλος πάντων, έστω ότι ξεκινάει ένα άλλο υποθετικό σενάριο που απλά δεν διευκρινίζεται. Για το i) θα έχουμε , 2 Άσκηση 75 Σε έναν οργανισμό, αρχικά υπάρχουν 04800 βακτήρια. Μετά από 1 ώρα υπάρχουν 10400 βακτήρια, μετά από ώρες 5100 βακτήρια, και γενικά ο αριθμός των βακτηρίων υποδιπλασιάζεται κάθε μια ώρα. α) Πόσα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9 Πολυώνυμα Διαίρεση πολυωνύμων

9 Πολυώνυμα Διαίρεση πολυωνύμων 4ο Κεφάλαιο 9 Πολυώνυμα Διαίρεση πολυωνύμων Α ΑΠΑΡΑΙΤΗΤΕΣ ΓΝΩΣΕΙΣ ΘΕΩΡΙΑΣ Ορισμοί Μονώνυμο του x ονομάζουμε κάθε παράσταση της μορφής ν αx όπου α R, * ν N και x μια μεταβλητή που μπορεί να πάρει οποιαδήποτε

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

ΟΙ πιο πάνω έννοιες εκφράζουν όπως λέμε τη μονοτονία της συνάρτησης.

ΟΙ πιο πάνω έννοιες εκφράζουν όπως λέμε τη μονοτονία της συνάρτησης. 3 Μονοτονία συναρτήσεων 3 Μονοτονία συναρτήσεων 3Α Μονοτονία συνάρτησης Έστω f μία συνάρτηση με πεδίο ορισμού Γνησίως αύξουσα συνάρτηση Η συνάρτηση f λέγεται γνησίως αύξουσα στο Δ αν για κάθε, Δ, με

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

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

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

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

Αλγόριθμοι. Μάρθα Σιδέρη. ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 20% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία.

Αλγόριθμοι. Μάρθα Σιδέρη. ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 20% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία. Αλγόριθμοι Μάρθα Σιδέρη epl333 lect 011 1 ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 0% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία. Οι πρόοδοι είναι προαιρετικές και το ποσοστό μετράει

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

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

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

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

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

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

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

7. Αν υψώσουμε και τα δύο μέλη μιας εξίσωσης στον κύβο (και γενικά σε οποιαδήποτε περιττή δύναμη), τότε προκύπτει

7. Αν υψώσουμε και τα δύο μέλη μιας εξίσωσης στον κύβο (και γενικά σε οποιαδήποτε περιττή δύναμη), τότε προκύπτει 8 7y = 4 y + y ( 8 7y) = ( 4 y + y) ( y) + 4 y y 4 y = 4 y y 8 7y = 4 y + ( 4 y) = ( 4 y y) ( 4 y) = 4( 4 y)( y) ( 4 y) 4( 4 y)( y) = 0 ( 4 y) [ 4 y 4( y) ] = 4 ( 4 y)( y + 4) = 0 y = ή y = 4) 0 4 H y

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

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

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

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

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

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

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

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

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

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

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

Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα

Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα Μάθημα: Μαθηματικά Διάλεξη 1 η : Εισαγωγή-Επανάληψη βασικών εννοιών (1 ο, 2 ο, 3 ο Κεφάλαιο) 11-10-2017, 18-10-2017 Διδάσκουσα: Αριστούλα Κοντογιάννη ΩΡΕΣ ΔΙΔΑΣΚΑΛΙΑΣ

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

τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε

τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε Κεφάλαιο 9: Αναδρομή Ο τρόπος με τον οποίο σκεφτήκαμε και σχεδιάσαμε τις συναρτήσεις στο προηγούμενο κεφάλαιο ακολουθούσε τη φιλοσοφία του προγραμματισμού που είχαμε αναπτύξει σε όλο το προηγούμενο βιβλίο.

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

2ογελ ΣΥΚΕΩΝ 2ογελ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β Λυκει(ου ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ

2ογελ ΣΥΚΕΩΝ 2ογελ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β Λυκει(ου ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ογελ ΣΥΚΕΩΝ ογελ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β Λυκει(ου ο ΓΕΛ ΣΥΚΕΩΝ ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Β ΛΥΚΕΙΟΥ ογελ ΣΥΚΕΩΝ ογελ ΣΥΚΕΩΝ ΣΧΟΛΙΚΟ ΕΤΟΣ -4 ΠΟΛΥΩΝΥΜΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Επιμέλεια: ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ

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

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

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

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

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Μέθοδοι μονοδιάστατης ελαχιστοποίησης Βασικές αρχές μεθόδων ελαχιστοποίησης Μέθοδοι μονοδιάστατης ελαχιστοποίησης Οι μέθοδοι ελαχιστοποίησης είναι επαναληπτικές. Ξεκινώντας από μια αρχική προσέγγιση του ελαχίστου (την συμβολίζουμε ) παράγουν

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