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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Advertisements

Πιθανοκρατικοί Αλγόριθμοι
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA.
Πολυπλοκότητα Παράμετροι της αποδοτικότητας ενός αλγόριθμου:
Αλγόριθμοι Ταξινόμησης
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
Ο Αλγόριθμος FP-Growth. Αλγόριθμος FP-Growth Ο αλγόριθμος χρησιμοποιεί μια συμπιεσμένη αναπαράσταση της βάσης των συναλλαγών με τη μορφή ενός FP-δέντρου.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Page  1 Ο.Παλιάτσου Γαλλική Επανάσταση 1 ο Γυμνάσιο Φιλιππιάδας.
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Αναγνώριση Προτύπων.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Γραφήματα & Επίπεδα Γραφήματα
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Συναρτησιακές Εξαρτήσεις.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Διαίρει-και-Βασίλευε
Δυναμικός Προγραμματισμός
1 Θεματική Ενότητα Γραφήματα & Επίπεδα Γραφήματα.
Προσεγγιστικοί Αλγόριθμοι
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A Δυναμικός Προγραμματισμός πρόβλημα μεγέθους Ν διάσπαση πρόβλημα.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου 2015Κυριακή, 11 Ιανουαρίου.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Αλγόριθμοι και Πολυπλοκότητα
Γράφοι: Προβλήματα και Αλγόριθμοι
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Διαίρει και Βασίλευε γνωστότερη Η γνωστότερη μέθοδος σχεδιασμού αλγορίθμων: Διαιρούμε.
Προσεγγιστικοί Αλγόριθμοι για NP-Δύσκολα Προβλήματα
Ειδικά θέματα υπολογισμού και πολυπλοκότητας Θέμα : Προσεγγιστικοί αλγόριθμοι Γαζη Ιωαννα ΑΜ:3900.
ΘΕΩΡΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΚΕΦΑΛΑΙΑ 7.4 – 7.6 NP ΠΛΗΡΟΤΗΤΑ.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Ουρά Προτεραιότητας: Heap
Συντομότερες Διαδρομές
Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης
ΘΕΩΡΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΚΕΦΑΛΑΙΑ 7.4 – 7.6 NP ΠΛΗΡΟΤΗΤΑ.
Ειδικά Θέματα Αλγορίθμων και Δομών Δεδομένων
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ. Πληροφορικής,
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
1 Βέλτιστη δρομολόγηση (optimal routing) Αντιμετώπιση της δρομολόγησης σαν «συνολικό» πρόβλημα βελτιστoποίησης. Γιατί: Η αλλαγή της δρομολόγησης μιας συνόδου.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Ελάχιστο Συνδετικό Δέντρο
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 2: Μονοπάτια και Κύκλοι (Hamilton) Data Engineering Lab.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
Υπολογιστική Πολυπλοκότητα Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Αγγελική Γεωργιάδου- Αναστασία Πεκτέσογλου Δράμα 2006
Χρονική Πολυπλοκότητα και Μοντέλα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
ΔΥΝΑΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1. 2 Αλληλεπικαλυπτόμενα Υποπροβλήματα Όπως η Διαίρεση και Κυριαρχία, ο Δυναμικός Προγραμματισμός συνδυάζει λύσεις σε υποπροβλήματα.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ Άπληστη Αναζήτηση και Αναζήτηση Α* ΣΠΥΡΟΣ ΛΥΚΟΘΑΝΑΣΗΣ, ΚΑΘΗΓΗΤΗΣ.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Ηλεκτρική Οικονομία Σταμάτης Νικολόπουλος ΑΜ: 868 ΑΣΠΑΙΤΕ, 2015.
ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΜΟΝΟΠΑΤΙΩΝ & ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Επίλυση Προβλημάτων με Αναζήτηση
Βέλτιστη δρομολόγηση (optimal routing)
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο
Δυναμικός Προγραμματισμός
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

Αλγόριθμοι και Πολυπλοκότητα Η σφαίρα των αλγοριθμικών προβλημάτων Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

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

Εξαντλητική Αναζήτηση Υπολόγισε όλα τα μονοπάτια και διάλεξε το συντομότερο Μήκος(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)! μονοπάτια => Πολυπλοκότητα: Ω(2n) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

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

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

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

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

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

