Ευχαριστίες. Β. Ζησιμόπουλος

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

Download "Ευχαριστίες. Β. Ζησιμόπουλος"

Transcript

1 ÂÆÁÃÇÃ ÁÃ ÈÇ ÁËÌÊÁ ÃÇÈ Æ ÈÁËÌÀÅÁÇ ÂÀÆÏÆ ÌÅÀÅ ÈÄÀÊÇ ÇÊÁÃÀËÃ ÁÌÀÄ ÈÁÃÇÁÆÏÆÁÏÆ ÌÇÅ ËÂ ÏÊÀÌÁÃÀËÈÄÀÊÇ ÇÊÁÃÀË Ð Ö ÑÓ ÈÓÐÙÔÐÓ Ø Ø º Ñ ÔÓÙÐÓ Ò ¾¼¼

2

3

4

5 Ευχαριστίες Ευχαριστώ θερμά τους συνεργάτες μου στο Τμήμα Πληροφορικής και Τηλεπικοινωνιών Μαρία Λιάζη, Γεράσιμο Πολλάτο, Ορέστη Τελέλη, Δημήτρη Ψούνη και τους μεταπτυχιακούς φοιτητές Γεράσιμο Δημητρίου, Χρήστο Σόφη, Αθανάσιο Περπερή και Πέτρο Χριστόπουλο, οι οποίοι βοήθησαν στην επιμέλεια και στην μείωση των λαθών αυτής της έκδοσης. Αναμφίβολα θα υπάρχουν και άλλα λάθη τα οποία ευελπιστούμε να ελαχιστοποιήσουμε στην επόμενη έκδοση. Β. Ζησιμόπουλος

6

7 È Ö Õ Ñ Ò 1 Εισαγωγή ΑνάλυσηΑλγορίθμων Ασυμπτωτικήπολυπλοκότητα ΚλάσειςΠολυπλοκότητας Ιδιότητεςασυμπτωτικώνσυμβολισμών Ασκήσεις Αναδρομή 1.1 Divide and Conquer Merge-Sort Binary Search Οιπύργοιτου Hanoi Ηακολουθία Fibonacci Οαλγόριθμος Min-Max QuickSort.... Ασυμπτωτικήπροσέγγισημερικώναθροισμάτων ΔένδραΑπόφασης The Master Theorem Το Masterθεώρημα Παραδείγματα Αναδρομικέςγραμμικέςεξισώσεις Γραμμικέςαναδρομέςτάξης k Αναδρομέςδιαμερίσεων Αναδρομέςπλήρεις,γραμμικέςήπολυωνυμικές Παραδείγματα Γραμμικών Αναδρομικών Εξισώσεων Γραμμικές Αναδρομικές Εξισώσεις με σταθερούς συντελεστές Εξισώσειςμετατρεπόμενεςσεγραμμικέςαναδρομές Σωροί 47.1 Δένδρα Ηδομήσωρού Υλοποίησημεπίνακαενόςσωρού Εισαγωγήενόςνέουστοιχείουστοσωρό Διαγραφήενόςστοιχείουαπότοσωρό

8 8 ΠΕΡΙΕΧ ΟΜΕΝΑ..4 Κατασκευήσωρού Ταξινόμησημετηβοήθειασωρού Κατακερματισμός (Hashing) Εισαγωγή Πίνακες Άμεσης Διευθυνσιοδότησης(Direct Address Tables) ΠίνακεςΚατακερματισμού (Hash Tables) Επίλυση Συγκρούσεων με Λίστες (Collision Resolution by Chaining) ΑνάλυσηΚατακερματισμούμεΛίστες ΣυναρτήσειςΚατακερματισμού (Hash Functions) ΗΜέθοδοςτηςΔιαίρεσης (Division Method) Η Πολλαπλασιαστική Μέθοδος (Multiplication Method) ΑνοιχτήΔιευθυνσιοδότηση (Open Addressing) ΓραμμικήΔιερεύνηση (Linear Probing) ΤετραγωνικήΔιερεύνηση (Quadratic Probing) ΔιπλόςΚατακερματισμός (Double Hashing) Ανάλυση του Κατακερματισμού Ανοιχτής Διευθυνσιοδότησης 68 5 Γράφοι Γενικά Ορισμοί Κατευθυνόμενοιγράφοι Μηκατευθυνόμενοιγράφοι Κύκλοικαιμονοπάτια ΕιδικέςΚατηγορίεςΓράφων ΠλήρειςΓράφοι ΔιμερείςΓράφοι ΚανονικοίΓράφοι Επίπεδοιγράφοι Υπογράφοι(subgraph) Συνεκτικοίγράφοι ΧορδικοίΓράφοι(Chordal Graphs) Δέντρα(trees) Πράξειςεπιτωνγράφων Ισομορφισμόςγράφων ΣυμπλήρωμαενόςΓράφου Διαγραφή(deletion) ΑποθήκευσηΓράφων ΠίνακαςΓειτνίασης ΠίνακαςΠρόσπτωσης ΛίστεςΓειτνίασης

9 ΠΕΡΙΕΧ ΟΜΕΝΑ 9 6 Αλγόριθμοι Γράφων ΕξερεύνησηΓράφων Γενικήμορφήενόςαλγορίθμουεξερεύνησης ΕξερεύνησηΠρώταΚατάΠλάτος ΕξερεύνησηΠρώταΚατάΒάθος Εφαρμογέςτωναλγορίθμωνεξερεύνησης Συνεκτικότητα ΤοπολογικήΤαξινόμηση Πράξειςσεασύνδετασύνολα(disjoint sets) ΕλάχισταΜονοπάτια Οαλγόριθμοςτου Dijkstra Οαλγόριθμοςτου Bellman Οαλγόριθμοςτου Bellmanγιαγράφουςχωρίςκύκλο ΔέντραΕπικάλυψης Πρόβλημα εύρεσης ενός δέντρου επικάλυψης ελάχιστου κόστους Αλγόριθμος Prim Αλγόριθμος Prim (nearest neighbour) Αλγόριθμος Kruskal ΔΕΕΚκαιτοπρόβληματουΠλανόδιουΠωλητή(TSP) ΆπληστοιΑλγόριθμοι ΓενικήμορφήενόςΆπληστουΑλγόριθμου Ανάθεσηενόςπόρου Αποθήκευσηαρχείωνσεδίσκους Το Διακριτό Πρόβλημα Σακιδίου (Discrete Knapsack) Το Συνεχές Πρόβλημα Σακιδίου (Continuous Knapsack) Δυναμικός Προγραμματισμός Εισαγωγικά Βασικάστοιχείατουδυναμικούπρογραμματισμού Βέλτιστα διασπώμενη δομή(optimal substructure) Επικαλυπτόμενα υποπροβλήματα(overlapping subproblems) Εφαρμογές Χρονοδρομολόγησηγραμμήςπαραγωγής Αλυσιδωτόςπολλαπλασιασμόςπινάκων Τοπρόβληματουσακιδίου Εξαντλητική Αναζήτηση Τοπρόβληματωνβασιλισσών NP-πληρότητα Εισαγωγή Οικλάσειςπολυπλοκότητας Pκαι NP ΠροβλήματαΑπόφασηςκαι NP πληρότητα Τοπρόβληματηςικανοποιησιμότητας

10 10 ΠΕΡΙΕΧ ΟΜΕΝΑ 10.4 ΠροβλήματαΣυνδυαστικήςΒελτιστοποίησης Προβλήματα NP δύσκολα Αναγωγές ΑγνώστουΚατάστασηςΠροβλήματα

11

12

13 Ã Ð Ó½ Û Η έννοια του αλγορίθμου είναι θεμελιώδης στον χώρο της επιστήμης των υπολογιστών. Χωρίς αλγόριθμους δεν υπάρχουν προγράμματα και χωρίς προγράμματα δεν υπάρχει τίποτα για να τρέξει στον υπολογιστή. Η δημιουργία αποδοτικών αλγορίθμων αποτέλεσε πρόκληση για τους επιστήμονες των περασμένων δεκαετιών. Οχι μόνο για την επίλυση με την χρήση υπολογιστή, προβλημάτων που ανέκυπταν σε όλους τους τομείς της επιστήμης, αλλά και για την συνεχή βελτίωσή τους, ώστε να τα λύνουν γρηγορότερα και καλύτερα. Σήμερα ακόμη περισσότερο, η ανάγκη σχεδίασης αποδοτικών αλγορίθμων, είναι μεγαλύτερη γιατί και τα προβλήματα που αντιμετωπίζει η ανθρωπότητα είναι μεγαλύτερα, δυσκολότερα και πιο περίπλοκα: Η αποκωδικοποίηση του ανθρωπίνου DNA, που αποσκοπεί στην αναγνώριση των περίπου γονιδίων του ανθρώπου. Η αναζήτηση των γονιδίων γίνεται σε περίπου εκατομμύρια βασικά χημικά ζευγάρια που δημιουργούν το ανθρώπινο γονιδίωμα, τα οποία είναι πεπλεγμένα και αταξινόμητα. Στο διαδίκτυο, του οποίου το ολοένα και αυξανόμενο μέγεθος δημιουργεί προβλήματα στον εντοπισμό της χρήσιμης πληροφορίας. Για παράδειγμα, οι μηχανές αναζήτησης πρέπει μέσα σε κλάσματα δευτερολέπτου να απαντούν στα ερωτήματά μας, ψάχνοντας σε μερικά δισεκατομμύρια ιστοσελίδων. Ακόμη περισσότερο, η δρομολόγηση πακέτων πληροφορίας πρέπει να βρίσκει σε μηδενικό χρόνο τον πιο γρήγορο δρόμο, ώστε να είμαστε ικανοποιημένοι με την ταχύτητα πρόσβασης των δεδομένων. Στο ηλεκτρονικό εμπόριο και γενικότερα στην επικοινωνία μέσω διαδικτύου, η εμπιστοσύνη στην υπηρεσία είναι προϋπόθεση, λόγω κινδύνου διαρροής προσωπικών δεδομένων(πιστωτικές κάρτες, διευθύνσεις κ.λ.π.). Το πρόβλημα απαιτεί τη δημιουργία γρήγορων και απαραβίαστων αλγορίθμων κρυπτογράφησης της διακινούμενης πληροφορίας. Στον εμπορικό κόσμο, η επιλογή στρατηγικών αποτελεί ένα περίπλοκο πρόβλημα. Για παράδειγμα, τα προβλήματα δρομολόγησης σε μια αεροπορική εταιρεί- 1

