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) Ο αλγόριθμος MergeSort (Ταξινόμηση με Συγχώνευση)
1.2) Ο αλγόριθμος QuickSort (Γρήγορη Ταξινόμηση)
1.3) Ο αλγόριθμος QuickSelect (Γρήγορη Επιλογή)
1.4) Ο αλγόριθμος Strassen για τον πολλαπλασιασμό πινάκων
Ασκήσεις
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) Ο ασυμπτωτικός συμβολισμός Θ
1.4) Ο ασυμπτωτικός συμβολισμός Ω
1.5) Ο ασυμπτωτικός συμβολισμός ω
2) ΧΡΗΣΗ ΟΡΙΩΝ ΓΙΑ ΤΗΝ ΑΠΟΔΕΙΞΗ ΑΣΥΜΠΤΩΤΙΚΩΝ ΣΥΜΒΟΛΙΣΜΩΝ
3) ΛΗΜΜΑΤΑ ΣΤΟΥΣ ΑΣΥΜΠΤΩΤΙΚΟΥΣ ΣΥΜΒΟΛΙΣΜΟΥΣ
Ασκήσεις
1) Διαίρει και Βασίλευε
1.1) Ο αλγόριθμος MergeSort (Ταξινόμηση με Συγχώνευση)
1.2) Ο αλγόριθμος QuickSort (Γρήγορη Ταξινόμηση)
1.3) Ο αλγόριθμος QuickSelect (Γρήγορη Επιλογή)
1.4) Ο αλγόριθμος Strassen για τον πολλαπλασιασμό πινάκων
Ασκήσεις
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) Σκεπτικό: Η γλώσσα Halting
1.2) Το Θεώρημα Αναγωγής
1.3) Σχήμα Απόδειξης Αναγωγής
2) Παραδείγματα Αναγωγών
2.1) Ο πιο συχνά χρησιμοποιούμενος μετασχημαισμός
2.2) Τερματίζει ένα πρόγραμμα με οποιαδήποτε είσοδο;
2.3) Τερματίζει ένα πρόγραμμα με είσοδο την κενή συμβολοσειρά;
2.4) Τερματίζει ένα πρόγραμμα με είσοδο έστω μία συμβολοσειρά;
2.5) Είναι δύο προγράμματα ισοδύναμα;
2.6) Το πρόγραμμα δεν τερματίζει για καμία είσοδο
3) Άλλες Μη Επιλύσιμες Γλώσσες
3.1) Αναγνώριση συνόλου γλώσσας
3.2) Ασκ.Αυτ.2.2 και Δραστ.2.2
3.3) Μη Επιλύσιμες Γλώσσες για Γλώσσες Χωρίς Συμφραζόμενα
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) Αναγωγές της Προτασιακής Λογικής
2) Το πρόβλημα INDEPENDENT-SET είναι NP-πλήρες
2.1) INDEPENDENT-SET ανήκει στο NP
2.2) 3SAT ανάγεται στο INDEPENDENT-SET
3) Το πρόβλημα CLIQUE είναι NP-πλήρες
3.1) CLIQUE ανήκει στο NP
3.2) INDEPENDENT-SET ανάγεται στο CLIQUE
4) Το πρόβλημα VERTEX-COVER είναι NP-πλήρες
4.1) VERTEX-COVER ανήκει στο NP
4.2) INDEPENDENT-SET ανάγεται στο VERTEX-COVER
5) Το πρόβλημα SUBGRAPH-ISOMORPHISM είναι NP-πλήρες
5.1) SUBGRAPH-ISOMORPHISM ανήκει στο NP
5.2) CLIQUE ανάγεται στο SUBGRAPH-ISOMORPHISM
Ασκήσεις
1) To (n/2)-CLIQUE είναι NP-πλήρες
2) Το KITE είναι NP-πλήρες
3) Το k-DENSEST-SUBGRAPH είναι NP-πλήρες
4) Το k-LIGHTEST-SUBGRAPH είναι NP-πλήρες
1) Εισαγώγή
1.1) Σχήμα Απόδειξης Αναγωγής
1.2) Αναγωγές της Προτασιακής Λογικής
2) Το πρόβλημα PARTITION είναι NP-πλήρες
3) Το πρόβλημα KNAPSACK είναι NP-πλήρες
3.1) KNAPSACK ανήκει στο NP
3.2) PARTITION ανάγεται στο KNAPSACK
4) Το πρόβλημα 3PM είναι NP-πλήρες
5) Το πρόβλημα x3C είναι NP-πλήρες
5.1) X3C ανήκει στο NP
5.2) 3PM ανάγεται στο X3C
6) Το πρόβλημα EXACT-COVER είναι NP-πλήρες
7) Το πρόβλημα SET-COVER είναι NP-πλήρες
7.1) SET-COVER ανήκει στο NP
7.2) EXACT-COVER ανάγεται στο SET-COVER
1) Η αποδεικτική διαδικασία της αναγωγής
1.1) Σκεπτικό: Η γλώσσα Halting
1.2) Το Θεώρημα Αναγωγής
1.3) Σχήμα Απόδειξης Αναγωγής
2) Παραδείγματα Αναγωγών
2.1) Ο πιο συχνά χρησιμοποιούμενος μετασχημαισμός
2.2) Τερματίζει ένα πρόγραμμα με οποιαδήποτε είσοδο;
2.3) Τερματίζει ένα πρόγραμμα με είσοδο την κενή συμβολοσειρά;
2.4) Τερματίζει ένα πρόγραμμα με είσοδο έστω μία συμβολοσειρά;
2.5) Είναι δύο προγράμματα ισοδύναμα;
2.6) Το πρόγραμμα δεν τερματίζει για καμία είσοδο
3) Άλλες Μη Επιλύσιμες Γλώσσες
3.1) Αναγνώριση συνόλου γλώσσας
3.2) Ασκ.Αυτ.2.2 και Δραστ.2.2
3.3) Μη Επιλύσιμες Γλώσσες για Γλώσσες Χωρίς Συμφραζόμενα
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) Αναγωγές της Προτασιακής Λογικής
2) Το πρόβλημα INDEPENDENT-SET είναι NP-πλήρες
2.1) INDEPENDENT-SET ανήκει στο NP
2.2) 3SAT ανάγεται στο INDEPENDENT-SET
3) Το πρόβλημα CLIQUE είναι NP-πλήρες
3.1) CLIQUE ανήκει στο NP
3.2) INDEPENDENT-SET ανάγεται στο CLIQUE
4) Το πρόβλημα VERTEX-COVER είναι NP-πλήρες
4.1) VERTEX-COVER ανήκει στο NP
4.2) INDEPENDENT-SET ανάγεται στο VERTEX-COVER
5) Το πρόβλημα SUBGRAPH-ISOMORPHISM είναι NP-πλήρες
5.1) SUBGRAPH-ISOMORPHISM ανήκει στο NP
5.2) CLIQUE ανάγεται στο SUBGRAPH-ISOMORPHISM
Ασκήσεις
1) To (n/2)-CLIQUE είναι NP-πλήρες
2) Το KITE είναι NP-πλήρες
3) Το k-DENSEST-SUBGRAPH είναι NP-πλήρες
4) Το k-LIGHTEST-SUBGRAPH είναι NP-πλήρες
1) Εισαγώγή
1.1) Σχήμα Απόδειξης Αναγωγής
1.2) Αναγωγές της Προτασιακής Λογικής
2) Το πρόβλημα PARTITION είναι NP-πλήρες
3) Το πρόβλημα KNAPSACK είναι NP-πλήρες
3.1) KNAPSACK ανήκει στο NP
3.2) PARTITION ανάγεται στο KNAPSACK
4) Το πρόβλημα 3PM είναι NP-πλήρες
5) Το πρόβλημα x3C είναι NP-πλήρες
5.1) X3C ανήκει στο NP
5.2) 3PM ανάγεται στο X3C
6) Το πρόβλημα EXACT-COVER είναι NP-πλήρες
7) Το πρόβλημα SET-COVER είναι NP-πλήρες
7.1) SET-COVER ανήκει στο NP
7.2) EXACT-COVER ανάγεται στο SET-COVER
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.
ΓΛΩΣΣΑ 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
1. ΠΛΗ30
ΕΝΟΤΗΤΑ 1: ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
Μάθηµα 1.5:
Η αναδροµική σχέση T(n)=aT(n-b)+f(n)
Η αναδροµική σχέση T(n)=T(n/a)+T(n/b)+f(n)Η αναδροµική σχέση T(n)=T(n/a)+T(n/b)+f(n)
∆ηµήτρης Ψούνης
2. ΠΕΡΙΕΧΟΜΕΝΑ
Α. Σκοπός του Μαθήµατος
B. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε τη Μέθοδο της Επανάληψης
2. Η αναδροµή T(n)=T(n-1)+f(n)
1. Επίλυση µε τη Μέθοδο της Επανάληψης
2∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
1. Επίλυση µε τη Μέθοδο των Φραγµάτων
2. Επίλυση µε το ∆ένδρο της Αναδροµής
3. Επίλυση µε την ∆ραστ.3.6
Γ.Ασκήσεις
3. Α. Σκοπός του Μαθήµατος
Οι στόχοι του µαθήµατος είναι:
Επίπεδο Α
Η δραστηριότητα 3.6 για την επίλυση της T(n)=T(n/a)+T(n/b)+f(n)
Η µέθοδος επανάληψης για την επίλυση της T(n)=T(n-1)+f(n)
Επίπεδο Β
3∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Επίπεδο Β
Το δένδρο αναδροµής για την επίλυση της T(n)=T(n/a)+T(n/b)+f(n)
Η µέθοδος επανάληψης για την επίλυση της T(n)=aT(n-b)+c
Επίπεδο Γ
Η µέθοδος υπολογισµού φραγµάτων για την επίλυση της
T(n)=T(n/a)+T(n/b)+f(n)
4. B. Μεθοδολογία Ασκήσεων
Η αναδροµή T(n)=aT(n-b)+f(n)
4∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
H επίλυση της αναδροµικής σχέσης T(n)=aT(n-b)+f(n) γίνεται µε την µέθοδο
επανάληψη.
Θα µελετήσουµε δύο ειδικές περιπτώσεις αυτής της αναδροµής:
Αν f(n)=c, οπότε προκύπτει η αναδροµή T(n)=aT(n-b)+c και απαιτεί την
κλασική µέθοδο της επανάληψης που είδαµε και στο προηγούµενο
µάθηµα.µάθηµα.
Αν a=1, προκύπτει η αναδροµή T(n)=T(n-b)+f(n) που λύνεται µε έναν
εύκολο και εµπειρικό τρόπο που αποτελεί παραλλαγή της µεθόδου
επανάληψης.
Η γενική µορφή της αναδροµής για κάθε a, b, f(n) είναι εκτός ύλης.
5. Β. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n-b)+c
5∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Η αναδροµική σχέση T(n)=aT(n-b)+c λύνεται µε την µέθοδο επανάληψης
ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΕΠΑΝΑΛΗΨΗΣ
1. Κάνουµε 3 εφαρµογές της αναδροµικής σχέσης (Μέχρι να φτάσουµε στην
µορφή )
2. Εκτίµηση της σειράς που προκύπτει µετά από k επαναλήψεις (Μας
( ) ....3...)( +−⋅= bnTnT
( )+−⋅=καθοδηγεί ο όρος )
3. Υπολογίζουµε πότε σταµατάει η αναδροµή (Θέτω όπου n0 η
συνθήκη τερµατισµού της αναδροµής και λύνουµε ως προς k). Π.χ. αν n0=0
τότε n/b
4. Αντικατάσταση του k στον αναδροµικό τύπο του βήµατος 2.
5. Υπολογισµός του αθροίσµατος που προέκυψε.
( ) .......)( +−⋅= kbnTnT
0nkbn =−
6. B. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 1: 3 εφαρµογές του κανόνα)
6∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 1ο βήµα εφαρµόζουµε τον αναδροµικό κανόνα 3 φορές και κάνουµε τις
πράξεις που προκύπτουν.
ΠΑΡΑ∆ΕΙΓΜΑ:
Να λύσετε την αναδροµή:
Λύση:
( )
=
>+−
=
0,1
0,225
)(
n
nnT
nT
αν
αν
Λύση:
( )
( )[ ] ( )
( )[ ] ( ) 22525652252655
2254522455
225)(
232
2
+⋅+⋅+−=+⋅++−=
+⋅+−=++−=
+−=
nTnT
nTnT
nTnT
7. B. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 2: Εκτίµηση στο βήµα k)
7∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 2ο βήµα εκτιµάµε την σειρά που θα προκύψει µετά από k επαναλήψεις
(Μας καθοδηγεί ο όρος
(…συνέχεια…)
( ) .......)( +−⋅= kbnTnT
( )
...
2252565)( 23
==
=+⋅+⋅+−= nTnT
( ) 22525...2525
...
21
+⋅+⋅++⋅+−=
==
−kk
knT
8. B. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 3: Υπολογισµός του k)
8∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Υπολογίζουµε πότε σταµατάει η αναδροµή (Θέτω όπου n0 η
συνθήκη τερµατισµού της αναδροµής και λύνουµε ως προς k).
(…συνέχεια…)
0nkbn =−
(…συνέχεια…)
Η αναδροµή σταµατά όταν
2/
2
02
nk
kn
kn
=
⇒=
⇒=−
9. B. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 4: Αντικατάσταση του k)
9∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Αντικαθιστούµε το k που βρήκαµε στην παράσταση που προέκυψε στο βήµα
2. Θα πρέπει να απαλειφθεί ο αναδροµικός όρος µε την συνθήκη
τερµατισµού της αναδροµής.
(…συνέχεια…)
Θέτοντας k=n/2 στην Τ(n) έχουµε:
( )
22525...255
22525...2505)(
212/2/
212/2/
+⋅+⋅++⋅+=
+⋅+⋅++⋅+=
−
−
nn
nn
TnT
10. B. Μεθοδολογία Ασκήσεων
1. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 5: Υπολογισµός αθροίσµατος)
10∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Το άθροισµα που προκύπτει υπολογίζεται µε τον γνωστό τύπο του
υπολογισµού αθροίσµατος όρων γεωµετρικής προόδου:
(…συνέχεια…)
∑=
+
−
−
=
n
i
n
i
x
x
x
0
1
1
1
Θέτοντας k=n/2 στην Τ(n) έχουµε:
5,055,1
)15(5,05
15
15
25
525
]5...551[25
]25...25252[5
22525...255)(
2/
2/2/
112/
2/
12/
0
2/
12/22/
12/22/
212/2/
−⋅=
=−+=
=
−
−
+=
=+=
=+++++=
=⋅++⋅+⋅++=
=+⋅+⋅++⋅+=
+−
−
=
−
−
−
∑
n
nn
n
n
n
i
in
nn
nn
nn
nT
11. Β. Μεθοδολογία Ασκήσεων
2. Η αναδροµή T(n)=T(n-b)+f(n)
11∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Η αναδροµική σχέση T(n)=T(n-1)+f(n) λύνεται µε την µέθοδο επανάληψης
ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΕΠΑΝΑΛΗΨΗΣ
1. Γράφουµε όλους τους αναδροµικούς όρους T(n), T(n-1),… µέχρι και την
οριακή περίπτωση της αναδροµής
2. Προσθέτουµε τις εξισώσεις κατά µέλη
3. Υπολογίζουµε το άθροισµα που προκύπτει
12. B. Μεθοδολογία Ασκήσεων
2. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 1: Γράψιµο των όρων)
12∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 1ο βήµα γράφουµε όλους τους αναδροµικούς όρους από το T(n) µέχρι
και τον όρο T(n0) όπου n0 είναι η οριακή περίπτωση της αναδροµής
ΠΑΡΑ∆ΕΙΓΜΑ:
Να λύσετε την αναδροµή:
Λύση:
( )1 3 , 0
( )
1, 0
T n n n
T n
n
αν
αν
− + >
=
=
Λύση:
1)0(
13)0()1(
23)1()2(
...
)2(3)3()2(
)1(3)2()1(
3)1()(
=
⋅+=
⋅+=
−+−=−
−+−=−
+−=
T
TT
TT
nnTnT
nnTnT
nnTnT
13. B. Μεθοδολογία Ασκήσεων
2. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 2: Πρόσθεση κατά µέλη)
13∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 2ο βήµα προσθέτουµε κατά µέλη τις σχέσεις που έχουµε γράψει στο
προηγούµενο βήµα:
3)1()( +−= nnTnT
1)0(
13)0()1(
23)1()2(
...
)2(3)3()2(
)1(3)2()1(
3)1()(
=
⋅+=
⋅+=
−+−=−
−+−=−
+−=
T
TT
TT
nnTnT
nnTnT
nnTnT
)(+
11323...)2(3)1(33)( +⋅+⋅++−+−+= nnnnT
14. B. Μεθοδολογία Ασκήσεων
2. Η αναδροµή T(n)=aT(n-b)+c
1. Επίλυση µε την µέθοδο επανάληψης (Βήµα 3: Υπολογισµός του αθροίσµατος)
14∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 3ο βήµα υπολογίζουµε το άθροισµα που προκύπτει που συνήθως θα
είναι αριθµητική πρόοδος. Χρήσιµα θα φανούν τα εξής αθροίσµατα:
∑=
+
=
n
i
nn
i
1 2
)1(
∑=
++
=
n
i
nnn
i
1
2
6
)12)(1(
∑=
+
Θ=
n
i
kk
ni
1
1
)(
(µόνο µε υπόδειξη)
(συνέχεια…)
15,15,1
2
)1(
3131
])1()2(...21[31
3)1(3)2(3...23131
11323...)2(3)1(33)(
2
1
++=
=
+
+=+=
+−+−++++=
+−+−++⋅+⋅+=
+⋅+⋅++−+−+=
∑=
nn
nn
i
nnn
nnn
nnnnT
n
i
15. B. Μεθοδολογία Ασκήσεων
Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
15∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
H επίλυση της αναδροµικής σχέσης T(n)=T(n/a)+T(n/b)+f(n) γίνεται:
Με εφαρµογή της δραστηριότητας 3.6 (αν )
Με το δένδρο αναδροµής (Αν )
1
11
≤+
ba
1
11
>+
ba
Με το δένδρο αναδροµής (Αν )
Υπάρχει και η µέθοδος υπολογισµού φραγµάτων την οποία δεν θα
εφαρµόζουµε ποτέ, παρά µόνο αν µας το ζητάνε ρητά!
1>+
ba
16. Β. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
16∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Η αναδροµική σχέση T(n)=T(n/a)+Τ(n/b)+f(n) λύνεται µε την µέθοδο του
δένδρου αναδροµής
ΒΗΜΑΤΑ ΤΟΥ ∆ΕΝ∆ΡΟΥ ΑΝΑ∆ΡΟΜΗΣ
1. Ανάπτυξη του ∆ένδρου Αναδροµικών Κλήσεων µέχρι και µε το 2ο επίπεδο
2. Σε κάθε κόµβο σηµειώνουµε πόσες πράξεις γίνονται (από το f(n))2. Σε κάθε κόµβο σηµειώνουµε πόσες πράξεις γίνονται (από το f(n))
3. Υπολογισµός πράξεων ανά επίπεδο (συνήθως γεωµετρική πρόοδος)
4. Υπολογισµός του ύψους του δένδρου (Είναι logcn µε c το ελάχιστο από τα
a,b)
5. T(n)=το άθροισµα των πράξεων όλων των επιπέδων
17. B. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
1. Επίλυση µε το δένδρο αναδροµής (Βήµα 1: Ανάπτυξη δένδρου µέχρι 2ο επίπεδο)
17∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 1ο βήµα αναπτύσσουµε το δένδρο αναδροµικών κλήσεων εµφανίζοντας µόνο
τους αναδροµικούς όρους (όπως θα γινόντουσαν οι κλήσεις στον αντίστοιχο
αναδροµικό κώδικα).
ΠΑΡΑ∆ΕΙΓΜΑ:
Να λύσετε την αναδροµή:
=
>+
+
=
1,1
1,
32)(
n
nn
n
T
n
T
nT
αν
αν
Λύση:
=1,1 nαν
)(nT
2
n
T
3
n
T
4
n
T
3963
2642
32
)(
nn
T
n
T
n
T
nn
T
n
T
n
T
n
n
T
n
TnT
+
+
=
+
+
=
+
+
=
ΠΡΟΧΕΙΡΟ
6
n
T
6
n
T
9
n
T
N N N NO O O O
18. B. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
1. Επίλυση µε το δένδρο αναδροµής (Βήµα 2: Πράξεις σε κάθε κόµβο)
18∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 2ο βήµα σηµειώνουµε σε κάθε κόµβο πόσες πράξεις γίνονται σε αυτήν την
αναδροµική κλήση (καθορίζεται από τον όρο που έχουµε εµφανίσει αντικαθιστώντας
το f(n) )
(…συνέχεια…)
)(nT
2
n
T
3
n
T
4
n
T
6
n
T
6
n
T
9
n
T
n
2
n
3
n
4
n
6
n
6
n
9
n
3963
2642
32
)(
nn
T
n
T
n
T
nn
T
n
T
n
T
n
n
T
n
TnT
+
+
=
+
+
=
+
+
=
ΠΡΟΧΕΙΡΟ
N N N NO O O O
19. B. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
1. Επίλυση µε το δένδρο αναδροµής (Βήµα 3: Πράξεις ανα επίπεδο)
19∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 3ο βήµα προσθέτουµε ανά επίπεδο τις πράξεις για να µας βγει ένα κλάσµα.
Προσοχή ότι πάντα θα µας βγαίνει ότι είναι µια γεωµετρική πρόοδος. Εκτιµάµε πόσες
πράξεις γίνονται στο επίπεδο i.
(…συνέχεια…)
)(nT
2
n
T
3
n
T
4
n
T
6
n
T
6
n
T
9
n
T
n
2
n
3
n
4
n
6
n
6
n
9
n
Επιπεδο 0: n
Επιπεδο 1:
6
5
6
2
6
3
32
nnnnn
=+=+
Επιπεδο 2: 2
2
6
5
...
9664
nnnnn
==+++
Άρα στο επίπεδο i γίνονται πράξειςi
i
n
6
5
20. B. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
1. Επίλυση µε το δένδρο αναδροµής (Βήµα 4: Υπολογισµός ύψους δένδρου)
20∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 4ο βήµα υπολογίζουµε το ύψος του δένδρου.
Το ύψος του δένδρου καθορίζεται από ποιος όρος από τους n/a kai n/b θα φτάσει πιο
αργά να γίνει ίσος µε το n0, δηλαδή λύνοντας την εξίσωση n/min{a,b}=n0
Εµπειρικά το ύψος του δένδρου καθορίζεται από τον µικρότερο από τους δύο
παρονοµαστές και συγκεκριµένα είναι αν c είναι ο µικρότερος από τους δύο
παρονοµαστές (δηλ. c=min{a,b} ) έπεται ότι το ύψος του δένδρου είναι logcn.παρονοµαστές (δηλ. c=min{a,b} ) έπεται ότι το ύψος του δένδρου είναι logcn.
(…συνέχεια…)
Το ύψος του δένδρου είναι log2n
21. B. Μεθοδολογία Ασκήσεων
2. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
1. Επίλυση µε το δένδρο αναδροµής (Βήµα 5: Υπολογισµός αθροίσµατος)
21∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Στο 5ο βήµα υπολογίζουµε την πολυπλοκότητα ως το άθροισµα των πράξεων όλων
των επιπέδων. Θα είναι πάντα µια γεωµετρική πρόοδος. Άρα θα χρησιµοποιήσουµε
τον τύπο:
(…συνέχεια…)
∑=
+
−
−
=
n
i
n
i
x
x
x
0
1
1
1
Συνεπώς οι πράξεις είναι:
( )
log log
0 0
log 1
log
0
log 1
5
( ) 5
6 6
5
1
5 6
56 1
6
6 0,83 6
i
n ni
i ii i
n
i
n
i
n
n
T n n
n n
n n
= =
+
=
+
= = =
−
= = =
−
= ⋅ −
∑ ∑
∑
22. Β. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
2. Επίλυση µε τα φράγµατα
22∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Η αναδροµική σχέση T(n)=T(n/a)+Τ(n/b)+f(n) λύνεται µε την µέθοδο των
φραγµάτων
ΒΗΜΑΤΑ ΤΗΣ ΜΕΘΟ∆ΟΥ ΤΩΝ ΦΡΑΓΜΑΤΩΝ
1. Υπολογισµός κάτω φράγµατος µε το µεγαλύτερο από τα a και b και το
θεώρηµα κυριαρχίας.
2. Υπολογισµός άνω φράγµατος µε το µικρότερο από τα a και b και το θεώρηµα
κυριαρχίας.
3. Αν το κάτω φράγµα είναι ίσο µε το άνω φράγµα έχουµε ασυµπτωτική
εκτίµηση της συνάρτησης πολυπλοκότητας. Αλλιώς η µέθοδος
23. Β. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
2. Επίλυση µε τα φράγµατα
23∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Αρχικά γράφουµε τις δύο αναδροµικές σχέσεις µέσω των οποίων θα υπολογίσουµε
το άνω και το κάτω φράγµα. Το άνω φράγµα θα προκύψει µε το µικρότερο από τα
a,b και το κάτω φράγµα θα προκύψει µε το µεγαλύτερο από τα a,b
ΠΑΡΑ∆ΕΙΓΜΑ:
Να υπολογίσετε µια ασυµπτωτική εκτίµηση της αναδροµής: 2
43
)( n
n
T
n
TnT +
+
=
Λύση:
Το άνω φράγµα θα προκύψει από την επίλυση της αναδροµικής σχέσης:
Και το κάτω φράγµα θα προκύψει από την επίλυση της αναδροµικής σχέσης:
2
( ) 2
3
n
n n
Α = Α +
2
( ) 2
4
n
n n
Κ = Κ +
24. Β. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
2. Επίλυση µε τα φράγµατα (1. Υπολογισµός του άνω φράγµατος)
24∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Ο υπολογισµός του άνω φράγµατος θα γίνει µε το θεώρηµα κυριαρχίας.
Υπολογισµός άνω φράγµατος 2
3
2)( n
n
AnA +
=
63,02loglog,)(,3,2 2
===== annfbaΈχω:
Ισχύει: για κάποια σταθερά ε>0
Ελέγχω αν υπάρχει c<1 τέτοιο ώστε:
Άρα ισχύει για 2/9 ≤ c < 1.
Άρα από την Γ’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι:
Άρα
63,02loglog,)(,3,2 3
2
===== annfba b
)()( 63,02 ε+
Ω== nnnf
)()( 2
nnA Θ=
ccn
n
cn
n
ncf
n
fncf
b
n
af ≤⇔≤⇔≤
⇔≤
⇔≤
9
2
3
2
3
2)(
2
4)( 2
2
2
2
2
)()( 2
nnT Ο=
25. Β. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
2. Επίλυση µε τα φράγµατα (2. Υπολογισµός του κάτω φράγµατος)
25∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Ο υπολογισµός του άνω φράγµατος θα γίνει µε το θεώρηµα κυριαρχίας.
Υπολογισµός κάτω φράγµατος 2
4
2)( n
n
KnK +
=
5,02loglog,)(,4,2 2
===== annfbaΈχω:
Ισχύει: για κάποια σταθερά ε>0
Ελέγχω αν υπάρχει c<1 τέτοιο ώστε:
Άρα ισχύει για 1/8 ≤ c < 1.
Άρα από την Γ’ περίπτωση του Θεωρήµατος Κυριαρχίας έπεται ότι:
Άρα
5,02loglog,)(,4,2 4
2
===== annfba b
)()( 5,02 ε+
Ω== nnnf
)()( 2
nnK Θ=
cccn
n
cn
n
ncf
n
fncf
b
n
af ≤⇔≤⇔≤⇔≤
⇔≤
⇔≤
8
1
16
2
4
2
4
2)(
2
4)( 3
2
2
3
2
)()( 2
nnT Ω=
26. Β. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
2. Επίλυση µε τα φράγµατα (3. Συµπέρασµα για την ασυµπτωτική πολ/τα)
26∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Αν το άνω φράγµα και το κάτω φράγµα είναι ίδια, τότε έχουµε ασυµπτωτική εκτίµηση
της πολυπλοκότητάς του.
(...συνέχεια…)
Συνεπώς από τα προηγούµενα:
)()( 2
nnT Ο=
Αν τα φράγµατα είναι διαφορετικά, η µέθοδος των φραγµάτων έχει αποτύχει!
Ισχύει:
και
Συνεπώς
)()( 2
nnT Ο=
)()( 2
nnT Ω=
)()( 2
nnT Θ=
27. Β. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
3. Επίλυση µε την δραστηριότητα 3.6
27∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Η αναδροµική σχέση T(n)=T(n/a)+Τ(n/b)+f(n) λύνεται και µε την
δραστηριότητα 3.6 του βιβλίου
ΒΗΜΑΤΑ ΤΗΣ ∆ΡΑΣΤΗΡΙΟΤΗΤΑΣ 3.6
Υπολογίζουµε την ποσότητα
ba
11
+
1. Αν τότε
2. Αν τότε
3. Αν τότε η δραστηριότητα 3.6 έχει αποτύχει και πάµε υποχρεωτικά
µε δένδρο αναδροµής
ba
+
1
11
<+
ba
))(()( nfnT Θ=
1
11
=+
ba
)log)(()( nnfnT ⋅Θ=
1
11
>+
ba
28. B. Μεθοδολογία Ασκήσεων
3. Η αναδροµή T(n)=T(n/a)+T(n/b)+f(n)
3. Επίλυση µε την δραστηριότητα 3.6 (Παραδείγµατα)
28∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
Η εφαρµογή της δραστηριότητας 3.6 είναι πολύ εύκολη διότι µας δίνει έτοιµη την
λύση σε κάποιες αναδροµές.
ΠΑΡΑ∆ΕΙΓΜΑ:
Να υπολογίσετε µια ασυµπτωτική εκτίµηση της αναδροµής:
Λύση:
2
43
)( n
n
T
n
TnT +
+
=
Λύση:
Ισχύει: άρα από την δραστ.3.6 ισχύει:
ΠΑΡΑ∆ΕΙΓΜΑ:
Να υπολογίσετε µια ασυµπτωτική εκτίµηση της αναδροµής:
Λύση:
Ισχύει: άρα από την δραστ.3.6 ισχύει:
1
12
7
12
3
12
4
4
1
3
1
<=+=+ )()( 2
nnT Θ=
n
n
T
n
TnT +
+
=
3
2
3
)(
1
3
3
3
2
3
1
==+ )log()( nnnT ⋅Θ=
29. Γ. Ασκήσεις
Εφαρµογή 1
Υπολογίστε την ακριβή λύση των αναδροµών µε την µέθοδο επανάληψης:
29∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
( )4 3 5, 0
) ( )
0, 0
T n n
A T n
n
αν
αν
− + >
=
=
2
0, 0
( 1) 2 , 0
) ( )
1, 0
n
T n n n
B T n
n
αν
αν
αν
=
− + >
=
=
30. Γ. Ασκήσεις
Εφαρµογή 2
Υπολογίστε ασυµπτωτική εκτίµηση των αναδροµών χρησιµοποιώντας το
δένδρο αναδροµής:
30∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
=
>+
+
=
1,1
1,
43)()
2
n
nn
n
T
n
T
nTA
αν
αν
=
>+
+
=
=
1,1
1,
3
2
3)()
1,1
n
nn
n
T
n
T
nTB
n
αν
αν
αν
31. Γ. Ασκήσεις
Εφαρµογή 3
Χρησιµοποιείστε την µέθοδο υπολογισµού φραγµάτων για την επίλυση της
αναδροµής
31∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
2
3
2
2
)( n
n
T
n
TnT +
+
=
32. Γ. Ασκήσεις
Εφαρµογή 4
Υπολογίστε µια ασυµπτωτική εκτίµηση των αναδροµών
32∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
log
44
3
)() n
n
T
n
TnTA +
+
=
2
3
23
2
)()
65
2
)()
n
n
T
n
TnTC
n
n
T
n
TnTB
+
+
=
+
+
=
33. Γ. Ασκήσεις
Εφαρµογή 5
Για την επίλυση ενός προβλήµατος έχουµε στην διάθεσή µας τρείς αλγόριθµούς.
• (A1) Ο πρώτος αλγόριθµος για επιλύσει ένα πρόβληµα µεγέθους n, επιλύει
αναδροµικά επτά υποπροβλήµατα µεγέθους n/3 το καθένα και συνδυάζει τις λύσεις
τους σε χρόνο n3.
33∆ηµήτρης Ψούνης, ΠΛΗ30, Μάθηµα 1.5: T(n)=T(n/a)+T(n/b)+f(n) και T(n)=aT(n-b)+f(n)
• (A2) Ο δεύτερος αλγόριθµος για να επιλύσει ένα πρόβληµα µεγέθους n, επιλύει
αναδροµικά δέκα υποπροβλήµατα µεγέθους n/2 το καθένα και συνδυάζει τις λύσεις
τους σε χρόνο n.
• (A3) Ο τρίτος αλγόριθµος επιλύει ένα υποπρόβληµα µεγέθους n-1 και βρίσκει την
λύση του αρχικού προβλήµατος σε χρόνο n3.
Να βρεθούν οι ασυµπτωτικοί χρόνοι επίλυσης του προβλήµατος για τον κάθε
αλγόριθµο, και να επιλέξετε τον ταχύτερο αλγόριθµο για την επίλυση του προβλήµατος.
ΥΠΟ∆ΕΙΞΗ: Μπορείτε να χρησιµοποιήσετε ότι ∑=
Θ=
n
i
ni
1
43
)(