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

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο. Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού

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

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

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

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

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

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

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

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

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem

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

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

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

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

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

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

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

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

Προσεγγιστικοί Αλγόριθμοι

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

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

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

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

Κατώτερα φράγματα Κατώτερο φράγμα: εκτίμηση της ελάχιστης εργασίας που απαιτείται για την επίλυση ενός προβλήματος. Παραδείγματα: Αριθμός συγκρίσεων π

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 5: ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ-ΑΝΑΓΩΓΗ

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

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

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

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων

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

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

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

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

Επιχειρησιακή Έρευνα

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

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

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

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

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

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

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

περιεχόμενα υπολογιστικό πρόβλημα αλγόριθμοι παράδειγμα ταξινόμησης ταξινόμηση αλγόριθμοι τεχνολογία αλγορίθμων Παύλος Εφραιμίδης

Μάθημα 20: Δυναμικός Προγραμματισμός (DP)

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

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

HY118-Διακριτά Μαθηματικά. Θεωρία γράφων/ γραφήματα. Τι έχουμε δει μέχρι τώρα. Ισομορφισμός γράφων: Μία σχέση ισοδυναμίας μεταξύ γράφων.

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

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

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

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

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

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση

Βασίλειος Κοντογιάννης ΠΕ19

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

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

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

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

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

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

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

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

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

Outline. 6 Edit Distance

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

4.3 Ορθότητα και Πληρότητα

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

Επίλυση Προβλημάτων και Τεχνικές Αναζήτησης Εισαγωγή

για NP-Δύσκολα Προβλήματα

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

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

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

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

Αλγόριθμοι Προσέγγισης για NP-Δύσκολα Προβλήματα

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

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

Εισαγωγή Στις Αρχές Της Επιστήμης Των Η/Υ. Η έννοια του Προβλήματος - ΚΕΦΑΛΑΙΟ 2

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

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 11: Περιορισμοί της Αλγοριθμικής Ισχύος

Transcript:

Θέματα Απόδοσης Αλγορίθμων 1

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

Οργανώνοντας τα Δεδομένα Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης ενός προγράμματος, ο οποίος μπορεί να κυμαίνεται από λίγα δευτερόλεπτα έως μερικές ώρες/μέρες/... Μια λύση λέγεται αποδοτική, εάν επιλύει το πρόβλημα εντός των περιορισμών που υπάρχουν ως προς τους πόρους: Χώρος Χρόνος Το κόστος μιας λύσης είναι το ποσό των πόρων που αυτή η λύση δαπανά. 3

Επιλέγοντας μια Δομή Δεδομένων Επιλέγουμε μια δομή δεδομένων ως ακολούθως: 1. Αναλύουμε το πρόβλημα για να καθορίσουμε τους περιορισμούς πόρων, στους οποίους πρέπει να υπόκειται μια λύση 2. Καθορίζουμε τις βασικές λειτουργίες που πρέπει να υποστηρίζονται Όλα τα δεδομένα εισάγονται από την αρχή ή υπάρχουν εισαγωγές οι οποίες παρεμβάλλονται ανάμεσα σε άλλες λειτουργίες; Μπορούν τα δεδομένα να διαγραφούν; Όλα τα δεδομένα υφίστανται επεξεργασία σε μια καθορισμένη σειρά ή επιτρέπεται τυχαία προσπέλαση; 3. Επιλέγουμε τη δομή δεδομένων που ικανοποιεί καλύτερα αυτούς τους περιορισμούς 4

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

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

Από τους Αφηρημένους Τύπους Δεδομένων στις Δομές Δεδομένων Αφηρημένος Τύπος Δεδομένων (ΑΤΔ): ο ορισμός ενός τύπου δεδομένων αποκλειστικά με χρήση ενός συνόλου τιμών και ενός συνόλου λειτουργιών πάνω σε αυτόν τον τύπο δεδομένων Δομή δεδομένων (ΔΔ): η φυσική υλοποίηση ενός ΑΤΔ Κάθε λειτουργία που σχετίζεται με τον ΑΤΔ υλοποιείται από μια ή περισσότερες υπορουτίνες (ή συναρτήσεις) Οι Δομές Δεδομένων συνήθως αναφέρονται σε οργανώσεις δεδομένων στην κύρια μνήμη Υπάρχουν και οι Δομές Αρχείων για δεδομένα δευτερεύουσας μνήμης (π.χ. δίσκος) 7