14 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η α, του σχεδιασμού οδικών αξόνων, της επιλογής μηχανών σε ένα εργοστάσιο, της επιλογής διαφημιστικής εκστρατείας, επιλέγονται από διαφορετικές δυνατές στρατηγικές με σκοπό την κοινή ωφέλεια ή το κέρδος. Αποδοτικοί αλγόριθμοι χρειάζονται ώστε να βρίσκεται η καλύτερη δυνατή στρατηγική από τις διαθέσιμες στρατηγικές, σε ικανοποιητικό χρόνο, παρά τα τεράστια μεγέθη δεδομένων των προβλημάτων. Τι είναι όμως ένας αλγόριθμος; Πως ξεχωρίζουμε έναν καλό από έναν κακό ½º½ Ò ÐÙ Ð ÓÖ ÑÛÒ αλγόριθμο; Πότε μπορούμε να κρίνουμε ότι ένας αλγόριθμος είναι ικανοποιητικός; Πως κατασκευάζονται αποδοτικοί αλγόριθμοι; Πως μπορούμε να εφαρμόζουμε έξυπνες αλγοριθμικές ιδέες στα προβλήματα που αντιμετωπίζουμε; Αυτά τα ερωτήματα είναι που πρέπει να απαντήσουμε, ώστε να κάνουμε τους αλγόριθμους ένα πολύ ισχυρό εφόδιο στο οπλοστάσιό μας. Ενας αλγόριθμος είναι μια υπολογιστική διαδικασία που παίρνει μία ή περισσότερες τιμές σαν είσοδο και παράγει μία ή περισσότερες τιμές σαν έξοδο. Ετσι ένας αλγόριθμος είναι μία ακολουθία υπολογιστικών βημάτων που μετασχηματίζει την είσοδο σε έξοδο. Η εκτέλεση ενός αλγορίθμου πρέπει να είναι τυφλή εφαρμογή των κανόνων ή των υπολογιστικών βημάτων από τα οποία αυτός αποτελείται. Κανένας αλγόριθμος δηλαδή δεν σκέφτεται αλλά ακολουθεί βήμα προς βήμα τους κανόνες του. Ενας αλγόριθμος καλά ορισμένος πρέπει να έχει τα εξής χαρακτηριστικά: 1. Να είναι πεπερασμένος, δηλαδή να τερματίζει πάντα μετά από έναν πεπερασμένο αριθμό βημάτων.. Να είναι επακριβώς ορισμένος. Κάθε βήμα του αλγορίθμου πρέπει να είναι επακριβώς ορισμένο, δηλαδή οι ενέργειες που πρέπει να γίνουν δεν πρέπει να είναι αμφίσημες. Για τον λόγο αυτό για την περιγραφή του αλγορίθμου ακολουθείται κάποια γλώσσα προγραμματισμού(που προσφέρει τον επακριβή ορισμό των εννοιών), ή κάποιου είδους ψευδογλώσσα.. Τα δεδομένα εισόδου, εξόδου και τα βοηθητικά δεδομένα που δημιουργούνται κατά τη διάρκεια εκτέλεσης του αλγορίθμου, πρέπει να κωδικοποιούνται από κάποιο πεπερασμένο αριθμό συμβόλων(π.χ., το σύνολο {0, 1}). 4.Ναείναιορθός.Δηλαδή,ηέξοδοςναείναιλύσηστουπόμελέτηπρόβλημα. Η ορθότητα του αλγορίθμου θα πρέπει να είναι δυνατόν να αποδειχθεί με μαθηματικά εργαλεία. Μία διαδικασία που έχει όλα τα χαρακτηριστικά που αναπτύξαμε αλλά δεν είναι σίγουρο αν είναι πεπερασμένη, ονομάζεται υπολογιστική μέθοδος. Για παράδειγμα, ένα πρόγραμμα που υπολογίζει επακριβώς τα ψηφία του π δεν είναι αλγόριθμος γιατί το πρόγραμμα αυτό δεν τερματίζει ποτέ, δεν πρόκειται κάποια στιγμή(έστω σε άπειρο χρόνο) να ολοκληρώσει τον υπολογισμό και να παράγει μία έξοδο σαν

15 1.1. ΑΝ ΑΛΥΣΗΑΛΓΟΡ ΙΘΜΩΝ αποτέλεσμα. Αντίθετα, αλγόριθμο μπορούμε να χαρακτηρίσουμε ένα πρόγραμμα πουυπολογίζειταπρώτα 1000 ψηφίατου π. Επιπρόσθετα δεν σημαίνει ότι κάθε αλγόριθμος μπορεί να προγραμματιστεί, δηλαδή μια καλά ορισμένη αλγοριθμική διαδικασία δεν είναι απαραίτητο ότι είναι προγραμματίσιμη. Αυτό μπορεί να συμβαίνει λόγω περιορισμού της χρησιμοποιούμενης γλώσσας, αδυναμίας των υπολογιστών να εκφράσουν μαθηματικές έννοιες κ.λ.π. Ωστόσο οι εφαρμογές και τα παραδείγματα που θα χρησιμοποιήσουμε στην συνέχεια, δεν θα υπεισέρχονται σε αυτές τις ειδικές κατηγορίες. Οπότε χάριν απλότητας θα εννοήσουμε ταυτόσημες τις έννοιες αλγόριθμος και πρόγραμμα. Ενα πρόγραμμα θα είναι χρήσιμο, αν εκτελείται σε λογικό χρόνο(δηλαδή δεν χρειάζεται αιώνες για να ολοκληρωθεί) και δεσμεύει λογικό χώρο μνήμης(όχι παραπάνω από όσο μπορούμε να έχουμε σε ένα καθημερινό σύστημα). Για να μπορούμε να διαχωρίσουμε τα χρήσιμα από τα άχρηστα προγράμματα, θα πρέπει να βρεθεί ένας τρόπος(μέτρο) για τον χαρακτηρισμό του προγράμματος. Αυτός είναι η πολυπλοκότητα χρόνου(δηλαδή πόσο γρήγορος είναι ο αλγόριθμος), και η πολυπλοκότητα χώρου(δηλαδή πόση μνήμη χρειάζεται το πρόγραμμα για να τρέξει). Η πολυπλοκότητα ενός αλγορίθμου εκφράζεται σαν συνάρτηση της διάστασης του υπό μελέτη προβλήματος. Η διάσταση του προβλήματος είναι το πλήθος των ατομικών δεδομένων για επεξεργασία, όπως για παράδειγμα το πλήθος των στοιχείων μιας ακολουθίας, ή ενός πίνακα, τα bits ενός αριθμού, κ.ο.κ. Ας δούμε τώρα την έννοια της πολυπλοκότητας με ένα παράδειγμα: Το Πρόβλημα της Αναζήτησης Δίνεταιμιαακολουθία nστοιχείων S = (a 1, a,..., a n )καιέναστοιχείο x. Είναιτο xμέλοςτου Sκαιανναισεποιαθέση; Ενας απλός αλγόριθμος είναι ο εξής: Ψάξε ένα ένα τα στοιχεία της ακολουθίας. Αν βρεις αυτό που ψάχνεις σταμάτα. Ας τον διατυπώσουμε σε αλγοριθμική γλώσσα (ψευδογλώσσα) όπως φαίνεται στο σχήμα 1.1. Σειριακη Αναζητηση (S, x) 1. i = 1. while i n + 1 and a i x do. i = i end while 5. if i > n 6. return 1 7. else 8. return i 9. end if Σχήμα 1.1: Αλγόριθμος αναζήτησης ενός στοιχείου x σε μονοδιάστατο πίνακα S.

16 4 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η Πόσες πράξεις θα κάνει ο αλγόριθμος αυτός για κάποια δεδομένα εισόδου; Αν το xείναιτοπρώτοστοιχείοτηςακολουθίας,τότεθακάνεισυγκρίσεις(απότον πρώτοέλεγχοτης WHILEκαιτηνεντολή IF)καιμίακαταχώρηση(την i = 1). Αντο xείναιτοδεύτεροστοιχείοτηςακολουθίας,τότεθακάνει5συγκρίσειςκαι καταχωρήσεις και γενικά αν είναι το i-οστό στοιχείο θα κάνει i + 1 συγκρίσεις και i + 1καταχωρήσεις. Αντίθετα,αντο xδενανήκειστηνακολουθία,τότεο αλγόριθμος θα εκτελέσει n συγκρίσεις(στην τελευταία επανάληψη υποθέτουμε ότιθακάνεικαιτιςδύοσυγκρίσεις)και n + 1καταχωρήσεις. Η πρώτη περίπτωση είναι η καλύτερη δυνατή(δηλαδή ο αλγόριθμος θα εκτελέσει τον ελάχιστο αριθμό βημάτων). Η δεύτερη περίπτωση είναι η χειρότερη δυνατή (θα εκτελέσει το μέγιστο δυνατό αριθμό βημάτων). Ανθεωρήσουμεως D n τοσύνολοτωνδιαφορετικώνεισόδωνστοπρόβλημα και d D n μιαείσοδότου,τότεοιορίζονταιταπαρακάτωμέτρα,κάθεένααπότα οποία μας δίνει μία διαφορετική αίσθηση της αποδοτικότητάς του αλγορίθμου: Πολυπλοκότητα στην βέλτιστη περίπτωση: C βπ (n) = min{κόστος(d), d D n } Πολυπλοκότητα στην χείριστη περίπτωση: C χπ (n) = max{κόστος(d), d D n } Πολυπλοκότητα κατά μέσο όρο: C µo (n) = d D n p(d)κόστος(d) Η κατά μέσο όρο πολυπλοκότητα, είναι πόσες πράξεις κάνει(ή πόση μνήμη δεσμεύει) ο αλγόριθμος κατά μέσο όρο. Ετσι μετράμε τις πράξεις(κόστος(d)) πουκάνειοαλγόριθμοςγιακάθεδυνατήείσοδο d D n πουδίνεταιμεπιθανότητα p(d). Για παράδειγμα, έστω ότι σαν ακολουθία μας δίνεται η ταξινομημένη ακολουθία 1,..., nκαισανστοιχείοπροςεξερεύνησημαςδίνεταιισοπίθαναένααπότα {1,,..., n}.τότεηπολυπλοκότητακατάμέσοόρο(γιασυγκρίσειςμόνο)είναι: C µo (n) = 1 n + 1 n n n = 1 n i=1 (i + 1) + n + n (n + 1) + (n + ) n = n + 5 Βλέπουμε λοιπόν ότι όσον αφορά τις συγκρίσεις(που για τον αλγόριθμο αυτό είναι στοιχειώδης πράξη, δηλαδή αυτή που γίνεται περισσότερο και είναι υπολογιστικάβαρύτερηαπόκάθεάλλη)οαλγόριθμοςέχει στηνβέλτιστη, n + στην χείριστη και περίπου 1.5n κατά μέσο όρο. Θα μπορούσαμε να πούμε ότι αντίστοιχα κάθε μέγεθος από αυτά μας δίνει μια αισιόδοξη, μια απαισιόδοξη και μία ρεαλιστική άποψη του χρόνου εκτέλεσης του προβλήματος. Ωστόσο όλα μαζί είναι χρήσιμα για να έχουμε μία ολοκληρωμένη άποψη για τον αλγόριθμο. Ωστόσο, δεν είναι απαραίτητο να έχουμε τέτοιες αποκλίσεις ανάμεσα στις τρεις πολυπλοκότητες. Ας θεωρήσουμε το ακόλουθο πρόβλημα:

17 1.. ΑΣΥΜΠΤΩΤΙΚ ΗΠΟΛΥΠΛΟΚ ΟΤΗΤΑ 5 Εσωτερικό γινόμενο δύο διανυσμάτων Εστω a = (a i ), b = (b i )διανύσματατου R n. Ζητείταιτοεσωτερικόγινόμενο αυτών. Εσωτερικο Γινομενο (a, b) 1. sp = 0. for i = 1 to n do. sp = sp + a i b i 4. end for 5. return sp Σχήμα 1.: Υπολογισμός του εσωτερικού γινομένου δύο ίσης διάστασης διανυσμάτων a και b. Σε αυτόν τον αλγόριθμο ανεξάρτητα από τους αριθμούς των ακολουθιών θα γίνουν n προσθέσεις, n πολλαπλασιασμοί και n καταχωρήσεις. Άρα ισχύει ½º¾ ÙÑÔØÛØ ÔÓÐÙÔÐÓ Ø Ø C βπ (n) = C χπ (n) = C µo (n) = n Οπως θα δούμε παρακάτω, δεν χρειάζεται να κάνουμε καταμέτρηση όλων των διαφορετικών τύπων πράξεων σε έναν αλγόριθμο, αλλά αρκεί η υπολογιστικά βαρύτερη πράξη. Ακόμη πιο απλά η καταμέτρηση των εκτελούμενων εντολών αρκεί για τον υπολογισμό της πολυπλοκότητας του αλγορίθμου. Εστωέναπρόβλημαμεδιάσταση n(π.χ. ηαναζήτησησεμιαακολουθία)και έστωκαιδύοαλγόριθμοιπουτολύνουν,οaμεπολυπλοκότητα 100nκαιοBμε πολυπλοκότητα n.θεωρώνταςσανκαλύτεροαυτόνπουκάνειλιγότερεςπράξεις για την ίδια είσοδο μπορούμε να διακρίνουμε τρεις περιπτώσεις ανάλογα με το n: = 100 Οι Α,Β έχουν ίδια πολυπλοκότητα n : < 100 ΟΒείναιαποδοτικότεροςαπότονΑ > 100 οαείναιαποδοτικότερόςαπότονβ Παρατηρούμε ότι μετά από ένα κατώφλι, όσο το n γίνεται μεγαλύτερο τόσο ο αλγόριθμος A γίνεται καλύτερος του B. Ακόμη περισσότερο ο ρυθμός με τον οποίογίνεταιοaκαλύτεροςτου B αυξάνειγραμμικάσεσχέσημετο n. Για παράδειγμα,έστωμιαμηχανήπουεκτελεί 10 6 εντολέςτοδευτερόλεπτο.για n = 1000οαλγόριθμος Aεκτελείταισε 100n 10 6 = 0.1δευτερόλεπτακαιοBσε n 10 6 = 1δευτερόλεπτο,δηλαδήείναι10φορέςπιοαργός.Για n = 10000ο Βείναι100φορέςπιοαργός,κ.ο.κ. Άρα όσο αυξάνει το n τόσο η διαφορά της αποδοτικότητας γίνεται μεγάλη. Λαμβάνοντας υπ όψιν ότι μας ενδιαφέρει περισσότερο τι γίνεται για μεγάλες διαστάσεις δεδομένων και ότι μετά από ένα κατώφλι η τάξη της συνάρτησης πολυπλοκότητας