Αλγόριθμοι και Πολυπλοκότητα Μονοπάτι Hamilton Υπάρχει διαδρομή που περνά από κάθε σημείο ενός γράφου G μόνο μια φορά; Ο αλγόριθμός εξαντλητικής αναζήτησης ελέγχει n! μονοπάτια Είναι NP Complete διότι μετετρέπεται σε TSP σε πολυωνυμικό χρόνο ως εξής Δημιούργησε έναν πλήρη γράφο G’ στον οποίο οι ακμές που υπάρχουν στον G έχουν μήκος 1 και αυτές που δεν υπάρχουν έχουν μήκος 2 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Λύση 1 2 G G’ Μετατροπή σε TSP σε πολυωνυμικό χρόνο: κόστος δημιουργίας του G συν κόστος προσθήκης πρόσθετων ακμών: O(n) Η λύση ισοδυναμεί με την εύρεση μονοπατιού TSP στον γράφο G’ με μήκος n + 1 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

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

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

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

Δέντρα Ελάχιστου Κόστους Σύνδεσης Σε ένα γράφο G με κόστος στις ακμές, βρες τις ακμές με το μικρότερο συνολικό κόστος ώστε όλους όλοι οι κόμβοι να μείνουν ενωμένοι Εφαρμογή: σύνδεσε όλες τις πόλεις με μικρότερο μήκος καλωδίου Οι ακμές δημιουργούν δένδρο Η εξαντλητική αναζήτηση χρειάζεται εκθετικό χρόνο (επιλογή ανάμεσα σε nn-2 δέντρα ή n! πλευρές) Δύο βέλτιστοι αλγόριθμοι (επόμενη διαφάνεια) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι για Δέντρα Ελάχιστου Κόστους Σύνδεσης D B C 2 5 3 4 1 6 Α Ε D B C 2 1 Cost=7 Prim: σε κάθε βήμα προσθέτει στο δένδρο την ακμή με το μικρότερο κόστος Kruskal: σε κάθε βήμα προσθέτει την ακμή με το μικρότερο κόστος αρκεί να μην δημιουργούνται κύκλοι Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμος Prim Είσοδος: γράφος G=(V,E), V={1,2,…,n} σύνολο κόμβων, U: σύνολο ακμών function Prim(είσοδος G:γράφος, έξοδος δένδρο U: σύνολο ακμών) { T = 0; U = {1}; while (U != V) { (u,v) = ακμή μικρότερου κόστους: u από το U, v από το V T = T + {(u,v)}; U = U + {v}; } Το δέντρο θα περιέχει n – 1 ακμές Πολυπλοκότητα: O(n2) γιατί; Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα G = (V,E) 5 2 4 1 3 6 1 3 6 4 4 1 3 6 2 1 3 Βήμα 1 Βήμα 2 Βήμα 3 5 2 4 1 3 6 2 4 1 3 6 5 Βήμα 5 Βήμα 4 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Τοπική Αναζήτηση Αλγόριθμοι που βελτιώνουν μη βέλτιστες λύσεις, όπως μια τοπική μετατροπή που βελτιώνει μια υπάρχουσα λύση που έχει βρει ένας λαίμαργος αλγόριθμος Μπορεί να εφαρμοστεί επαναληπτικά και όσο βελτιώνεται η λύση Εφαρμογή σε δύσκολα (NP προβλήματα) όπως TSP Η πολυπλοκότητα της μετατροπής πρέπει να είναι πολυωνυμική Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα B Α Ε D C Α Ε D B C 2 5 3 4 1 6 Λαίμαργος TSP  6 κόστος=12 Σημείο εκκίνησης Α Ε D B 2 Α Ε D B 1 4   Ε B D Α C 2 3 τοπικό κόστος = 4 τοπικό κόστος = 5 κόστος = 11: βέλτιστο Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

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

Συγχωνευμένη ταξινόμηση list mergesort(list L, int n) { if (n == 1) return (L); L1 = πάνω μισό του L; L2 = κάτω μισό του L; return merge (mergesort(L1,n/2), mergesort(L2,n/2) ); } n:μέγεθος του πίνακα L(υποθέτουμε το L δύναμη του 2) merge:συγχωνεύει τα ταξινομημένα L1, L2 σε ένα ταξινομημένο πίνακα Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Πολυπλοκότητα: O(nlogn) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

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

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

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

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

Ορολογία του Προβλήματος n αντικείμενα s1, s2, s3, … sn: μεγέθη v1, v2, v3, …. vn: αξίες C: χωρητικότητα σακιού Έστω 0 <= i <= n και A <= C V(k,A) : η μέγιστη τιμή η οποία μπορεί να χωρέσει σε σακί χωρητικότητας A ξέροντας ότι διαλέγουμε τα περιεχόμενα από τα πρώτα k αντικείμενα V(n,C) : η μέγιστη αξία η οποία μπορεί να χωρέσει στο σακί C όταν επιλέγουμε ανάμεσα από όλα τα αντικείμενα V(k,A) = 0 αν k = 0 ή A <= 0 για κάθε k Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Διατύπωση Προβλήματος V(k,A) = max{V(k-1,A), V(k-1,A-sk)+vk}: λύνοντας το πρόβλημα για το επόμενο αντικείμενο k, υπάρχουν δύο επιλογές: Μπορούμε να το συμπεριλάβουμε ή όχι: Αν όχι, τότε μπορούμε να πετύχουμε καλύτερη αξία αν επιλέξουμε ανάμεσα από τα προηγούμενα k-1 αντικείμενα Αν ναι, τότε η αξία του vk προστίθεται στη συνολική αξία αλλά η χωρητικότητα του σακιού μειώνεται κατά το μέγεθός του sk Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Εξαντλητική Αναζήτηση Αν υπολογίσουμε το V(n,c) με αναδρομική αντικατάσταση η πολυπλοκότητα είναι Ω(2n) Υπολογίζονται δύο τιμές για το V(n-1,A) Τέσσερις τιμές του V(n-2,A) κ.ο.κ Ο αριθμός μερικών λύσεων ισούται με τον αριθμό των κόμβων σε ένα πλήρες δυαδικό δέντρο βάθους n που είναι Ω(2n) Ο αριθμός των αξιών που πρέπει να υπολογιστούν διπλασιάζεται σε κάθε βήμα Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Δυναμικός Προγραμματισμός Πολλές από αυτές τις τιμές είναι πιθανό να είναι ίδιες ειδικά όταν το C είναι μικρό συγκρινόμενο με το 2n Ο Δυναμικός Προγραμματισμός υπολογίζει και αποθηκεύει αυτές τις τιμές σε ένα πίνακα n+1 σειρών και C στηλών Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Δυναμικός Προγραμματισμός (ΔΠ) : υπολόγισε και αποθήκευσε V(0,A), V(1,Α), … V(k,A), … V(n,C) όπου 0 <= k <= n και 0 <= A <= C χρησιμοποιώντας V(k,A) = max{V(k-1,A), V(k-1,A-sk)+vk}: C V(0,0) V(1,0) V(1,A) n +1 V(n,C): λύση Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Κάθε λύση V(k,A) χρειάζεται σταθερό χρόνο να υπολογιστεί Πρέπει να γεμίσει όλος ο πίνακας Ο συνολικός χρόνος για να γεμίσει ο πίνακας είναι ανάλογος του μεγέθους του, άρα η πολυπλοκότητα του αλγορίθμου είναι O(nC) Γρηγορότερο από την εξαντλητική αναζήτηση αν C << 2n Όμως ποια αντικείμενα περιλαμβάνονται στο σακί; Χρήση δεύτερου πίνακα Xi(k,A) Xi(k,A) = 1 αν το αντικείμενο i περιλαμβάνεται, 0 αν όχι Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Συντομότερο μονοπάτι Βρες τη συντομότερη διαδρομή από ένα δοσμένο κόμβο προς οποιονδήποτε άλλον κόμβο στο γράφο G Ο ίδιος αλγόριθμος ακόμα και αν ζητείται η συντομότερη διαδρομή προς ένα μόνο τελικό κόμβο Ορολογία: G = (V,E) : γράφος εισόδου C[i,j] : απόσταση μεταξύ των κόμβων i, j V : κόμβος εκκίνησης S : σύνολο κόμβων για τους οποίους το συντομότερο μονοπάτι από το v έχει υπολογιστεί D(W) : μήκος του συντομότερου μονοπατιού από το v εώς το w περνώντας από κόμβους στο S Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα 1 2 3 5 4 100 10 60 50 30 κόμβος εκκίνησης: v = 1 20 βήμα S W D(2) D(3) D(4) D(5) 1 {1} - 10 oo 30 100 2 {1,2} 60 3 {1,2,4} 4 50 90 {1,2,4,3} 5 {1,2,4,3,5} Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμος του Dijkstra function Dijkstra(G: graph, int v) { S = {1}; for i = 2 to n: D[i] = C[i,j]; while (S != V) { επέλεξε w από V-S: D[w] = minimum S = S + {w}; για κάθε v σε V–S: D[v] = min{D[v], D[w]+[w,v]}*; } * Αν D[w]+C[w,v] < D[v] τότε P[v] = w: κράτησε το μονοπάτι στο πίνακα P Πολυπλοκότητα: O(n2) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Δυναμικός Προγραμματισμός στο TSP (1/3) Ο βέλτιστος αλγόριθμος είναι Ω((n-1)!) Αν τα ίδια μερικά μονοπάτια χρησιμοποιούνται πολλές φορές τότε ο δυναμικός προγραμματισμός μπορεί να είναι γρηγορότερος! Ορολογία: Αριθμούμε τις πόλεις ως 1,2,…n, 1 είναι η πόλη εκκίνησης και τερματισμού d(i,j) : η απόσταση από τον κόμβο i μέχρι τον j D(b,S) : μήκος της συντομότερης διαδρομής που ξεκινάει από το b, περνά από όλες τις πόλεις του συνόλου S σε κάποια σειρά και τερματίζει στον κόμβο 1 Το S είναι υπό-σύνολο του {1,2,…n} – {1,b} Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Δυναμικός Προγραμματισμός στο TSP (2/3) Το TSP πρέπει να υπολογίζει την τιμή D(1,{2,…n}) και τη σειρά των κόμβων Ο δυναμικός προγραμματισμός υπολογίζει και αποθηκεύει τις τιμές D(b,S) για όλα τα b Το TSP πρέπει να υπολογίσει όλα τα D(b,S) ξεκινώντας από άδειο S και προχωρώντας έως S={2,3,….n} Υποθέτουμε ότι ξεκινά από b=1 D(b,φ) = d(b,1) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Δυναμικός Προγραμματισμός στο TSP (3/3) Για κάθε ένα n από τα πιθανά b υπάρχουν το πολύ 2n-1 μονοπάτια Υπάρχουν n τιμές του b στο S Υπάρχουν n2n-1 τιμές του D(b,S) Για κάθε D(b,S) επιλέγει ένα α που δίνει ελάχιστο τιμή Η πολυπλοκότητα είναι O(n22n-1) : εκθετική αλλά, καλύτερη από την εξαντλητική αναζήτηση! D(a, S-{a}) δεν ξανά-υπολογίζονται (είναι αποθηκευμένα) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Διακλάδωση με Όρια Ερευνά όλες τις λύσεις χρησιμοποιόντας περιορισμούς (όρια) Κάτω Όριο: ελάχιστη δυνατή τιμή της λύσης Πάνω Όριο: μέγιστη δυνατή τιμή της λύσης Το πρόβλημα χωρίζεται σε υποπροβλήματα Κάθε υποπρόβλημα επεκτείνεται προς τη λύση του συνολικού προβλήματος αρκεί η λύση που προκύπτει σε κάθε βήμα να μην ξεπερνά τα όρια δηλ. πρέπει να είναι μεγαλύτερη από το κάτω όριο και μικρότερη από το πάνω όριο Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Πάνω-Κάτω Όρια Τα πάνω όριο μπορούν να είναι αρχικά άπειρο Παίρνει το κόστος μίας λύσης μόλις βρεθεί μια Ένας λαίμαργος αλγόριθμός μπορεί να δώσει το αρχικό πάνω όριο (π.χ., στο TSP κ.λ.π) Αναθεωρείται κάθε φορά που βρίσκονται λύσεις με μικρότερο κόστος Το κάτω όριο δεν είναι πάντα εύκολο να υπολογιστεί Εξαρτάται από το πρόβλημα Υπάρχει ένα σχετικό θεώρημα για το TSP Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα s c f a d e g h k t b 1 2 4 3 9 5 7 πάνω όριο με αυξανόμενο: length(saefkt)=8 1 s s b c a e d 2 3 4 7 3 4 5 s b c a e d f 2 3 4 7 9 s b c a e d f 2 3 4 7 9 2 s a b c 2 3 4 9 … Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Βασικός αλγόριθμος S = { 1,2,…n } /* αρχικό πρόβλημα */ U = oo /* πάνω όριο */ while S != empty { K = k  S, S = S – {k}; C = { c1,c2,…cm } /* παιδιά του k */ Υπολογίζει τις Μερικές Λύσεις Zc1,Zc2,…Zcm for i = 1 to m { if Zci >= U kill C else if ( ci = solution ) { U = Zci best solution = i } else S = S + { ci } } Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα