1) Διαίρει και Βασίλευε
1.1) Ο αλγόριθμος MergeSort (Ταξινόμηση με Συγχώνευση)
1.2) Ο αλγόριθμος QuickSort (Γρήγορη Ταξινόμηση)
1.3) Ο αλγόριθμος QuickSelect (Γρήγορη Επιλογή)
1.4) Ο αλγόριθμος Strassen για τον πολλαπλασιασμό πινάκων
Ασκήσεις
1) Η αναδρομή Τ(n)=aT(n-b)+c
1.1) Επίλυση με την Μέθοδο της Επανάληψης
2) Η αναδρομή Τ(n)=T(n-1)+f(n)
2.1) Επίλυση με την Μέθοδο της Επανάληψης
3) Η αναδρομή T(n)=T(n/a)+T(n/b)+f(n)
3.1) Επίλυση με τη Μέθοδο των Φραγμάτων
3.2) Επίλυση με το Δένδρο Αναδρομής
3.3) Επίλυση με τη Δραστηριότητα 3.6
Ασκήσεις
1) ΑΣΥΜΠΤΩΤΙΚΟΙ ΣΥΜΒΟΛΙΣΜΟΙ
1.1) Ο ασυμπτωτικός συμβολισμός ο
1.2) Ο ασυμπτωτικός συμβολισμός Ο
1.3) Ο ασυμπτωτικός συμβολισμός Θ
1.4) Ο ασυμπτωτικός συμβολισμός Ω
1.5) Ο ασυμπτωτικός συμβολισμός ω
2) ΧΡΗΣΗ ΟΡΙΩΝ ΓΙΑ ΤΗΝ ΑΠΟΔΕΙΞΗ ΑΣΥΜΠΤΩΤΙΚΩΝ ΣΥΜΒΟΛΙΣΜΩΝ
3) ΛΗΜΜΑΤΑ ΣΤΟΥΣ ΑΣΥΜΠΤΩΤΙΚΟΥΣ ΣΥΜΒΟΛΙΣΜΟΥΣ
Ασκήσεις
1) Απληστοι Αλγόριθμοι
1.1) Συντομότερο Μονοπάτι σε Γράφο
1.1.1) Ο αλγόριθμος του Dijkstra
1.2) Ελάχιστο Συνδετικό Δένδρο
1.2.1) Ο αλγόριθμος του Prim
1.2.2) Ο αλγόριθμος του Kruskal
1.3) Ελαχιστοποίηση Νομισμάτων με Ρέστα
Εφαρμογές
1) Επιστροφή χρηματικού ποσού για ρέστα
2) Άπληστος Αλγόριθμος για Χρωματισμό Γραφήματος
1) Η αναδρομή Τ(n)=aT(n-b)+c
1.1) Επίλυση με την Μέθοδο της Επανάληψης
2) Η αναδρομή Τ(n)=T(n-1)+f(n)
2.1) Επίλυση με την Μέθοδο της Επανάληψης
3) Η αναδρομή T(n)=T(n/a)+T(n/b)+f(n)
3.1) Επίλυση με τη Μέθοδο των Φραγμάτων
3.2) Επίλυση με το Δένδρο Αναδρομής
3.3) Επίλυση με τη Δραστηριότητα 3.6
Ασκήσεις
1) ΑΣΥΜΠΤΩΤΙΚΟΙ ΣΥΜΒΟΛΙΣΜΟΙ
1.1) Ο ασυμπτωτικός συμβολισμός ο
1.2) Ο ασυμπτωτικός συμβολισμός Ο
1.3) Ο ασυμπτωτικός συμβολισμός Θ
1.4) Ο ασυμπτωτικός συμβολισμός Ω
1.5) Ο ασυμπτωτικός συμβολισμός ω
2) ΧΡΗΣΗ ΟΡΙΩΝ ΓΙΑ ΤΗΝ ΑΠΟΔΕΙΞΗ ΑΣΥΜΠΤΩΤΙΚΩΝ ΣΥΜΒΟΛΙΣΜΩΝ
3) ΛΗΜΜΑΤΑ ΣΤΟΥΣ ΑΣΥΜΠΤΩΤΙΚΟΥΣ ΣΥΜΒΟΛΙΣΜΟΥΣ
Ασκήσεις
1) Απληστοι Αλγόριθμοι
1.1) Συντομότερο Μονοπάτι σε Γράφο
1.1.1) Ο αλγόριθμος του Dijkstra
1.2) Ελάχιστο Συνδετικό Δένδρο
1.2.1) Ο αλγόριθμος του Prim
1.2.2) Ο αλγόριθμος του Kruskal
1.3) Ελαχιστοποίηση Νομισμάτων με Ρέστα
Εφαρμογές
1) Επιστροφή χρηματικού ποσού για ρέστα
2) Άπληστος Αλγόριθμος για Χρωματισμό Γραφήματος
1) Εισαγωγή
1.1) Είδη Προβλημάτων
1.2) Μοντέλα Υπολογισμού
2) Το πρόβλημα της ικανοποιησιμότητας - SAT
2.1) Διατυπωση του προβλήματος
2.2) To SAT λύνεται σε ντετερμιιστικό εκθετικό χρόνο.
2.3) To SAT λύνεται σε ντετερμινιστικό πολυωνυμικό χρόνο?
2.4) Το SAT λύνεται σε μη ντετερμινιστικό πολυωνυμικό χρόνο.
2.5) Σύνοψη για το πρόβλημα SAT
3) Θεωρία Πολυπλοκότητας
3.1) Η κλάση P
3.2) Η κλάση NP
3.3) Η κλάση EXP
3.4) P ⊆푵NP푷⊆퐄EXP퐗퐏
3.5) NP-πληρότητα
4) NP-πληρότητα
4.1) Αποδείξεις NP-πληρότητας
4.2) Ιδιότητες NP-Complete προβλημάτων
4.3) Το ανοικτό πρόβλημα P=NP
4.4) Η κλάση NP-Complete
4.5) Ιεραρχία κλάσεων αν P ≠ NP푷
4.6) Ιεραρχία κλάσεων αν P = NP푷
Ασκήσεις
1) Κλειστότητα των Κανονικών Γλωσσών
1.1) Κλειστότητα στην Ένωση
1.2) Κλειστότηα στην Παράθεση
1.3) Κλειστότητα στο Αστέρι Kleene
1.4) Κλειστότητα στο Συμπλήρωμα
1.5) Κλειστότητα στην Τομή
1.5.1) Απλοποίηση ΝΠΑ
2) Επιπλέον Κατασκευές
2.1) Κατασκευή ΝΠΑ για την Ένωση
2.2) Κατασκευή ΝΠΑ για την Διαφορά
1) Εισαγωγικοί Ορισμοί
1.1) Κατευθυνόνομενο Γράφημα
1.2) Μονοπάτια
1.3) Κύκλοι
1.4) Έσω και Έξω Βαθμός Κορυφής
1.5) Απομονωμένη Κορυφή
1.6) Πλήρες Γράφημα
2) Η Γλώσσα των Κατευθυνόμενων Γραφημάτων
2.1) Η Γλώσσα των Κατευθυνόμενων Γραφημάτων
2.2) Ερμηνείες στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
3) Ασκήσεις στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
3.1) Μετάφραση στα Ελληνικά
3.2) Μετάφραση στα Κατηγορηματικά
3.3) Εύρεση Αλήθειας Προτάσεων
3.4) Εύρεση Ερμηνείας που ικανοποιεί δεδομένη πρόταση
3.5) Συντομογραφίες στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
Ασκήσεις
1) Στόχος της Συνδυαστικής
2) Τρόποι Απαρίθμησης
2.1) Καταμέτρηση
2.2) Αρχές Απαρίθμησης
2.2.1) Ο κανόνας του αθροίσματος
2.2.2) Ο κανόνας του γινομένου
2.3) Γενίκευση των Αρχών Απαρίθμησης
2.4) Μαθηματικοί τύποι της Συνδυαστικής
Ασκήσεις
1) Ορισμός Συνδετικού Δένδρου
1.1) Διάσχιση Πρώτα Κατά Πλάτος
1.2) Διάσχιση Πρώτα Κατά Βάθος
2) Ελάχιστο Συνδετικό Δένδρο
2.1) Ορισμός Ελάχιστου Συνδετικού Δένδρου
2.2) Ο αλγόριθμος του Prim
3) Σύνοψη για τους Αλγόριθμους
3.1) Συντομότερα Μονοπάτια
3.2) Συνδετικό Δένδρο
3.3) Ελάχιστο Συνδετικό Δένδρο
1) Εισαγωγή
1.1) Είδη Προβλημάτων
1.2) Μοντέλα Υπολογισμού
2) Το πρόβλημα της ικανοποιησιμότητας - SAT
2.1) Διατυπωση του προβλήματος
2.2) To SAT λύνεται σε ντετερμιιστικό εκθετικό χρόνο.
2.3) To SAT λύνεται σε ντετερμινιστικό πολυωνυμικό χρόνο?
2.4) Το SAT λύνεται σε μη ντετερμινιστικό πολυωνυμικό χρόνο.
2.5) Σύνοψη για το πρόβλημα SAT
3) Θεωρία Πολυπλοκότητας
3.1) Η κλάση P
3.2) Η κλάση NP
3.3) Η κλάση EXP
3.4) P ⊆푵NP푷⊆퐄EXP퐗퐏
3.5) NP-πληρότητα
4) NP-πληρότητα
4.1) Αποδείξεις NP-πληρότητας
4.2) Ιδιότητες NP-Complete προβλημάτων
4.3) Το ανοικτό πρόβλημα P=NP
4.4) Η κλάση NP-Complete
4.5) Ιεραρχία κλάσεων αν P ≠ NP푷
4.6) Ιεραρχία κλάσεων αν P = NP푷
Ασκήσεις
1) Κλειστότητα των Κανονικών Γλωσσών
1.1) Κλειστότητα στην Ένωση
1.2) Κλειστότηα στην Παράθεση
1.3) Κλειστότητα στο Αστέρι Kleene
1.4) Κλειστότητα στο Συμπλήρωμα
1.5) Κλειστότητα στην Τομή
1.5.1) Απλοποίηση ΝΠΑ
2) Επιπλέον Κατασκευές
2.1) Κατασκευή ΝΠΑ για την Ένωση
2.2) Κατασκευή ΝΠΑ για την Διαφορά
1) Εισαγωγικοί Ορισμοί
1.1) Κατευθυνόνομενο Γράφημα
1.2) Μονοπάτια
1.3) Κύκλοι
1.4) Έσω και Έξω Βαθμός Κορυφής
1.5) Απομονωμένη Κορυφή
1.6) Πλήρες Γράφημα
2) Η Γλώσσα των Κατευθυνόμενων Γραφημάτων
2.1) Η Γλώσσα των Κατευθυνόμενων Γραφημάτων
2.2) Ερμηνείες στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
3) Ασκήσεις στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
3.1) Μετάφραση στα Ελληνικά
3.2) Μετάφραση στα Κατηγορηματικά
3.3) Εύρεση Αλήθειας Προτάσεων
3.4) Εύρεση Ερμηνείας που ικανοποιεί δεδομένη πρόταση
3.5) Συντομογραφίες στην Γλώσσα των Κατευθυνόμενων Γραφημάτων
Ασκήσεις
1) Στόχος της Συνδυαστικής
2) Τρόποι Απαρίθμησης
2.1) Καταμέτρηση
2.2) Αρχές Απαρίθμησης
2.2.1) Ο κανόνας του αθροίσματος
2.2.2) Ο κανόνας του γινομένου
2.3) Γενίκευση των Αρχών Απαρίθμησης
2.4) Μαθηματικοί τύποι της Συνδυαστικής
Ασκήσεις
1) Ορισμός Συνδετικού Δένδρου
1.1) Διάσχιση Πρώτα Κατά Πλάτος
1.2) Διάσχιση Πρώτα Κατά Βάθος
2) Ελάχιστο Συνδετικό Δένδρο
2.1) Ορισμός Ελάχιστου Συνδετικού Δένδρου
2.2) Ο αλγόριθμος του Prim
3) Σύνοψη για τους Αλγόριθμους
3.1) Συντομότερα Μονοπάτια
3.2) Συνδετικό Δένδρο
3.3) Ελάχιστο Συνδετικό Δένδρο
The document discusses algorithms and their analysis. It introduces common algorithms like selection sort and nested for loops. It also covers big O notation for analyzing algorithms and describes how selection sort runs in O(n^2) time. Procedures and pseudocode are provided as examples.
1) Πρόσθεση στα Συστήματα Αρίθμησης
1.1) Πρόσθεση στο Δεκαδικό Σύστημα
1.2) Πρόσθεση στο Δυαδικό Σύστημα
1.3) Πρόσθεση στο Οκταδικό Σύστημα
1.4) Πρόσθεση στο Δεκαεξαδικό Σύστημα
1.5) Πρόσθεση σε Άλλα Συστήματα
2) Αφαίρεση στα Συστήματα Αρίθμησης
2.1) Αφαίρεση στο Δεκαδικό Σύστημα
2.2) Αφαίρεση στο Δυαδικό Σύστημα
2.3) Αφαίρεση στο 8δικό και 16δικό Σύστημα
2.4) Αφαίρεση σε Άλλα Συστήματα
3) Πολλαπλασιασμός και Διαίρεση
3.1) Πολλαπλασιασμός στα Συστήματα Αρίθμησης
3.2) Διαίρεση στα Συστήματα Αρίθμησης
4) Αναπαράσταση Αριθμών στην Μνήμη του Υπολογιστή
4.1) Bits, Bytes και Απεικόνιση στη Μνήμη
4.2) Μήκος Λέξης
4.3) Αναπαράσταση Αρνητικών με Μέτρο
4.4) Αναπαράσταση Αρνητικών με Συμπλήρωμα ως Προς 1
4.5) Αναπαράσταση Αρνητικών με Συμπλήρωμα ως Προς 2
5) Αφαίρεση με Τεχνική Συμπληρώματος
5.1) Αφαίρεση στο Δυαδικό Σύστημα Αρίθμησης με συμπλήρωμα ως προς 2
5.2) Αφαίρεση σε Άλλα Σύστημα Αρίθμησης με την τεχνική συμπληρώματος
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Dimitris Psounis
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
Independence day - Araw ng Kalayaan (09/06/2024). Πρόσκληση - Αφίσα
ΠΛΗ30 ΜΑΘΗΜΑ 2.1
1. ΠΛΗ30
ΕΝΟΤΗΤΑ 2: ΣΧΕ∆ΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ
Μάθηµα 2.1:
∆ιαίρει και Βασίλευε∆ιαίρει και Βασίλευε
∆ηµήτρης Ψούνης
2. ΠΕΡΙΕΧΟΜΕΝΑ
Α. Σκοπός του Μαθήµατος
1. ∆ιαίρει και Βασίλευε
1. Ο αλγόριθµος MergeSort(Ταξινόµησης µε Συγχώνευση)
2. Ο αλγόριθµος QuickSort (Γρήγορη Ταξινόµηση)
3. Ο αλγόριθµος QuickSelect (Γρήγορη Επιλογή)
4. Ο αλγόριθµος Strassen για τον πολ/µο πινάκων
Β.Ασκήσεις
2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Β.Ασκήσεις
1. Εφαρµογές
3. Α. Σκοπός του Μαθήµατος
Οι στόχοι του µαθήµατος είναι:
Επίπεδο Α
(-)
Επίπεδο Β
Η τεχνική σχεδίασης αλγόριθµων ∆ιαίρει και Βασίλευε
3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Η τεχνική σχεδίασης αλγόριθµων ∆ιαίρει και Βασίλευε
Επίπεδο Γ
Ο αλγόριθµος Γρήγορης Ταξινόµησης (QuickSort)
Ο αλγόριθµος Επιλογής του k-µικρότερου αριθµού σε έναν πίνακα
Ο αλγόριθµος Πολλαπλασιασµού Πινάκων Strassen
4. B. Θεωρία
Τεχνικές Σχεδίασης Αλγορίθµων
4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Στην 2η ενότητα του µαθήµατος ασχολούµαστε µε τεχνικές που έχουν
αναπτυχθεί, ως γενικές µεθοδολογίες για την κατασκευή ενός αλγορίθµου:
Η τεχνική ∆ιαίρει και Βασίλευε (Μάθηµα 2.1)
Η τεχνική του ∆υναµικού Προγραµµατισµού (Μάθηµα 2.2)
Η κατασκευή των Άπληστων Αλγόριθµων (Μάθηµα 2.3)
Υπάρχουν ακόµη δεκάδες τεχνικές κατασκευής αλγορίθµων που είναι εκτός
ύλης.
5. B. Θεωρία
1. ∆ιαίρει και Βασίλευε
5∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
∆ΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ
Ένας αλγόριθµος διαίρει και βασίλευε συνίσταται από τα εξής βήµατα:
1. ΒΗΜΑ ∆ΙΑΙΡΕΣΗΣ: ∆ιάσπαση του αρχικού προβλήµατος σε µικρότερα
επιµέρους υποπροβλήµατα.
2. ΒΗΜΑ ΕΠΙΛΥΣΗΣ ΕΠΙΜΕΡΟΥΣ ΣΤΙΓΜΙΟΤΥΠΩΝ: Επίλυση των επιµέρους
υποπροβληµάτων (µε αναδροµικές κλήσεις του ίδιου αλγόριθµου)
3. ΒΗΜΑ ΣΥΝΘΕΣΗΣ ΛΥΣΕΩΝ: Υπολογισµός της λύσης του αρχικού
προβλήµατος, από τις επιµέρους λύσεις των υποπροβληµάτων.
6. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
1. Ο αλγόριθµος ταξινόµησης MergeSort
6∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Ο αλγόριθµος ταξινόµησης MergeSort (Ο αλγόριθµος Ταξινόµησης µε
Συγχώνευση) είναι εφαρµογή του ∆ιαίρει και Βασίλευε:
1. ΒΗΜΑ ∆ΙΑΙΡΕΣΗΣ: Ο πίνακας χωρίζεται σε δύο µέρη:
τον πίνακα και τον πίνακα
],...,[ 1 naaA =
],...,[ 2/11 naaA = ],...,[ 12/2 nn aaA +=
Η πολυπλοκότητα του αλγορίθµου είναι:
2. ΒΗΜΑ ΕΠΙΛΥΣΗΣ ΕΠΙΜΕΡΟΥΣ ΣΤΙΓΜΙΟΤΥΠΩΝ: Η επίλυση των δύο
υποπροβληµάτων που προκύπτουν γίνονται µε αναδροµικές κλήσεις του
MergeSort.
3. ΒΗΜΑ ΣΥΝΘΕΣΗΣ ΛΥΣΕΩΝ: Η συγχώνευση των δύο πινάκων γίνεται µε την
διαδικασία Merge (βλέπε Μάθηµα 1.4) σε γραµµικό χρόνο
2/11 n 12/2 nn +
)log(...)(
2
2)( nnn
n
TnT Θ==Θ+
=
7. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
2. Ο αλγόριθµος ταξινόµησης QuickSort
7∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Ο αλγόριθµος ταξινόµησης QuickSort (Ο αλγόριθµος Γρήγορης
Ταξινόµησης) είναι επίσης εφαρµογή του ∆ιαίρει και Βασίλευε:
1. ΒΗΜΑ ∆ΙΑΙΡΕΣΗΣ: Ο πίνακας χωρίζεται σε δύο µέρη:
τον πίνακα Α1 που περιεχει όλα τα στοιχεία που είναι µικρότερα από το α1 και
],...,[ 1 naaA =
1 1
τον Α2 που περιέχει όλα τα στοιχεία που είναι µεγαλύτερα από το α1
2. ΒΗΜΑ ΕΠΙΛΥΣΗΣ ΕΠΙΜΕΡΟΥΣ ΣΤΙΓΜΙΟΤΥΠΩΝ: Η επίλυση των δύο
υποπροβληµάτων (ταξινόµηση των υποπινάκων Α1 και Α2) που προκύπτουν
γίνονται µε αναδροµικές κλήσεις του QuickSort.
3. ΒΗΜΑ ΣΥΝΘΕΣΗΣ ΛΥΣΕΩΝ: Ο πίνακας A = [A1]α1[A2]
8. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
2. Ο αλγόριθµος ταξινόµησης QuickSort (1.Ψευδοκώδικας)
8∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Παρακάτω φαίνεται µια υλοποίηση της διαδικασίας QuickSort:
procedure QuickSort(A,start,finish)
if start<finish then
pos=Partition(A,start,finish)
QuickSort(A,start,pos-1)
QuickSort(A,pos+1,finish)
end ifend if
end procedure
procedure Partition(A,start,finish)
odigo=A[start]
i=start; j=finish
for (k=start+1 to finish)
if (A[k]>odigo)
B[j]=A[k]; j=j-1
else
B[i]=A[k]; i=i+1
end for
B[i]=odigo; Α=Β
return pos;
end procedure
11. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
2. Ο αλγόριθµος ταξινόµησης QuickSort (3. Ανάλυση)
11∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Η διαδικασία του Partition έχει πολυπλοκότητα Θ(n)
Ανάλυση Καλύτερης Περίπτωσης:
Όταν το σπάσιµο γίνεται στην µέση του πίνακα. Τότε προκύπτει η
αναδροµή:
)log(...)(2)(
.
nnn
n
TnT
ί
Θ==Θ+
=
αςκυριαρχθ
Ανάλυση Χειρότερης Περίπτωσης:
Όταν το σπάσιµο γίνεται στην µέση του πίνακα. Τότε προκύπτει η
αναδροµή:
Στην µέση περίπτωση?
)log(...)(
2
2)( nnn
n
TnT Θ==Θ+
=
( ) )(...)(1)( 2
.
nnnTnT Θ==Θ+−=
επαναληψηςµεθ
12. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
2. Ο αλγόριθµος ταξινόµησης QuickSort (3. Ανάλυση)
12∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Ανάλυση Μέσης Περίπτωσης:
Αν θεωρήσουµε ότι είναι ισοπίθανα τα δυνατά σπασίµατα του πίνακα σε
δύο κοµµάτια τότε κατά µέσο όρο οι πράξεις του αλγορίθµου θα δίνονται
από την αναδροµική σχέση:
[ ] [ ] [ ]nTnTnnTnnTT
nT
)()0()1(...)()2()1()()1()0(
)(
Θ++−++Θ+−Τ++Θ+−+
=
Ή πιο απλά:
Και τελικά
Για την οποία αποδεικνύεται ότι ισχύει T(n)=Θ(nlogn)
[ ] [ ] [ ]
n
nT )( =
[ ]
n
nnnTTT
nT
)()(...)1()0(2
)(
Θ++++
=
[ ] )(
)(...)1()0(2
)( n
n
nTTT
nT Θ+
+++
=
13. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
3. Ο αλγόριθµος επιλογης QuickSelect
13∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
ΠΡΟΒΛΗΜΑ: ∆ίνεται ένας αταξινόµητος πίνακας µε n στοιχεία. Ζητείται να
βρεθεί το k-µικρότερο στοιχείο
Παράδειγµα στιγµιοτύπου:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
Το 5-µικρότερο στοιχείο είναι το 5
Το 10-µικρότερο στοιχείο είναι το 11
Αλγόριθµοι:
Προφανής Αλγόριθµος: Ταξινόµησε τον πίνακα (µε MergeSort) και
επέλεξε το k-ο µικρότερο στοιχείο. Πολυπλοκότητα: Θ(nlogn)
QuickSelect: Εφαρµογή ∆ιαίρει και Βασίλευε: Πολ/τα: O(n)
14. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
3. Ο αλγόριθµος επιλογης QuickSelect (Ιδέα)
14∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Εκµεταλλευόµαστε τo σπάσιµο του πίνακα που κάνει η διαδικασία partition.
Θα χρειάζεται κάθε φορά να ψάχνουµε έναν από τους δύο υποπίνακες που
προκύπτουν µε κατάλληλη τροποποίηση του k.
Έτσι αφού η διαδικασία Partition σπάει τον πίνακα ως εξής [A1] apos [A2]
Αν k=pos τότε βρήκαµε το στοιχείο είναι το apos.
Αν k<pos τότε ψαχνουµε στον πίνακα A1 για το k-µικρότερο στοιχείο
Αν k>pos τότε ψάχνουµε στον πίνακα Α2 για το (k-n1-1)-µικρότερο
στοιχείο (όπου n1 το πλήθος των στοιχείων του Α1)
15. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
3. Ο αλγόριθµος επιλογης QuickSelect (1.Ψευδοκώδικας)
15∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Η υλοποιηση σε ψευδογλώσσα της παραπάνω διαδικασίας είναι η
ακόλουθη:
procedure QuickSelect(A,start,finish,k)
if start>finish then
return 0
elseelse
pos=Partition(A,start,finish)
if k=pos then
return A[pos]
else if k<pos then
return QuickSelect(A,start,pos-1,k)
else if k>pos then
return QuickSelect(A,pos+1,finish,k-pos)
end if
end if
end procedure
17. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
3. Ο αλγόριθµος επιλογης QuickSelect (3. Ανάλυση)
17∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Η διαδικασία του Partition έχει πολυπλοκότητα Θ(n)
Ανάλυση Καλύτερης Περίπτωσης:
Όταν το σπάσιµο γίνεται στην µέση του πίνακα. Τότε προκύπτει η
αναδροµή:
)(...)()(
.
nn
n
TnT
ί
Θ==Θ+
=
αςκυριαρχθ
Ανάλυση Χειρότερης Περίπτωσης:
Όταν το σπάσιµο γίνεται στην µέση του πίνακα. Τότε προκύπτει η
αναδροµή:
Χρειαζόµαστε ένα πιο έξυπνο σπάσιµο σπάσιµο του πίνακα ώστε να
επιτυγχάνεται ένα σπάσιµο του πίνακα περίπου στην µέση.
)(...)(
2
)( nn
n
TnT Θ==Θ+
=
( ) )(...)(1)( 2
.
nnnTnT Θ==Θ+−=
επαναληψηςµεθ
18. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
3. Ο αλγόριθµος επιλογης QuickSelect (4. Παραλλαγή µε τη διαδικασία Πεντάδων)
18∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Προτείνεται η διαδικασία των πεντάδων η οποία:
Χωρίζει τα στοιχεία σε 5-αδες
Από κάθε 5-άδα επιλέγουµε το µεσαίο στοιχειο.
Επαναλαµβάνουµε αναδροµικά για τα µεσαία στοιχεία.
Επιλέγουµε δηλαδή το µεσαίο των µεσαίων (των µεσαίων…) από κάθεΕπιλέγουµε δηλαδή το µεσαίο των µεσαίων (των µεσαίων…) από κάθε
πεντάδα.
Π.χ.:
5-άδες
Νεος Πίνακας αναδροµική εκτέλεση
Επιστρέφεται το 9 (επιλογή οδηγού στοιχείου)
16
13
1 2 3 4 5
18 7 4 11 9
6 7 8 9 10
20 6 1 22 19
11 12 13 14 15
14 5 2 3 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
1 2 3 4
9 19 5 13
19. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
3. Ο αλγόριθµος επιλογης QuickSelect (4. Παραλλαγή µε τη διαδικασία Πεντάδων)
19∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Η επιλογή του µεσαίου στοιχείου από 5 στοιχεία θέλει σταθερό χρόνο:
Άρα αν ο πίνακας έχει n στοιχεία και θέλουµε συνολικά χρόνο T(n)
Επιλέγουµε n/5 φορές το µεσαίο (µε χρόνο Θ(1)). Το βήµα αυτό θέλει
συνολικό χρόνο
Έπειτα κάνουµε µια αναδροµική κλήση για n/5 δεδοµένα.
)()1(
5
n
n
Θ=Θ
Έπειτα κάνουµε µια αναδροµική κλήση για n/5 δεδοµένα.
Συνεπώς η πολυπλοκότητα της επιλογής του στοιχείου µε την διαδικασία
των 5-άδων προκύπτει από την επίλυση της αναδροµικής σχέσης:
Αποδεικνύεται ότι είναι πολύ καλό σπάσιµο, διότι σε κάθε βήµα θα
απορρίπτονται τουλάχιστον 3n/10 στοιχεία (Η απόδειξη παραλείπεται).
∆ηλαδή µε άλλα λόγια η αναδροµή της QuickSelect θα γίνει για το πολύ
7n/10 στοιχεία.
)(...)(
5
)(
.
nn
n
TnT
ί
Θ==Θ+
=
αςκυριαρχθ
20. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
3. Ο αλγόριθµος επιλογης QuickSelect (4. Παραλλαγή µε τη διαδικασία Πεντάδων)
20∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Ενσωµατώνουµε την διαδικασία επιλογής οδηγού στοιχείου στον
προηγούµενο κώδικα:
procedure QuickSelect(A,start,finish,k)
if start=finish then
return A[start]
elseelse
Επιλογή στοιχείου m µε την διαδικασία των 5-άδων.
swap(A[m],A[start])
pos=Partition(A,start,finish)
if k=pos then
return A[pos]
else if k<pos then
return QuickSelect(A,start,pos-1,k)
else if k>pos then
return QuickSelect(A,pos+1,finish,k-pos)
end if
end if
end procedure
21. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
3. Ο αλγόριθµος επιλογης QuickSelect (4. Παραλλαγή µε τη διαδικασία Πεντάδων)
21∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
Η αναδροµική σχέση που περιγράφει την τελική πολυπλοκότητα του
αλγορίθµου είναι:
Για να λύσουµε ένα πρόβληµα µεγέθους n:
Οι πεντάδες θέλουν χρόνο Θ(n)Οι πεντάδες θέλουν χρόνο Θ(n)
Η διαδικασία Partition θέλει χρόνο Θ(n)
Η αναδροµική κλήση θα γίνει για ένα πρόβληµα µεγέθους το πολύ
7n/10, συνεπώς ο χρόνος που απαιτείται είναι Τ(7n/10)
Συνεπώς:
Αυτή είναι και η χειρότερη περίπτωση, άρα τελικά έχουµε T(n)=O(n)
)(...)(
10
7
)(
.
nn
n
TnT
ί
Θ==Θ+
=
αςκυριαρχθ
22. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen
22∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
ΠΡΟΒΛΗΜΑ: Να υπολογιστεί το γινόµενο δύο nxn πινάκων Α και Β.
++
++
=
×
=
=×=
2222122121221121
2212121121121111
2221
1211
2221
1211
babababa
babababa
bb
bb
aa
aa
C
BAC
Αλγόριθµοι:
Εφαρµογή του γνωστού αλγορίθµου από ΠΛΗ12. Η πολυπλοκότητα του
είναι Θ(n2).
Αλγόριθµος του Strassen: Εφαρµογή του ∆ιαίρει και Βασίλευε:
Πολυπλοκότητα: Θ(n2,81)
Ακόµη καλύτεροι αλγόριθµοι ∆ιαίρει και Βασίλευε. Η καλύτερη
πολυπλοκότητα µέχρι στιγµής: Θ(n2,38)
++ 222212212122112122212221 bababababbaa
23. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen
O γνωστός αλγόριθµος πολλαπλασιασµού διδιάστατων πινάκων µπορεί να
υλοποιηθεί σε ψευδογλώσσα ως εξής:
23∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
procedure MultMatrix(A,B)
for (i=1 to n)
for (j=1 to n)
C[i][j]=0;
Η πολυπλοκότητα είναι:
C[i][j]=0;
for (k=1 to n)
C[i][j]=C[i][j]+A[i][k]*B[k][j];
end for
end for
end for
return C
end procedure
( ) )(...)1()1()( 3
nnnnnT Θ==Θ⋅+Θ⋅⋅=
24. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen
Strassen ‘70: Εφαρµογή του διαίρει και βασίλευε (θεωρώ ότι n άρτιος)
Οι πίνακες Α και Β σπάνε στους πίνακες:
24∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
= 1211
AA
AA
A
= 1211
BB
BB
B
Όπου κάθε ένας από τους υποπίνακες έχει µέγεθος n/2 x n/2
O Strassen προσπάθησε να υπολογίσει το γινόµενο C=AxB
κατασκευάζοντας τον πίνακα:
2221 AA
=
2221 BB
B
=
2221
1211
CC
CC
C
25. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen
1η προσέγγιση: Ισχύει ότι:
25∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
2222122122
2122112121
2212121112
2112111111
BABAC
BABAC
BABAC
BABAC
+=
+=
+=
+=
Αντί να κάνουµε τον nxn πολ/µο των πινάκων.
∆ΙΑΣΠΑΣΗ: Γίνονται 8 πολ/µοι n/2 x n/2 πινάκων
ΕΠΙΛΥΣΗ: Αναδροµικά µε τον ίδιο τρόπο.
ΣΥΝΘΕΣΗ ΛΥΣΕΩΝ: 4 προσθέσεις nx2 x nx2 πινάκων
Άρα για να λύσω ένα πρόβληµα µεγέθους n, λύνω 8 υποπροβλήµατα
µεγέθους n/2 και συνδυάζω τις λύσεις σε χρόνο Θ(n2)
Η πολυπλοκότητα είναι:
Καµία βελτίωση σε σχέση µε τον
προφανή αλγόριθµο
2222122122 BABAC +=
)(...)(
2
8)( 32
nn
n
TnT
remMasterTheo
Θ==Θ+
=
26. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen
1η προσέγγιση: Ισχύει ότι:
26∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
2222122122
2122112121
2212121112
2112111111
BABAC
BABAC
BABAC
BABAC
+=
+=
+=
+=
Αντί να κάνουµε τον nxn πολ/µο των πινάκων.
∆ΙΑΣΠΑΣΗ: Γίνονται 8 πολ/µοι n/2 x n/2 πινάκων
ΕΠΙΛΥΣΗ: Αναδροµικά µε τον ίδιο τρόπο.
ΣΥΝΘΕΣΗ ΛΥΣΕΩΝ: 4 προσθέσεις nx2 x nx2 πινάκων
Άρα για να λύσω ένα πρόβληµα µεγέθους n, λύνω 8 υποπροβλήµατα
µεγέθους n/2 και συνδυάζω τις λύσεις σε χρόνο Θ(n2)
Η πολυπλοκότητα είναι:
Καµία βελτίωση σε σχέση µε τον
προφανή αλγόριθµο
2222122122 BABAC +=
)(...)(
2
8)( 32
nn
n
TnT
remMasterTheo
Θ==Θ+
=
27. Β. Θεωρία
1. ∆ιαίρει και Βασίλευε
4. Ο αλγόριθµος πολλαπλασιασµού πινάκων Strassen
2η προσέγγιση (Strassen): Βρήκε ότι µπορεί να παρει το ίδιο αποτέλεσµα µε τις
εξής πράξεις:
27∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
))((
))((
21123
11112
1112221122211
BBAAM
BAM
BAM
BBBAAAM
−−=
=
=
+−−+=
742121
652112
3211
MMMMC
MMMMC
MMMMC
MMC
+++=
−++=
+++=
+=
)(
)(
))((
22221121126
111222215
BBBBAM
BAAAAM
BBAAM
−−+=
−+−=
−+=
Αντί να κάνουµε τον nxn πολ/µο των πινάκων.
∆ΙΑΣΠΑΣΗ: Γίνονται 7 πολ/µοι n/2 x n/2 πινάκων
ΕΠΙΛΥΣΗ: Αναδροµικά µε τον ίδιο τρόπο.
ΣΥΝΘΕΣΗ ΛΥΣΕΩΝ: 24 προσθαφαιρέσεις nx2 x nx2 πινάκων
Άρα για να λύσω ένα πρόβληµα µεγέθους n, λύνω 7 υποπροβλήµατα µεγέθους
n/2 και συνδυάζω τις λύσεις σε χρόνο Θ(n2)
Η πολυπλοκότητα είναι:
Υπάρχουν και ακόµη καλύτερες διασπάσεις που φτάνουν την πολυπλοκότητα
µέχρι και Θ(n2,37). Ωστόσο ισχύει ότι κάθε αλγόριθµος πολ/µου πινάκων θα έχει
πολυπλοκότητα Ω(n2)
))(( 122221114 BBAAM −−=
)(...)(
2
7)( 81,22
nn
n
TnT
remMasterTheo
Θ==Θ+
=
542122 MMMMC +++=)( 21122211227 BBBBAM −−+=
28. Γ. Ασκήσεις
Εφαρµογή 1
Ας υποθέσουµε ότι έχουµε να επιλέξουµε ανάµεσα στους ακόλουθους τρεις
αλγόριθµους:
I. Ο αλγόριθµος A λύνει προβλήµατα µεγέθους n µε το να επιλύει
αναδροµικά οκτώ υποπροβλήµατα του µισού µεγέθους το καθένα, και
συνδυάζοντας τις λύσεις τους σε γραµµικό χρόνο ως προς n.
28∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
II. Ο αλγόριθµος B λύνει προβλήµατα µεγέθους n µε το να επιλύει
αναδροµικά ένα υποπρόβληµα µεγέθους n-1 και, στην συνέχεια,
συνάγει την τελική λύση σε χρόνο O(n).
III. Ο αλγόριθµος Γ λύνει προβλήµατα µεγέθους n µε το να επιλύει
αναδροµικά εννιά υποπροβλήµατα µεγέθους n/3 και συνδυάζοντας τις
λύσεις τους σε Ω(n2) χρόνο.
Ποιοι είναι οι ασυµπτωτικοί χρόνοι εκτέλεσης για καθένα από τους τρεις
αλγορίθµους και ποιον από αυτούς θα διαλέγατε µε βάση την ασυµπτωτική
του πολυπλοκότητα?
29. Γ. Ασκήσεις
Εφαρµογή 2
Ας υποθέσουµε ότι έχουµε να επιλέξουµε ανάµεσα στους ακόλουθους τρεις
αλγόριθµους:
I. Ο αλγόριθµος A λύνει προβλήµατα µεγέθους n µε το να επιλύει
αναδροµικά ένα υποπρόβληµα, µεγέθους 1/4 του αρχικού
προβλήµατος, ενώ ο χρόνος που απαιτείται για να βρεθεί το
πρόβληµα αυτό (µεγέθους n/4) από το αρχικό (µεγέθους n) είναι
29∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 2.1: ∆ιαίρει και Βασίλευε
πρόβληµα αυτό (µεγέθους n/4) από το αρχικό (µεγέθους n) είναι
γραµµικός ως προς n.
II. Ο αλγόριθµος B λύνει προβλήµατα µεγέθους n µε το να επιλύει
αναδροµικά ένα υποπρόβληµα µεγέθους n/2 και, στην συνέχεια,
συνάγει την τελική λύση σε Ω(n3).
III. Ο αλγόριθµος Γ λύνει προβλήµατα µεγέθους n µε το να επιλύει
αναδροµικά τέσσερα υποπροβλήµατα µεγέθους n/2 και συνδυάζοντας
τις λύσεις τους σε O(n2) χρόνο.
Ποιοι είναι οι ασυµπτωτικοί χρόνοι εκτέλεσης για καθένα από τους τρεις
αλγορίθµους και ποιον από αυτούς θα διαλέγατε µε βάση την ασυµπτωτική
του πολυπλοκότητα?