18 6 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η T T cg(n) f(n) f(n) cg(n) n 0 n n 0 n f(n) = O(g(n)) f(n) = Ω(g(n)) T c g(n) f(n) c 1 g(n) n 0 f(n) = Θ(g(n)) n Σχήμα 1.: Γραφική Απεικόνιση των συμβολισμών O, Ω, Θ είναι αυτή που καθορίζει την αποδοτικότητα του αλγορίθμου½οδηγούμαστε στην εισαγωγή συμβολισμών, που θα ορίζουν την συμπεριφορά συναρτήσεων(πολυπλοκότητας) ασυμπτωτικά. Οι συμβολισμοί αυτοί διαβάζονται f(n) ίσον(μεγάλο) όμικρον του g(n), ωμέγα του g(n) και θήτα του g(n) και ορίζονται ως εξής: f(n) = O(g(n))ανυπάρχουν c, n 0 > 0έτσιώστε f(n) cg(n)γιακάθε Òô Ñ ÒÙÔ ÖÕÓÙÒÑ Ð Ø Ö ÙØ Ñ Ö ÙÒ Ñ ôòóòø Ö Ø º Ø ØÓ ÙÒ ÖØ ÔÓÐÙÔÐÓ Ø Ø Ò Ñ ÒÞÓÒØ Ø ÒÔÖ Ü Ñ Ø ÕÒ ØÓ Ð Ö ÑÓÙ n > n 0 f(n) = Ω(g(n))ανυπάρχουν c, n 0 ;Ï Ø Ó > 0έτσιώστε f(n) cg(n)γιακάθε n > n 0 f(n) = Θ(g(n))ανυπάρχουν c 1, c, n 0 > 0έτσιώστε 0 c 1 g(n) f(n) ½Â ÛÖ Ø Ò Ð Ö ÑÓÔÓÐÙÔÐÓ Ø Ø n Ò Ð Ø ÖÓ Ô Ò Òn

19 1.. ΑΣΥΜΠΤΩΤΙΚ ΗΠΟΛΥΠΛΟΚ ΟΤΗΤΑ 7 c g(n)γιακάθε n > n 0. Εναλλακτικά,αν f(n) = O(g(n))και f(n) = Ω(g(n)),τότε f(n) = Θ(g(n)) Τα O(g(n)), Ω(g(n)), Θ(g(n)) είναι σύνολα συναρτήσεων, δηλαδή είναι όλες οι συναρτήσεις για τις οποίες ισχύει μετά από κάποιο κατώφλι, ότι η f φράσσεται αντίστοιχα από πάνω, από κάτω και είναι ίδιας τάξης με την g. Στην πραγματικότητα δηλαδή,έχουμεότι f(n) O(g(n)), f(n) Ω(g(n))ήf(n) Θ(g(n))αλλάέχει επικρατήσει ο συμβολισμός της ισότητας. Η ισότητα είναι καθαρά συμβολισμός και δεν θα πρέπει να εξάγουμε εσφαλμένα συμπεράσματα όπως παραδείγματος χάριν: f(n) = O(n)και f(n) = O(n )άρα O(n) = O(n ). Μπορούμεναδούμετην σχέση φράγματος που προκύπτει από τους ορισμούς, στις γραφικές παραστάσεις του σχήματος 1.. Ας δούμε την ασυμπτωτική συμπεριφορά της συνάρτησης πολυπλοκότητας f(n) = n 100n + 6: n 100n + 6 = O(n )αφού n 100n + 6 < n για n > 0. n 100n + 6 = O(n )αφού n 100n + 6 < n για n > 0. n 100n + 6 O(n)αφού c : n 100n + 6 < cnγια n > c. n 100n + 6 = Ω(n )αφού n 100n + 6 >.99n για n > n 100n + 6 = Ω(n)αφού n 100n + 6 > ( )nγια n > n 100n + 6 Ω(n )αφού c : n 100n + 6 > cn για n > n 0. n 100n+6 = Θ(n )αφού n 100n+6 = Ω(n )και n 100n+6 = O(n ) Ορίζουμε και ασυμπτωτικά σύμβολα που ορίζουν ότι τα φράγματα είναι αυστηρά: f(n) = o(g(n))ανγιακάθε c > 0,υπάρχει n 0 έτσιώστε f(n) < cg(n)για κάθε n > n 0 f(n) = ω(g(n))ανγιακάθε c > 0,υπάρχει n 0 έτσιώστε f(n) > cg(n)για κάθε n > n 0 Ηδιαφοράτουσυμβολισμού oαπότοσυμβολισμό Oείναιλεπτή. Στονσυμβολισμό oυπάρχειηέννοιατηςαυστηρότητας,δηλαδήαν f(n) = o(g(n)),τότε στον ορισμό ισχύει αυστηρή ανισότητα. Αντίθετα όταν f(n) = O(g(n)) ισχύει ανισοισότητα. Επίσης, στο συμβολισμό O υπάρχουν κάποιες σταθερές c για την οποία να ισχύει η ανισότητα. Ενώ στον o για κάθε σταθερά c ισχύει η ανισότητα. Γιαπαράδειγμα n + n 1 = O(n ) = o(n ) o(n ). Στηνπραγματικότητα δηλαδή,όταν f(n) = o(g(n))έχουμεότιηf(n)είναιαμελητέασεσχέσημετην g(n).

20 ½º¾º½ÃÐ ÈÓÐÙÔÐÓ Ø Ø 8 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η Η κατάταξη των συναρτήσεων πολυπλοκότητας σε γενικότερα σύνολα συναρτήσεων μας παρέχει μία ομαδοποίηση υψηλού επιπέδου, μέσω της οποίας μπορούμε να κρίνουμε πότε ένας αλγόριθμος είναι καλύτερος από έναν άλλον, αν είναι αποδοτικός κ.λ.π. Ας δούμε ένα παράδειγμα. Εστω ένα πρόβλημα Π και τέσσερις αλγόριθμοι A, B, C, D που το λύνουν με αντίστοιχες συναρτήσεις πολυπλοκότητας που α- συμπτωτικάφράσσονταιωςεξής: T A (n) = O(n), T B (n) = O(n ), T C (n) = O(n ) και T D (n) = n. Καθώςηδιάστασητουπροβλήματοςαυξάνει,οιαπαιτούμενες πράξεις αυξάνουν, όπως φαίνεται στην γραφική παράσταση του σχήματος 1.4. T(n) T D (n) T C (n) T B (n) T A (n) n Σχήμα 1.4: Αύξηση πολυπλοκότητας με την αύξηση του μεγέθους του προβλήματος για 4 διαφορετικούς αλγορίθμους Καθώς το n αυξάνει η απόκλιση των απαιτούμενων πράξεων γίνεται περισσότερο φανερή. Ο ρυθμός με τον οποίο αυξάνουν οι πράξεις ακολουθεί την κατάταξη: T A (n) < T B (n) < T C (n) < T D (n) ιδιαίτεραδε οαλγόριθμος D παρουσιάζει πολύ μεγαλύτερο ρυθμό αύξησης από τους άλλους. Η μεγάλη αυτή πολυπλοκότητα, καθιστά τον αλγόριθμο D τόσο αδύναμο, ώστε να μπορεί να χρησιμοποιηθεί για την επίλυση μόνο μικρών στιγμιοτύπων του προβλήματος. Για να δούμε όμως πόσο πραγματικά μικρά είναι τα στιγμιότυπα που μπορεί αυτόςναλύσει. Εστωμιαμηχανήπουεκτελεί 10 7 πράξειςτοδευτερόλεπτο(10 MIPS)καιέστωότιαφήνουμετουςαλγορίθμους A, B, C, Dνατρέξουνγια 0.1 δευτερόλεπτα,10λεπτάκαι1ημέρα.ηδιάστασηπουθαλύσουνφαίνεταιστονπίνακα 1.1, όπου γίνεται εμφανής η αδυναμία του αλγορίθμου D να λύσει προβλήματα μεγάλης διάστασης. Αλγόριθμοι σαν τον D είναι συχνά οι καλύτεροι δυνατοί για έναν πρόβλημα, ιδίως στα αποκαλούμενα N P-δύσκολα προβλήματα(που θα δούμε αργότερα), στα οποία δεν μπορούμε μέχρι σήμερα να βρούμε καλούς(πολυωνυμικούς) αλγορίθμους που τα επιλύουν βέλτιστα.

21 1.. ΑΣΥΜΠΤΩΤΙΚ ΗΠΟΛΥΠΛΟΚ ΟΤΗΤΑ 9 Αλγόριθμος 0.1 sec 10 min 1 day T A (n) = O(n) T B (n) = O(n ) T C (n) = O(n ) T D (n) = O( n ) 0 9 Πίνακας 1.1: Διάσταση προβλημάτων που εκτελούνται από τους 4 αλγόριθμους σε σταθερό χρόνο από μια μηχανή 10 MIPS Για παράδειγμα έστω το εξής N P δύσκολο πρόβλημα: Μία επιχείρηση έχει επιλέξει n τοποθεσίες για να χτίσει n εργοστάσια. Κάθε εργοστάσιο θα έχει έναν κύκλοπαραγωγήςυλικώνκαιθαπρέπειναλαμβάνεικαιναστέλνειυλικάσταάλλα εργοστάσια πληρώνοντας το ανάλογο κόστος μεταφοράς. Αν σε κάθε τοποθεσία μπορεί να χτιστεί ακριβώς ένα εργοστάσιο, σε ποια τοποθεσία πρέπει να χτιστεί κάθε εργοστάσιο, ώστε να ελαχιστοποιείται το κόστος της μεταφοράς των υλικών; Αν δημιουργήσουμε όλους τους δυνατούς συνδυασμούς τοποθεσιών- εργοστασίων(πολυπλοκότητας n!) και μετρήσουμε το συνολικό κόστος για κάθε συνδυασμό, ώστε να επιλέξουμε αυτόν που έχει ελάχιστο κόστος, τότε ακόμη και για μικρά στιγμιότυπα του προβλήματος, για παράδειγμα με διάσταση 80 και με μία μηχανή πουεξετάζει 10 7 συνδυασμούςτοδευτερόλεπτο,θαχρειαστούνπερίπου χρόνια, ένας αριθμός πολύ μεγαλύτερος από τα μόρια του γαλαξία μας! Σεάλλαπάλιπροβλήματα(πουδενείναι NP δύσκολα),ηεύρεσηενόςαποτελεσματικού αλγορίθμου μπορεί να βελτιώσει θεαματικά τον χρόνο επίλυσης. Για παράδειγμα έστω το εξής πρόβλημα ανάθεσης εργασιών: Δίνεται ένα σύνολο υπαλλήλων και ένα σύνολο εργασιών οι οποίες πρέπει να ανατεθούνστουςυπαλλήλους.κάθεεργασία iστοιχίζει c ij ότανανατίθεταιστον υπάλληλο j.μίαεργασίαθαπρέπειναανατεθείσεένανμόνουπάλληλοκαικάθε υπάλληλος θα εκτελέσει ακριβώς μία εργασία, ενώ έχουμε ίδιο πλήθος εργασιών και υπαλλήλων. Να βρεθεί η ανάθεση που ελαχιστοποιεί το συνολικό κόστος ανάθεσης. Και εδώ, η δημιουργία όλων των δυνατών συνδυασμών εργασιών- υπαλλήλων (εκθετικός αλγόριθμος) ακόμη και για μικρά στιγμιότυπα του προβλήματος, για παράδειγμα με 0 υπαλλήλους και 0 εργασίες, θα χρειαστεί χιλιετίες για να ολοκληρωθεί. Εντούτοις, ο Hungarian αλγόριθμος, ο οποίος είναι πολυωνυμικός αλγόριθμος,θαχρειαστείπερίπουμόνο 1.95 secσεμίαμηχανήπουελέγχει 10 6 συνδυασμούς το δευτερόλεπτο. Γίνεται λοιπόν εμφανές, ότι η ανάπτυξη αποδοτικών αλγορίθμων είναι μία αναγκαιότητα παρά την ραγδαία ανάπτυξη της ταχύτητας των υπολογιστών. Σύμφωνα με τον νόμο του Moore(που ακολουθείται με θαυμαστή συνέπεια τις τελευταίες δεκαετίες) η ταχύτητα των επεξεργαστών διπλασιάζεται κάθε 18 μήνες. Αυτό σημαίνει ότι σε15χρόνιααπόσήμερα,οιεπεξεργαστέςθαέχουνγίνει1000φορέςπιογρήγοροι. Αν σήμερα σε σταθερό χρόνο λύνουμε μέχρι διάσταση n με αλγορίθμους δεδομένης πολυπλοκότητας, τότε μετά από 15 χρόνια θα λύνουμε στον ίδιο χρόνο τις διαστάσεις που φαίνονται στον πίνακα 1..