Προσδιορισμός ΑΤΔ μιας γραμμικής λίστας Λειτουργίες Γραμμικής Λίστας Δημιουργία Καθορισμός άδειας λίστας Καθορισμός μήκους λίστας Εύρεση k-οστού στοιχείου Αναζήτηση ενός στοιχείου Διαγραφή k-οστού στοιχείου Εισαγωγή νέου στοιχείου ακριβώς μετά το k-οστό στοιχείο 8

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

Ένας αλγόριθμος πρέπει να διαθέτει: είσοδο: καμία, μία ή περισσότερες τιμές δεδομένων έξοδο: τουλάχιστο μία τιμή δεδομένων καθοριστικότητα: κάθε ενέργεια να προσδιορίζεται σαφώς για τον τρόπο εκτέλεσής της περατότητα: να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του αποτελεσματικότητα: κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή και εκτελέσιμη 10

Ιδιότητες Αλγορίθμου Ένας αλγόριθμος έχει τις ακόλουθες ιδιότητες: Πρέπει να είναι ορθός Πρέπει να αποτελείται από μια σειρά από σαφή βήματα Πρέπει να αποτελείται από ένα πεπερασμένο αριθμό βημάτων Πρέπει να είναι σαφές ποιο βήμα θα εκτελεστεί κάθε φορά Πρέπει να τερματίζει Ένα πρόγραμμα υπολογιστή είναι ένα στιγμιότυπο ή μια διακριτή αναπαράσταση για έναν αλγόριθμο σε μια προγραμματιστική γλώσσα. Μαθηματικό υπόβαθρο: Σύνολα, Αναδρομή, Επαγωγικές αποδείξεις, Λογάριθμοι, Αθροίσματα, Επαναληπτικές σχέσεις 11

Ιδιότητες των Αλγορίθμων Αποτελεσματικότητα: ο αλγόριθμος μπορεί να γραφτεί ως πρόγραμμα Υπάρχουν προβλήματα για τα οποία δεν υπάρχει αλγόριθμος Ορθότητα: βρίσκει τη σωστή λύση για κάθε είσοδο Τερματισμός: ολοκληρώνεται μετά από έναν πεπερασμένο αριθμό βημάτων Κάθε βήμα απαιτεί ένα πεπερασμένο χρόνο Αποδοτικότητα: κάνει σωστή χρήση των πόρων του υπολογιστή Πολυπλοκότητα: υλοποιείται εύκολα σε κώδικα, μπορεί να διορθωθεί και να αλλάξει εύκολα 12

Πρόβλημα Πλανόδιου Πωλητή Βρες την μικρότερη διαδρομή που περνά από κάθε πόλη μόνο μια φορά και γυρνά σε αυτήν που ξεκίνησε Ε σημείο εκκίνησης: Α Α 5 2 3 1 B 4 2 2 2 3 D μικρότερη διαδρομή: ABDECA μήκος(abdeca) = 2+2+2+2+3=11 6 C 13

Εξαντλητική Αναζήτηση Υπολόγισε όλα τα μονοπάτια και διάλεξε το συντομότερο Μήκος(ABCDEA) = 2 + 3 + 6 + 2 + 5 = 18 Μήκος(ACBDEA) = 3 + 3 + 2 + 2 + 5 = 15 Μήκος(ABDECA) = 2 + 2 + 2 + 2 + 3 = 11 Μήκος(AEBCDA) = 5 + 1 + 3 + 6 + 4 = 19 Για n πόλεις => (n-1)! μονοπάτια => Πολυπλοκότητα: Ω(2 n ) 14

Εκθετικά Προβλήματα Έστω ότι είναι γνωστό ότι υπάρχει ένας εκθετικός αλγόριθμος που λύνει το πρόβλημα π.χ., όπως στο πρόβλημα πλανόδιου πωλητή Ερώτημα: Υπάρχει καλύτερος αλγόριθμος; Μέχρι πότε θα ψάχνουμε για ένα καλύτερο αλγόριθμο; Αν αποδειχθεί ότι το πρόβλημα είναι το ίδιο δύσκολο όσο κάποιο άλλο επίσης δύσκολο πρόβλημα για το οποίο δεν έχει βρεθεί καμία καλύτερη λύση, τότε, σταματάμε να ψάχνουμε καλύτερη λύση για το πρώτο πρόβλημα 15

