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

Μέγεθος: 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 >.

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 25 Φεβρουαρίου 2015 1 / 53 Περιεχόµενα

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 1 Εισαγωγικές έννοιες Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 1 1 / 57 Περιεχόµενα 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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Γενική µέθοδος σχεδιασµού αλγορίθµων: Διαίρεση σε ( 2) υποπροβλήµατα (σηµαντικά) µικρότερου µεγέθους.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

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

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

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

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

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1 Διαίρει-και-Βασίλευε Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική μέθοδος

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

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Ορθότητα Χωρική αποδοτικότητα. Βελτιστότητα. Θεωρητική ανάλυση Εμπειρική ανάλυση. Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Ανάλυση Αλγορίθμων Θέματα Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα Προσεγγίσεις: Θεωρητική ανάλυση Εμπειρική ανάλυση Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1 Θεωρητική

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

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

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

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

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

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

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

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

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

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

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

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

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

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1o Φροντιστήριο ΗΥ240

1o Φροντιστήριο ΗΥ240 1o Φροντιστήριο ΗΥ240 Άσκηση 1 Αποδείξτε τη μεταβατική και τη συμμετρική ιδιότητα του Θ Μεταβατική Ιδιότητα (ορισμός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)) Για να ισχύει f(n)= Θ(h(n))

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

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

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

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

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ ΕΝΟΤΗΤΑ 1 ΕΙΣΑΓΩΓΗ 1 εδοµένα Σύνολο από πληροφορίες που πρέπει να αποθηκευτούν σε έναν υπολογιστή Υπολογιστικό Μοντέλο ένας επεξεργαστής και µεγάλος

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 14: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης 3) Mergesort Ταξινόμηση με Συγχώνευση 4) BucketSort Ταξινόμηση με Κάδους Διδάσκων:

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

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

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

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 2 ιαίρει και Βασίλευε Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 2 1 / 140 ιαίρει και Βασίλευε

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

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

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

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

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

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

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

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

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

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

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Γ. MergeSort Ταξινόμηση με Συγχώνευση Δ. BucketSort Ταξινόμηση με Κάδους Διδάσκων:

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 2: Ανάλυση Αλγορίθμων. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 2: Ανάλυση Αλγορίθμων. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 2: Ανάλυση Αλγορίθμων Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Άδειες Χρήσης Το παρόν

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

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

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

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Ταξινόμηση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Είσοδος n αντικείμενα a 1, a 2,..., a n με κλειδιά (συνήθως σε ένα πίνακα, ή λίστα, κ.τ.λ)

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

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

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

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 23 Μαρτίου 2017 1 / 170 Αναδροµή ιαίρει

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

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

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

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

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

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/courses/algorithms/ auth 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο του προβλήματος

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

Αλγόριθμοι ταξινόμησης

Αλγόριθμοι ταξινόμησης Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης BuubleSort, SelectionSort, InsertionSort, Merger Sort, Quick Soft ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

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

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

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

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

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

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

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012 Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012 Ενδεικτικές απαντήσεις 1 ου σετ ασκήσεων. Άσκηση 1 Πραγματοποιήσαμε μια σειρά μετρήσεων του χρόνου εκτέλεσης τριών

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

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

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

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

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

Διακριτά Μαθηματικά. Γιάννης Εμίρης. Τμήμα Πληροφορικής & Τηλεπικοινωνιών ΕΚΠΑ. Οκτώβριος ΔιακριτάΜαθηματικά Γιάννης Εμίρης http://eclass.uoa.gr/ Τμήμα Πληροφορικής & Τηλεπικοινωνιών ΕΚΠΑ Οκτώβριος 2016 Διακριτά Μαθηματικά Αλγόριθμοι Ρυθμόςαύξησηςσυναρτήσεων[Rosen 3.2] Διακριτά Μαθηματικά Ορισμοί

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου Ημερομηνία Υποβολής:

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

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

Ταξινόμηση με συγχώνευση Merge Sort

Ταξινόμηση με συγχώνευση Merge Sort Ταξινόμηση με συγχώνευση Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 Πληροφορικής 1 Διαίρει και Βασίλευε Η μέθοδος του «Διαίρει και Βασίλευε» είναι μια γενική αρχή σχεδιασμού αλγορίθμων

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

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Αναζήτηση. Σειριακή αναζήτηση. Δυαδική Αναζήτηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου

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

Αλγόριθμοι Ταξινόμησης Μέρος 4

Αλγόριθμοι Ταξινόμησης Μέρος 4 Αλγόριθμοι Ταξινόμησης Μέρος 4 Μανόλης Κουμπαράκης Δομές Δεδομένων και Τεχνικές 1 Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Οι αλγόριθμοι ταξινόμησης που είδαμε μέχρι τώρα αποφασίζουν πώς να

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 1 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική

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

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

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

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

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

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

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

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις

1 Ανάλυση αλγορίθµων. 2 Συµβολισµοί O, Ω και Θ. 3 Αναδροµικές εξισώσεις Γενικό πλάνο Μαθηµατικά για Πληροφορική 6ο Μάθηµα 1 Ανάλυση αλγορίθµων Ηλίας Κουτσουπιάς, Γιάννης Εµίρης 2 Συµβολισµοί O, Ω και Θ Τµήµα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήµιο Αθηνών 27/11/2008 3

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

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

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

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

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

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

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης: Α. SelectoSort Ταξινόμηση με Επιλογή Β. IsertoSort Ταξινόμηση με Εισαγωγή Γ. MergeSort

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

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

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

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

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

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

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

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

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

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

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

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

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

Τεχνικές Σχεδιασμού Αλγορίθμων

Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Διαίρει και Βασίλευε Δυναμικός Προγραμματισμός Απληστία Π. Μποζάνης ΤHMMY - Αλγόριθμοι 2014-2015 1 Διαίρει και Βασίλευε Βασικά Βήματα Διαίρει: Κατάτμηση του αρχικού προβλήματος

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

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

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

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

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

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

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

1η Σειρά Γραπτών Ασκήσεων

1η Σειρά Γραπτών Ασκήσεων 1/20 Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 1η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 1 Ασυμπτωτικός Συμβολισμός, Αναδρομικές Σχέσεις 2 3 4 5 2/20

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

Μαθηµατικά για Πληροφορική

Μαθηµατικά για Πληροφορική Μαθηµατικά για Πληροφορική 6ο Μάθηµα Ηλίας Κουτσουπιάς, Γιάννης Εµίρης Τµήµα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήµιο Αθηνών 27/11/2008 27/11/2008 1 / 55 Γενικό πλάνο 1 Ανάλυση αλγορίθµων 2 Συµβολισµοί

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013 Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013 Λυμένες Ασκήσεις Σετ Α: Ανάλυση Αλγορίθμων Άσκηση 1 Πραγματοποιήσαμε μια σειρά μετρήσεων του

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

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

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών Δυναμικός Προγραμματισμός Δυναμικός Προγραμματισμός 1 Περίληψη

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