22 10 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η Πολυπλοκότητα Σημερινή Διάσταση Μελλοντική Διάσταση O(n) n 1000 n O(n ) n n O(n ) n 10 n O(n 4 ) n 6 n O( n ) n n + 10 O( n ) n n + 8 O(n!) n n + 7 Πίνακας 1.: Αύξηση της διάστασης του προβλήματος που επιλύεται σε σταθερό χρόνο από έναν αλγόριθμο δεδομένης πολυπλοκότητας σε μια μηχανή 1000 φορές ταχύτερη. 1 Σταθερή πολυπλοκότητα log(n) Λογαριθμική πολυπλοκότητα log k (n) Πολυλογαριθμικήπολυπλοκότηταόταν kμίασταθερά n Γραμμικήπολυπλοκότητα(πχ, f(n) = an + b,με a, bσταθερές) nlogn n Τετραγωνικήπολυπλοκότητα n Κυβικήπολυπλοκότητα n k Πολυωνυμικηπολυπλοκότητα,με kμίασταθερά, δηλ. f(x) = a k n k a 0 a n Εκθετικήπολυπλοκότητα 1 < a < n Εκθετικήπολυπλοκότητα a n Εκθετικήπολυπλοκότητα a > n! Παραγοντική πολυπλοκότητα n n Υπερεκθετικήπολυπλοκότητα Πίνακας 1.: Χαρακτηριστικές κλάσεις πολυπλοκότητας Άρα ο ισχυρισμός ότι η ανάγκη ανάπτυξης αποδοτικών αλγορίθμων θα εκλείψει μπροστά στις αυξητικές αποδόσεις των αυριανών υπολογιστών, αποτελεί μία πλήρως εσφαλμένη θέση. Κατάταξη κλάσεων πολυπλοκότητας Με βάση την παραπάνω συζήτηση, είναι δυνατή η κατηγοριοποίηση των συναρτήσεων πολυπλοκότητας σε κλάσεις, οι οποίες μας παρέχουν ένα μέτρο αποδοτικότητας αλγορίθμων(πίνακας 1.). Η διαχωριστική γραμμή χωρίζει τους αποδοτικούς αλγόριθμους(πολυωνυμικούς) από τους μη αποδοτικούς(εκθετικούς). Οι εκθετικοί αλγόριθμοι χρειάζονται υπερβολικό χρόνο και δεν μπορούμε να τους εμπιστευθούμε ούτε για μικρές τάξεις δεδομένων για πολλά προβλήματα. Γενικά, οι κλάσεις πολυπλοκότητας έχουν σαν μέλη τους συναρτήσεις. Ω-

23 1.. ΑΣΥΜΠΤΩΤΙΚ ΗΠΟΛΥΠΛΟΚ ΟΤΗΤΑ 11 στόσο ανάλογα με ποιον ασυμπτωτικό συμβολισμό χρησιμοποιούμε, υπάρχει και μια συνολοθεωρητική σχέση. Ηκλάσηπολυπλοκότητας O(n)είναιυποσύνολοτης O(n )πουείναιυποσύνολοτης O(n )κ.ο.κ.ηαξίωσηαυτήείναιλογική:έναςαλγόριθμοςπουφράσσεται ασυμπτωτικά από μία γραμμική συνάρτηση, φράσσεται και από μία τετραγωνική, η οποία φράσσεται από μία κυβική κ.ο.κ. Αντίστροφα,ηκλάσηπολυπλοκότητας Ω(n)είναιυπερσύνολοτης Ω(n ),δηλαδή αν μια συνάρτηση φράσσεται ασυμπτωτικά από κάτω από μία τετραγωνική συνάρτηση, τότε φρασσεται και από μία γραμμική. Αυτή η συνολοθεωρητική σχέση υποσυνόλου, δεν ισχύει για το συμβολισμό Θ. Εδώ, κάθε κλάση πολυπλοκότητας είναι ξένη με οποιανδήποτε άλλη. Δηλαδή, ανμιασυνάρτησηείναι Θ(n)τότεδενανήκεισεκαμίαάλληκλάσημεσυμβολισμό Θ. Η έννοια του βέλτιστου αλγορίθμου Ας θεωρήσουμε ένα οποιοδήποτε πρόβλημα και έστω ότι υπάρχουν γι αυτό τρεις αλγόριθμοι που το λύνουν. Τότε ο καλύτερος από αυτούς, θα είναι εκείνος που έχει την καλύτερη πολυπλοκότητα στην χείριστη περίπτωση. Πως όμως θα ξέρουμε αν υπάρχει καλύτερος αλγόριθμος από αυτούς, δηλαδή έ- νας αλγόριθμος που έχει καλύτερη πολυπλοκότητα και δεν έχει ακόμη ανακαλυφθεί, αν δηλαδή αξίζει τον κόπο να καταβάλλουμε προσπάθεια για την εύρεση ενός ακόμη καλύτερου αλγόριθμου; Αν για ένα πρόβλημα, οποιοσδήποτε αλγόριθμος που το επιλύει έχει ασυμπτωτική πολυπλοκότητα Ω(f(n)) και έχουμε ήδη έναν αλγόριθμο με ασυμπτωτική πολυπλοκότητα O(f(n)) τότε ο αλγόριθμος αυτός είναι βέλτιστος(ασυμπτωτικά). Αυτό σημαίνει ότι αν για κάποιο πρόβλημα έχει αποδειχθεί ότι χρειάζεται το λιγότερο f(n) πραξεις και έχουμε κατασκευάσει αλγόριθμο που κάνει το πολύ αυτές τις πράξεις, τότε ο αλγόριθμος είναι βέλτιστος. Ενα παράδειγμα προβλήματος στο οποίο έχει βρεθεί ο βέλτιστος, ως προς την πολυπλοκότητα, αλγόριθμος είναι το πρόβλημα της ταξινόμησης με συγκρίσεις. Αποδεικνύεται εύκολα, ότι οποιοσδήποτε αλγόριθμος που βασίζεται σε συγκρίσεις πρέπει να κάνει το λιγότερο n log n συγκρίσεις. Ο αλγόριθμος της ταξινόμησης με σωρό (heapsort) και της γρήγορης ταξινόμησης (quicksort) επιτυγχάνουν πολυπλοκότητα O(n log n)κατάμέσοόρο,επομένωςείναιβέλτιστοιωςπροςτηνπολυπλοκότητα κατά μέσο όρο. Ο αλγόριθμος ταξινόμησης με σωρό έχει πολυπλοκότητα O(n log n) και στην χείριστη περίπτωση, άρα είναι βέλτιστος ασυμπτωτικά και στην χείριστη περίπτωση. Αντίθετα ο αλγόριθμος της γρήγορης ταξινόμησης, στην χείριστηπερίπτωση(π.χ.ήδηταξινομημένηακολουθία)έχειπολυπλοκότητα O(n ) άρα δεν είναι βέλτιστος αλγόριθμος. Ωστόσο η απόδειξη ύπαρξης μη τετριμμένων κάτω φραγμάτων για τις πράξεις ενός αλγορίθμου, είναι μια όχι εύκολη διαδικασία. Θα δούμε τώρα ένα δεύτερο παράδειγμα μη βέλτιστου αλγορίθμου. Θεωρούμε το πρόβλημα πολλαπλασιασμού τετραγωνικών πινάκων, στο οποίο μαςδίνονταιδύοπίνακες A n n και B n n καιμαςζητείταιναυπολογίσουμετο

24 1 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η γινόμενοτους C n n : c ij = n a ik b kj, 1 i, j n k=1 Ενας προφανής αλγόριθμος που υπολογίζει το γινόμενο είναι αυτός του σχήματος 1.5. Πολλαπλασιασμος Πινακων (A, B) 1. for i = 1 to n do. for j = 1 to n do. c ij = 0 4. for k = 1 to n do 5. c ij = c ij + a ik b kj 6. end for 7. end for 8. end for 9. return C Σχήμα 1.5: Πολλαπλασιασμός δύο τετραγωνικών πινάκων διάστασης n. Οαλγόριθμοςαυτόςκάνει n πολλαπλασιασμούς(πουείναιηστοιχειώδης πράξη)άραέχειπολυπλοκότητα O(n ). Ωστόσοεπιστήμονεςπαρατήρησανότι μπορούσαν να ελαττώσουν το πλήθος των πολλαπλασιασμών με κάποιες έξυπνες πράξειςκαιέτσιτο1969οstrassenπαρουσίασεαλγόριθμοπουέκανε O(n.81 ) πολλαπλασιασμούς και ο καλύτερος αλγόριθμος μέχρι σήμερα είναι των Coopersmith ½º¾º¾Á Ø Ø ÙÑÔØÛØ ôò ÙÑ ÓÐ ÑôÒ & Winogradτου1986με O(n.79 )πολλαπλασιασμούς.καιοιπαραπάνω αλγορίθμοι για τον πολλαπλασιασμό πινάκων δεν είναι βέλτιστοι. Είναι λογικό ότι οποιοσδήποτε αλγόριθμος που λύνει το πρόβλημα αυτό, πρέπει νακάνει Ω(n )βήματα,αφούτόσοςχρόνοςαπαιτείταιμόνογιατοσάρωματων δύο πινάκων εισόδου. Άρα ο αλγόριθμος των Coopersmith & Winograd δεν είναι βέλτιστος ως προς την πολυπλοκότητα. Θεωρώντας ότι οι συναρτήσεις πολυπλοκότητας f(n), g(n), h(n) είναι μονοτονικές μη φθίνουσες θετικές ακολουθίες, ισχύουν οι παρακάτω ιδιότητες: Μεταβατικότητα Αν f(n) = Θ(g(n))και g(n) = Θ(h(n))τότε f(n) = Θ(h(n)), Αν f(n) = O(g(n))και g(n) = O(h(n))τότε f(n) = O(h(n)), Αν f(n) = Ω(g(n))και g(n) = Ω(h(n))τότε f(n) = Ω(h(n)), Αν f(n) = o(g(n))και g(n) = o(h(n))τότε f(n) = o(h(n)),