Προβλήματα NP-Complete Δύσκολα προβλήματα για τα οποία ξέρουμε μόνο εκθετικούς αλγορίθμους Ίσως υπάρχουν πολυωνυμικές λύσεις άλλα δεν έχουν βρεθεί ακόμα Παραδείγματα: Πλανόδιου Πωλητή (TSP) Μονοπάτι Hamilton Καλάθι 0-1 (Knapsack Problem) Ιδιότητες NP Completeness: a) Όχι καθορισμένη πολυωνυμικότητα b) Πληρότητα 16

Όχι Καθορισμένη Πολυωνυμικότητα Ένας πολυωνυμικός αλγόριθμος δεν εγγυάται βέλτιστο αποτέλεσμα Ο πολυωνυμικός αλγόριθμος είναι μη καθορισμένος (deterministic): προσπαθεί να βρει μια λύση χρησιμοποιώντας τεχνάσματα Π.χ., TSP: το επόμενο σημείο είναι το πιο κοντινό στο παρόν σημείο 17

Παράδειγμα στο πρόβλημα TSP Ακολουθεί πάντα την μικρότερη διαδρομή προκειμένου να πάει στην επόμενη πόλη Δεν καταλήγει πάντα σε συντομότερη διαδρομή Ε Α 5 2 3 1 4 2 2 2 D C 6 3 B μήκος(abedca) = 2+1+2+6+3=14 δεν είναι βέλτιστο 18

Πληρότητα Κάθε NP-complete πρόβλημα μετατρέπεται σε ένα άλλο NP-complete σε πολυωνυμικό χρόνο Τότε, αν βρεθεί βέλτιστος πολυωνυμικός αλγόριθμος για ένα από αυτά τα προβλήματα, τότε υπάρχει τέτοιος αλγόριθμος για όλα Για να λυθεί ένα NP-complete πρόβλημα αρκεί να μετασχηματιστεί στο πρόβλημα που λύνεται πολυωνυμικά Η πολυπλοκότητα της λύσης είναι το άθροισμα της πολυπλοκότητας μετατροπής και της λύσης του πρώτου προβλήματος Στο σύνολο η πολυπλοκότητα θα είναι πολυωνυμική 19

Τύποι Αλγορίθμων Ευρηματικοί (Heuristic) Λαίμαργοι (greedy) Τοπική αναζήτηση Βέλτιστοι (Optimal) Εξαντλητική Αναζήτηση Διαίρει & Βασίλευε (divide & conquer) Διακλάδωση με όρια (branch and bound) Δυναμικός Προγραμματισμός (DP) 20

Τεχνικές σχεδίασης αλγορίθμων αλγόριθμοι brute-force: διακρίνονται από το γεγονός ότι επιλύουν το πρόβλημα με τον πιο απλό, άμεσο ή προφανή τρόπο. Η λειτουργία τους βασίζεται στον εξαντλητικό έλεγχο όλων των πιθανών περιπτώσεων. Λαίμαργοι αλγόριθμοι: προχωρούν με βάση σταδιακές επιλογές, που αφορούν στο βέλτιστο κάθε βήματος. αλγόριθμοι οπισθοδρόμησης: σε κάθε βήμα εξετάζουν συστηματικά όλα τα πιθανά αποτελέσματα κάθε απόφασης, εκτός και αν αποφασίσουν ότι για κάποιες περιπτώσεις δεν είναι απαραίτητος ένας τέτοιος εξαντλητικός έλεγχος. αλγόριθμοι διαίρει και βασίλευε: το πρόβλημα υποδιαιρείται σε πολλά μικρά υποπροβλήματα πανομοιότυπα με το αρχικό. Κάθε ένα από αυτά επιλύεται ανεξάρτητα και οι επιμέρους λύσεις συνδυάζονται σε μία τελική λύση του αρχικού προβλήματος. 21

Τεχνικές σχεδίασης αλγορίθμων αλγόριθμοι δυναμικού προγραμματισμού: το πρόβλημα υποδιαιρείται σε πολλά μικρά προβλήματα, τα οποία επιλύονται σταδιακά ως σύνθεση των λύσεων των μικρότερων και άρα απλούστερων υποπροβλημάτων. Είναι ιδιαίτερα διαδεδομένοι για την επίλυση προβλημάτων βελτιστοποίησης. τυχαιοποιημένοι αλγόριθμοι: αλγόριθμοι που φαίνεται ότι συμπεριφέρονται τυχαία αλγόριθμοι γράφων αλγόριθμοι αναγνώρισης συμβολοσειρών αριθμητικοί αλγόριθμοι κατανεμημένοι αλγόριθμοι αλγόριθμοι συντακτικής σημασιολογικής ανάλυσης (μεταγλωττιστές) 22

Λαίμαργοι (1/2) Όταν κάνουν μια επιλογή διαλέγουν αυτή με μικρότερο κόστος TSP: η επόμενη πόλη της διαδρομής είναι η πιο κοντινή σε αυτή που βρίσκεται κάθε φορά Ε 5 D Α 2 3 1 4 2 2 2 6 C σημείο εκκίνησης 3 B μήκος(becadb) = 1 + 2 + 3 + 4 + 2 = 12 όχι βέλτιστο βέλτιστο μήκος(bacedb) = 2 + 3 + 2 + 2 + 2 = 11 23

Λαίμαργοι (2/2) Σε κάποιες περιπτώσεις, βρίσκουν την βέλτιστη λύση Πρόβλημα σακιδίου: ανάμεσα σε Ν αντικείμενα διαφόρων αξιών και ίδιου μεγέθους βρες αυτά που γεμίζουν ένα σακί χωρητικότητας C με την μεγαλύτερη αξία; Λύση: γέμισε το σακί με τα αντικείμενα μεγαλύτερης αξίας Προγραμματισμός δουλειάς: ποια είναι η σειρά εξυπηρέτησης Ν πελατών η οποία ελαχιστοποιεί τον μέσο χρόνο αναμονής; Λύση: πρώτα πελάτες με τον μικρότερο χρόνο εξυπηρέτησης 24

Διαίρει και Βασίλευε (D&C) Το πρόβλημα διασπάται σε μικρότερα προβλήματα που λύνονται και οι λύσεις τους συνδυάζονται μέχρι να βρεθεί η λύση του αρχικού προβλήματος Η ιδέα είναι ότι όσο μικρότερο είναι ένα υποπρόβλημα, τόσο πιο εύκολο είναι να λυθεί Προσπάθεια να έχουμε υπο-προβλήματα ίδιου μεγέθους Εκφράζεται με επαναληπτικούς αλγορίθμους Π.χ. Mergesort (Συγχώνευση & Ταξινόμηση) 25

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

Αριθμοί Fibonacci F(n) F(0) 0 F(1) 1 F( n) F( n 1) F( n 2) if n 2 Χρησιμοποιώντας αναδρομή η n πολυπλοκότητά είναι F( n) ( ) Χρησιμοποιώντας ένα πίνακα για αποθήκευση λύσεων η πολυπλοκότητα είναι O(n) F(0) F(1) F(n-1) F(n) 27

0-1 Σακί (knapsack) Aν δίνονται αντικείμενα που ποικίλουν σε μέγεθος και αξία, ποια είναι η μέγιστη αξία που μπορεί να χωρέσει σε σακί χωρητικότητας C ; Πως θα επιτύχουμε την μέγιστη δυνατή πληρότητα με την μέγιστη αξία ; 28

Εξαντλητική Αναζήτηση Η προφανής μέθοδος για να λύσουμε το πρόβλημα του είναι να δοκιμάσουμε όλους τους δυνατούς συνδυασμούς n αντικειμένων 0 1 2 n 0 1 1 0 Κάθε αντικείμενο αντιστοιχεί σε ένα κελί Αν μπει στο σακί τότε το κελί του γίνεται 1 Αν δεν μπει τότε γίνεται 0 Υπάρχουν 2 n διαφορετικοί συνδυασμοί 29