25 1.. ΑΣΥΜΠΤΩΤΙΚ ΗΠΟΛΥΠΛΟΚ ΟΤΗΤΑ 1 Αν f(n) = ω(g(n))και g(n) = ω(h(n))τότε f(n) = ω(h(n)) Ανακλαστικότητα f(n) = Θ(f(n)), f(n) = O(f(n)), f(n) = Ω(f(n)) Συμμετρία f(n) = Θ(g(n))ανκαιμόνοαν g(n) = Θ(f(n)) Ανάστροφη Συμμετρία f(n) = O(g(n))ανκαιμόνοαν g(n) = Ω(f(n)) f(n) = o(g(n))ανκαιμόνοαν g(n) = ω(f(n)) Πράξεις co(f(n)) = O(f(n)) O(g(n)) + O(g(n)) = O(g(n)) O(g 1 (n) + O(g (n)) = O(max{g 1 (n), g (n)}) O(g 1 (n)) O(g (n)) = O(g 1 (n) g (n)) Η εξαγωγή της ασυμπτωτικής συμπεριφοράς μίας συνάρτησης μπορεί να ορισθεί ισοδύναμα χρησιμοποιώντας την έννοια του όριου συναρτήσεων και αυτό γιατί στην ουσία μας ενδιαφέρει η σύγκριση της συμπεριφοράς μιας συνάρτησης σε σχέση με ένα φράγμα, καθώς η διάσταση του προβλήματος τείνει στο άπειρο. Ετσι, έχουμε τους ακόλουθους ισοδύναμους ορισμούς για τους ασυμπτωτικούς συμβολισμούς: 1.Αν τότε f(n) = Θ(g(n)) f(n) lim n + g(n) = a 0.Αν.Αν f(n) lim n + g(n) = 0 τότε f(n) = O(g(n))και g(n) = Ω(f(n))(με f(n) Θ(g(n))) f(n) lim n + g(n) = τότε g(n) = O(f(n))και f(n) = Ω(g(n))(με g(n) Θ(f(n)))

26 14 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η Παράδειγμα: Να δειχθεί ότι η συνάρτηση πολυπλοκότητας f(n) = (n + logn)(n 1) n + n είναι Θ(n). Εχουμε: ½º¾º lim n + Άρα f(n) = Θ(n). (n +logn)(n 1) n+n n n n + n log n log n = lim n + n + n = 1 Σταπαρακάτωγιατησυνάρτηση log nθαθεωρούμεβάσητο,δηλαδή log n = log n. Άσκηση1. Εστω T 1 (n) = O(f(n))και T (n) = O(g(n))οιπολυπλοκότητεςδύοτμημάτων P 1 και P ενόςπρογράμματος P. Αντο P εκτελείταιαμέσως μετάτο P 1 ποιαείναιηπολυπλοκότητατουπρογράμματος P; Λύση: Επειδή γίνεται ακολουθία από βήματα, η πολυπλοκότητα του προγράμματος είναι η μέγιστη από τις πολυπλοκότητες των δύο κομματιών, δηλαδή: T(n) = max{t 1 (n), T (n)} = max{o(f(n)), O(g(n))} Εφαρμογή:Αν T 1 (n) = O(n ), T (n) = O(n ), T (n) = O(n log n)τότε T(n) = max{o(n ), O(n ), O(n log n)} = O(n ) Άσκηση. Να δοθεί ο καλύτερος O συμβολισμός για τις ακόλουθες συναρτήσεις: 1. log n 4n + n logn n n Με τον όρο καλύτερος συμβολισμός εννοείται το πιο μικρό άνω φράγμα για κάθε συνάρτηση. Άρα έχουμε: 1. log n 4n + n logn = O(n log n) n = ( n) = n i=1 i = n(n + 1) = O(n ) n = n 1 1 = n = O( n )

27 1.. ΑΣΥΜΠΤΩΤΙΚ ΗΠΟΛΥΠΛΟΚ ΟΤΗΤΑ 15 Άσκηση. Εστω a > 1και f(n) = O(log a (n)). Δείξτεότι f(n) = O(log n). Αφού f(n) = O(log a (n))μεβάσητονορισμό,υπάρχει cπουγιακάθε n n 0 : f(n) c log a (n). Ομωςεπειδη log a (n) = log n log a έχουμε f(n) c f(n) c log nμε c = c log a γιακάθε n n 0. Άρα f(n) = O(log n). log a log nή Άσκηση4.Δείξτεότι log(n!) = O(n log n). Επειδή n! = n(n 1)... < n... n = n n καιεπειδήηλογαριθμικήσυνάρτηση είναιγνησίωςαύξουσα,έχουμε log(n!) < n log n,άρα log(n!) = O(n log n). Άσκηση 5. Ποια είναι η πολυπλοκότητα του παρακάτω τμήματος προγράμματος: 1. for i = 1 to n do. for j = 1 to i+1 do. x = x end for 5. end for Οπως είδαμε στα παραδείγματα πολλαπλασιασμού πινάκων και αναζήτησης σε πίνακα, κάθε βρόγχος εκφράζει έναν όρο του γινομένου που εμφανίζεται στην πολυπλοκότητα. Ετσι συμβαίνει και εδώ για τον εξωτερικό βρόγχο(n επαναλήψεων), αλλά πρέπει να είμαστε προσεκτικοί με τον εσωτερικό βρόγχο στον οποίο ο αριθμός επαναλήψεων είναι μεταβλητός. Άρα: T(n) = n i=1 i + 1 = 1 ( n i + i=1 n i=1 ) 1 = 1 ( n(n + 1) ) + n = O(n ) Άσκηση6.Ναδειχθείότιη n O( n ) Εχουμε n lim n + n = 0 Άρα n = Ω( n ) Άσκηση 7. Να υπολογιστεί η πολυπλοκότητα του αλγόριθμου του Ευκλείδη (σχήμα 1.6) για τον υπολογισμό του Μέγιστου Κοινού Διαιρέτη(Μ.Κ.Δ.) δύο θετικών ακέραιων αριθμών. Αςθεωρήσουμεχωρίςβλάβητηςγενικότηταςότι m n. Σεκάθεβήμαο αλγόριθμος του Ευκλείδη εφαρμόζει την ταυτότητα της διαίρεσης ώστε να βρεθούν αριθμοί q, rώστε m = qn + r, q 1, r 0. ΕπειδήΜΚΔ(m, n)=μκδ(n, r),

28 16 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η Μκδ-Ευκλειδης (m, n Z) 1. repeat. r = m mod n. if r 0 then 4. m = n 5. n = r 6. end if 7. until r = 0 8. return n Σχήμα 1.6: Αλγόριθμος του Ευκλείδη για την εύρεση του Μ.Κ.Δ. δύο ακεραίων mκαι n. έχουμε την εξής ακολουθία πράξεων μέχρι να τερματίσει ο αλγόριθμος: m = q 0 n + r 0, 0 r 0 < n, q 0 = q, r 0 = r n = q 1 r 0 + r 1, 0 r 1 < r 0 r 0 = q r 1 + r, 0 r < r 1 r 1 = q r + r, 0 r < r Εστω kοαριθμόςτωνβημάτωνπουθέλειοαλγόριθμοςγιανατερματίσει. Τότεδημιουργείταιμίαακολουθίααπόαριθμούς m, n, r 0, r 1,...r k με r k = 0και r k 1 =ΜΚΔ(m, n).θεωρώνταςότισεκάθεβήματουαλγορίθμουγίνονται O(1) πράξεις, η πολυπλοκότητα του αλγορίθμου είναι O(k). Αποδεικνύται(άσκηση)ότι r i < 1 r i,οπότεέχουμεότι r k < 1 < 1 r k < 1 4 r k 4 <... < 1 k r 0 < 1 k n Άρα n > k 1,δηλαδή k log n,οπότεηπολυπλοκότητατουαλγορίθμουείναι O(log n). Άσκηση8.Δείξτεότιγιαπραγματικούςαριθμούς a, b, b > 0έχουμε (n + a) b = Θ(n b ). Από τον τύπο που δίνει το διώνυμο του Newton παίρνουμε: (n + a) b = n b + ( ) b 1 n b 1 a ( ) b n b k a k a b = Θ(n b ) k Άσκηση 9. Δείξτεότι n+1 = O( n ). Εχουμε n+1 = n = O( n )

29 1.. ΑΣΥΜΠΤΩΤΙΚ ΗΠΟΛΥΠΛΟΚ ΟΤΗΤΑ 17 Είναι n = O( n ); Επειδη n = ( ) n = 4 n,το n δενείναι O( n ).Ισοδύναμα: και όχι μηδέν. n lim n + n = + Αν f(n) = O(n)τότε f(n) δενείναι O( n ). Εστω f(n) = n.τότε f(n) = O(n),αλλα n O( n ). Άσκηση 10. Να μελετηθούν και να συγκριθούν οι αλγόριθμοι ταξινόμησης Φυσαλίδας, ταξινόμησης με Επιλογή και ταξινόμησης με Εισαγωγή, όσον αφορά την πολυπλοκότητά τους. Ταξινόμηση Φυσαλίδας (Bubble Sort) Ο αλγόριθμος αυτός, σε κάθε επανάληψη ανυψώνει στο τέλος του πίνακα το ελαφρύτερο(μικρότερο) στοιχείο. Η υλοποίηση του σε ψευδογλώσσα φαίνεται στο σχήμα 1.7. Bubble Sort (A) 1. for i = n to 1 do. for j = 1 to i 1 do. if a j < a j+1 then 4. swap(a j, a j+1 ) 5. end if 6. end for 7. end for Σχήμα 1.7: Ταξινόμηση μιας ακολουθίας στοιχείων κατά φθίνουσα σειρά με τον αλγόριθμο της φυσαλίδας. Παρατηρούμε ότι ανεξάρτητα από την μορφή της ακολουθίας εισόδου, ο αλγόριθμος θα κάνει τις ίδιες συγκρίσεις και καταχωρήσεις. Θεωρώντας σαν σταθερές (O(1)) τις πράξεις που γίνονται σε κάθε βήμα του εσωτερικού βρόγχου, έχουμε: C βπ (n) = C χπ (n) = C µo (n) = 1 i 1 n O(1) = O(1) (i 1) i=n j=1 i=1 n(n + 1) = O(1)[ n] = O(n )

30 18 ΚΕΦ ΑΛΑΙΟ1. ΕΙΣΑΓΩΓ Η Ταξινόμηση με εισαγωγή (Insertion Sort) Ο αλγόριθμος ταξινόμησης με εισαγωγή θεωρεί ότι στο βήμα i, η υπακολουθία a 1,..., a i 1 είναιταξινομημένηκαιηa i+1,..., a n αταξινόμητη.οπότεεισάγειτο στοιχείο i στην σωστή θέση της πρώτης υπακολουθίας και συνεχίζει επαναληπτικά για τα υπόλοιπα στοιχεία. Insertion Sort (A) 1. for i = 1 to n do. val = a i. j = i 1 4. while j 1 and a j < val do 5. a j+1 = a j 6. j = j 1 7. end while 8. a j+1 = val 9. end for Σχήμα 1.8: Ταξινόμηση μιας ακολουθίας στοιχείων κατά φθίνουσα σειρά με τον αλγόριθμο της εισαγωγής. Στην βέλτιστη περίπτωση(ήδη ταξινομημένη φθίνουσα ακολουθία) ο αλγόριθμος δεν μπαίνει ποτέ στο εσωτερικό (while) βρόγχο, άρα η πολυπλοκότητα του είναι: C βπ (n) = O(n). Στηχείριστηπερίπτωση(αύξουσαακολουθία),μπαίνει πάντα στο εσωτερικό βρόγχο(όσο j 1). Άρα η πολυπλοκότητα είναι: C χπ (n) = n 1 i=1 j=i 1 O(1) = O(1) n (i 1) = O(n ) Αποδεικνύεταιωστόσο,ότιημέσηπολυπλοκότητάτουείναι: C µo = O(n ). Ταξινόμηση με Επιλογή (Selection Sort) Η ταξινόμηση με επιλογή, βρίσκει στο βήμα i το στοιχείο που είναι το μεγαλύτερο στηνυπακολουθία a i,...,a n. Στηνσυνέχειαθέτειστηνθέση iτομέγιστοαυτό στοιχείο και συνεχίζει επαναληπτικά. Η πολυπλοκότητα όπως και στην Ταξινόμηση Φυσαλίδας δεν εξαρτάται από την ακολουθία που έχουμε σαν είσοδο. Άρα η πολυπλοκότητα και για τις τρεις περιπτώσεις είναι: i=1 C βπ (n) = C χπ (n) = C µo (n) = n 1 n i=1 j=i+1 = O(1) [ n(n 1) n 1 O(1) = O(1) (n i) = i=1 (n 1)(n ) ] = O(n )

31 1.. ΑΣΥΜΠΤΩΤΙΚ ΗΠΟΛΥΠΛΟΚ ΟΤΗΤΑ 19 Selection Sort (A) 1. for i = 1 to n 1 do. max = i. for j = i + 1 to n do 4. if a j > a max then 5. max = j 6. end if 7. end for 8. swap(a max, a i ) 9. end for Σχήμα 1.9: Ταξινόμηση μιας ακολουθίας στοιχείων σε φθίνουσα σειρά με τον αλγόριθμο της επιλογής. Παρατηρούμε ότι ο καλύτερος αλγόριθμος είναι ο αλγόριθμος της Εισαγωγής γιατί στην βέλτιστη περίπτωση είναι O(n) σε αντίθεση με τους άλλους δύο που είναιπάντα O(n ). Ωστόσοκαιοιτρειςαλγόριθμοιπαρουσιάζουντετραγωνική πολυπλοκότητα κατά μέσο όρο, που κρίνεται μη ικανοποιητική για το πρόβλημα αυτό. Στις επόμενες ενότητες θα δούμε αλγόριθμους ταξινόμησης (HeapSort, MergeSort, QuickSort) που έχουν μέση πολυπλοκότητα O(n log n) και χείριστη πολυπλοκότητα O(n log n)(εκτός της Quicksort) και είναι καλύτεροι από αυτούς που μελετήσαμε.

32

33 à РӾ Ò ÖÓÑ ¾º½ Divide and Conquer Πολλοί χρήσιμοι αλγόριθμοι οι οποίοι θα εξεταστούν στη συνέχεια έχουν αναδρομική δομή. Η αναδρομή είναι μια ισχυρή αλγοριθμική μέθοδος, πιο αισθητική (όσο αφορά στο μέγεθος των αλγορίθμων και κατά συνέπεια των προγραμμάτων που γράφουμε), πιο φυσική(αφού συμβαδίζει με την διαίσθησή μας) και πιο ισχυρή (μιας και μας δίδει την δυνατότητα να περιγράψουμε με εύκολο και εύληπτο τρόπο δύσκολα προβλήματα). Για την επίλυση ενός δεδομένου προβλήματος ένας αναδρομικός αλγόριθμος καλεί τον εαυτό του αναδρομικά μία ή περισσότερες φορές επιλύοντας διάφορα υποπροβλήματα του αρχικού προβλήματος. Με τον όρο υποπρόβλημα εννοούμε ένα πρόβλημα της ίδιας φύσης με το αρχικό, αλλά μικρότερου μεγέθους. Ενας αλγόριθμος τέτοιου είδους τυπικά ακολουθεί μια διαίρει και βασίλευε(divide and conquer) προσέγγιση, κατά την οποία το αρχικό πρόβλημα διασπάται σε μια σειρά από υποπροβλήματα τα οποία επιλύονται ένα προς ένα αναδρομικά και έπειτα συνδυάζονται οι λύσεις αυτών για να δημιουργηθεί η λύση του αρχικού προβλήματος. Σε κάθε αναδρομικό επίπεδο, η τεχνική divide and conquer περιλαμβάνει τρία βήματα: Divide: Διαίρεση του προβλήματος σε μικρότερα προβλήματα(υποπροβλήματα). Conquer: Επίλυση των μικρότερων προβλημάτων(είτε αναδρομικά, είτε με άμεσο τρόπο εάν έχουν ικανοποιητικά μικρό μέγεθος). Combine: Συνδυασμός των λύσεων για την εύρεση της αρχικής λύσης. ¾º½º½Merge-Sort Ενα κλασσικό παράδειγμα divide and conquer αλγορίθμου, είναι ο αλγόριθμος ταξινόμησης Merge-Sort. Διαισθητικά, ο αλγόριθμος εξελίσσεται ως εξής: 1

34 ΚΕΦ ΑΛΑΙΟ. ΑΝΑΔΡΟΜ Η Divide:Διαίρεσητουπίνακα nστοιχείωνσεδύουποπίνακες n στοιχείων οκαθένας. Conquer: Αναδρομική ταξινόμηση των δύο υποπινάκων με χρήση της Merge- Sort. Combine: Συγχώνευση των δύο ταξινομημένων υποπινάκων. Η αναδρομή στο βήμα Conquer σταματά όταν οι υποπίνακες οι οποίοι προκύπτουν μετά τη διάσπαση έχουν μόνο ένα στοιχείο, διότι σε αυτή την περίπτωση ο πίνακας είναι ήδη ταξινομημένος. Η βασική λειτουργία του αλγορίθμου Merge-Sort είναι η συγχώνευση δύο ταξινομημένων υποπινάκων η οποία γίνεται στο βήμα Combine χρησιμοποιώντας τον αλγόριθμο Merge. Ο αλγόριθμος Merge(σχήμα.1) ξεκινάει συγκρίνοντας το πρώτο στοιχείο τουπίνακα aμετοπρώτοστοιχείοτουπίνακα bκαιεπιλέγειτομικρότεροαπό τα δύο για να το τοποθετήσει πρώτο στον ταξινομημένο πίνακα c ο οποίος τελικά θαπεριέχειταστοιχείακαιτωνδύοπινάκων.ενσυνεχείαομετρητήςτουπίνακα από τον οποίο επελέγει το πρώτο στοιχείο αυξάνεται κατά ένα και η διαδικασία σύγκρισηςσυνεχίζεταιέτσιώστετελικάόλαταστοιχείατωνπινάκων aκαι bνα τοποθετηθούν ταξινομημένα στον πίνακα c. Merge (a, b, c) 1. i = 1. j = 1. for k = 1 to m + n do 4. if a i b j then 5. c k = a i 6. i = i else 8. c k = b j 9. j = j end if 11. end for Σχήμα.1: Αλγόριθμος Merge για την συγχώνευση των ταξινομημένων πινάκων a(μήκους m)και b(μήκους n)στονπίνακα c(μήκους m + n). Γιαπαράδειγμα,εάνοπίνακας aπεριέχειταστοιχεία, 6, 7, 9καιοπίνακας bταστοιχεία 4, 5, 8τότεοπίνακας cοοποίοςθαπροκύψειμετάτηνεκτέλεση τουαλγορίθμου Mergeθαέχειωςεξής:, 4, 5, 6, 7, 8, 9.Ηπολυπλοκότητατου αλγορίθμου είναι O(m + n). Τον αλγόριθμο Merge μπορούμε να τον χρησιμοποιήσουμε ως υπορουτίνα του αλγορίθμου Merge-Sort(σχήμα.), όπου A είναι ο πίνακας στοιχείων και l, rδείκτεςπουκαθορίζουνταάκρατουπροςταξινόμησηυποπίνακατου A.

35 .1. DIVIDE AND CONQUER MergeSort (A, l, r) 1. if l < r then. q (l + r)/. MergeSort(A, l, q) 4. MergeSort(A, q + 1, r) 5. Merge /* Τους δύο υποπίνακες */ 6. end if Σχήμα.: Αναδρομικός αλγόριθμος MergeSort για την ταξινόμηση των σ- τοιχείων ενός πίνακα. Merge-Sort(A,1,7) (1,4) (5,7) (1,) (,4) (5,6) (7,7) (1,1) (,) (,) (4,4) (5,5) (6,6) Σχήμα.: Το δένδρο αναδρομικών κλήσεων του αλγορίθμου Merge-Sort. Θα δούμε την λειτουργία του αλγορίθμου Merge-Sort με ένα παράδειγμα. Εστω ο πίνακας A = 6, 9,, 7, 4, 5, 8. Τοδένδρο των αναδρομικώνκλήσεων φαίνεται στο σχήμα.. Ο αλγόριθμος υλοποιημένος σε μια γλώσσα τύπου C είναι ο εξής: Merge-Sort int b[n] void MergeSort (int p, int r) { int i, j, k, m; if (p < r) { q = (p + r) / ; MergeSort (p, q);

36 4 ΚΕΦ ΑΛΑΙΟ. ΑΝΑΔΡΟΜ Η } } MergeSort (q + 1, r); for (i = q; i >= p; --i) b[i] = a[i]; for (j = q+1; j <= r; ++j) b[r+q+1-j] = a[j]; i = p; j = r; for (k = p; k <= r; ++k) if (b[i] < b[j] { a[k] = b[i]; ++i; } else { a[k] = b[j]; --j; } Οταν ένας αλγόριθμος περιέχει μία ή περισσότερες αναδρομικές κλήσεις σ- τον εαυτό του, ο συνολικός χρόνος εκτέλεσής του μπορεί συνήθως να περιγραφεί από μια αναδρομική εξίσωση ή απλά αναδρομή, μια συνάρτηση δηλαδή η οποία περιγράφει το συνολικό χρόνο εκτέλεσης του αλγορίθμου σε ένα πρόβλημα μεγέθους n χρησιμοποιώντας το χρόνο εκτέλεσης σε προβλήματα μικρότερου μεγέθους. Εν συνεχεία μπορούν να χρησιμοποιηθούν διάφορες μέθοδοι τις οποίες θα δούμε εκτενώς στη συνέχεια, για την επίλυση της αναδρομικής εξίσωσης η οποία έχει προκύψει. Πιο συγκεκριμένα, ας συμβολίσουμε με T(n) το χρόνο εκτέλεσης του αλγορίθμου Merge-Sortγιαέναπρόβλημαμεγέθους n.εάν n = 1τότεουποπίνακας με ένα στοιχείο είναι ήδη ταξινομημένος και ο αλγόριθμος παίρνει σταθερό χρόνο τον οποίο γράφουμε με Θ(1). Επίσης ο αλγόριθμος Merge ο οποίος επιτυγχάνει τη συγχώνευση χρειάζεται χρόνο Θ(n). Συνολικά λοιπόν μπορούμε να γράψουμε την εξής αναδρομική εξίσωση: { Θ(1) if n = 1, T(n) = T( n ) + Θ(n) if n > 1. Ηεπίλυσητηςπαραπάνωαναδρομικήςεξίσωσηςμαςδίδει T(n) = Θ(n log n)όπως θα δούμε παρακάτω. Γενικά, η εύρεση της αναδρομικής εξίσωσης η οποία περιγράφει το χρόνο εκτέλεσης ενός divide and conquer αλγορίθμου βασίζεται στα τρία βήματα (divide, conquer, combine) της μεθόδου. Αν υποθέσουμε ότι η υποδιαίρεση του αρχικού προβλήματος σε υποπροβλήματα οδηγεί στη δημιουργία a υποπροβλημάτωντοκαθένααπόταοποίαέχειμέγεθος 1/bτουαρχικούκαιότιτοβήμα combine χρειάζεται χρόνο d(n), τότε λαμβάνουμε την παρακάτω αναδρομική εξίσωση: { 1 if n = 1, T(n) = at( n b ) + d(n) if n > 1.

37 .1. DIVIDE AND CONQUER 5 Μπορούμε να χρησιμοποιήσουμε την μέθοδο της αντικατάστασης(substitution) γιαναβρούμετηλύσηστηνεξίσωσηαυτή,ωςεξής: T(n) = at(n/b) + d(n) = a[at(n/b ) + d(n/b)] + d(n) = a T(n/b ) + ad(n/b) + d(n) = a [at(n/b ) + d(n/b )] + ad(n/b) + d(n) = a T(n/b ) + a d(n/b ) + ad(n/b) + d(n) =... i 1 = a i T(n/b i ) + a j d(n/b j ) j=0 Ανυποθέσουμετώραότι n = b k τότεθαέχουμεότι T(n/b k ) = T(1) = 1καιγια i = kθαλάβουμε: k 1 T(n) = a k + a j d(b k j ) j=0 Επίσης k = log b nκαιεπομένως a k = a log b n = n log b a. Στηνπερίπτωσητης Merge-Sortέχουμε a = b = και d(n) = n 1(= Θ(n)). Κάνονταςτις αντικαταστάσεις έχουμε: ¾º½º¾Binary Search k 1 T(n) = n + j ( k j 1) j=0 k 1 = n + ( k j ) j=0 = n + k k (k 1) ( 1) = n + n logn n + 1 = n log n + 1 Ο αλγόριθμος της δυαδικής αναζητησης έχει ως είσοδο έναν ταξινομημένο πίνακαακαιψάχνειναβρειανυπάρχειέναστοιχείο aμέσασ αυτοντονπίνακα. Παρακάτω περιγράφουμε πως ο αλγόριθμος εκμεταλλεύεται την τεχνική Divideand-Conquer: Divide: Βρίσκουμε το μεσαίο στοιχείο του πίνακα και τον χωρίζουμε σε δύο υποπίνακες. Αν το μεσαίο στοιχείο είναι μικρότερο του στοιχείου που ψάχνουμε, τότε κρατάμε τον υποπίνακα με τα μικρότερα από το μεσαίο στοιχεία,

38 6 ΚΕΦ ΑΛΑΙΟ. ΑΝΑΔΡΟΜ Η διαφορετικά κρατάμε τον υποπίνακα με τα μεγαλύτερα από το μεσαίο στοιχεία. Conquer: Επαναλαμβάνουμε την παραπάνω διαδικασία στον επιλεγμένο υποπίνακα,μεχρίςότουβρούμετοστοιχείοσανμεσαίοημεχριναεχουμεκενούς υποπίνακες. Combine: Δεν Υπάρχει βήμα Combine αφού με το πέρας όλων των αναδρομικών εκτελέσεων έχουμε τη λύση. Η αναδρομική εξίσωση του αλγοριθμου είναι T(n) = T(n/) + c = O(logn). Οπότε, αντί να ψάχνουμε σειριακά σε όλο τον πίνακα σε O(n) χρόνο χρησιμοποιώντας έναν αλγόριθμο Divide and Conquer ο χρόνος μειώνεται σε O(logn)! ¾º½º Ç Ô Ö Ó ØÓÙHanoi Ας εξετάσουμε ένα άλλο κλασσικό πρόβλημα στο οποίο χρησιμοποιείται η έννοια της αναδρομής. Πρόκειται για το πρόβλημα των πύργων του Hanoi το οποίο επινοήθηκε από τον γάλλο μαθηματικό Edouard Lucas το 188. Στο πρόβλημα αυτό μας δίδονται στύλοι 1,, αντίστοιχα καθώς επίσης και n δίσκοι διαφορετικών μεγεθών οι οποίοι αρχικά είναι τοποθετημένοι στο στύλο 1, σχηματίζοντας ένανκώνομετονπιομεγάλοδίσκοκάτωκαιτονπιομικρόπάνω,όπωςφαίνεται στοσχήμα.4.τοζητούμενοείναιναμεταφερθούνόλοιοιδίσκοιαπότοστύλο Σχήμα.4:Οιπύργοιτου Hanoi 1στονστύλο,μετακινώνταςμόνοέναδίσκοτηφοράκαιπροσέχονταςποτένα μην είναι ένας μικρός δίσκος κάτω από έναν μεγαλύτερο. Ο αλγόριθμος ο οποίος επιλύει το πρόβλημα έχει ως εξής:

39 .1. DIVIDE AND CONQUER 7 µ ÖÕ Ø Ø º µhanoi(n µå Ø Ò ØÓÙÑ ÐÓÙ ÓÙ Ô ØÓ Ø ÐÓi ØÓÒ Ø ÐÓjº µhanoi(n 1, i,6 (i + j)) 1,6 (i + j), j) Σχήμα.5: Σχηματική λειτουργία του αλγορίθμου. Hanoi (n, i, j) 1. if n 1 then. Ηανοι(n 1, i, 6 (i + j)). Μεταφορά του μεγάλου δίσκου από τον στύλο i στον στύλο j 4. Hanoi(n 1, 6 (i + j), j) 5. end if Στο σχήμα.5 φαίνεται ο τρόπος λειτουργίας του αλγορίθμου. Για να εξετάσουμε την πολυπλοκότητα του αλγορίθμου, γράφουμε την αναδρομική εξίσωση η οποία εκφράζει το χρόνο εκτέλεσης: T(n) = { 0 if n = 0, T(n 1) + 1 if n 1. Η επίλυση της παραπάνω αναδρομικής εξίσωσης θα γίνει με τη μέθοδο των αθροιζομένων

40 8 ΚΕΦ ΑΛΑΙΟ. ΑΝΑΔΡΟΜ Η παραγόντων ως εξής: T(n) = T(n 1) + 1 ( 0 ) T(n 1) = T(n ) + 1 ( 1 ) T(n ) = T(n ) + 1 ( )... Αθροίζοντας κατά μέλη λαμβάνουμε T() = T(1) + 1 ( n ) T(1) = T(0) + 1 ( n 1 ) T(n) = n T(0) + ( n 1 ) = n 0 + n 1 1 και τελικά T(n) = n 1, n 0 Η γενική μορφή μιας αναδρομικής εξίσωσης όπως αυτή η οποία περιγράφει το χρόνο εκτέλεσης του αλγορίθμου Hanoi είναι η εξής: a(n)t n = b(n)t n 1 + c(n) με T 0 σταθεράκαι a(n), b(n), c(n)συναρτήσειςτου n. Άσκηση: Ναεπιλυθείηαναδρομικήεξίσωση T(n) = T(n 1)+με T(1) = 1. Λύση: T(n) = + T(n 1) = + + T(n )... = T(1) = (n 1) + 1 n T(n) = Θ(n) ¾º½º À ÓÐÓÙ Fibonacci Ενα άλλο κλασσικό μαθηματικό πρόβλημα το οποίο εμπεριέχει την έννοια της αναδρομής είναι η ακολουθία Fibonacci. Η ακολουθία αυτή ορίζεται ως εξής: T(n) = { 1 if n = 0, n = 1, T(n 1) + T(n ) if n > 1.

41 .1. DIVIDE AND CONQUER 9 Πρακτικά κάθε αριθμός της ακολουθίας Fibonacci προκύπτει ως το άθροισμα των προηγουμένων δύο αριθμών της ακολουθίας. Για παράδειγμα οι 1 πρώτοι αριθμοίτηςακολουθίαςείναι: 1,1,,,5,8,1,1,4,55,89,144,. Ενας επαναληπτικός αλγόριθμος ο οποίος μπορεί να χρησιμοποιηθεί για την εύρεση του n οστού αριθμού της ακολουθίας είναι ο εξής: Fibonacci (n) 1. f0 = 1. f1 = 1. for i = to n do 4. temp = f0 + f1 5. f0 = f1 6. f1 = temp 7. end for 8. return f Σχήμα.6: Επαναληπτικός Αλγόριθμος εύρεσης του n-οστού αριθμού Fibonacci Για την εύρεση της ασυμπτωτικής πολυπλοκότητας του παραπάνω αλγορίθμου μπορούμεναπαρατηρήσουμεότιοκύριοςβρόγχοςεκτελείται n φορές,άραη πολυπλοκότητα είναι της τάξης O(n). Μπορεί όμως να χρησιμοποιηθεί και ένας περισσότερο προφανής και πιο απλός αλγόριθμος ο οποίος βασίζεται στον αναδρομικό ορισμό της ακολουθίας. Ο αλγόριθμος αυτός έχει ως εξής: Fibonacci (n) 1. u = 1. f = 1. if n 1 then 4. return 1 5. else 6. return Fibonacci(n 1) + Fibonacci(n ) 7. end if Σχήμα.7: Αναδρομικός Αλγόριθμος εύρεσης του n-οστού αριθμού Fibonacci Ας θεωρήσουμε ένα παράδειγμα υπολογισμού κατά το οποίο ζητάμε να βρούμε τον 5ο αριθμό της ακολουθίας. Η εκτέλεση του αναδρομικού αλγορίθμου μπορεί να ιδωθεί ως ένα δένδρο αναδρομικών κλήσεων(άσκηση). Για την εύρεση της πολυπλοκότητας έχουμε:

42 0 ΚΕΦ ΑΛΑΙΟ. ΑΝΑΔΡΟΜ Η Άρα θα έχουμε εάν n άρτιος και T(n) = 1 + T(n 1) + T(n ) = T(n ) + T(n ) + T(n ) (n ) T(n) T(n ) T(n 4)... n T(n n ) εάν n περιττός, οπότε τελικά T(n) n T(0) T(n) n 1 T(1) T(n) n, δεδομένουότι T(0) = T(1) = 1. Παρατηρούμε λοιπόν ότι ο εκθετικός αλγόριθμος, αν και πολύ φυσικός στην σκέψη και εύκολος στην υλοποίηση έχει εκθετική πολυπλοκότητα. Το γεγονός αυτό οφείλεται στο ότι υπάρχει επανυπολογισμός αρκετών από τους ενδιάμεσους όρους, όπως μπορεί να φανεί και στο δένδρο υπολογισμών. ¾º½º Ç Ð Ö ÑÓMin-Max Το τελευταίο πρόβλημα το οποίο θα θεωρήσουμε είναι το πρόβλημα της εύρεσης του μέγιστου και του ελάχιστου στοιχείου ενός πίνακα A με n στοιχεία. Ενας απλός επαναληπτικός αλγόριθμος για την επίλυση του προβλήματος είναι αυτός του σχήματος.8. MinMax (A) 1. min = a 1. max = a 1. for i = to n do 4. if a i > max then 5. max = a i 6. else if a i < min then 7. min = a i 8. end if 9. end for Σχήμα.8: Αλγόριθμος εύρεσης του μέγιστου και του ελάχιστου στοιχείου ενός πίνακα

43 .1. DIVIDE AND CONQUER 1 Ο παραπάνω αλγόριθμος στη χείριστη περίπτωση, όπου τα στοιχεία του πίνακα θα είναι ταξινομημένα σε φθίνουσα σειρά θα έχει ακριβή πολυπλοκότητα χρόνου (n 1), αν συμπεριλάβουμε και τη σύγκριση για να υλοποιήσουμε την επανάληψη for. Στην περίπτωση όπου τα στοιχεία του πίνακα είναι ταξινομημένα σε αύξουσα σειράηακριβήςπολυπλοκότηταθαείναι n 1,άρασυνολικάθαέχουμε Θ(n). Ας θεωρήσουμε τώρα όμως τον αναδρομικό αλγόριθμο του σχήματος.9 για την επίλυση του προβλήματος. MinMax (A, i, j, min, max) 1. if i j 1 then. if a i < a j then. max = a j 4. min = a i 5. else 6. max = a i 7. min = a j 8. end if 9. else 10. m = (i + j)/ 11. MinMax(A, i, m, min 1, max 1 ) 1. MinMax(A, m, j, min, max ) 1. min = fmin(min 1, min ) 14. max = fmax(max 1, max ) 15. end if Σχήμα.9: Αναδρομικός Αλγόριθμος εύρεσης του μέγιστου και του ελάχιστου στοιχείου ενός πίνακα Για την εύρεση της πολυπλοκότητας του αναδρομικού αλγορίθμου ας σημειώσουμε τα εξής: Οέλεγχος i j 1καλύπτειτιςδύοπεριπτώσεις i = jκαι i = j 1 Οισυναρτήσεις fmax()και fmin()απαιτούνμίασύγκρισηηκάθεμίαγιατην εύρεση του μέγιστου ή του ελάχιστου(αντίστοιχα) μεταξύ δύο στοιχείων. Η πολυπλοκότητα δίδεται από την παρακάτω αναδρομική σχέση: T(n) = { if n = or n = 1, T( n ) + if n >.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

υναμικός Προγραμματισμός

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

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας Ηλίας Κ. Σάββας Επίκουρος Καθηγητής Τμήμα: Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Email: savvas@teilar teilar.gr Αλγόριθµοι

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

Αναδρομικοί Αλγόριθμοι

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

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

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ (ΑΛΓΟΡΙΘΜΟΙ, Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani, σελ. 55-62 ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΩΝ, Jon Kleinberg, Eva Tardos, Κεφάλαιο 5) Δυαδική αναζήτηση

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

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

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ 1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #10: Αλγόριθμοι Διαίρει & Βασίλευε: Master Theorem, Αλγόριθμοι Ταξινόμησης, Πιθανοτικός

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

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

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

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 22 Counting sort, bucket sort και radix sort 1 / 16 Ιδιότητες αλγορίθμων ταξινόμησης ευστάθεια (stable

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

Περιεχόμενα. Περιεχόμενα

Περιεχόμενα. Περιεχόμενα Περιεχόμενα xv Περιεχόμενα 1 Αρχές της Java... 1 1.1 Προκαταρκτικά: Κλάσεις, Τύποι και Αντικείμενα... 2 1.1.1 Βασικοί Τύποι... 5 1.1.2 Αντικείμενα... 7 1.1.3 Τύποι Enum... 14 1.2 Μέθοδοι... 15 1.3 Εκφράσεις...

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

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 3 5 1 Ταξινόμηση - Sorting Πίνακας Α 1 3 5 5 3 1 Ταξινόμηση (Φθίνουσα) Χωρίς Ταξινόμηση Ταξινόμηση

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

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

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

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1 Κατακερματισμός 4/3/2009 Μ.Χατζόπουλος 1 H ιδέα που βρίσκεται πίσω από την τεχνική του κατακερματισμού είναι να δίνεται μια συνάρτησης h, που λέγεται συνάρτηση κατακερματισμού ή παραγωγής τυχαίων τιμών

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Κατακερματισμός. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Κατακερματισμός Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Λεξικό Dictionary Ένα λεξικό (dictionary) είναι ένας αφηρημένος τύπος δεδομένων (ΑΤΔ) που διατηρεί

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

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

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

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

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

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

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

Δυναμικός Προγραμματισμός

Δυναμικός Προγραμματισμός πρόβλημα μεγέθους Ν «Διαίρει και βασίλευε» : ανεξάρτητα υποπροβλήματα διάσπαση πρόβλημα μεγέθους k πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους Ν Σε κάποιες περιπτώσεις όμως τα υποπροβλήματα δεν είναι ανεξάρτητα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55 ΑΝΑ ΡΟΜΗ- ΑΣΚΗΣΕΙΣ Μια µέθοδος είναι αναδροµική όταν καλεί τον εαυτό της και έχει µια συνθήκη τερµατισµού π.χ. το παραγοντικό ενός αριθµού Ν, µπορεί να καλεί το παραγοντικό του αριθµού Ν-1 το παραγοντικό

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

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι. Αλγόριθμοι» Γ. Καούρη Β. Μήτσου

Matrix Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι. Αλγόριθμοι» Γ. Καούρη Β. Μήτσου Matrix Algorithms Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Γ. Καούρη Β. Μήτσου Περιεχόμενα παρουσίασης Πολλαπλασιασμός πίνακα με διάνυσμα Πολλαπλασιασμός πινάκων Επίλυση τριγωνικού

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

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε Άπληστους Αλγόριθµους Στοιχεία άπληστων αλγορίθµων Το πρόβληµα επιλογής εργασιών ΕΠΛ 232

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

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

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

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

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

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

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

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

O Χρόνος Εκτέλεσης. προγραμμάτων ΚΕΦΑΛΑΙΟ 3. Τα θέματα αυτού του κεφαλαίου ΚΕΦΑΛΑΙΟ 3 O Χρόνος Εκτέλεσης Προγραμμάτων Στο Κεφάλαιο 2 είδαμε δύο ριζικά διαφορετικούς αλγόριθμους ταξινόμησης: τον αλγόριθμο ταξινόμησης με εισαγωγή και τον αλγόριθμο ταξινόμησης με συγχώνευση. Υπάρχουν,

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

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

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

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

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

Συνδυαστική Βελτιστοποίηση

Συνδυαστική Βελτιστοποίηση Τμήμα Εφαρμοσμένης Πληροφορικής, Παν. Μακεδονίας 1 Άγγελος Σιφαλέρας sifalera@uom.gr 4 η Διάλεξη Τμήμα Εφαρμοσμένης Πληροφορικής, Παν. Μακεδονίας 2 Knapsack Problem, (1/9) Ένας επενδυτής διαθέτει ένα χρηματικό

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

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

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

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

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

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

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007 Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007 Πρόβλημα 1 Το πρώτο πρόβλημα λύνεται με τη μέθοδο του Δυναμικού Προγραμματισμού. Για να το λύσουμε με Δυναμικό Προγραμματισμό

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

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

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

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

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

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

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

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος Αλγόριθµοι Τύπου Μείωσης Προβλήµατος Περίληψη Αλγόριθµοι Τύπου Μείωσης Προβλήµατος ( Decrease and Conquer ) Μείωση κατά µια σταθερά (decrease by a constant) Μείωση κατά ένα ποσοστό (decrease by a constant

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

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

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

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εντολές εκχώρησης (αντικατάστασης)....1 1.1 Εισαγωγή...4 1.1.1 Χρήση ΛΣ και IDE της Turbo Pascal....4 1.1.2 Αίνιγμα...6 1.2 Με REAL...7 1.2.1 Ερώτηση...9 1.2.2 Επίλυση δευτεροβάθμιας

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

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

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

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

Παντελής Μπουμπούλης, 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 μια συνάρτηση ορισμένη σε ένα διάστημα Δ Αρχική συνάρτηση ή παράγουσα της στο Δ

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

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

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

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

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

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

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

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

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

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

Ευχαριστίες... 16 Δύο λόγια από την συγγραφέα... 17

Ευχαριστίες... 16 Δύο λόγια από την συγγραφέα... 17 Περιεχόμενα Ευχαριστίες... 16 Δύο λόγια από την συγγραφέα... 17 ΚΕΦΑΛΑΙΟ 1. Το σύνολο των πραγματικών αριθμών... 19 1.1 Σύνολα αριθμών... 19 1.2 Αλγεβρική δομή του R... 20 1.2.1 Ιδιότητες πρόσθεσης...

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

Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες

Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες Βαγγέλης ούρος douros@aueb.gr 1 11/6/2012 Αλγόριθμοι, Εαρινό Εξάμηνο 2012, Φροντιστήριο #14 Γενικά Σχόλια (1) 2 Για το τελικό διαγώνισμα θα χρειαστείτε: Φοιτητική

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

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

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

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

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

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

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

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

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

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

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

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 15: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η έννοια της αναδρομής Μη αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων Παραδείγματα Ανάδρομης Αφαίρεση της Αναδρομής

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

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

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής ΥΠΟΛΟΓΙΣΜΟΥ. (Σηµειώσεις Μαθήµατος) Γ. Μαυροµµάτης Λέκτορας Π.. 407/80

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής ΥΠΟΛΟΓΙΣΜΟΥ. (Σηµειώσεις Μαθήµατος) Γ. Μαυροµµάτης Λέκτορας Π.. 407/80 Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ (Σηµειώσεις Μαθήµατος) Γ. Μαυροµµάτης Λέκτορας Π.. 407/80 Πειραιάς, Οκτώβριος 003 Περιεχόµενα Εισαγωγή 4 Μέρος ο - Αλγόριθµοι και Νόρµες. Από

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

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι. 5.1 Αλγόριθµος: Ορισµός. Αλγόριθµοι : επίπεδα αφαίρεσης

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι. 5.1 Αλγόριθµος: Ορισµός. Αλγόριθµοι : επίπεδα αφαίρεσης ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι 5.1 Αλγόριθµος: Ορισµός 5.1 Η έννοια του αλγορίθµου 5.2 Αναπαράσταση αλγορίθµων 5.3 Επινόηση αλγορίθµων 5.4 οµές επανάληψης Ένας αλγόριθµος είναι ένα διατεταγµένο σύνολο, σαφώς ορισµένων,

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

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός Πίνακες (i) Δομημένη μεταβλητή: αποθηκεύει μια συλλογή από τιμές δεδομένων Πίνακας (array): δομημένη μεταβλητή που αποθηκεύει πολλές τιμές του ίδιου τύπου INTEGER:: pinakas(100)ή INTEGER, DIMENSION(100)::pinakas

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

Ελαφρύτερος και βαρύτερος Αλγόριθμοι ταξινόμησης

Ελαφρύτερος και βαρύτερος Αλγόριθμοι ταξινόμησης 7η Δραστηριότητα Ελαφρύτερος και βαρύτερος Αλγόριθμοι ταξινόμησης Περίληψη Οι υπολογιστές χρησιμοποιούνται συχνά για την ταξινόμηση καταλόγων, όπως για παράδειγμα, ονόματα σε αλφαβητική σειρά, ραντεβού

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

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

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

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

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

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

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

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

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

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

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

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

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

Γεννήτριες Συναρτήσεις

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

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

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

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

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

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

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

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

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

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

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

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης

Ανάλυση Αλγορίθµων 4. Πειραµατικές Μελέτες. Χρόνος Εκτέλεσης. Περιγραφή και Υλικό Ανάγνωσης Ανάλυση Αλγορίθµων Είσοδος Αλγόριθµος Έξοδος Περιγραφή και Υλικό Ανάγνωσης Χρόνος εκτέλεσης (.) Ψευδοκώδικας (.) Μέτρηση των στοιχειωδών πράξεων (.) Ασυµπτωτική σηµειογραφία (.2) Ασυµπτωτική ανάλυση (.2)

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

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

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

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

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

I student. Μεθοδολογική προσέγγιση και απαιτήσεις για την ανάπτυξη των αλγορίθμων δρομολόγησης Χρυσοχόου Ευαγγελία Επιστημονικός Συνεργάτης ΙΜΕΤ

I student. Μεθοδολογική προσέγγιση και απαιτήσεις για την ανάπτυξη των αλγορίθμων δρομολόγησης Χρυσοχόου Ευαγγελία Επιστημονικός Συνεργάτης ΙΜΕΤ I student Μεθοδολογική προσέγγιση και απαιτήσεις για την ανάπτυξη των αλγορίθμων δρομολόγησης Χρυσοχόου Ευαγγελία Επιστημονικός Συνεργάτης ΙΜΕΤ Ινστιτούτο Bιώσιμης Κινητικότητας και Δικτύων Μεταφορών (ΙΜΕΤ)

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

Αριθµοθεωρητικοί Αλγόριθµοι και το. To Κρυπτοσύστηµα RSA

Αριθµοθεωρητικοί Αλγόριθµοι και το. To Κρυπτοσύστηµα RSA Αριθµοθεωρητικοί Αλγόριθµοι και το Κρυπτοσύστηµα RSA Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Υπολογισµός Μέγιστου Κοινού ιαιρέτη Αλγόριθµος του Ευκλείδη Κλάσεις Ισοδυναµίας και Αριθµητική modulo

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ 1 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 1 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ 1.1 Να δοθεί ο ορισμός του προβλήματος καθώς και τρία παραδείγματα

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

(a + b) + c = a + (b + c), (ab)c = a(bc) a + b = b + a, ab = ba. a(b + c) = ab + ac

(a + b) + c = a + (b + c), (ab)c = a(bc) a + b = b + a, ab = ba. a(b + c) = ab + ac Σημειώσεις μαθήματος Μ1212 Γραμμική Άλγεβρα ΙΙ Χρήστος Κουρουνιώτης ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 2014 Κεφάλαιο 1 Διανυσματικοί Χώροι Στο εισαγωγικό μάθημα Γραμμικής Άλγεβρας ξεκινήσαμε μελετώντας

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

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

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

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

Διάλεξη 5η: Εντολές Επανάληψης

Διάλεξη 5η: Εντολές Επανάληψης Διάλεξη 5η: Εντολές Επανάληψης Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Εντολές Επανάληψης CS100, 2015-2016

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 6 Πίνακες Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Τύπος πίνακα (array) Σύνθετος τύπος δεδομένων Αναπαριστά ένα σύνολο ομοειδών

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

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα. i Π Ρ Ο Λ Ο Γ Ο Σ Το βιβλίο αυτό αποτελεί μια εισαγωγή στα βασικά προβλήματα των αριθμητικών μεθόδων της υπολογιστικής γραμμικής άλγεβρας (computational linear algebra) και της αριθμητικής ανάλυσης (numerical

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

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

Ουρά Προτεραιότητας: Heap

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

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

ΤΕΤΥ Εφαρμοσμένα Μαθηματικά 1. Τελεστές και πίνακες. 1. Τελεστές και πίνακες Γενικά. Τι είναι συνάρτηση? Απεικόνιση ενός αριθμού σε έναν άλλο.

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

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

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

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

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΩΤΗΣΕΙΣ 1. Τι καλείται ψευδοκώδικας; 2. Τι καλείται λογικό διάγραμμα; 3. Για ποιο λόγο είναι απαραίτητη η τυποποίηση του αλγόριθμου; 4. Ποιες είναι οι βασικές αλγοριθμικές δομές; 5. Να περιγράψετε τις

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

Ουρά Προτεραιότητας (priority queue)

Ουρά Προτεραιότητας (priority queue) Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει δύο βασικές λειτουργίες : Εισαγωγή στοιχείου με δεδομένο κλειδί. Επιστροφή ενός στοιχείου με μέγιστο (ή ελάχιστο) κλειδί και διαγραφή

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

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

Δένδρα επικάλ επικ υψης ελάχιστου στους Δένδρα επικάλυψης ελάχιστου κόστους Αλγόριθμος Kruskal Αλγόριθμος Kruskal Ξεκινάμε από ένα δάσος από n δένδρα, κάθε ένα δένδρο εκφυλισμένο σε ένα μεμονωμένο κόμβο. Σε κάθε επανάληψη, προσθέτουμε τη πλευρά

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

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

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

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